// ***************************************************************** -*- C++ -*-
/*
* Lens database for the conversion of Nikon lens data to readable lens names
* Copyright ( C ) 2005 - 2014 Robert Rottmerhusen < lens_id @ rottmerhusen . com >
*
* Copyright ( C ) 2004 - 2021 Exiv2 authors
* This program is part of the Exiv2 distribution .
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , 5 th Floor , Boston , MA 02110 - 1301 USA .
*/
// *****************************************************************************
// included header files
# include "types.hpp"
# include "nikonmn_int.hpp"
# include "value.hpp"
# include "image.hpp"
# include "tags_int.hpp"
# include "makernote_int.hpp"
# include "error.hpp"
# include "i18n.h" // NLS support.
// + standard includes
# include <string>
# include <sstream>
# include <iomanip>
# include <cassert>
# include <cstring>
# include <math.h> //for log, pow, abs
# include <cmath>
# include <limits>
// *****************************************************************************
// class member definitions
namespace Exiv2 {
namespace Internal {
//! OffOn, multiple tags
constexpr TagDetails nikonOffOn [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " On " ) }
} ;
//! Off, Low, Normal, High, multiple tags
constexpr TagDetails nikonOlnh [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " Low " ) } ,
{ 3 , N_ ( " Normal " ) } ,
{ 5 , N_ ( " High " ) }
} ;
//! Off, Low, Normal, High, multiple tags
constexpr TagDetails nikonActiveDLighting [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " Low " ) } ,
{ 3 , N_ ( " Normal " ) } ,
{ 5 , N_ ( " High " ) } ,
{ 7 , N_ ( " Extra High " ) } ,
{ 65535 , N_ ( " Auto " ) }
} ;
//! Focus area for Nikon cameras.
constexpr const char * nikonFocusarea [ ] = {
N_ ( " Single area " ) ,
N_ ( " Dynamic area " ) ,
N_ ( " Dynamic area, closest subject " ) ,
N_ ( " Group dynamic " ) ,
N_ ( " Single area (wide) " ) ,
N_ ( " Dynamic area (wide) " )
} ;
// Roger Larsson: My guess is that focuspoints will follow autofocus sensor
// module. Note that relative size and position will vary depending on if
// "wide" or not
//! Focus points for Nikon cameras, used for Nikon 1 and Nikon 3 makernotes.
constexpr const char * nikonFocuspoints [ ] = {
N_ ( " Center " ) ,
N_ ( " Top " ) ,
N_ ( " Bottom " ) ,
N_ ( " Left " ) ,
N_ ( " Right " ) ,
N_ ( " Upper-left " ) ,
N_ ( " Upper-right " ) ,
N_ ( " Lower-left " ) ,
N_ ( " Lower-right " ) ,
N_ ( " Left-most " ) ,
N_ ( " Right-most " )
} ;
//! Shutter Modes (credits to exiftool)
constexpr TagDetails nikonShutterModes [ ] = {
{ 0 , " Mechanical " } ,
{ 16 , " Electronic " } ,
{ 48 , " Electronic Front Curtain " } ,
{ 64 , " Electronic (Movie) " } ,
{ 80 , " Auto (Mechanical) " } ,
{ 81 , " Auto (Electronic Front Curtain) " }
} ;
//! FlashComp, tag 0x0012
constexpr TagDetails nikonFlashComp [ ] = {
// From the PHP JPEG Metadata Toolkit
{ 0x06 , " +1.0 EV " } ,
{ 0x04 , " +0.7 EV " } ,
{ 0x03 , " +0.5 EV " } ,
{ 0x02 , " +0.3 EV " } ,
{ 0x00 , " 0.0 EV " } ,
{ 0xfe , " -0.3 EV " } ,
{ 0xfd , " -0.5 EV " } ,
{ 0xfc , " -0.7 EV " } ,
{ 0xfa , " -1.0 EV " } ,
{ 0xf8 , " -1.3 EV " } ,
{ 0xf7 , " -1.5 EV " } ,
{ 0xf6 , " -1.7 EV " } ,
{ 0xf4 , " -2.0 EV " } ,
{ 0xf2 , " -2.3 EV " } ,
{ 0xf1 , " -2.5 EV " } ,
{ 0xf0 , " -2.7 EV " } ,
{ 0xee , " -3.0 EV " }
} ;
//! ColorSpace, tag 0x001e
constexpr TagDetails nikonColorSpace [ ] = {
{ 1 , N_ ( " sRGB " ) } ,
{ 2 , N_ ( " Adobe RGB " ) }
} ;
//! FlashMode, tag 0x0087
constexpr TagDetails nikonFlashMode [ ] = {
{ 0 , N_ ( " Did not fire " ) } ,
{ 1 , N_ ( " Fire, manual " ) } ,
{ 7 , N_ ( " Fire, external " ) } ,
{ 8 , N_ ( " Fire, commander mode " ) } ,
{ 9 , N_ ( " Fire, TTL mode " ) }
} ;
//! ShootingMode, tag 0x0089
constexpr TagDetailsBitmask nikonShootingMode [ ] = {
{ 0x0001 , N_ ( " Continuous " ) } ,
{ 0x0002 , N_ ( " Delay " ) } ,
{ 0x0004 , N_ ( " PC Control " ) } ,
{ 0x0008 , N_ ( " Self-timer " ) } ,
{ 0x0010 , N_ ( " Exposure Bracketing " ) } ,
{ 0x0020 , N_ ( " Auto ISO " ) } ,
{ 0x0040 , N_ ( " White-Balance Bracketing " ) } ,
{ 0x0080 , N_ ( " IR Control " ) } ,
{ 0x0100 , N_ ( " D-Lighting Bracketing " ) }
} ;
//! ShootingMode D70, tag 0x0089
constexpr TagDetailsBitmask nikonShootingModeD70 [ ] = {
{ 0x0001 , N_ ( " Continuous " ) } ,
{ 0x0002 , N_ ( " Delay " ) } ,
{ 0x0004 , N_ ( " PC control " ) } ,
{ 0x0010 , N_ ( " Exposure bracketing " ) } ,
{ 0x0020 , N_ ( " Unused LE-NR slowdown " ) } ,
{ 0x0040 , N_ ( " White balance bracketing " ) } ,
{ 0x0080 , N_ ( " IR control " ) }
} ;
//! AutoBracketRelease, tag 0x008a
constexpr TagDetails nikonAutoBracketRelease [ ] = {
{ 0 , N_ ( " None " ) } ,
{ 1 , N_ ( " Auto release " ) } ,
{ 2 , N_ ( " Manual release " ) }
} ;
//! NEFCompression, tag 0x0093
constexpr TagDetails nikonNefCompression [ ] = {
{ 1 , N_ ( " Lossy (type 1) " ) } ,
{ 2 , N_ ( " Uncompressed " ) } ,
{ 3 , N_ ( " Lossless " ) } ,
{ 4 , N_ ( " Lossy (type 2) " ) }
} ;
//! RetouchHistory, tag 0x009e
constexpr TagDetails nikonRetouchHistory [ ] = {
{ 0 , N_ ( " None " ) } ,
{ 3 , N_ ( " B & W " ) } ,
{ 4 , N_ ( " Sepia " ) } ,
{ 5 , N_ ( " Trim " ) } ,
{ 6 , N_ ( " Small picture " ) } ,
{ 7 , N_ ( " D-Lighting " ) } ,
{ 8 , N_ ( " Red eye " ) } ,
{ 9 , N_ ( " Cyanotype " ) } ,
{ 10 , N_ ( " Sky light " ) } ,
{ 11 , N_ ( " Warm tone " ) } ,
{ 12 , N_ ( " Color custom " ) } ,
{ 13 , N_ ( " Image overlay " ) }
} ;
//! HighISONoiseReduction, tag 0x00b1
constexpr TagDetails nikonHighISONoiseReduction [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " Minimal " ) } ,
{ 2 , N_ ( " Low " ) } ,
{ 4 , N_ ( " Normal " ) } ,
{ 6 , N_ ( " High " ) }
} ;
// Nikon1 MakerNote Tag Info
constexpr TagInfo Nikon1MakerNote : : tagInfo_ [ ] = {
{ 0x0001 , " Version " , N_ ( " Version " ) ,
N_ ( " Nikon Makernote version " ) ,
nikon1Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0002 , " ISOSpeed " , N_ ( " ISO Speed " ) ,
N_ ( " ISO speed setting " ) ,
nikon1Id , makerTags , unsignedShort , - 1 , print0x0002 } ,
{ 0x0003 , " ColorMode " , N_ ( " Color Mode " ) ,
N_ ( " Color mode " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0004 , " Quality " , N_ ( " Quality " ) ,
N_ ( " Image quality setting " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0005 , " WhiteBalance " , N_ ( " White Balance " ) ,
N_ ( " White balance " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0006 , " Sharpening " , N_ ( " Sharpening " ) ,
N_ ( " Image sharpening setting " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0007 , " Focus " , N_ ( " Focus " ) ,
N_ ( " Focus mode " ) ,
nikon1Id , makerTags , asciiString , - 1 , print0x0007 } ,
{ 0x0008 , " FlashSetting " , N_ ( " Flash Setting " ) ,
N_ ( " Flash setting " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x000a , " 0x000a " , " 0x000a " ,
N_ ( " Unknown " ) ,
nikon1Id , makerTags , unsignedRational , - 1 , printValue } ,
{ 0x000f , " ISOSelection " , N_ ( " ISO Selection " ) ,
N_ ( " ISO selection " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0010 , " DataDump " , N_ ( " Data Dump " ) ,
N_ ( " Data dump " ) ,
nikon1Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0080 , " ImageAdjustment " , N_ ( " Image Adjustment " ) ,
N_ ( " Image adjustment setting " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0082 , " AuxiliaryLens " , N_ ( " Auxiliary Lens " ) ,
N_ ( " Auxiliary lens (adapter) " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0085 , " FocusDistance " , N_ ( " Focus Distance " ) ,
N_ ( " Manual focus distance " ) ,
nikon1Id , makerTags , unsignedRational , - 1 , print0x0085 } ,
{ 0x0086 , " DigitalZoom " , N_ ( " Digital Zoom " ) ,
N_ ( " Digital zoom setting " ) ,
nikon1Id , makerTags , unsignedRational , - 1 , print0x0086 } ,
{ 0x0088 , " AFFocusPos " , N_ ( " AF Focus Position " ) ,
N_ ( " AF focus position information " ) ,
nikon1Id , makerTags , undefined , - 1 , print0x0088 } ,
// End of list marker
{ 0xffff , " (UnknownNikon1MnTag) " , " (UnknownNikon1MnTag) " ,
N_ ( " Unknown Nikon1MakerNote tag " ) ,
nikon1Id , makerTags , asciiString , - 1 , printValue } ,
} ;
const TagInfo * Nikon1MakerNote : : tagList ( )
{
return tagInfo_ ;
}
std : : ostream & Nikon1MakerNote : : print0x0002 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) > 1 ) {
os < < value . toLong ( 1 ) ;
}
else {
os < < " ( " < < value < < " ) " ;
}
return os ;
}
static std : : string getKeyString ( const std : : string & key , const ExifData * metadata )
{
std : : string result ;
if ( metadata - > findKey ( ExifKey ( key ) ) ! = metadata - > end ( ) ) {
result = metadata - > findKey ( ExifKey ( key ) ) - > toString ( ) ;
}
return result ;
}
std : : ostream & Nikon1MakerNote : : printBarValue ( std : : ostream & os ,
const Value & value ,
const ExifData * exifData )
{
if ( ! exifData ) return os < < " undefined " ;
if ( value . count ( ) > = 9 ) {
ByteOrder bo = getKeyString ( " Exif.MakerNote.ByteOrder " , exifData ) = = " MM " ? bigEndian : littleEndian ;
byte p [ 4 ] ;
for ( int n = 0 ; n < 4 ; n + + )
p [ n ] = static_cast < byte > ( value . toLong ( 6 + n ) ) ;
os < < getLong ( p , bo ) ;
}
return os ;
}
std : : ostream & Nikon1MakerNote : : print0x0007 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : string focus = value . toString ( ) ;
if ( focus = = " AF-C " ) os < < _ ( " Continuous autofocus " ) ;
else if ( focus = = " AF-S " ) os < < _ ( " Single autofocus " ) ;
else if ( focus = = " AF-A " ) os < < _ ( " Automatic " ) ;
else os < < " ( " < < value < < " ) " ;
return os ;
}
std : : ostream & Nikon1MakerNote : : print0x0085 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
Rational distance = value . toRational ( ) ;
if ( distance . first = = 0 ) {
os < < _ ( " Unknown " ) ;
}
else if ( distance . second ! = 0 ) {
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 2 ) < < static_cast < float > ( distance . first ) / distance . second < < " m " ;
os . copyfmt ( oss ) ;
}
else {
os < < " ( " < < value < < " ) " ;
}
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon1MakerNote : : print0x0086 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
Rational zoom = value . toRational ( ) ;
if ( zoom . first = = 0 ) {
os < < _ ( " Not used " ) ;
}
else if ( zoom . second ! = 0 ) {
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < static_cast < float > ( zoom . first ) / zoom . second < < " x " ;
os . copyfmt ( oss ) ;
}
else {
os < < " ( " < < value < < " ) " ;
}
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon1MakerNote : : print0x0088 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) > = 1 ) {
const unsigned long focusArea = value . toLong ( 0 ) ;
if ( focusArea > = EXV_COUNTOF ( nikonFocusarea ) ) {
os < < " Invalid value " ;
} else {
os < < nikonFocusarea [ focusArea ] ;
}
}
if ( value . count ( ) > = 2 ) {
os < < " ; " ;
unsigned long focusPoint = value . toLong ( 1 ) ;
switch ( focusPoint ) {
// Could use array nikonFocuspoints
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
os < < nikonFocuspoints [ focusPoint ] ;
break ;
default :
os < < value ;
if ( focusPoint < sizeof ( nikonFocuspoints ) / sizeof ( nikonFocuspoints [ 0 ] ) )
os < < " " < < _ ( " guess " ) < < " " < < nikonFocuspoints [ focusPoint ] ;
break ;
}
}
if ( value . count ( ) > = 3 ) {
unsigned long focusPointsUsed1 = value . toLong ( 2 ) ;
unsigned long focusPointsUsed2 = value . toLong ( 3 ) ;
if ( focusPointsUsed1 ! = 0 & & focusPointsUsed2 ! = 0 )
{
os < < " ; [ " ;
if ( focusPointsUsed1 & 1 )
os < < nikonFocuspoints [ 0 ] < < " " ;
if ( focusPointsUsed1 & 2 )
os < < nikonFocuspoints [ 1 ] < < " " ;
if ( focusPointsUsed1 & 4 )
os < < nikonFocuspoints [ 2 ] < < " " ;
if ( focusPointsUsed1 & 8 )
os < < nikonFocuspoints [ 3 ] < < " " ;
if ( focusPointsUsed1 & 16 )
os < < nikonFocuspoints [ 4 ] < < " " ;
if ( focusPointsUsed1 & 32 )
os < < nikonFocuspoints [ 5 ] < < " " ;
if ( focusPointsUsed1 & 64 )
os < < nikonFocuspoints [ 6 ] < < " " ;
if ( focusPointsUsed1 & 128 )
os < < nikonFocuspoints [ 7 ] < < " " ;
if ( focusPointsUsed2 & 1 )
os < < nikonFocuspoints [ 8 ] < < " " ;
if ( focusPointsUsed2 & 2 )
os < < nikonFocuspoints [ 9 ] < < " " ;
if ( focusPointsUsed2 & 4 )
os < < nikonFocuspoints [ 10 ] < < " " ;
os < < " ] " ;
}
}
else {
os < < " ( " < < value < < " ) " ;
}
return os ;
}
//! Quality, tag 0x0003
constexpr TagDetails nikon2Quality [ ] = {
{ 1 , N_ ( " VGA Basic " ) } ,
{ 2 , N_ ( " VGA Normal " ) } ,
{ 3 , N_ ( " VGA Fine " ) } ,
{ 4 , N_ ( " SXGA Basic " ) } ,
{ 5 , N_ ( " SXGA Normal " ) } ,
{ 6 , N_ ( " SXGA Fine " ) }
} ;
//! ColorMode, tag 0x0004
constexpr TagDetails nikon2ColorMode [ ] = {
{ 1 , N_ ( " Color " ) } ,
{ 2 , N_ ( " Monochrome " ) }
} ;
//! ImageAdjustment, tag 0x0005
constexpr TagDetails nikon2ImageAdjustment [ ] = {
{ 0 , N_ ( " Normal " ) } ,
{ 1 , N_ ( " Bright+ " ) } ,
{ 2 , N_ ( " Bright- " ) } ,
{ 3 , N_ ( " Contrast+ " ) } ,
{ 4 , N_ ( " Contrast- " ) }
} ;
//! ISOSpeed, tag 0x0006
constexpr TagDetails nikon2IsoSpeed [ ] = {
{ 0 , " 80 " } ,
{ 2 , " 160 " } ,
{ 4 , " 320 " } ,
{ 5 , " 100 " }
} ;
//! WhiteBalance, tag 0x0007
constexpr TagDetails nikon2WhiteBalance [ ] = {
{ 0 , N_ ( " Auto " ) } ,
{ 1 , N_ ( " Preset " ) } ,
{ 2 , N_ ( " Daylight " ) } ,
{ 3 , N_ ( " Incandescent " ) } ,
{ 4 , N_ ( " Fluorescent " ) } ,
{ 5 , N_ ( " Cloudy " ) } ,
{ 6 , N_ ( " Speedlight " ) }
} ;
// Nikon2 MakerNote Tag Info
constexpr TagInfo Nikon2MakerNote : : tagInfo_ [ ] = {
{ 0x0002 , " 0x0002 " , " 0x0002 " ,
N_ ( " Unknown " ) ,
nikon2Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0003 , " Quality " , N_ ( " Quality " ) ,
N_ ( " Image quality setting " ) ,
nikon2Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikon2Quality ) } ,
{ 0x0004 , " ColorMode " , N_ ( " Color Mode " ) ,
N_ ( " Color mode " ) ,
nikon2Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikon2ColorMode ) } ,
{ 0x0005 , " ImageAdjustment " , N_ ( " Image Adjustment " ) ,
N_ ( " Image adjustment setting " ) ,
nikon2Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikon2ImageAdjustment ) } ,
{ 0x0006 , " ISOSpeed " , N_ ( " ISO Speed " ) ,
N_ ( " ISO speed setting " ) ,
nikon2Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikon2IsoSpeed ) } ,
{ 0x0007 , " WhiteBalance " , N_ ( " White Balance " ) ,
N_ ( " White balance " ) ,
nikon2Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikon2WhiteBalance ) } ,
{ 0x0008 , " Focus " , N_ ( " Focus Mode " ) ,
N_ ( " Focus mode " ) ,
nikon2Id , makerTags , unsignedRational , - 1 , printValue } ,
{ 0x0009 , " 0x0009 " , " 0x0009 " ,
N_ ( " Unknown " ) ,
nikon2Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x000a , " DigitalZoom " , N_ ( " Digital Zoom " ) ,
N_ ( " Digital zoom setting " ) ,
nikon2Id , makerTags , unsignedRational , - 1 , print0x000a } ,
{ 0x000b , " AuxiliaryLens " , N_ ( " Auxiliary Lens " ) ,
N_ ( " Auxiliary lens (adapter) " ) ,
nikon2Id , makerTags , unsignedShort , - 1 , printValue } ,
{ 0x0f00 , " 0x0f00 " , " 0x0f00 " ,
N_ ( " Unknown " ) ,
nikon2Id , makerTags , unsignedLong , - 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikon2MnTag) " , " (UnknownNikon2MnTag) " ,
N_ ( " Unknown Nikon2MakerNote tag " ) ,
nikon2Id , makerTags , asciiString , - 1 , printValue } ,
} ;
const TagInfo * Nikon2MakerNote : : tagList ( )
{
return tagInfo_ ;
}
std : : ostream & Nikon2MakerNote : : print0x000a ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
Rational zoom = value . toRational ( ) ;
if ( zoom . first = = 0 ) {
os < < _ ( " Not used " ) ;
}
else if ( zoom . second ! = 0 ) {
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < static_cast < float > ( zoom . first ) / zoom . second < < " x " ;
os . copyfmt ( oss ) ;
}
else {
os < < " ( " < < value < < " ) " ;
}
os . flags ( f ) ;
return os ;
}
// Nikon3 MakerNote Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfo_ [ ] = {
{ 0x0001 , " Version " , N_ ( " Version " ) , N_ ( " Nikon Makernote version " ) , nikon3Id , makerTags , undefined , - 1 , printExifVersion } ,
{ 0x0002 , " ISOSpeed " , N_ ( " ISO Speed " ) , N_ ( " ISO speed setting " ) , nikon3Id , makerTags , unsignedShort , - 1 , print0x0002 } ,
{ 0x0003 , " ColorMode " , N_ ( " Color Mode " ) , N_ ( " Color mode " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0004 , " Quality " , N_ ( " Quality " ) , N_ ( " Image quality setting " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0005 , " WhiteBalance " , N_ ( " White Balance " ) , N_ ( " White balance " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0006 , " Sharpening " , N_ ( " Sharpening " ) , N_ ( " Image sharpening setting " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0007 , " Focus " , N_ ( " Focus " ) , N_ ( " Focus mode " ) , nikon3Id , makerTags , asciiString , - 1 , print0x0007 } ,
{ 0x0008 , " FlashSetting " , N_ ( " Flash Setting " ) , N_ ( " Flash setting " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0009 , " FlashDevice " , N_ ( " Flash Device " ) , N_ ( " Flash device " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x000a , " 0x000a " , " 0x000a " , N_ ( " Unknown " ) , nikon3Id , makerTags , unsignedRational , - 1 , printValue } ,
{ 0x000b , " WhiteBalanceBias " , N_ ( " White Balance Bias " ) , N_ ( " White balance bias " ) , nikon3Id , makerTags , signedShort , - 1 , printValue } ,
{ 0x000c , " WB_RBLevels " , N_ ( " WB RB Levels " ) , N_ ( " WB RB levels " ) , nikon3Id , makerTags , unsignedRational , - 1 , printValue } ,
{ 0x000d , " ProgramShift " , N_ ( " Program Shift " ) , N_ ( " Program shift " ) , nikon3Id , makerTags , undefined , - 1 , EXV_PRINT_TAG ( nikonFlashComp ) } ,
{ 0x000e , " ExposureDiff " , N_ ( " Exposure Difference " ) , N_ ( " Exposure difference " ) , nikon3Id , makerTags , undefined , - 1 , EXV_PRINT_TAG ( nikonFlashComp ) } ,
{ 0x000f , " ISOSelection " , N_ ( " ISO Selection " ) , N_ ( " ISO selection " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0010 , " DataDump " , N_ ( " Data Dump " ) , N_ ( " Data dump " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0011 , " Preview " , N_ ( " Pointer to a preview image " ) , N_ ( " Offset to an IFD containing a preview image " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0012 , " FlashComp " , N_ ( " Flash Comp " ) , N_ ( " Flash compensation setting " ) , nikon3Id , makerTags , undefined , - 1 , EXV_PRINT_TAG ( nikonFlashComp ) } ,
{ 0x0013 , " ISOSettings " , N_ ( " ISO Settings " ) , N_ ( " ISO setting " ) , nikon3Id , makerTags , unsignedShort , - 1 , print0x0002 } , // use 0x0002 print fct
{ 0x0016 , " ImageBoundary " , N_ ( " Image Boundary " ) , N_ ( " Image boundary " ) , nikon3Id , makerTags , unsignedShort , - 1 , printValue } ,
{ 0x0017 , " FlashExposureComp " , " Flash Exposure Comp " , N_ ( " Flash exposure comp " ) , nikon3Id , makerTags , undefined , - 1 , EXV_PRINT_TAG ( nikonFlashComp ) } ,
{ 0x0018 , " FlashBracketComp " , N_ ( " Flash Bracket Comp " ) , N_ ( " Flash bracket compensation applied " ) , nikon3Id , makerTags , undefined , - 1 , EXV_PRINT_TAG ( nikonFlashComp ) } , // use 0x0012 print fct
{ 0x0019 , " ExposureBracketComp " , N_ ( " Exposure Bracket Comp " ) , N_ ( " AE bracket compensation applied " ) , nikon3Id , makerTags , signedRational , - 1 , printValue } ,
{ 0x001a , " ImageProcessing " , N_ ( " Image Processing " ) , N_ ( " Image processing " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x001b , " CropHiSpeed " , N_ ( " Crop High Speed " ) , N_ ( " Crop high speed " ) , nikon3Id , makerTags , unsignedShort , - 1 , printValue } ,
{ 0x001c , " ExposureTuning " , N_ ( " Exposure Tuning " ) , N_ ( " Exposure tuning " ) , nikon3Id , makerTags , unsignedShort , - 1 , printValue } ,
{ 0x001d , " SerialNumber " , N_ ( " Serial Number " ) , N_ ( " Serial Number " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x001e , " ColorSpace " , N_ ( " Color Space " ) , N_ ( " Color space " ) , nikon3Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikonColorSpace ) } ,
{ 0x001f , " VRInfo " , N_ ( " VR Info " ) , N_ ( " VR info " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0020 , " ImageAuthentication " , N_ ( " Image Authentication " ) , N_ ( " Image authentication " ) , nikon3Id , makerTags , unsignedByte , - 1 , EXV_PRINT_TAG ( nikonOffOn ) } ,
{ 0x0022 , " ActiveDLighting " , N_ ( " ActiveD-Lighting " ) , N_ ( " ActiveD-lighting " ) , nikon3Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikonActiveDLighting ) } ,
{ 0x0023 , " PictureControl " , N_ ( " Picture Control " ) , N_ ( " Picture control " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0024 , " WorldTime " , N_ ( " World Time " ) , N_ ( " World time " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0025 , " ISOInfo " , N_ ( " ISO Info " ) , N_ ( " ISO info " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x002a , " VignetteControl " , N_ ( " Vignette Control " ) , N_ ( " Vignette control " ) , nikon3Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikonOlnh ) } ,
{ 0x0034 , " ShutterMode " , N_ ( " Shutter Mode " ) , N_ ( " Shutter mode " ) , nikon3Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikonShutterModes ) } ,
{ 0x0037 , " MechanicalShutterCount " , N_ ( " Mechanical Shutter Count " ) , N_ ( " Mechanical shutter count " ) , nikon3Id , makerTags , unsignedLong , - 1 , printValue } ,
{ 0x0080 , " ImageAdjustment " , N_ ( " Image Adjustment " ) , N_ ( " Image adjustment setting " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0081 , " ToneComp " , N_ ( " Tone Compensation " ) , N_ ( " Tone compensation " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0082 , " AuxiliaryLens " , N_ ( " Auxiliary Lens " ) , N_ ( " Auxiliary lens (adapter) " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0083 , " LensType " , N_ ( " Lens Type " ) , N_ ( " Lens type " ) , nikon3Id , makerTags , unsignedByte , - 1 , print0x0083 } ,
{ 0x0084 , " Lens " , N_ ( " Lens " ) , N_ ( " Lens " ) , nikon3Id , makerTags , unsignedRational , - 1 , print0x0084 } ,
{ 0x0085 , " FocusDistance " , N_ ( " Focus Distance " ) , N_ ( " Manual focus distance " ) , nikon3Id , makerTags , unsignedRational , - 1 , print0x0085 } ,
{ 0x0086 , " DigitalZoom " , N_ ( " Digital Zoom " ) , N_ ( " Digital zoom setting " ) , nikon3Id , makerTags , unsignedRational , - 1 , print0x0086 } ,
{ 0x0087 , " FlashMode " , N_ ( " Flash Mode " ) , N_ ( " Mode of flash used " ) , nikon3Id , makerTags , unsignedByte , - 1 , EXV_PRINT_TAG ( nikonFlashMode ) } ,
{ 0x0088 , " AFInfo " , N_ ( " AF Info " ) , N_ ( " AF info " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0089 , " ShootingMode " , N_ ( " Shooting Mode " ) , N_ ( " Shooting mode " ) , nikon3Id , makerTags , unsignedShort , - 1 , print0x0089 } ,
{ 0x008a , " AutoBracketRelease " , N_ ( " Auto Bracket Release " ) , N_ ( " Auto bracket release " ) , nikon3Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikonAutoBracketRelease ) } ,
{ 0x008b , " LensFStops " , N_ ( " Lens FStops " ) , N_ ( " Lens FStops " ) , nikon3Id , makerTags , undefined , - 1 , print0x008b } ,
{ 0x008c , " ContrastCurve " , N_ ( " Contrast Curve " ) , N_ ( " Contrast curve " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x008d , " ColorHue " , N_ ( " Color Hue " ) , N_ ( " Color hue " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x008f , " SceneMode " , N_ ( " Scene Mode " ) , N_ ( " Scene mode " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0090 , " LightSource " , N_ ( " Light Source " ) , N_ ( " Light source " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0091 , " ShotInfo " , " Shot Info " , N_ ( " Shot info " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0092 , " HueAdjustment " , N_ ( " Hue Adjustment " ) , N_ ( " Hue adjustment " ) , nikon3Id , makerTags , signedShort , - 1 , printValue } ,
{ 0x0093 , " NEFCompression " , N_ ( " NEF Compression " ) , N_ ( " NEF compression " ) , nikon3Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikonNefCompression ) } ,
{ 0x0094 , " Saturation " , N_ ( " Saturation " ) , N_ ( " Saturation " ) , nikon3Id , makerTags , signedShort , - 1 , printValue } ,
{ 0x0095 , " NoiseReduction " , N_ ( " Noise Reduction " ) , N_ ( " Noise reduction " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x0096 , " LinearizationTable " , N_ ( " Linearization Table " ) , N_ ( " Linearization table " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0097 , " ColorBalance " , N_ ( " Color Balance " ) , N_ ( " Color balance " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0098 , " LensData " , N_ ( " Lens Data " ) , N_ ( " Lens data settings " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0099 , " RawImageCenter " , N_ ( " Raw Image Center " ) , N_ ( " Raw image center " ) , nikon3Id , makerTags , unsignedShort , - 1 , printValue } ,
{ 0x009a , " SensorPixelSize " , N_ ( " Sensor Pixel Size " ) , N_ ( " Sensor pixel size " ) , nikon3Id , makerTags , unsignedRational , - 1 , print0x009a } ,
{ 0x009b , " 0x009b " , " 0x009b " , N_ ( " Unknown " ) , nikon3Id , makerTags , unsignedShort , - 1 , printValue } ,
{ 0x009c , " SceneAssist " , N_ ( " Scene Assist " ) , N_ ( " Scene assist " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x009e , " RetouchHistory " , N_ ( " Retouch History " ) , N_ ( " Retouch history " ) , nikon3Id , makerTags , unsignedShort , - 1 , print0x009e } ,
{ 0x009f , " 0x009f " , " 0x009f " , N_ ( " Unknown " ) , nikon3Id , makerTags , signedShort , - 1 , printValue } ,
{ 0x00a0 , " SerialNO " , N_ ( " Serial NO " ) , N_ ( " Camera serial number, usually starts with \" NO= \" " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x00a2 , " ImageDataSize " , N_ ( " Image Data Size " ) , N_ ( " Image data size " ) , nikon3Id , makerTags , unsignedLong , - 1 , printValue } ,
{ 0x00a3 , " 0x00a3 " , " 0x00a3 " , N_ ( " Unknown " ) , nikon3Id , makerTags , unsignedByte , - 1 , printValue } ,
{ 0x00a5 , " ImageCount " , N_ ( " Image Count " ) , N_ ( " Image count " ) , nikon3Id , makerTags , unsignedLong , - 1 , printValue } ,
{ 0x00a6 , " DeletedImageCount " , N_ ( " Deleted Image Count " ) , N_ ( " Deleted image count " ) , nikon3Id , makerTags , unsignedLong , - 1 , printValue } ,
{ 0x00a7 , " ShutterCount " , N_ ( " Shutter Count " ) , N_ ( " Number of shots taken by camera " ) , nikon3Id , makerTags , unsignedLong , - 1 , printValue } ,
{ 0x00a8 , " FlashInfo " , " Flash Info " , N_ ( " Flash info " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x00a9 , " ImageOptimization " , N_ ( " Image Optimization " ) , N_ ( " Image optimization " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x00aa , " Saturation " , N_ ( " Saturation " ) , N_ ( " Saturation " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x00ab , " VariProgram " , N_ ( " Program Variation " ) , N_ ( " Program variation " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x00ac , " ImageStabilization " , N_ ( " Image Stabilization " ) , N_ ( " Image stabilization " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x00ad , " AFResponse " , N_ ( " AF Response " ) , N_ ( " AF response " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x00b0 , " MultiExposure " , " Multi Exposure " , N_ ( " Multi exposure " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x00b1 , " HighISONoiseReduction " , N_ ( " High ISO Noise Reduction " ) , N_ ( " High ISO Noise Reduction " ) , nikon3Id , makerTags , unsignedShort , - 1 , EXV_PRINT_TAG ( nikonHighISONoiseReduction ) } ,
{ 0x00b3 , " ToningEffect " , " Toning Effect " , N_ ( " Toning effect " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
{ 0x00b7 , " AFInfo2 " , " AF Info 2 " , N_ ( " AF info 2 " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x00b8 , " FileInfo " , " File Info " , N_ ( " File info " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x00b9 , " AFTune " , " AF Tune " , N_ ( " AF tune " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x00c3 , " BarometerInfo " , " Barometer Info " , N_ ( " Barometer Info " ) , nikon3Id , makerTags , signedLong , - 1 , Nikon1MakerNote : : printBarValue } ,
{ 0x0e00 , " PrintIM " , N_ ( " Print IM " ) , N_ ( " PrintIM information " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
// TODO: Add Capture Data decoding implementation.
{ 0x0e01 , " CaptureData " , N_ ( " Capture Data " ) , N_ ( " Capture data " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0e09 , " CaptureVersion " , N_ ( " Capture Version " ) , N_ ( " Capture version " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
// TODO: Add Capture Offsets decoding implementation.
{ 0x0e0e , " CaptureOffsets " , N_ ( " Capture Offsets " ) , N_ ( " Capture offsets " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0e10 , " ScanIFD " , " Scan IFD " , N_ ( " Scan IFD " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0e1d , " ICCProfile " , " ICC Profile " , N_ ( " ICC profile " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
{ 0x0e1e , " CaptureOutput " , " Capture Output " , N_ ( " Capture output " ) , nikon3Id , makerTags , undefined , - 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikon3MnTag) " , " (UnknownNikon3MnTag) " , N_ ( " Unknown Nikon3MakerNote tag " ) , nikon3Id , makerTags , asciiString , - 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagList ( )
{
return tagInfo_ ;
}
//! YesNo, used for DaylightSavings, tag index 2
constexpr TagDetails nikonYesNo [ ] = {
{ 0 , N_ ( " No " ) } ,
{ 1 , N_ ( " Yes " ) }
} ;
//! DateDisplayFormat, tag index 3
constexpr TagDetails nikonDateDisplayFormat [ ] = {
{ 0 , N_ ( " Y/M/D " ) } ,
{ 1 , N_ ( " M/D/Y " ) } ,
{ 2 , N_ ( " D/M/Y " ) }
} ;
//! OnOff
constexpr TagDetails nikonOnOff [ ] = {
{ 1 , N_ ( " On " ) } ,
{ 2 , N_ ( " Off " ) }
} ;
// Nikon3 Vibration Reduction Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoVr_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonVrId , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " VibrationReduction " , N_ ( " Vibration Reduction " ) , N_ ( " Vibration reduction " ) , nikonVrId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonOnOff ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonVrTag) " , " (UnknownNikonVrTag) " , N_ ( " Unknown Nikon Vibration Reduction Tag " ) , nikonVrId , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListVr ( )
{
return tagInfoVr_ ;
}
//! Adjust
constexpr TagDetails nikonAdjust [ ] = {
{ 0 , N_ ( " Default Settings " ) } ,
{ 1 , N_ ( " Quick Adjust " ) } ,
{ 2 , N_ ( " Full Control " ) }
} ;
//! FilterEffect
constexpr TagDetails nikonFilterEffect [ ] = {
{ 0x80 , N_ ( " Off " ) } ,
{ 0x81 , N_ ( " Yellow " ) } ,
{ 0x82 , N_ ( " Orange " ) } ,
{ 0x83 , N_ ( " Red " ) } ,
{ 0x84 , N_ ( " Green " ) } ,
{ 0xff , N_ ( " n/a " ) }
} ;
//! ToningEffect
constexpr TagDetails nikonToningEffect [ ] = {
{ 0x80 , N_ ( " B&W " ) } ,
{ 0x81 , N_ ( " Sepia " ) } ,
{ 0x82 , N_ ( " Cyanotype " ) } ,
{ 0x83 , N_ ( " Red " ) } ,
{ 0x84 , N_ ( " Yellow " ) } ,
{ 0x85 , N_ ( " Green " ) } ,
{ 0x86 , N_ ( " Blue-green " ) } ,
{ 0x87 , N_ ( " Blue " ) } ,
{ 0x88 , N_ ( " Purple-blue " ) } ,
{ 0x89 , N_ ( " Red-purple " ) } ,
{ 0xff , N_ ( " n/a " ) }
} ;
// Nikon3 Picture Control Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoPc_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonPcId , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " Name " , N_ ( " Name " ) , N_ ( " Name " ) , nikonPcId , makerTags , asciiString , 20 , printValue } ,
{ 24 , " Base " , N_ ( " Base " ) , N_ ( " Base " ) , nikonPcId , makerTags , asciiString , 20 , printValue } ,
{ 48 , " Adjust " , N_ ( " Adjust " ) , N_ ( " Adjust " ) , nikonPcId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonAdjust ) } ,
{ 49 , " QuickAdjust " , N_ ( " Quick Adjust " ) , N_ ( " Quick adjust " ) , nikonPcId , makerTags , unsignedByte , 1 , printPictureControl } ,
{ 50 , " Sharpness " , N_ ( " Sharpness " ) , N_ ( " Sharpness " ) , nikonPcId , makerTags , unsignedByte , 1 , printPictureControl } ,
{ 51 , " Contrast " , N_ ( " Contrast " ) , N_ ( " Contrast " ) , nikonPcId , makerTags , unsignedByte , 1 , printPictureControl } ,
{ 52 , " Brightness " , N_ ( " Brightness " ) , N_ ( " Brightness " ) , nikonPcId , makerTags , unsignedByte , 1 , printPictureControl } ,
{ 53 , " Saturation " , N_ ( " Saturation " ) , N_ ( " Saturation " ) , nikonPcId , makerTags , unsignedByte , 1 , printPictureControl } ,
{ 54 , " HueAdjustment " , N_ ( " Hue Adjustment " ) , N_ ( " Hue adjustment " ) , nikonPcId , makerTags , unsignedByte , 1 , printPictureControl } ,
{ 55 , " FilterEffect " , N_ ( " Filter Effect " ) , N_ ( " Filter effect " ) , nikonPcId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFilterEffect ) } ,
{ 56 , " ToningEffect " , N_ ( " Toning Effect " ) , N_ ( " Toning effect " ) , nikonPcId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonToningEffect ) } ,
{ 57 , " ToningSaturation " , N_ ( " Toning Saturation " ) , N_ ( " Toning saturation " ) , nikonPcId , makerTags , unsignedByte , 1 , printPictureControl } ,
// End of list marker
{ 0xffff , " (UnknownNikonPcTag) " , " (UnknownNikonPcTag) " , N_ ( " Unknown Nikon Picture Control Tag " ) , nikonPcId , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListPc ( )
{
return tagInfoPc_ ;
}
//! OnOff
constexpr TagDetails aftOnOff [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " On " ) } ,
{ 2 , N_ ( " On " ) }
} ;
// Nikon3 AF Fine Tune
constexpr TagInfo Nikon3MakerNote : : tagInfoAFT_ [ ] = {
{ 0 , " AFFineTune " , N_ ( " AF Fine Tune " ) , N_ ( " AF fine tune " ) , nikonAFTId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( aftOnOff ) } ,
{ 1 , " AFFineTuneIndex " , N_ ( " AF Fine Tune Index " ) , N_ ( " AF fine tune index " ) , nikonAFTId , makerTags , unsignedByte , 1 , printValue } ,
{ 2 , " AFFineTuneAdj " , N_ ( " AF Fine Tune Adjustment " ) , N_ ( " AF fine tune adjustment " ) , nikonAFTId , makerTags , signedByte , 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonAFTTag) " , " (UnknownNikonAFTTag) " , N_ ( " Unknown Nikon AF Fine Tune Tag " ) , nikonAFTId , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListAFT ( )
{
return tagInfoAFT_ ;
}
// Nikon3 World Time Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoWt_ [ ] = {
{ 0 , " Timezone " , N_ ( " Timezone " ) , N_ ( " Timezone " ) , nikonWtId , makerTags , signedShort , 1 , printTimeZone } ,
{ 2 , " DaylightSavings " , N_ ( " Daylight Savings " ) , N_ ( " Daylight savings " ) , nikonWtId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonYesNo ) } ,
{ 3 , " DateDisplayFormat " , N_ ( " Date Display Format " ) , N_ ( " Date display format " ) , nikonWtId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonDateDisplayFormat ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonWtTag) " , " (UnknownNikonWtTag) " , N_ ( " Unknown Nikon World Time Tag " ) , nikonWtId , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListWt ( )
{
return tagInfoWt_ ;
}
//! ISOExpansion, tag index 4 and 10
constexpr TagDetails nikonIsoExpansion [ ] = {
{ 0x000 , N_ ( " Off " ) } ,
{ 0x101 , N_ ( " Hi 0.3 " ) } ,
{ 0x102 , N_ ( " Hi 0.5 " ) } ,
{ 0x103 , N_ ( " Hi 0.7 " ) } ,
{ 0x104 , N_ ( " Hi 1.0 " ) } ,
{ 0x105 , N_ ( " Hi 1.3 " ) } ,
{ 0x106 , N_ ( " Hi 1.5 " ) } ,
{ 0x107 , N_ ( " Hi 1.7 " ) } ,
{ 0x108 , N_ ( " Hi 2.0 " ) } ,
{ 0x109 , N_ ( " Hi 2.3 " ) } ,
{ 0x10a , N_ ( " Hi 2.5 " ) } ,
{ 0x10b , N_ ( " Hi 2.7 " ) } ,
{ 0x10c , N_ ( " Hi 3.0 " ) } ,
{ 0x10d , N_ ( " Hi 3.3 " ) } ,
{ 0x10e , N_ ( " Hi 3.5 " ) } ,
{ 0x10f , N_ ( " Hi 3.7 " ) } ,
{ 0x110 , N_ ( " Hi 4.0 " ) } ,
{ 0x111 , N_ ( " Hi 4.3 " ) } ,
{ 0x112 , N_ ( " Hi 4.5 " ) } ,
{ 0x113 , N_ ( " Hi 4.7 " ) } ,
{ 0x114 , N_ ( " Hi 5.0 " ) } ,
{ 0x201 , N_ ( " Lo 0.3 " ) } ,
{ 0x202 , N_ ( " Lo 0.5 " ) } ,
{ 0x203 , N_ ( " Lo 0.7 " ) } ,
{ 0x204 , N_ ( " Lo 1.0 " ) }
} ;
// Nikon3 ISO Info Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoIi_ [ ] = {
{ 0 , " ISO " , N_ ( " ISO " ) , N_ ( " ISO " ) , nikonIiId , makerTags , unsignedByte , 1 , printIiIso } ,
{ 4 , " ISOExpansion " , N_ ( " ISO Expansion " ) , N_ ( " ISO expansion " ) , nikonIiId , makerTags , unsignedShort , 1 , EXV_PRINT_TAG ( nikonIsoExpansion ) } ,
{ 6 , " ISO2 " , N_ ( " ISO 2 " ) , N_ ( " ISO 2 " ) , nikonIiId , makerTags , unsignedByte , 1 , printIiIso } ,
{ 10 , " ISOExpansion2 " , N_ ( " ISO Expansion 2 " ) , N_ ( " ISO expansion 2 " ) , nikonIiId , makerTags , unsignedShort , 1 , EXV_PRINT_TAG ( nikonIsoExpansion ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonIiTag) " , " (UnknownNikonIiTag) " , N_ ( " Unknown Nikon Iso Info Tag " ) , nikonIiId , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListIi ( )
{
return tagInfoIi_ ;
}
//! AfAreaMode
constexpr TagDetails nikonAfAreaMode [ ] = {
{ 0 , N_ ( " Single Area " ) } ,
{ 1 , N_ ( " Dynamic Area " ) } ,
{ 2 , N_ ( " Dynamic Area, Closest Subject " ) } ,
{ 3 , N_ ( " Group Dynamic " ) } ,
{ 4 , N_ ( " Single Area (wide) " ) } ,
{ 5 , N_ ( " Dynamic Area (wide) " ) }
} ;
//! AfPoint
constexpr TagDetails nikonAfPoint [ ] = {
{ 0 , N_ ( " Center " ) } ,
{ 1 , N_ ( " Top " ) } ,
{ 2 , N_ ( " Bottom " ) } ,
{ 3 , N_ ( " Mid-left " ) } ,
{ 4 , N_ ( " Mid-right " ) } ,
{ 5 , N_ ( " Upper-left " ) } ,
{ 6 , N_ ( " Upper-right " ) } ,
{ 7 , N_ ( " Lower-left " ) } ,
{ 8 , N_ ( " Lower-right " ) } ,
{ 9 , N_ ( " Far Left " ) } ,
{ 10 , N_ ( " Far Right " ) }
} ;
//! AfPointsInFocus
constexpr TagDetailsBitmask nikonAfPointsInFocus [ ] = {
{ 0x0001 , N_ ( " Center " ) } ,
{ 0x0002 , N_ ( " Top " ) } ,
{ 0x0004 , N_ ( " Bottom " ) } ,
{ 0x0008 , N_ ( " Mid-left " ) } ,
{ 0x0010 , N_ ( " Mid-right " ) } ,
{ 0x0020 , N_ ( " Upper-left " ) } ,
{ 0x0040 , N_ ( " Upper-right " ) } ,
{ 0x0080 , N_ ( " Lower-left " ) } ,
{ 0x0100 , N_ ( " Lower-right " ) } ,
{ 0x0200 , N_ ( " Far Left " ) } ,
{ 0x0400 , N_ ( " Far Right " ) }
} ;
// Nikon3 Auto Focus Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoAf_ [ ] = {
{ 0 , " AFAreaMode " , N_ ( " AF Area Mode " ) , N_ ( " AF area mode " ) , nikonAfId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonAfAreaMode ) } ,
{ 1 , " AFPoint " , N_ ( " AF Point " ) , N_ ( " AF point " ) , nikonAfId , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonAfPoint ) } ,
{ 2 , " AFPointsInFocus " , N_ ( " AF Points In Focus " ) , N_ ( " AF points in focus " ) , nikonAfId , makerTags , unsignedShort , 1 , printAfPointsInFocus } ,
// End of list marker
{ 0xffff , " (UnknownNikonAfTag) " , " (UnknownNikonAfTag) " , N_ ( " Unknown Nikon Auto Focus Tag " ) , nikonAfId , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListAf ( )
{
return tagInfoAf_ ;
}
//! PhaseDetectAF
constexpr TagDetails nikonPhaseDetectAF [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " On (51-point) " ) } ,
{ 2 , N_ ( " On (11-point) " ) } ,
{ 3 , N_ ( " On (39-point) " ) } ,
{ 4 , N_ ( " On (73-point) " ) } ,
{ 5 , N_ ( " On (73-point, new) " ) } ,
{ 6 , N_ ( " On (105-point) " ) } ,
{ 7 , N_ ( " On (153-point) " ) } ,
} ;
// Nikon3 Auto Focus Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoAf21_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonAf21Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " ContrastDetectAF " , N_ ( " Contrast Detect AF " ) , N_ ( " Contrast detect AF " ) , nikonAf21Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonOffOn ) } ,
{ 5 , " AFAreaMode " , N_ ( " AF Area Mode " ) , N_ ( " AF area mode " ) , nikonAf21Id , makerTags , unsignedByte , 1 , printValue } ,
{ 6 , " PhaseDetectAF " , N_ ( " Phase Detect AF " ) , N_ ( " Phase detect AF " ) , nikonAf21Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonPhaseDetectAF ) } ,
{ 7 , " PrimaryAFPoint " , N_ ( " Primary AF Point " ) , N_ ( " Primary AF point " ) , nikonAf21Id , makerTags , unsignedByte , 1 , printValue } ,
{ 8 , " AFPointsUsed " , N_ ( " AF Points Used " ) , N_ ( " AF points used " ) , nikonAf21Id , makerTags , unsignedByte , 7 , printValue } ,
{ 16 , " AFImageWidth " , N_ ( " AF Image Width " ) , N_ ( " AF image width " ) , nikonAf21Id , makerTags , unsignedShort , 1 , printValue } ,
{ 18 , " AFImageHeight " , N_ ( " AF Image Height " ) , N_ ( " AF image height " ) , nikonAf21Id , makerTags , unsignedShort , 1 , printValue } ,
{ 20 , " AFAreaXPosition " , N_ ( " AF Area X Position " ) , N_ ( " AF area x position " ) , nikonAf21Id , makerTags , unsignedShort , 1 , printValue } ,
{ 22 , " AFAreaYPosition " , N_ ( " AF Area Y Position " ) , N_ ( " AF area y position " ) , nikonAf21Id , makerTags , unsignedShort , 1 , printValue } ,
{ 24 , " AFAreaWidth " , N_ ( " AF Area Width " ) , N_ ( " AF area width " ) , nikonAf21Id , makerTags , unsignedShort , 1 , printValue } ,
{ 26 , " AFAreaHeight " , N_ ( " AF Area Height " ) , N_ ( " AF area height " ) , nikonAf21Id , makerTags , unsignedShort , 1 , printValue } ,
{ 28 , " ContrastDetectAFInFocus " , N_ ( " Contrast Detect AF In Focus " ) , N_ ( " Contrast detect AF in focus " ) , nikonAf21Id , makerTags , unsignedShort , 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonAf2Tag) " , " (UnknownNikonAf2Tag) " , N_ ( " Unknown Nikon Auto Focus 2 Tag " ) , nikonAf21Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListAf21 ( )
{
return tagInfoAf21_ ;
}
// Nikon3 Auto Focus Tag Info Version 1.01 https://github.com/Exiv2/exiv2/pull/900
constexpr TagInfo Nikon3MakerNote : : tagInfoAf22_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonAf22Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " ContrastDetectAF " , N_ ( " Contrast Detect AF " ) , N_ ( " Contrast detect AF " ) , nikonAf22Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonOffOn ) } ,
{ 5 , " AFAreaMode " , N_ ( " AF Area Mode " ) , N_ ( " AF area mode " ) , nikonAf22Id , makerTags , unsignedByte , 1 , printValue } ,
{ 6 , " PhaseDetectAF " , N_ ( " Phase Detect AF " ) , N_ ( " Phase detect AF " ) , nikonAf22Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonPhaseDetectAF ) } ,
{ 7 , " PrimaryAFPoint " , N_ ( " Primary AF Point " ) , N_ ( " Primary AF point " ) , nikonAf22Id , makerTags , unsignedByte , 1 , printValue } ,
{ 8 , " AFPointsUsed " , N_ ( " AF Points Used " ) , N_ ( " AF points used " ) , nikonAf22Id , makerTags , unsignedByte , 7 , printValue } ,
{ 70 , " AFImageWidth " , N_ ( " AF Image Width " ) , N_ ( " AF image width " ) , nikonAf22Id , makerTags , unsignedShort , 1 , printValue } ,
{ 72 , " AFImageHeight " , N_ ( " AF Image Height " ) , N_ ( " AF image height " ) , nikonAf22Id , makerTags , unsignedShort , 1 , printValue } ,
{ 74 , " AFAreaXPosition " , N_ ( " AF Area X Position " ) , N_ ( " AF area x position " ) , nikonAf22Id , makerTags , unsignedShort , 1 , printValue } ,
{ 76 , " AFAreaYPosition " , N_ ( " AF Area Y Position " ) , N_ ( " AF area y position " ) , nikonAf22Id , makerTags , unsignedShort , 1 , printValue } ,
{ 78 , " AFAreaWidth " , N_ ( " AF Area Width " ) , N_ ( " AF area width " ) , nikonAf22Id , makerTags , unsignedShort , 1 , printValue } ,
{ 80 , " AFAreaHeight " , N_ ( " AF Area Height " ) , N_ ( " AF area height " ) , nikonAf22Id , makerTags , unsignedShort , 1 , printValue } ,
{ 82 , " ContrastDetectAFInFocus " , N_ ( " Contrast Detect AF In Focus " ) , N_ ( " Contrast detect AF in focus " ) , nikonAf22Id , makerTags , unsignedShort , 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonAf2Tag) " , " (UnknownNikonAf2Tag) " , N_ ( " Unknown Nikon Auto Focus 2 Tag " ) , nikonAf22Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListAf22 ( )
{
return tagInfoAf22_ ;
}
// Nikon3 File Info Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoFi_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonFiId , makerTags , undefined , 4 , printExifVersion } ,
{ 6 , " DirectoryNumber " , N_ ( " Directory Number " ) , N_ ( " Directory number " ) , nikonFiId , makerTags , unsignedShort , 1 , printValue } ,
{ 8 , " FileNumber " , N_ ( " File Number " ) , N_ ( " File number " ) , nikonFiId , makerTags , unsignedShort , 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonFiTag) " , " (UnknownNikonFiTag) " , N_ ( " Unknown Nikon File Info Tag " ) , nikonFiId , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListFi ( )
{
return tagInfoFi_ ;
}
//! MultiExposureMode
constexpr TagDetails nikonMultiExposureMode [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " Multiple Exposure " ) } ,
{ 2 , N_ ( " Image Overlay " ) }
} ;
// Nikon3 Multi Exposure Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoMe_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonMeId , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " MultiExposureMode " , N_ ( " Multi Exposure Mode " ) , N_ ( " Multi exposure mode " ) , nikonMeId , makerTags , unsignedLong , 1 , EXV_PRINT_TAG ( nikonMultiExposureMode ) } ,
{ 8 , " MultiExposureShots " , N_ ( " Multi Exposure Shots " ) , N_ ( " Multi exposure shots " ) , nikonMeId , makerTags , unsignedLong , 1 , printValue } ,
{ 12 , " MultiExposureAutoGain " , N_ ( " Multi Exposure Auto Gain " ) , N_ ( " Multi exposure auto gain " ) , nikonMeId , makerTags , unsignedLong , 1 , EXV_PRINT_TAG ( nikonOffOn ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonMeTag) " , " (UnknownNikonMeTag) " , N_ ( " Unknown Nikon Multi Exposure Tag " ) , nikonMeId , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListMe ( )
{
return tagInfoMe_ ;
}
//! FlashSource
constexpr TagDetails nikonFlashSource [ ] = {
{ 0 , N_ ( " None " ) } ,
{ 1 , N_ ( " External " ) } ,
{ 2 , N_ ( " Internal " ) }
} ;
//! FlashFirmware
constexpr TagDetails nikonFlashFirmware [ ] = {
{ 0x0000 , N_ ( " n/a " ) } ,
{ 0x0101 , N_ ( " 1.01 (SB-800 or Metz 58 AF-1) " ) } ,
{ 0x0103 , " 1.03 (SB-800) " } ,
{ 0x0201 , " 2.01 (SB-800) " } ,
{ 0x0204 , " 2.04 (SB-600) " } ,
{ 0x0205 , " 2.05 (SB-600) " } ,
{ 0x0301 , " 3.01 (SU-800 Remote Commander) " } ,
{ 0x0401 , " 4.01 (SB-400) " } ,
{ 0x0402 , " 4.02 (SB-400) " } ,
{ 0x0404 , " 4.04 (SB-400) " } ,
{ 0x0501 , " 5.01 (SB-900) " } ,
{ 0x0502 , " 5.02 (SB-900) " } ,
{ 0x0601 , " 6.01 (SB-700) " } ,
{ 0x0701 , " 7.01 (SB-910) " }
} ;
//! FlashGNDistance
constexpr TagDetails nikonFlashGNDistance [ ] = {
{ 0 , N_ ( " None " ) } ,
{ 1 , " 0.1 m " } ,
{ 2 , " 0.2 m " } ,
{ 3 , " 0.3 m " } ,
{ 4 , " 0.4 m " } ,
{ 5 , " 0.5 m " } ,
{ 6 , " 0.6 m " } ,
{ 7 , " 0.7 m " } ,
{ 8 , " 0.8 m " } ,
{ 9 , " 0.9 m " } ,
{ 10 , " 1.0 m " } ,
{ 11 , " 1.1 m " } ,
{ 12 , " 1.3 m " } ,
{ 13 , " 1.4 m " } ,
{ 14 , " 1.6 m " } ,
{ 15 , " 1.8 m " } ,
{ 16 , " 2.0 m " } ,
{ 17 , " 2.2 m " } ,
{ 18 , " 2.5 m " } ,
{ 19 , " 2.8 m " } ,
{ 20 , " 3.2 m " } ,
{ 21 , " 3.6 m " } ,
{ 22 , " 4.0 m " } ,
{ 23 , " 4.5 m " } ,
{ 24 , " 5.0 m " } ,
{ 25 , " 5.6 m " } ,
{ 26 , " 6.3 m " } ,
{ 27 , " 7.1 m " } ,
{ 28 , " 8.0 m " } ,
{ 29 , " 9.0 m " } ,
{ 30 , " 10.0 m " } ,
{ 31 , " 11.0 m " } ,
{ 32 , " 13.0 m " } ,
{ 33 , " 14.0 m " } ,
{ 34 , " 16.0 m " } ,
{ 35 , " 18.0 m " } ,
{ 36 , " 20.0 m " } ,
{ 255 , N_ ( " n/a " ) }
} ;
//! FlashControlMode
constexpr TagDetails nikonFlashControlMode [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " iTTL-BL " ) } ,
{ 2 , N_ ( " iTTL " ) } ,
{ 3 , N_ ( " Auto Aperture " ) } ,
{ 4 , N_ ( " Automatic " ) } ,
{ 5 , N_ ( " GN (distance priority) " ) } ,
{ 6 , N_ ( " Manual " ) } ,
{ 7 , N_ ( " Repeating Flash " ) } ,
} ;
//! ExternalFlashFlags
constexpr TagDetails nikonExternalFlashFlags [ ] = {
{ 0 , N_ ( " Fired " ) } ,
{ 2 , N_ ( " Bounce Flash " ) } ,
{ 4 , N_ ( " Wide Flash Adapter " ) }
} ;
//! FlashColorFilter
constexpr TagDetails nikonFlashColorFilter [ ] = {
{ 0 , N_ ( " None " ) } ,
{ 1 , N_ ( " FL-GL1 " ) } ,
{ 2 , N_ ( " FL-GL2 " ) } ,
{ 9 , N_ ( " TN-A1 " ) } ,
{ 10 , N_ ( " TN-A2 " ) } ,
{ 65 , N_ ( " Red " ) } ,
{ 66 , N_ ( " Blue " ) } ,
{ 67 , N_ ( " Yellow " ) } ,
{ 68 , N_ ( " Amber " ) }
} ;
// Nikon3 Flash Info 1 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoFl1_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonFl1Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " FlashSource " , N_ ( " Flash Source " ) , N_ ( " Flash source " ) , nikonFl1Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashSource ) } ,
{ 5 , " 0x0005 " , N_ ( " 0x0005 " ) , N_ ( " Unknown " ) , nikonFl1Id , makerTags , unsignedByte , 1 , printValue } ,
{ 6 , " ExternalFlashFirmware " , N_ ( " External Flash Firmware " ) , N_ ( " External flash firmware " ) , nikonFl1Id , makerTags , unsignedShort , 1 , EXV_PRINT_TAG ( nikonFlashFirmware ) } ,
{ 8 , " ExternalFlashFlags " , N_ ( " External Flash Flags " ) , N_ ( " External flash flags " ) , nikonFl1Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonExternalFlashFlags ) } ,
{ 11 , " FlashFocalLength " , N_ ( " Flash Focal Length " ) , N_ ( " Flash focal length " ) , nikonFl1Id , makerTags , unsignedByte , 1 , printFlashFocalLength } ,
{ 12 , " RepeatingFlashRate " , N_ ( " Repeating Flash Rate " ) , N_ ( " Repeating flash rate " ) , nikonFl1Id , makerTags , unsignedByte , 1 , printRepeatingFlashRate } ,
{ 13 , " RepeatingFlashCount " , N_ ( " Repeating Flash Count " ) , N_ ( " Repeating flash count " ) , nikonFl1Id , makerTags , unsignedByte , 1 , printRepeatingFlashCount } ,
{ 14 , " FlashGNDistance " , N_ ( " Flash GN Distance " ) , N_ ( " Flash GN distance " ) , nikonFl1Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashGNDistance ) } ,
{ 15 , " FlashGroupAControlMode " , N_ ( " Flash Group A Control Mode " ) , N_ ( " Flash group a control mode " ) , nikonFl1Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashControlMode ) } ,
{ 16 , " FlashGroupBControlMode " , N_ ( " Flash Group B Control Mode " ) , N_ ( " Flash group b control mode " ) , nikonFl1Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashControlMode ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonMeTag) " , " (UnknownNikonMeTag) " , N_ ( " Unknown Nikon Multi Exposure Tag " ) , nikonFl1Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListFl1 ( )
{
return tagInfoFl1_ ;
}
// Nikon3 Flash Info 2 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoFl2_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonFl2Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " FlashSource " , N_ ( " Flash Source " ) , N_ ( " Flash source " ) , nikonFl2Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashSource ) } ,
{ 5 , " 0x0005 " , N_ ( " 0x0005 " ) , N_ ( " Unknown " ) , nikonFl2Id , makerTags , unsignedByte , 1 , printValue } ,
{ 6 , " ExternalFlashFirmware " , N_ ( " External Flash Firmware " ) , N_ ( " External flash firmware " ) , nikonFl2Id , makerTags , unsignedShort , 1 , EXV_PRINT_TAG ( nikonFlashFirmware ) } ,
{ 8 , " ExternalFlashFlags " , N_ ( " External Flash Flags " ) , N_ ( " External flash flags " ) , nikonFl2Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonExternalFlashFlags ) } ,
{ 12 , " FlashFocalLength " , N_ ( " Flash Focal Length " ) , N_ ( " Flash focal length " ) , nikonFl2Id , makerTags , unsignedByte , 1 , printFlashFocalLength } ,
{ 13 , " RepeatingFlashRate " , N_ ( " Repeating Flash Rate " ) , N_ ( " Repeating flash rate " ) , nikonFl2Id , makerTags , unsignedByte , 1 , printRepeatingFlashRate } ,
{ 14 , " RepeatingFlashCount " , N_ ( " Repeating Flash Count " ) , N_ ( " Repeating flash count " ) , nikonFl2Id , makerTags , unsignedByte , 1 , printRepeatingFlashCount } ,
{ 15 , " FlashGNDistance " , N_ ( " Flash GN Distance " ) , N_ ( " Flash GN distance " ) , nikonFl2Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashGNDistance ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonMeTag) " , " (UnknownNikonMeTag) " , N_ ( " Unknown Nikon Multi Exposure Tag " ) , nikonFl2Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListFl2 ( )
{
return tagInfoFl2_ ;
}
// Nikon3 Flash Info 3 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoFl3_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonFl3Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " FlashSource " , N_ ( " Flash Source " ) , N_ ( " Flash source " ) , nikonFl3Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashSource ) } ,
{ 6 , " ExternalFlashFirmware " , N_ ( " External Flash Firmware " ) , N_ ( " External flash firmware " ) , nikonFl3Id , makerTags , unsignedShort , 1 , EXV_PRINT_TAG ( nikonFlashFirmware ) } ,
{ 8 , " ExternalFlashFlags " , N_ ( " External Flash Flags " ) , N_ ( " External flash flags " ) , nikonFl3Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonExternalFlashFlags ) } ,
{ 12 , " FlashFocalLength " , N_ ( " Flash Focal Length " ) , N_ ( " Flash focal length " ) , nikonFl3Id , makerTags , unsignedByte , 1 , printFlashFocalLength } ,
{ 13 , " RepeatingFlashRate " , N_ ( " Repeating Flash Rate " ) , N_ ( " Repeating flash rate " ) , nikonFl3Id , makerTags , unsignedByte , 1 , printRepeatingFlashRate } ,
{ 14 , " RepeatingFlashCount " , N_ ( " Repeating Flash Count " ) , N_ ( " Repeating flash count " ) , nikonFl3Id , makerTags , unsignedByte , 1 , printRepeatingFlashCount } ,
{ 15 , " FlashGNDistance " , N_ ( " Flash GN Distance " ) , N_ ( " Flash GN distance " ) , nikonFl3Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashGNDistance ) } ,
{ 16 , " FlashColorFilter " , N_ ( " Flash Color Filter " ) , N_ ( " Flash color filter " ) , nikonFl3Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashColorFilter ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonMeTag) " , " (UnknownNikonMeTag) " , N_ ( " Unknown Nikon Multi Exposure Tag " ) , nikonFl3Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListFl3 ( )
{
return tagInfoFl3_ ;
}
// Nikon3 Flash Info 7 (0107 and 0108) Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoFl7_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Flash info version " ) , nikonFl7Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " FlashSource " , N_ ( " Flash source " ) , N_ ( " The type of flash used (if any) " ) , nikonFl7Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashSource ) } ,
{ 6 , " ExternalFlashFirmware " , N_ ( " External Flash Firmware " ) , N_ ( " External flash firmware version " ) , nikonFl7Id , makerTags , unsignedShort , 1 , EXV_PRINT_TAG ( nikonFlashFirmware ) } ,
{ 8 , " ExternalFlashData1 " , N_ ( " External flash data " ) , N_ ( " External flash data " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printExternalFlashData1 } ,
{ 9 , " ExternalFlashData2 " , N_ ( " External flash ready state " ) , N_ ( " External flash ready state " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printExternalFlashData2 } ,
{ 10 , " FlashCompensation " , N_ ( " Flash compensation " ) , N_ ( " Flash compensation " ) , nikonFl7Id , makerTags , signedByte , 1 , printFlashCompensation } ,
{ 12 , " FlashFocalLength " , N_ ( " Flash focal length " ) , N_ ( " Flash focal length " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printFlashFocalLength } ,
{ 13 , " RepeatingFlashRate " , N_ ( " Repeating flash rate " ) , N_ ( " Repeating flash rate " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printRepeatingFlashRate } ,
{ 14 , " RepeatingFlashCount " , N_ ( " Repeating flash count " ) , N_ ( " Repeating flash count " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printRepeatingFlashCount } ,
{ 15 , " FlashGNDistance " , N_ ( " Flash GN Distance " ) , N_ ( " Flash GN distance " ) , nikonFl7Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashGNDistance ) } ,
{ 17 , " FlashGroupAControlData " , N_ ( " Flash group A control data " ) , N_ ( " Flash group A control data " ) , nikonFl7Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonFlashControlMode ) } ,
{ 18 , " FlashGroupBCControlData " , N_ ( " Flash group B/C control data " ) , N_ ( " Flash group B/C control data " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printFlashGroupBCControlData } ,
{ 40 , " FlashGroupAData " , N_ ( " Flash group A data " ) , N_ ( " Depending upon FlashGroupAControlData, either the FlashGroupACompensation value or the FlashGroupAOutput value " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printFlashGroupAData } ,
{ 41 , " FlashGroupBData " , N_ ( " Flash group B data " ) , N_ ( " Depending upon FlashGroupBCControlData, either the FlashGroupBCompensation value or the FlashGroupBOutput value " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printFlashGroupBData } ,
{ 42 , " FlashGroupCData " , N_ ( " Flash group C data " ) , N_ ( " Depending upon FlashGroupBCControlData, either the FlashGroupCCompensation value or the FlashGroupCOutput value " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printFlashGroupCData } ,
// End of list marker
{ 0xffff , " (UnknownNikonFl7Tag) " , " (UnknownNikonFl7Tag) " , N_ ( " Unknown Nikon Flash Info 7 Tag " ) , nikonFl7Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListFl7 ( )
{
return tagInfoFl7_ ;
}
// Nikon3 Shot Info D80 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoSi1_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonSi1Id , makerTags , unsignedByte , 4 , printExifVersion } ,
{ 586 , " ShutterCount " , N_ ( " Shutter Count " ) , N_ ( " Shutter count " ) , nikonSi1Id , makerTags , unsignedLong , 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonSi1Tag) " , " (UnknownNikonSi1Tag) " , N_ ( " Unknown Nikon Shot Info D80 Tag " ) , nikonSi1Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListSi1 ( )
{
return tagInfoSi1_ ;
}
// Nikon3 Shot Info D40 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoSi2_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonSi2Id , makerTags , unsignedByte , 4 , printExifVersion } ,
{ 582 , " ShutterCount " , N_ ( " Shutter Count " ) , N_ ( " Shutter count " ) , nikonSi2Id , makerTags , unsignedLong , 1 , printValue } ,
{ 738 , " FlashLevel " , N_ ( " Flash Level " ) , N_ ( " Flash level " ) , nikonSi2Id , makerTags , unsignedByte , 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonSi2Tag) " , " (UnknownNikonSi2Tag) " , N_ ( " Unknown Nikon Shot Info D40 Tag " ) , nikonSi2Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListSi2 ( )
{
return tagInfoSi2_ ;
}
//! AfFineTuneAdj D300 (a)
constexpr TagDetails nikonAfFineTuneAdj1 [ ] = {
{ 0x0000 , " 0 " } ,
{ 0x003a , " +1 " } ,
{ 0x003b , " +2 " } ,
{ 0x003c , " +4 " } ,
{ 0x003d , " +8 " } ,
{ 0x003e , " +16 " } ,
{ 0x00c2 , " -16 " } ,
{ 0x00c3 , " -8 " } ,
{ 0x00c4 , " -4 " } ,
{ 0x00c5 , " -2 " } ,
{ 0x00c6 , " -1 " } ,
{ 0x103e , " +17 " } ,
{ 0x10c2 , " -17 " } ,
{ 0x203d , " +9 " } ,
{ 0x203e , " +18 " } ,
{ 0x20c2 , " -18 " } ,
{ 0x20c3 , " -9 " } ,
{ 0x303e , " +19 " } ,
{ 0x30c2 , " -19 " } ,
{ 0x403c , " +5 " } ,
{ 0x403d , " +10 " } ,
{ 0x403e , " +20 " } ,
{ 0x40c2 , " -20 " } ,
{ 0x40c3 , " -10 " } ,
{ 0x40c4 , " -5 " } ,
{ 0x603d , " +11 " } ,
{ 0x60c3 , " -11 " } ,
{ 0x803b , " +3 " } ,
{ 0x803c , " +6 " } ,
{ 0x803d , " +12 " } ,
{ 0x80c3 , " -12 " } ,
{ 0x80c4 , " -6 " } ,
{ 0x80c5 , " -3 " } ,
{ 0xa03d , " +13 " } ,
{ 0xa0c3 , " -13 " } ,
{ 0xc03c , " +7 " } ,
{ 0xc03d , " +14 " } ,
{ 0xc0c3 , " -14 " } ,
{ 0xc0c4 , " -7 " } ,
{ 0xe03d , " +15 " } ,
{ 0xe0c3 , " -15 " }
} ;
// Nikon3 Shot Info D300 (a) Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoSi3_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonSi3Id , makerTags , unsignedByte , 4 , printExifVersion } ,
{ 604 , " ISO " , N_ ( " ISO " ) , N_ ( " ISO " ) , nikonSi3Id , makerTags , unsignedByte , 1 , printIiIso } ,
{ 633 , " ShutterCount " , N_ ( " Shutter Count " ) , N_ ( " Shutter count " ) , nikonSi3Id , makerTags , unsignedLong , 1 , printValue } ,
{ 721 , " AFFineTuneAdj " , N_ ( " AF Fine Tune Adj " ) , N_ ( " AF fine tune adj " ) , nikonSi3Id , makerTags , unsignedShort , 1 , EXV_PRINT_TAG ( nikonAfFineTuneAdj1 ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonSi3Tag) " , " (UnknownNikonSi3Tag) " , N_ ( " Unknown Nikon Shot Info D300 (a) Tag " ) , nikonSi3Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListSi3 ( )
{
return tagInfoSi3_ ;
}
//! AfFineTuneAdj D300 (b)
constexpr TagDetails nikonAfFineTuneAdj2 [ ] = {
{ 0x0000 , " 0 " } ,
{ 0x043e , " +13 " } ,
{ 0x04c2 , " -13 " } ,
{ 0x183d , " +7 " } ,
{ 0x183e , " +14 " } ,
{ 0x18c2 , " -14 " } ,
{ 0x18c3 , " -7 " } ,
{ 0x2c3e , " +15 " } ,
{ 0x2cc2 , " -15 " } ,
{ 0x403a , " +1 " } ,
{ 0x403b , " +2 " } ,
{ 0x403c , " +4 " } ,
{ 0x403d , " +8 " } ,
{ 0x403e , " +16 " } ,
{ 0x40c2 , " -16 " } ,
{ 0x40c3 , " -8 " } ,
{ 0x40c4 , " -4 " } ,
{ 0x40c5 , " -2 " } ,
{ 0x40c6 , " -1 " } ,
{ 0x543e , " +17 " } ,
{ 0x54c2 , " -17 " } ,
{ 0x683d , " +9 " } ,
{ 0x683e , " +18 " } ,
{ 0x68c2 , " -18 " } ,
{ 0x68c3 , " -9 " } ,
{ 0x7c3e , " +19 " } ,
{ 0x7cc2 , " -19 " } ,
{ 0x903c , " +5 " } ,
{ 0x903d , " +10 " } ,
{ 0x903e , " +20 " } ,
{ 0x90c2 , " -20 " } ,
{ 0x90c3 , " -10 " } ,
{ 0x90c4 , " -5 " } ,
{ 0xb83d , " +11 " } ,
{ 0xb8c3 , " -11 " } ,
{ 0xe03b , " +3 " } ,
{ 0xe03c , " +6 " } ,
{ 0xe03d , " +12 " } ,
{ 0xe0c3 , " -12 " } ,
{ 0xe0c4 , " -6 " } ,
{ 0xe0c5 , " -3 " }
} ;
// Nikon3 Shot Info D300 (b) Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoSi4_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonSi4Id , makerTags , unsignedByte , 4 , printExifVersion } ,
{ 613 , " ISO " , N_ ( " ISO " ) , N_ ( " ISO " ) , nikonSi4Id , makerTags , unsignedByte , 1 , printIiIso } ,
{ 644 , " ShutterCount " , N_ ( " Shutter Count " ) , N_ ( " Shutter count " ) , nikonSi4Id , makerTags , unsignedLong , 1 , printValue } ,
{ 732 , " AFFineTuneAdj " , N_ ( " AF Fine Tune Adj " ) , N_ ( " AF fine tune adj " ) , nikonSi4Id , makerTags , unsignedShort , 1 , EXV_PRINT_TAG ( nikonAfFineTuneAdj2 ) } ,
// End of list marker
{ 0xffff , " (UnknownNikonSi4Tag) " , " (UnknownNikonSi4Tag) " , N_ ( " Unknown Nikon Shot Info D300 (b) Tag " ) , nikonSi4Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListSi4 ( )
{
return tagInfoSi4_ ;
}
//! VibrationReduction
constexpr TagDetails nikonOffOn2 [ ] = {
{ 0 , N_ ( " Off " ) } ,
{ 1 , N_ ( " On (1) " ) } ,
{ 2 , N_ ( " On (2) " ) } ,
{ 3 , N_ ( " On (3) " ) }
} ;
//! VibrationReduction2
constexpr TagDetails nikonOffOn3 [ ] = {
{ 0x0 , N_ ( " n/a " ) } ,
{ 0xc , N_ ( " Off " ) } ,
{ 0xf , N_ ( " On " ) }
} ;
// Nikon3 Shot Info Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoSi5_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonSi5Id , makerTags , unsignedByte , 4 , printExifVersion } ,
{ 106 , " ShutterCount1 " , N_ ( " Shutter Count 1 " ) , N_ ( " Shutter count 1 " ) , nikonSi5Id , makerTags , unsignedLong , 1 , printValue } ,
{ 110 , " DeletedImageCount " , N_ ( " Deleted Image Count " ) , N_ ( " Deleted image count " ) , nikonSi5Id , makerTags , unsignedLong , 1 , printValue } ,
{ 117 , " VibrationReduction " , N_ ( " Vibration Reduction " ) , N_ ( " Vibration reduction " ) , nikonSi5Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonOffOn2 ) } ,
{ 130 , " VibrationReduction1 " , N_ ( " Vibration Reduction 1 " ) , N_ ( " Vibration reduction 1 " ) , nikonSi5Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonOffOn ) } ,
{ 343 , " ShutterCount2 " , N_ ( " Shutter Count 2 " ) , N_ ( " Shutter count 2 " ) , nikonSi5Id , makerTags , undefined , 2 , printValue } ,
{ 430 , " VibrationReduction2 " , N_ ( " Vibration Reduction 2 " ) , N_ ( " Vibration reduction 2 " ) , nikonSi5Id , makerTags , unsignedByte , 1 , EXV_PRINT_TAG ( nikonOffOn3 ) } ,
{ 598 , " ISO " , N_ ( " ISO " ) , N_ ( " ISO " ) , nikonSi5Id , makerTags , unsignedByte , 1 , printIiIso } ,
{ 630 , " ShutterCount " , N_ ( " Shutter Count " ) , N_ ( " Shutter count " ) , nikonSi5Id , makerTags , unsignedLong , 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonSi5Tag) " , " (UnknownNikonSi5Tag) " , N_ ( " Unknown Nikon Shot Info Tag " ) , nikonSi5Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListSi5 ( )
{
return tagInfoSi5_ ;
}
// Nikon3 Color Balance 1 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoCb1_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonCb1Id , makerTags , undefined , 4 , printExifVersion } ,
{ 36 , " WB_RBGGLevels " , N_ ( " WB RBGG Levels " ) , N_ ( " WB RBGG levels " ) , nikonCb1Id , makerTags , unsignedShort , 4 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonCb1Tag) " , " (UnknownNikonCb1Tag) " , N_ ( " Unknown Nikon Color Balance 1 Tag " ) , nikonCb1Id , makerTags , unsignedShort , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListCb1 ( )
{
return tagInfoCb1_ ;
}
// Nikon3 Color Balance 2 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoCb2_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonCb2Id , makerTags , undefined , 4 , printExifVersion } ,
{ 5 , " WB_RGGBLevels " , N_ ( " WB RGGB Levels " ) , N_ ( " WB RGGB levels " ) , nikonCb2Id , makerTags , unsignedShort , 4 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonCb2Tag) " , " (UnknownNikonCb2Tag) " , N_ ( " Unknown Nikon Color Balance 2 Tag " ) , nikonCb2Id , makerTags , unsignedShort , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListCb2 ( )
{
return tagInfoCb2_ ;
}
// Nikon3 Color Balance 2a Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoCb2a_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonCb2aId , makerTags , undefined , 4 , printExifVersion } ,
{ 9 , " WB_RGGBLevels " , N_ ( " WB RGGB Levels " ) , N_ ( " WB RGGB levels " ) , nikonCb2aId , makerTags , unsignedShort , 4 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonCb2aTag) " , " (UnknownNikonCb2aTag) " , N_ ( " Unknown Nikon Color Balance 2a Tag " ) , nikonCb2aId , makerTags , unsignedShort , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListCb2a ( )
{
return tagInfoCb2a_ ;
}
// Nikon3 Color Balance 2b Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoCb2b_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonCb2bId , makerTags , undefined , 4 , printExifVersion } ,
{ 145 , " WB_RGGBLevels " , N_ ( " WB RGGB Levels " ) , N_ ( " WB RGGB levels " ) , nikonCb2bId , makerTags , unsignedShort , 4 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonCb2bTag) " , " (UnknownNikonCb2bTag) " , N_ ( " Unknown Nikon Color Balance 2b Tag " ) , nikonCb2bId , makerTags , unsignedShort , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListCb2b ( )
{
return tagInfoCb2b_ ;
}
// Nikon3 Color Balance 3 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoCb3_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonCb3Id , makerTags , undefined , 4 , printExifVersion } ,
{ 10 , " WB_RGBGLevels " , N_ ( " WB RGBG Levels " ) , N_ ( " WB RGBG levels " ) , nikonCb3Id , makerTags , unsignedShort , 4 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonCb3Tag) " , " (UnknownNikonCb3Tag) " , N_ ( " Unknown Nikon Color Balance 3 Tag " ) , nikonCb3Id , makerTags , unsignedShort , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListCb3 ( )
{
return tagInfoCb3_ ;
}
// Nikon3 Color Balance 4 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoCb4_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonCb4Id , makerTags , undefined , 4 , printExifVersion } ,
{ 147 , " WB_GRBGLevels " , N_ ( " WB GRBG Levels " ) , N_ ( " WB GRBG levels " ) , nikonCb4Id , makerTags , unsignedShort , 4 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonCb4Tag) " , " (UnknownNikonCb4Tag) " , N_ ( " Unknown Nikon Color Balance 4 Tag " ) , nikonCb4Id , makerTags , unsignedShort , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListCb4 ( )
{
return tagInfoCb4_ ;
}
// Nikon3 Lens Data 1 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoLd1_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonLd1Id , makerTags , undefined , 4 , printExifVersion } ,
{ 6 , " LensIDNumber " , N_ ( " Lens ID Number " ) , N_ ( " Lens ID number " ) , nikonLd1Id , makerTags , unsignedByte , 1 , printLensId1 } ,
{ 7 , " LensFStops " , N_ ( " Lens F-Stops " ) , N_ ( " Lens F-stops " ) , nikonLd1Id , makerTags , unsignedByte , 1 , printFStops } ,
{ 8 , " MinFocalLength " , N_ ( " Min Focal Length " ) , N_ ( " Min focal length " ) , nikonLd1Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 9 , " MaxFocalLength " , N_ ( " Max Focal Length " ) , N_ ( " Max focal length " ) , nikonLd1Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 10 , " MaxApertureAtMinFocal " , N_ ( " Max Aperture At Min Focal " ) , N_ ( " Max aperture at min focal " ) , nikonLd1Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 11 , " MaxApertureAtMaxFocal " , N_ ( " Max Aperture At Max Focal " ) , N_ ( " Max aperture at max focal " ) , nikonLd1Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 12 , " MCUVersion " , N_ ( " MCU Version " ) , N_ ( " MCU version " ) , nikonLd1Id , makerTags , unsignedByte , 1 , printValue } ,
// End of list marker
{ 0xffff , " (UnknownNikonLd1Tag) " , " (UnknownNikonLd1Tag) " , N_ ( " Unknown Nikon Lens Data 1 Tag " ) , nikonLd1Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListLd1 ( )
{
return tagInfoLd1_ ;
}
// Nikon3 Lens Data 2 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoLd2_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonLd2Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " ExitPupilPosition " , N_ ( " Exit Pupil Position " ) , N_ ( " Exit pupil position " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printExitPupilPosition } ,
{ 5 , " AFAperture " , N_ ( " AF Aperture " ) , N_ ( " AF aperture " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 8 , " FocusPosition " , N_ ( " Focus Position " ) , N_ ( " Focus position " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printValue } ,
{ 9 , " FocusDistance " , N_ ( " Focus Distance " ) , N_ ( " Focus distance " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printFocusDistance } ,
{ 10 , " FocalLength " , N_ ( " Focal Length " ) , N_ ( " Focal length " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 11 , " LensIDNumber " , N_ ( " Lens ID Number " ) , N_ ( " Lens ID number " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printLensId2 } ,
{ 12 , " LensFStops " , N_ ( " Lens F-Stops " ) , N_ ( " Lens F-stops " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printFStops } ,
{ 13 , " MinFocalLength " , N_ ( " Min Focal Length " ) , N_ ( " Min focal length " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 14 , " MaxFocalLength " , N_ ( " Max Focal Length " ) , N_ ( " Max focal length " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 15 , " MaxApertureAtMinFocal " , N_ ( " Max Aperture At Min Focal " ) , N_ ( " Max aperture at min focal " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 16 , " MaxApertureAtMaxFocal " , N_ ( " Max Aperture At Max Focal " ) , N_ ( " Max aperture at max focal " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 17 , " MCUVersion " , N_ ( " MCU Version " ) , N_ ( " MCU version " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printValue } ,
{ 18 , " EffectiveMaxAperture " , N_ ( " Effective Max Aperture " ) , N_ ( " Effective max aperture " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printAperture } ,
// End of list marker
{ 0xffff , " (UnknownNikonLd2Tag) " , " (UnknownNikonLd2Tag) " , N_ ( " Unknown Nikon Lens Data 2 Tag " ) , nikonLd2Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListLd2 ( )
{
return tagInfoLd2_ ;
}
// Nikon3 Lens Data 3 Tag Info
constexpr TagInfo Nikon3MakerNote : : tagInfoLd3_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonLd3Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " ExitPupilPosition " , N_ ( " Exit Pupil Position " ) , N_ ( " Exit pupil position " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printExitPupilPosition } ,
{ 5 , " AFAperture " , N_ ( " AF Aperture " ) , N_ ( " AF aperture " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 8 , " FocusPosition " , N_ ( " Focus Position " ) , N_ ( " Focus position " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printValue } ,
{ 10 , " FocusDistance " , N_ ( " Focus Distance " ) , N_ ( " Focus distance " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printFocusDistance } ,
{ 11 , " FocalLength " , N_ ( " Focal Length " ) , N_ ( " Focal length " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 12 , " LensIDNumber " , N_ ( " Lens ID Number " ) , N_ ( " Lens ID number " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printLensId3 } ,
{ 13 , " LensFStops " , N_ ( " Lens F-Stops " ) , N_ ( " Lens F-stops " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printFStops } ,
{ 14 , " MinFocalLength " , N_ ( " Min Focal Length " ) , N_ ( " Min focal length " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 15 , " MaxFocalLength " , N_ ( " Max Focal Length " ) , N_ ( " Max focal length " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 16 , " MaxApertureAtMinFocal " , N_ ( " Max Aperture At Min Focal " ) , N_ ( " Max aperture at min focal length " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 17 , " MaxApertureAtMaxFocal " , N_ ( " Max Aperture At Max Focal " ) , N_ ( " Max aperture at max focal length " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 18 , " MCUVersion " , N_ ( " MCU Version " ) , N_ ( " MCU version " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printValue } ,
{ 19 , " EffectiveMaxAperture " , N_ ( " Effective Max Aperture " ) , N_ ( " Effective max aperture " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printAperture } ,
// End of list marker
{ 0xffff , " (UnknownNikonLd3Tag) " , " (UnknownNikonLd3Tag) " , N_ ( " Unknown Nikon Lens Data 3 Tag " ) , nikonLd3Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListLd3 ( )
{
return tagInfoLd3_ ;
}
// Nikon3 Lens Data 4 Tag Info
// based on https://exiftool.org/TagNames/Nikon.html#LensData0800
constexpr TagInfo Nikon3MakerNote : : tagInfoLd4_ [ ] = {
{ 0 , " Version " , N_ ( " Version " ) , N_ ( " Version " ) , nikonLd4Id , makerTags , undefined , 4 , printExifVersion } ,
{ 4 , " ExitPupilPosition " , N_ ( " Exit Pupil Position " ) , N_ ( " Exit pupil position " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printExitPupilPosition } ,
{ 5 , " AFAperture " , N_ ( " AF Aperture " ) , N_ ( " AF aperture " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 9 , " FocusPosition " , N_ ( " Focus Position " ) , N_ ( " Focus position " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printValue } ,
{ 11 , " FocusDistance " , N_ ( " Focus Distance " ) , N_ ( " Focus distance " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printFocusDistance } ,
{ 12 , " FocalLength " , N_ ( " Focal Length " ) , N_ ( " Focal length " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 13 , " LensIDNumber " , N_ ( " Lens ID Number " ) , N_ ( " Lens ID number " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printLensId4 } ,
{ 14 , " LensFStops " , N_ ( " Lens F-Stops " ) , N_ ( " Lens F-stops " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printFStops } ,
{ 15 , " MinFocalLength " , N_ ( " Min Focal Length " ) , N_ ( " Min focal length " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 16 , " MaxFocalLength " , N_ ( " Max Focal Length " ) , N_ ( " Max focal length " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printFocal } ,
{ 17 , " MaxApertureAtMinFocal " , N_ ( " Max Aperture At Min Focal " ) , N_ ( " Max aperture at min focal length " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 18 , " MaxApertureAtMaxFocal " , N_ ( " Max Aperture At Max Focal " ) , N_ ( " Max aperture at max focal length " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 19 , " MCUVersion " , N_ ( " MCU Version " ) , N_ ( " MCU version " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printValue } ,
{ 20 , " EffectiveMaxAperture " , N_ ( " Effective Max Aperture " ) , N_ ( " Effective max aperture " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printAperture } ,
{ 48 , " LensID " , N_ ( " LensID " ) , N_ ( " Lens ID " ) , nikonLd4Id , makerTags , unsignedShort , 1 , printLensId4ZMount } ,
{ 54 , " MaxAperture " , N_ ( " Max Aperture " ) , N_ ( " Max aperture " ) , nikonLd4Id , makerTags , unsignedShort , 1 , printApertureLd4 } ,
{ 56 , " FNumber " , N_ ( " F-Number " ) , N_ ( " F-Number " ) , nikonLd4Id , makerTags , unsignedShort , 1 , printApertureLd4 } ,
{ 60 , " FocalLength " , N_ ( " Focal Length " ) , N_ ( " Focal length " ) , nikonLd4Id , makerTags , unsignedShort , 1 , printFocalLd4 } ,
{ 79 , " FocusDistance " , N_ ( " Focus Distance " ) , N_ ( " Focus distance " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printFocusDistance } ,
// End of list marker
{ 0xffff , " (UnknownNikonLd4Tag) " , " (UnknownNikonLd4Tag) " , N_ ( " Unknown Nikon Lens Data 3 Tag " ) , nikonLd4Id , makerTags , unsignedByte , 1 , printValue } ,
} ;
const TagInfo * Nikon3MakerNote : : tagListLd4 ( )
{
return tagInfoLd4_ ;
}
std : : ostream & Nikon3MakerNote : : printIiIso ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
double v = 100 * exp ( ( value . toLong ( ) / 12.0 - 5 ) * log ( 2.0 ) ) ;
return os < < static_cast < int > ( v + 0.5 ) ;
}
std : : ostream & Nikon3MakerNote : : print0x0002 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) > 1 ) {
os < < value . toLong ( 1 ) ;
}
else {
os < < " ( " < < value < < " ) " ;
}
return os ;
}
std : : ostream & Nikon3MakerNote : : print0x0007 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : string focus = value . toString ( ) ;
if ( focus = = " AF-C " ) os < < _ ( " Continuous autofocus " ) ;
else if ( focus = = " AF-S " ) os < < _ ( " Single autofocus " ) ;
else if ( focus = = " AF-A " ) os < < _ ( " Automatic " ) ;
else os < < " ( " < < value < < " ) " ;
return os ;
}
std : : ostream & Nikon3MakerNote : : print0x0083 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
long lensType = value . toLong ( ) ;
bool valid = false ;
if ( lensType & 1 )
{
os < < " MF " ;
valid = true ;
}
if ( lensType & 2 )
{
os < < " D " ;
valid = true ;
}
if ( lensType & 4 )
{
os < < " G " ;
valid = true ;
}
if ( lensType & 8 )
{
os < < " VR " ;
valid = true ;
}
if ( ! valid )
os < < " ( " < < lensType < < " ) " ;
return os ;
}
std : : ostream & Nikon3MakerNote : : print0x0084 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 4
| | value . toRational ( 0 ) . second = = 0
| | value . toRational ( 1 ) . second = = 0 ) {
os < < " ( " < < value < < " ) " ;
return os ;
}
long len1 = value . toLong ( 0 ) ;
long len2 = value . toLong ( 1 ) ;
Rational fno1 = value . toRational ( 2 ) ;
Rational fno2 = value . toRational ( 3 ) ;
os < < len1 ;
if ( len2 ! = len1 ) {
os < < " - " < < len2 ;
}
os < < " mm " ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < " F " < < std : : setprecision ( 2 )
< < static_cast < float > ( fno1 . first ) / fno1 . second ;
if ( fno2 ! = fno1 ) {
os < < " - " < < std : : setprecision ( 2 )
< < static_cast < float > ( fno2 . first ) / fno2 . second ;
}
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : print0x0085 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
Rational distance = value . toRational ( ) ;
if ( distance . first = = 0 ) {
os < < _ ( " Unknown " ) ;
}
else if ( distance . second ! = 0 ) {
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 2 ) < < static_cast < float > ( distance . first ) / distance . second < < " m " ;
os . copyfmt ( oss ) ;
}
else {
os < < " ( " < < value < < " ) " ;
}
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : print0x0086 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
Rational zoom = value . toRational ( ) ;
if ( zoom . first = = 0 ) {
os < < _ ( " Not used " ) ;
}
else if ( zoom . second ! = 0 ) {
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < static_cast < float > ( zoom . first ) / zoom . second < < " x " ;
os . copyfmt ( oss ) ;
}
else {
os < < " ( " < < value < < " ) " ;
}
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : print0x0088 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . size ( ) ! = 4 ) { // Size is 4 even for those who map this way...
os < < " ( " < < value < < " ) " ;
}
else {
// Mapping by Roger Larsson
unsigned focusmetering = value . toLong ( 0 ) ;
unsigned focuspoint = value . toLong ( 1 ) ;
unsigned focusused = ( value . toLong ( 2 ) < < 8 ) + value . toLong ( 3 ) ;
// TODO: enum {standard, wide} combination = standard;
const unsigned focuspoints = sizeof ( nikonFocuspoints )
/ sizeof ( nikonFocuspoints [ 0 ] ) ;
if ( focusmetering = = 0 & & focuspoint = = 0 & & focusused = = 0 ) {
// Special case, in Manual focus and with Nikon compacts
// this indicates that the field has no meaning.
// But when actually in "Single area, Center" this can mean
// that focus was not found (try this in AF-C mode)
// TODO: handle the meaningful case (interacts with other fields)
os < < " N/A " ;
return os ;
}
switch ( focusmetering ) {
case 0x00 : os < < _ ( " Single area " ) ; break ; // D70, D200
case 0x01 : os < < _ ( " Dynamic area " ) ; break ; // D70, D200
case 0x02 : os < < _ ( " Closest subject " ) ; break ; // D70, D200
case 0x03 : os < < _ ( " Group dynamic-AF " ) ; break ; // D200
case 0x04 : os < < _ ( " Single area (wide) " ) ; /* TODO: combination = wide; */ break ; // D200
case 0x05 : os < < _ ( " Dynamic area (wide) " ) ; /* TODO: combination = wide; */ break ; // D200
default : os < < " ( " < < focusmetering < < " ) " ; break ;
}
char sep = ' ; ' ;
if ( focusmetering ! = 0x02 ) { // No user selected point for Closest subject
os < < sep < < ' ' ;
// What focuspoint did the user select?
if ( focuspoint < focuspoints ) {
os < < nikonFocuspoints [ focuspoint ] ;
// TODO: os << position[focuspoint][combination]
}
else
os < < " ( " < < focuspoint < < " ) " ;
sep = ' , ' ;
}
// What focuspoints(!) did the camera use? add if differs
if ( focusused = = 0 )
os < < sep < < " " < < _ ( " none " ) ;
else if ( focusused ! = 1U < < focuspoint ) {
// selected point was not the actually used one
// (Roger Larsson: my interpretation, verify)
os < < sep ;
for ( unsigned fpid = 0 ; fpid < focuspoints ; fpid + + )
if ( focusused & 1 < < fpid )
os < < ' ' < < nikonFocuspoints [ fpid ] ;
}
os < < " " < < _ ( " used " ) ;
}
return os ;
}
std : : ostream & Nikon3MakerNote : : printAfPointsInFocus ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
if ( value . typeId ( ) ! = unsignedShort ) return os < < " ( " < < value < < " ) " ;
bool dModel = false ;
if ( metadata ) {
auto pos = metadata - > findKey ( ExifKey ( " Exif.Image.Model " ) ) ;
if ( pos ! = metadata - > end ( ) & & pos - > count ( ) ! = 0 ) {
std : : string model = pos - > toString ( ) ;
if ( model . find ( " NIKON D " ) ! = std : : string : : npos ) {
dModel = true ;
}
}
}
auto val = static_cast < uint16_t > ( value . toLong ( ) ) ;
if ( dModel ) val = ( val > > 8 ) | ( ( val & 0x00ff ) < < 8 ) ;
if ( val = = 0x07ff ) return os < < _ ( " All 11 Points " ) ;
UShortValue v ;
v . value_ . push_back ( val ) ;
return EXV_PRINT_TAG_BITMASK ( nikonAfPointsInFocus ) ( os , v , nullptr ) ;
}
std : : ostream & Nikon3MakerNote : : print0x0089 ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedShort ) {
return os < < " ( " < < value < < " ) " ;
}
long l = value . toLong ( 0 ) ;
if ( l = = 0 ) return os < < _ ( " Single-frame " ) ;
if ( ! ( l & 0x87 ) ) os < < _ ( " Single-frame " ) < < " , " ;
bool d70 = false ;
if ( metadata ) {
ExifKey key ( " Exif.Image.Model " ) ;
auto pos = metadata - > findKey ( key ) ;
if ( pos ! = metadata - > end ( ) & & pos - > count ( ) ! = 0 ) {
std : : string model = pos - > toString ( ) ;
if ( model . find ( " D70 " ) ! = std : : string : : npos ) {
d70 = true ;
}
}
}
if ( d70 ) {
EXV_PRINT_TAG_BITMASK ( nikonShootingModeD70 ) ( os , value , nullptr ) ;
}
else {
EXV_PRINT_TAG_BITMASK ( nikonShootingMode ) ( os , value , nullptr ) ;
}
return os ;
}
std : : ostream & Nikon3MakerNote : : print0x008b ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
// Decoded by Robert Rottmerhusen <email@rottmerhusen.com>
if ( value . size ( ) ! = 4
| | value . typeId ( ) ! = undefined ) {
return os < < " ( " < < value < < " ) " ;
}
float a = value . toFloat ( 0 ) ;
long b = value . toLong ( 1 ) ;
long c = value . toLong ( 2 ) ;
if ( c = = 0 ) return os < < " ( " < < value < < " ) " ;
return os < < a * b / c ;
}
static bool testConfigFile ( std : : ostream & os , const Value & value ) ;
static bool testConfigFile ( std : : ostream & os , const Value & value )
{
bool result = false ;
const std : : string undefined ( " undefined " ) ;
const std : : string section ( " nikon " ) ;
if ( Internal : : readExiv2Config ( section , value . toString ( ) , undefined ) ! = undefined ) {
os < < Internal : : readExiv2Config ( section , value . toString ( ) , undefined ) ;
result = true ;
}
return result ;
}
std : : ostream & Nikon3MakerNote : : printLensId1 ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
return testConfigFile ( os , value ) ? os : printLensId ( os , value , metadata , " NikonLd1 " ) ;
}
std : : ostream & Nikon3MakerNote : : printLensId2 ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
return testConfigFile ( os , value ) ? os : printLensId ( os , value , metadata , " NikonLd2 " ) ;
}
std : : ostream & Nikon3MakerNote : : printLensId3 ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
return testConfigFile ( os , value ) ? os : printLensId ( os , value , metadata , " NikonLd3 " ) ;
}
std : : ostream & Nikon3MakerNote : : printLensId4 ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
return testConfigFile ( os , value ) ? os : printLensId ( os , value , metadata , " NikonLd4 " ) ;
}
std : : ostream & Nikon3MakerNote : : printLensId ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata ,
const std : : string & group )
{
# ifdef EXV_HAVE_LENSDATA
// 8< - - - 8< do not remove this line >8 - - - >8
//------------------------------------------------------------------------------
# ifndef FMOUNTLH
# define FMOUNTLH
//------------------------------------------------------------------------------
// List of AF F-Mount lenses - Version 4.4.550.02 2018-03-03
//------------------------------------------------------------------------------
# define FMLVERSION "4.4.550.02"
# define FMLDATE "2018-03-03"
//------------------------------------------------------------------------------
//
//
// Created by Robert Rottmerhusen 2005 - 2018
// http://www.rottmerhusen.com (lens_id@rottmerhusen.com)
//
// For contributor info and more visit my online list:
// http://www.rottmerhusen.com/objektives/lensid/thirdparty.html
//
//
// Eight misidentified lenses due to double LensIDs:
//
// 2F 48 30 44 24 24 29 02.1: Nikon AF Zoom-Nikkor 20-35mm f/2.8D IF
// 2F 48 30 44 24 24 29 02.2: Tokina AT-X 235 AF PRO (AF 20-35mm f/2.8)
//
// 32 54 6A 6A 24 24 35 02.1: Nikon AF Micro-Nikkor 105mm f/2.8D
// 32 54 6A 6A 24 24 35 02.2: Sigma Macro 105mm F2.8 EX DG
//
// 7A 3C 1F 37 30 30 7E 06.1: Nikon AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED
// 7A 3C 1F 37 30 30 7E 06.2: Tokina AT-X 124 AF PRO DX II (AF 12-24mm f/4)
//
// 8B 40 2D 80 2C 3C FD 0E.1: Nikon AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED
// 8B 40 2D 80 2C 3C FD 0E.2: Nikon AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED II
//
// 32 53 64 64 24 24 35 02.1: Tamron SP AF 90mm F/2.8 Macro 1:1 (172E)
// 32 53 64 64 24 24 35 02.2: Tamron SP AF 90mm F/2.8 Di Macro 1:1 (272E)
//
// 2F 40 30 44 2C 34 29 02.1: Tokina AF 235 II (AF 20-35mm f/3.5-4.5)
// 2F 40 30 44 2C 34 29 02.2: Tokina AF 193 (AF 19-35mm f/3.5-4.5)
//
// 25 48 3C 5C 24 24 1B 02.1: Tokina AT-X 287 AF PRO SV (AF 28-70mm f/2.8)
// 25 48 3C 5C 24 24 1B 02.2: Tokina AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8)
//
// 4A 48 24 24 24 0C 4D 02.1: Samyang AE 14mm f/2.8 ED AS IF UMC
// 4A 48 24 24 24 0C 4D 02.2: Samyang 10mm f/2.8 ED AS NCS CS
//
//
// product number/order code not complete
//
// Free use in non-commercial, GPL or open source software only!
// Please contact me for adding lenses or use in commercial software.
//
//"data from TAG 0x98" "ltyp" " "TC" "MID" "maker" "PN" "lens name from manuf";
//
//------------------------------------------------------------------------------
// Nikkor lenses by their LensID
//------------------------------------------------------------------------------
//
static const struct FMntLens { unsigned char lid , stps , focs , focl , aps , apl , lfw , ltype , tcinfo , dblid , mid ; const char * manuf , * lnumber , * lensname ; }
fmountlens [ ] = {
{ 0x01 , 0x58 , 0x50 , 0x50 , 0x14 , 0x14 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA00901 " , " AF Nikkor 50mm f/1.8 " } ,
{ 0x01 , 0x58 , 0x50 , 0x50 , 0x14 , 0x14 , 0x05 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA00901 " , " AF Nikkor 50mm f/1.8 " } ,
{ 0x02 , 0x42 , 0x44 , 0x5C , 0x2A , 0x34 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA72701 " , " AF Zoom-Nikkor 35-70mm f/3.3-4.5 " } ,
{ 0x02 , 0x42 , 0x44 , 0x5C , 0x2A , 0x34 , 0x08 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA72701 " , " AF Zoom-Nikkor 35-70mm f/3.3-4.5 " } ,
{ 0x03 , 0x48 , 0x5C , 0x81 , 0x30 , 0x30 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA72801 " , " AF Zoom-Nikkor 70-210mm f/4 " } ,
{ 0x04 , 0x48 , 0x3C , 0x3C , 0x24 , 0x24 , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA12001 " , " AF Nikkor 28mm f/2.8 " } ,
{ 0x05 , 0x54 , 0x50 , 0x50 , 0x0C , 0x0C , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA01001 " , " AF Nikkor 50mm f/1.4 " } ,
{ 0x06 , 0x54 , 0x53 , 0x53 , 0x24 , 0x24 , 0x06 , 0x00 , 0x40 , 0x00 , 0x00 , " Nikon " , " JAA62101 " , " AF Micro-Nikkor 55mm f/2.8 " } ,
{ 0x07 , 0x40 , 0x3C , 0x62 , 0x2C , 0x34 , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA72901 " , " AF Zoom-Nikkor 28-85mm f/3.5-4.5 " } ,
{ 0x08 , 0x40 , 0x44 , 0x6A , 0x2C , 0x34 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA73001 " , " AF Zoom-Nikkor 35-105mm f/3.5-4.5 " } ,
{ 0x09 , 0x48 , 0x37 , 0x37 , 0x24 , 0x24 , 0x04 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA12101 " , " AF Nikkor 24mm f/2.8 " } ,
{ 0x0A , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA322AA " , " AF Nikkor 300mm f/2.8 IF-ED " } ,
{ 0x0A , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0x05 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA322AB " , " AF Nikkor 300mm f/2.8 IF-ED " } ,
{ 0x0B , 0x48 , 0x7C , 0x7C , 0x24 , 0x24 , 0x05 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA32101 " , " AF Nikkor 180mm f/2.8 IF-ED " } ,
//0C
{ 0x0D , 0x40 , 0x44 , 0x72 , 0x2C , 0x34 , 0x07 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA73101 " , " AF Zoom-Nikkor 35-135mm f/3.5-4.5 " } ,
{ 0x0E , 0x48 , 0x5C , 0x81 , 0x30 , 0x30 , 0x05 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " AF Zoom-Nikkor 70-210mm f/4 " } ,
{ 0x0F , 0x58 , 0x50 , 0x50 , 0x14 , 0x14 , 0x05 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA009AD " , " AF Nikkor 50mm f/1.8 N " } ,
{ 0x10 , 0x48 , 0x8E , 0x8E , 0x30 , 0x30 , 0x08 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA32301 " , " AF Nikkor 300mm f/4 IF-ED " } ,
{ 0x11 , 0x48 , 0x44 , 0x5C , 0x24 , 0x24 , 0x08 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA73301 " , " AF Zoom-Nikkor 35-70mm f/2.8 " } ,
{ 0x11 , 0x48 , 0x44 , 0x5C , 0x24 , 0x24 , 0x15 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA73301 " , " AF Zoom-Nikkor 35-70mm f/2.8 " } ,
{ 0x12 , 0x48 , 0x5C , 0x81 , 0x30 , 0x3C , 0x09 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA73201 " , " AF Nikkor 70-210mm f/4-5.6 " } ,
{ 0x13 , 0x42 , 0x37 , 0x50 , 0x2A , 0x34 , 0x0B , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA73401 " , " AF Zoom-Nikkor 24-50mm f/3.3-4.5 " } ,
{ 0x14 , 0x48 , 0x60 , 0x80 , 0x24 , 0x24 , 0x0B , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA73501 " , " AF Zoom-Nikkor 80-200mm f/2.8 ED " } ,
{ 0x15 , 0x4C , 0x62 , 0x62 , 0x14 , 0x14 , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA32401 " , " AF Nikkor 85mm f/1.8 " } ,
//16
{ 0x17 , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0x0F , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA518AA " , " Nikkor 500mm f/4 P ED IF " } ,
{ 0x17 , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0x11 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA518AA " , " Nikkor 500mm f/4 P ED IF " } ,
{ 0x18 , 0x40 , 0x44 , 0x72 , 0x2C , 0x34 , 0x0E , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA736AA " , " AF Zoom-Nikkor 35-135mm f/3.5-4.5 N " } ,
//19
{ 0x1A , 0x54 , 0x44 , 0x44 , 0x18 , 0x18 , 0x11 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA12201 " , " AF Nikkor 35mm f/2 " } ,
{ 0x1B , 0x44 , 0x5E , 0x8E , 0x34 , 0x3C , 0x10 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA738AA " , " AF Zoom-Nikkor 75-300mm f/4.5-5.6 " } ,
{ 0x1C , 0x48 , 0x30 , 0x30 , 0x24 , 0x24 , 0x12 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA12301 " , " AF Nikkor 20mm f/2.8 " } ,
{ 0x1D , 0x42 , 0x44 , 0x5C , 0x2A , 0x34 , 0x12 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " AF Zoom-Nikkor 35-70mm f/3.3-4.5 N " } ,
{ 0x1E , 0x54 , 0x56 , 0x56 , 0x24 , 0x24 , 0x13 , 0x00 , 0x40 , 0x00 , 0x00 , " Nikon " , " JAA62201 " , " AF Micro-Nikkor 60mm f/2.8 " } ,
{ 0x1F , 0x54 , 0x6A , 0x6A , 0x24 , 0x24 , 0x14 , 0x00 , 0x40 , 0x00 , 0x00 , " Nikon " , " JAA62301 " , " AF Micro-Nikkor 105mm f/2.8 " } ,
{ 0x20 , 0x48 , 0x60 , 0x80 , 0x24 , 0x24 , 0x15 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " AF Zoom-Nikkor 80-200mm f/2.8 ED " } ,
{ 0x21 , 0x40 , 0x3C , 0x5C , 0x2C , 0x34 , 0x16 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " AF Zoom-Nikkor 28-70mm f/3.5-4.5 " } ,
{ 0x22 , 0x48 , 0x72 , 0x72 , 0x18 , 0x18 , 0x16 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA32501 " , " AF DC-Nikkor 135mm f/2 " } ,
{ 0x23 , 0x30 , 0xBE , 0xCA , 0x3C , 0x48 , 0x17 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " Zoom-Nikkor 1200-1700mm f/5.6-8 P ED IF " } ,
// - D - lenses from here
{ 0x24 , 0x48 , 0x60 , 0x80 , 0x24 , 0x24 , 0x1A , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA742DA " , " AF Zoom-Nikkor 80-200mm f/2.8D ED " } ,
{ 0x25 , 0x48 , 0x44 , 0x5c , 0x24 , 0x24 , 0x1B , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA743DA " , " AF Zoom-Nikkor 35-70mm f/2.8D " } ,
{ 0x25 , 0x48 , 0x44 , 0x5C , 0x24 , 0x24 , 0x3A , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA743DA " , " AF Zoom-Nikkor 35-70mm f/2.8D " } ,
{ 0x25 , 0x48 , 0x44 , 0x5c , 0x24 , 0x24 , 0x52 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA743DA " , " AF Zoom-Nikkor 35-70mm f/2.8D " } ,
{ 0x26 , 0x40 , 0x3C , 0x5C , 0x2C , 0x34 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA744DA " , " AF Zoom-Nikkor 28-70mm f/3.5-4.5D " } ,
// ^- not yet verified
{ 0x27 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0x1D , 0x02 , 0x07 , 0x00 , 0x00 , " Nikon " , " JAA326DA " , " AF-I Nikkor 300mm f/2.8D IF-ED " } ,
{ 0x27 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0xF1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA326DA " , " AF-I Nikkor 300mm f/2.8D IF-ED + TC-14E " } ,
{ 0x27 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0xE1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA326DA " , " AF-I Nikkor 300mm f/2.8D IF-ED + TC-17E " } ,
{ 0x27 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0xF2 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA326DA " , " AF-I Nikkor 300mm f/2.8D IF-ED + TC-20E " } ,
{ 0x28 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0x1D , 0x02 , 0x07 , 0x00 , 0x00 , " Nikon " , " JAA519DA " , " AF-I Nikkor 600mm f/4D IF-ED " } ,
{ 0x28 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0xF1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA519DA " , " AF-I Nikkor 600mm f/4D IF-ED + TC-14E " } ,
{ 0x28 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0xE1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA519DA " , " AF-I Nikkor 600mm f/4D IF-ED + TC-17E " } ,
{ 0x28 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0xF2 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA519DA " , " AF-I Nikkor 600mm f/4D IF-ED + TC-20E " } ,
//29
{ 0x2A , 0x54 , 0x3C , 0x3C , 0x0C , 0x0C , 0x26 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA124DA " , " AF Nikkor 28mm f/1.4D " } ,
{ 0x2B , 0x3C , 0x44 , 0x60 , 0x30 , 0x3C , 0x1F , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " AF Zoom-Nikkor 35-80mm f/4-5.6D " } ,
{ 0x2C , 0x48 , 0x6A , 0x6A , 0x18 , 0x18 , 0x27 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA327DA " , " AF DC-Nikkor 105mm f/2D " } ,
{ 0x2D , 0x48 , 0x80 , 0x80 , 0x30 , 0x30 , 0x21 , 0x02 , 0x40 , 0x00 , 0x00 , " Nikon " , " JAA624DA " , " AF Micro-Nikkor 200mm f/4D IF-ED " } ,
{ 0x2E , 0x48 , 0x5C , 0x82 , 0x30 , 0x3C , 0x22 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA747DA " , " AF Nikkor 70-210mm f/4-5.6D " } ,
{ 0x2E , 0x48 , 0x5C , 0x82 , 0x30 , 0x3C , 0x28 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA747DA " , " AF Nikkor 70-210mm f/4-5.6D " } ,
{ 0x2F , 0x48 , 0x30 , 0x44 , 0x24 , 0x24 , 0x29 , 0x02 , 0x00 , 0x01 , 0x00 , " Nikon " , " JAA746DA " , " AF Zoom-Nikkor 20-35mm f/2.8D IF " } ,
{ 0x30 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0x24 , 0x02 , 0x07 , 0x00 , 0x00 , " Nikon " , " JAA520DA " , " AF-I Nikkor 400mm f/2.8D IF-ED " } ,
{ 0x30 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0xF1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA520DA " , " AF-I Nikkor 400mm f/2.8D IF-ED + TC-14E " } ,
{ 0x30 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0xE1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA520DA " , " AF-I Nikkor 400mm f/2.8D IF-ED + TC-17E " } ,
{ 0x30 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0xF2 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA520DA " , " AF-I Nikkor 400mm f/2.8D IF-ED + TC-20E " } ,
{ 0x31 , 0x54 , 0x56 , 0x56 , 0x24 , 0x24 , 0x25 , 0x02 , 0x40 , 0x00 , 0x00 , " Nikon " , " JAA625DA " , " AF Micro-Nikkor 60mm f/2.8D " } ,
{ 0x32 , 0x54 , 0x6A , 0x6A , 0x24 , 0x24 , 0x35 , 0x02 , 0x40 , 0x01 , 0x00 , " Nikon " , " JAA627DA " , " AF Micro-Nikkor 105mm f/2.8D " } ,
{ 0x33 , 0x48 , 0x2D , 0x2D , 0x24 , 0x24 , 0x31 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA126DA " , " AF Nikkor 18mm f/2.8D " } ,
{ 0x34 , 0x48 , 0x29 , 0x29 , 0x24 , 0x24 , 0x32 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA626DA " , " AF Fisheye Nikkor 16mm f/2.8D " } ,
{ 0x35 , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0x33 , 0x02 , 0x07 , 0x00 , 0x00 , " Nikon " , " JAA521DA " , " AF-I Nikkor 500mm f/4D IF-ED " } ,
{ 0x35 , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0xF1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA521DA " , " AF-I Nikkor 500mm f/4D IF-ED + TC-14E " } ,
{ 0x35 , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0xE1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA521DA " , " AF-I Nikkor 500mm f/4D IF-ED + TC-17E " } ,
{ 0x35 , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0xF2 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA521DA " , " AF-I Nikkor 500mm f/4D IF-ED + TC-20E " } ,
{ 0x36 , 0x48 , 0x37 , 0x37 , 0x24 , 0x24 , 0x34 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA125DA " , " AF Nikkor 24mm f/2.8D " } ,
{ 0x37 , 0x48 , 0x30 , 0x30 , 0x24 , 0x24 , 0x36 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA127DA " , " AF Nikkor 20mm f/2.8D " } ,
{ 0x38 , 0x4C , 0x62 , 0x62 , 0x14 , 0x14 , 0x37 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA328DA " , " AF Nikkor 85mm f/1.8D " } ,
//39 38
{ 0x3A , 0x40 , 0x3C , 0x5C , 0x2C , 0x34 , 0x39 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA744DA " , " AF Zoom-Nikkor 28-70mm f/3.5-4.5D " } ,
{ 0x3B , 0x48 , 0x44 , 0x5C , 0x24 , 0x24 , 0x3A , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA743DA " , " AF Zoom-Nikkor 35-70mm f/2.8D N " } ,
{ 0x3C , 0x48 , 0x60 , 0x80 , 0x24 , 0x24 , 0x3B , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " AF Zoom-Nikkor 80-200mm f/2.8D ED " } ,
{ 0x3D , 0x3C , 0x44 , 0x60 , 0x30 , 0x3C , 0x3E , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " AF Zoom-Nikkor 35-80mm f/4-5.6D " } ,
{ 0x3E , 0x48 , 0x3C , 0x3C , 0x24 , 0x24 , 0x3D , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA128DA " , " AF Nikkor 28mm f/2.8D " } ,
{ 0x3F , 0x40 , 0x44 , 0x6A , 0x2C , 0x34 , 0x45 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA748DA " , " AF Zoom-Nikkor 35-105mm f/3.5-4.5D " } ,
//40
{ 0x41 , 0x48 , 0x7c , 0x7c , 0x24 , 0x24 , 0x43 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA330DA " , " AF Nikkor 180mm f/2.8D IF-ED " } ,
{ 0x42 , 0x54 , 0x44 , 0x44 , 0x18 , 0x18 , 0x44 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA129DA " , " AF Nikkor 35mm f/2D " } ,
{ 0x43 , 0x54 , 0x50 , 0x50 , 0x0C , 0x0C , 0x46 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA011DB " , " AF Nikkor 50mm f/1.4D " } ,
{ 0x44 , 0x44 , 0x60 , 0x80 , 0x34 , 0x3C , 0x47 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA753DB " , " AF Zoom-Nikkor 80-200mm f/4.5-5.6D " } ,
{ 0x45 , 0x40 , 0x3C , 0x60 , 0x2C , 0x3C , 0x48 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA752DA " , " AF Zoom-Nikkor 28-80mm f/3.5-5.6D " } ,
{ 0x46 , 0x3C , 0x44 , 0x60 , 0x30 , 0x3C , 0x49 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA754DA " , " AF Zoom-Nikkor 35-80mm f/4-5.6D N " } ,
{ 0x47 , 0x42 , 0x37 , 0x50 , 0x2A , 0x34 , 0x4A , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA756DA " , " AF Zoom-Nikkor 24-50mm f/3.3-4.5D " } ,
{ 0x48 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0x4B , 0x02 , 0x07 , 0x00 , 0x00 , " Nikon " , " JAA333DA " , " AF-S Nikkor 300mm f/2.8D IF-ED " } ,
{ 0x48 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0xF1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA333DA " , " AF-S Nikkor 300mm f/2.8D IF-ED + TC-14E " } ,
{ 0x48 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0xE1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA333DA " , " AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E " } ,
{ 0x48 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0xF2 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA333DA " , " AF-S Nikkor 300mm f/2.8D IF-ED + TC-20E " } ,
{ 0x49 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0x4C , 0x02 , 0x07 , 0x00 , 0x00 , " Nikon " , " JAA522DA " , " AF-S Nikkor 600mm f/4D IF-ED " } ,
{ 0x49 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0xF1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA522DA " , " AF-S Nikkor 600mm f/4D IF-ED + TC-14E " } ,
{ 0x49 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0xE1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA522DA " , " AF-S Nikkor 600mm f/4D IF-ED + TC-17E " } ,
{ 0x49 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0xF2 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA522DA " , " AF-S Nikkor 600mm f/4D IF-ED + TC-20E " } ,
{ 0x4A , 0x54 , 0x62 , 0x62 , 0x0C , 0x0C , 0x4D , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA332DA " , " AF Nikkor 85mm f/1.4D IF " } ,
{ 0x4B , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0x4E , 0x02 , 0x07 , 0x00 , 0x00 , " Nikon " , " JAA523DA " , " AF-S Nikkor 500mm f/4D IF-ED " } ,
{ 0x4B , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0xF1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA523DA " , " AF-S Nikkor 500mm f/4D IF-ED + TC-14E " } ,
{ 0x4B , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0xE1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA523DA " , " AF-S Nikkor 500mm f/4D IF-ED + TC-17E " } ,
{ 0x4B , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0xF2 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA523DA " , " AF-S Nikkor 500mm f/4D IF-ED + TC-20E " } ,
{ 0x4C , 0x40 , 0x37 , 0x6E , 0x2C , 0x3C , 0x4F , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA757DA " , " AF Zoom-Nikkor 24-120mm f/3.5-5.6D IF " } ,
{ 0x4D , 0x40 , 0x3C , 0x80 , 0x2C , 0x3C , 0x62 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA758DA " , " AF Zoom-Nikkor 28-200mm f/3.5-5.6D IF " } ,
{ 0x4E , 0x48 , 0x72 , 0x72 , 0x18 , 0x18 , 0x51 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA329DA " , " AF DC-Nikkor 135mm f/2D " } ,
{ 0x4F , 0x40 , 0x37 , 0x5C , 0x2C , 0x3C , 0x53 , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JBA701AA " , " IX-Nikkor 24-70mm f/3.5-5.6 " } ,
{ 0x50 , 0x48 , 0x56 , 0x7C , 0x30 , 0x3C , 0x54 , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JBA702AA " , " IX-Nikkor 60-180mm f/4-5.6 " } ,
// "JBA703AC" "IX-Nikkor 20-60 mm f/3.5-5.6";
//51
//52
{ 0x53 , 0x48 , 0x60 , 0x80 , 0x24 , 0x24 , 0x57 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA762DA " , " AF Zoom-Nikkor 80-200mm f/2.8D ED " } ,
{ 0x53 , 0x48 , 0x60 , 0x80 , 0x24 , 0x24 , 0x60 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA762DA " , " AF Zoom-Nikkor 80-200mm f/2.8D ED " } ,
{ 0x54 , 0x44 , 0x5C , 0x7C , 0x34 , 0x3C , 0x58 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA763DA " , " AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED " } ,
{ 0x54 , 0x44 , 0x5C , 0x7C , 0x34 , 0x3C , 0x61 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA763DA " , " AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED " } ,
//55
{ 0x56 , 0x48 , 0x5C , 0x8E , 0x30 , 0x3C , 0x5A , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA764DA " , " AF Zoom-Nikkor 70-300mm f/4-5.6D ED " } ,
//57
//58
{ 0x59 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0x5D , 0x02 , 0x07 , 0x00 , 0x00 , " Nikon " , " JAA524DA " , " AF-S Nikkor 400mm f/2.8D IF-ED " } ,
{ 0x59 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0xF1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA524DA " , " AF-S Nikkor 400mm f/2.8D IF-ED + TC-14E " } ,
{ 0x59 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0xE1 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA524DA " , " AF-S Nikkor 400mm f/2.8D IF-ED + TC-17E " } ,
{ 0x59 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0xF2 , 0x02 , 0x0F , 0x00 , 0x00 , " Nikon " , " JAA524DA " , " AF-S Nikkor 400mm f/2.8D IF-ED + TC-20E " } ,
{ 0x5A , 0x3C , 0x3E , 0x56 , 0x30 , 0x3C , 0x5E , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JBA704AA " , " IX-Nikkor 30-60mm f/4-5.6 " } ,
{ 0x5B , 0x44 , 0x56 , 0x7C , 0x34 , 0x3C , 0x5F , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JBA705AA " , " IX-Nikkor 60-180mm f/4.5-5.6 " } ,
// "JBA706AC" "IX-Nikkor 20-60 mm f/3.5-5.6N";
//5C
{ 0x5D , 0x48 , 0x3C , 0x5C , 0x24 , 0x24 , 0x63 , 0x02 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA767DA " , " AF-S Zoom-Nikkor 28-70mm f/2.8D IF-ED " } ,
{ 0x5E , 0x48 , 0x60 , 0x80 , 0x24 , 0x24 , 0x64 , 0x02 , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA765DA " , " AF-S Zoom-Nikkor 80-200mm f/2.8D IF-ED " } ,
{ 0x5F , 0x40 , 0x3C , 0x6A , 0x2C , 0x34 , 0x65 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA766DA " , " AF Zoom-Nikkor 28-105mm f/3.5-4.5D IF " } ,
{ 0x60 , 0x40 , 0x3C , 0x60 , 0x2C , 0x3C , 0x66 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA769DA " , " AF Zoom-Nikkor 28-80mm f/3.5-5.6D " } ,
{ 0x61 , 0x44 , 0x5E , 0x86 , 0x34 , 0x3C , 0x67 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA768DA " , " AF Zoom-Nikkor 75-240mm f/4.5-5.6D " } ,
//62 69
{ 0x63 , 0x48 , 0x2B , 0x44 , 0x24 , 0x24 , 0x68 , 0x02 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA770DA " , " AF-S Nikkor 17-35mm f/2.8D IF-ED " } ,
{ 0x64 , 0x00 , 0x62 , 0x62 , 0x24 , 0x24 , 0x6A , 0x02 , 0x40 , 0x00 , 0x00 , " Nikon " , " JAA628DA " , " PC Micro-Nikkor 85mm f/2.8D " } ,
{ 0x65 , 0x44 , 0x60 , 0x98 , 0x34 , 0x3C , 0x6B , 0x0A , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA771DA " , " AF VR Zoom-Nikkor 80-400mm f/4.5-5.6D ED " } ,
{ 0x66 , 0x40 , 0x2D , 0x44 , 0x2C , 0x34 , 0x6C , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA772DA " , " AF Zoom-Nikkor 18-35mm f/3.5-4.5D IF-ED " } ,
{ 0x67 , 0x48 , 0x37 , 0x62 , 0x24 , 0x30 , 0x6D , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA774DA " , " AF Zoom-Nikkor 24-85mm f/2.8-4D IF " } ,
{ 0x68 , 0x42 , 0x3C , 0x60 , 0x2A , 0x3C , 0x6E , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA777DA " , " AF Zoom-Nikkor 28-80mm f/3.3-5.6G " } ,
{ 0x69 , 0x48 , 0x5C , 0x8E , 0x30 , 0x3C , 0x6F , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA776DA " , " AF Zoom-Nikkor 70-300mm f/4-5.6G " } ,
{ 0x6A , 0x48 , 0x8E , 0x8E , 0x30 , 0x30 , 0x70 , 0x02 , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA334DA " , " AF-S Nikkor 300mm f/4D IF-ED " } ,
{ 0x6B , 0x48 , 0x24 , 0x24 , 0x24 , 0x24 , 0x71 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA130DA " , " AF Nikkor ED 14mm f/2.8D " } ,
//6C 72
{ 0x6D , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0x73 , 0x02 , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA335DA " , " AF-S Nikkor 300mm f/2.8D IF-ED II " } ,
{ 0x6E , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0x74 , 0x02 , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA525DA " , " AF-S Nikkor 400mm f/2.8D IF-ED II " } ,
{ 0x6F , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0x75 , 0x02 , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA526DA " , " AF-S Nikkor 500mm f/4D IF-ED II " } ,
{ 0x70 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0x76 , 0x02 , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA527DA " , " AF-S Nikkor 600mm f/4D IF-ED II " } ,
//71
{ 0x72 , 0x48 , 0x4C , 0x4C , 0x24 , 0x24 , 0x77 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA012AA " , " Nikkor 45mm f/2.8 P " } ,
//73
{ 0x74 , 0x40 , 0x37 , 0x62 , 0x2C , 0x34 , 0x78 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA780DA " , " AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED " } ,
{ 0x75 , 0x40 , 0x3C , 0x68 , 0x2C , 0x3C , 0x79 , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA778DA " , " AF Zoom-Nikkor 28-100mm f/3.5-5.6G " } ,
{ 0x76 , 0x58 , 0x50 , 0x50 , 0x14 , 0x14 , 0x7A , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA013DA " , " AF Nikkor 50mm f/1.8D " } ,
{ 0x77 , 0x48 , 0x5C , 0x80 , 0x24 , 0x24 , 0x7B , 0x0E , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA781DA " , " AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED " } ,
{ 0x78 , 0x40 , 0x37 , 0x6E , 0x2C , 0x3C , 0x7C , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA782DA " , " AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED " } ,
{ 0x79 , 0x40 , 0x3C , 0x80 , 0x2C , 0x3C , 0x7F , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA783DA " , " AF Zoom-Nikkor 28-200mm f/3.5-5.6G IF-ED " } ,
{ 0x7A , 0x3C , 0x1F , 0x37 , 0x30 , 0x30 , 0x7E , 0x06 , 0x01 , 0x01 , 0x00 , " Nikon " , " JAA784DA " , " AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED " } ,
{ 0x7B , 0x48 , 0x80 , 0x98 , 0x30 , 0x30 , 0x80 , 0x0E , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA787DA " , " AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED " } ,
//7C 81
{ 0x7D , 0x48 , 0x2B , 0x53 , 0x24 , 0x24 , 0x82 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA788DA " , " AF-S DX Zoom-Nikkor 17-55mm f/2.8G IF-ED " } ,
//7E 83
{ 0x7F , 0x40 , 0x2D , 0x5C , 0x2C , 0x34 , 0x84 , 0x06 , 0x11 , 0x00 , 0x00 , " Nikon " , " JAA790DA " , " AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED " } ,
{ 0x80 , 0x48 , 0x1A , 0x1A , 0x24 , 0x24 , 0x85 , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA629DA " , " AF DX Fisheye-Nikkor 10.5mm f/2.8G ED " } ,
{ 0x81 , 0x54 , 0x80 , 0x80 , 0x18 , 0x18 , 0x86 , 0x0E , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA336DA " , " AF-S VR Nikkor 200mm f/2G IF-ED " } ,
{ 0x82 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0x87 , 0x0E , 0x13 , 0x00 , 0x00 , " Nikon " , " JAA337DA " , " AF-S VR Nikkor 300mm f/2.8G IF-ED " } ,
{ 0x83 , 0x00 , 0xB0 , 0xB0 , 0x5A , 0x5A , 0x88 , 0x04 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " FSA-L2, EDG 65, 800mm F13 G " } ,
//84
//85
//86
//87
//88
{ 0x89 , 0x3C , 0x53 , 0x80 , 0x30 , 0x3C , 0x8B , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA793DA " , " AF-S DX Zoom-Nikkor 55-200mm f/4-5.6G ED " } ,
{ 0x8A , 0x54 , 0x6A , 0x6A , 0x24 , 0x24 , 0x8C , 0x0E , 0x53 , 0x00 , 0x00 , " Nikon " , " JAA630DA " , " AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED " } ,
{ 0x8B , 0x40 , 0x2D , 0x80 , 0x2C , 0x3C , 0x8D , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA794DA " , " AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED " } ,
//{0x8B,0x40,0x2D,0x80,0x2C,0x3C,0xFD,0x0E,0x01,0x01,0x00, "Nikon", "JAA794DA", "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED"}, // Fix bug #1026.
{ 0x8B , 0x40 , 0x2D , 0x80 , 0x2C , 0x3C , 0xFD , 0x0E , 0x01 , 0x02 , 0x00 , " Nikon " , " JAA813DA " , " AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED II " } ,
{ 0x8C , 0x40 , 0x2D , 0x53 , 0x2C , 0x3C , 0x8E , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA792DA " , " AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED " } ,
{ 0x8D , 0x44 , 0x5C , 0x8E , 0x34 , 0x3C , 0x8F , 0x0E , 0x31 , 0x00 , 0x00 , " Nikon " , " JAA795DA " , " AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED " } ,
//8E 90
{ 0x8F , 0x40 , 0x2D , 0x72 , 0x2C , 0x3C , 0x91 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA796DA " , " AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED " } ,
{ 0x90 , 0x3B , 0x53 , 0x80 , 0x30 , 0x3C , 0x92 , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA798DA " , " AF-S DX VR Zoom-Nikkor 55-200mm f/4-5.6G IF-ED " } ,
//91 93
{ 0x92 , 0x48 , 0x24 , 0x37 , 0x24 , 0x24 , 0x94 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA801DA " , " AF-S Zoom-Nikkor 14-24mm f/2.8G ED " } ,
{ 0x93 , 0x48 , 0x37 , 0x5C , 0x24 , 0x24 , 0x95 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA802DA " , " AF-S Zoom-Nikkor 24-70mm f/2.8G ED " } ,
{ 0x94 , 0x40 , 0x2D , 0x53 , 0x2C , 0x3C , 0x96 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA797DA " , " AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II " } ,
{ 0x95 , 0x4C , 0x37 , 0x37 , 0x2C , 0x2C , 0x97 , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA631DA " , " PC-E Nikkor 24mm f/3.5D ED " } ,
{ 0x95 , 0x00 , 0x37 , 0x37 , 0x2C , 0x2C , 0x97 , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA631DA " , " PC-E Nikkor 24mm f/3.5D ED " } ,
{ 0x96 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0x98 , 0x0E , 0x13 , 0x00 , 0x00 , " Nikon " , " JAA528DA " , " AF-S VR Nikkor 400mm f/2.8G ED " } ,
{ 0x97 , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0x99 , 0x0E , 0x13 , 0x00 , 0x00 , " Nikon " , " JAA529DA " , " AF-S VR Nikkor 500mm f/4G ED " } ,
{ 0x98 , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0x9A , 0x0E , 0x13 , 0x00 , 0x00 , " Nikon " , " JAA530DA " , " AF-S VR Nikkor 600mm f/4G ED " } ,
{ 0x99 , 0x40 , 0x29 , 0x62 , 0x2C , 0x3C , 0x9B , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA800DA " , " AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED " } ,
{ 0x9A , 0x40 , 0x2D , 0x53 , 0x2C , 0x3C , 0x9C , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA803DA " , " AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G " } ,
{ 0x9B , 0x54 , 0x4C , 0x4C , 0x24 , 0x24 , 0x9D , 0x02 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA633DA " , " PC-E Micro Nikkor 45mm f/2.8D ED " } ,
{ 0x9B , 0x00 , 0x4C , 0x4C , 0x24 , 0x24 , 0x9D , 0x06 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA633DA " , " PC-E Micro Nikkor 45mm f/2.8D ED " } ,
{ 0x9C , 0x54 , 0x56 , 0x56 , 0x24 , 0x24 , 0x9E , 0x06 , 0x41 , 0x00 , 0x00 , " Nikon " , " JAA632DA " , " AF-S Micro Nikkor 60mm f/2.8G ED " } ,
{ 0x9D , 0x54 , 0x62 , 0x62 , 0x24 , 0x24 , 0x9F , 0x02 , 0x40 , 0x00 , 0x00 , " Nikon " , " JAA634DA " , " PC-E Micro Nikkor 85mm f/2.8D " } ,
{ 0x9D , 0x00 , 0x62 , 0x62 , 0x24 , 0x24 , 0x9F , 0x06 , 0x40 , 0x00 , 0x00 , " Nikon " , " JAA634DA " , " PC-E Micro Nikkor 85mm f/2.8D " } ,
{ 0x9E , 0x40 , 0x2D , 0x6A , 0x2C , 0x3C , 0xA0 , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA805DA " , " AF-S DX VR Zoom-Nikkor 18-105mm f/3.5-5.6G ED " } ,
{ 0x9F , 0x58 , 0x44 , 0x44 , 0x14 , 0x14 , 0xA1 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA132DA " , " AF-S DX Nikkor 35mm f/1.8G " } ,
{ 0xA0 , 0x54 , 0x50 , 0x50 , 0x0C , 0x0C , 0xA2 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA014DA " , " AF-S Nikkor 50mm f/1.4G " } ,
{ 0xA1 , 0x40 , 0x18 , 0x37 , 0x2C , 0x34 , 0xA3 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA804DA " , " AF-S DX Nikkor 10-24mm f/3.5-4.5G ED " } ,
{ 0xA2 , 0x48 , 0x5C , 0x80 , 0x24 , 0x24 , 0xA4 , 0x0E , 0x13 , 0x00 , 0x00 , " Nikon " , " JAA807DA " , " AF-S Nikkor 70-200mm f/2.8G ED VR II " } ,
{ 0xA3 , 0x3C , 0x29 , 0x44 , 0x30 , 0x30 , 0xA5 , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA806DA " , " AF-S Nikkor 16-35mm f/4G ED VR " } ,
{ 0xA4 , 0x54 , 0x37 , 0x37 , 0x0C , 0x0C , 0xA6 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA131DA " , " AF-S Nikkor 24mm f/1.4G ED " } ,
{ 0xA5 , 0x40 , 0x3C , 0x8E , 0x2C , 0x3C , 0xA7 , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA808DA " , " AF-S Nikkor 28-300mm f/3.5-5.6G ED VR " } ,
{ 0xA6 , 0x48 , 0x8E , 0x8E , 0x24 , 0x24 , 0xA8 , 0x0E , 0x13 , 0x00 , 0x00 , " Nikon " , " JAA339DA " , " AF-S Nikkor 300mm f/2.8G IF-ED VR II " } ,
{ 0xA7 , 0x4B , 0x62 , 0x62 , 0x2C , 0x2C , 0xA9 , 0x0E , 0x41 , 0x00 , 0x00 , " Nikon " , " JAA637DA " , " AF-S DX Micro Nikkor 85mm f/3.5G ED VR " } ,
{ 0xA8 , 0x48 , 0x80 , 0x98 , 0x30 , 0x30 , 0xAA , 0x0E , 0x03 , 0x00 , 0x00 , " Nikon " , " JAA809DA " , " AF-S Zoom-Nikkor 200-400mm f/4G IF-ED VR II " } ,
{ 0xA9 , 0x54 , 0x80 , 0x80 , 0x18 , 0x18 , 0xAB , 0x0E , 0x13 , 0x00 , 0x00 , " Nikon " , " JAA340DA " , " AF-S Nikkor 200mm f/2G ED VR II " } ,
{ 0xAA , 0x3C , 0x37 , 0x6E , 0x30 , 0x30 , 0xAC , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA811DA " , " AF-S Nikkor 24-120mm f/4G ED VR " } ,
//AB AD -- no lens --
{ 0xAC , 0x38 , 0x53 , 0x8E , 0x34 , 0x3C , 0xAE , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA814DA " , " AF-S DX Nikkor 55-300mm f/4.5-5.6G ED VR " } ,
{ 0xAD , 0x3C , 0x2D , 0x8E , 0x2C , 0x3C , 0xAF , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA812DA " , " AF-S DX Nikkor 18-300mm f/3.5-5.6G ED VR " } ,
{ 0xAE , 0x54 , 0x62 , 0x62 , 0x0C , 0x0C , 0xB0 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA338DA " , " AF-S Nikkor 85mm f/1.4G " } ,
{ 0xAF , 0x54 , 0x44 , 0x44 , 0x0C , 0x0C , 0xB1 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA134DA " , " AF-S Nikkor 35mm f/1.4G " } ,
{ 0xB0 , 0x4C , 0x50 , 0x50 , 0x14 , 0x14 , 0xB2 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA015DA " , " AF-S Nikkor 50mm f/1.8G " } ,
{ 0xB1 , 0x48 , 0x48 , 0x48 , 0x24 , 0x24 , 0xB3 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA638DA " , " AF-S DX Micro Nikkor 40mm f/2.8G " } ,
{ 0xB2 , 0x48 , 0x5C , 0x80 , 0x30 , 0x30 , 0xB4 , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA815DA " , " AF-S Nikkor 70-200mm f/4G ED VR " } ,
{ 0xB3 , 0x4C , 0x62 , 0x62 , 0x14 , 0x14 , 0xB5 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA341DA " , " AF-S Nikkor 85mm f/1.8G " } ,
{ 0xB4 , 0x40 , 0x37 , 0x62 , 0x2C , 0x34 , 0xB6 , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA816DA " , " AF-S Nikkor 24-85mm f/3.5-4.5G ED VR " } ,
{ 0xB5 , 0x4C , 0x3C , 0x3C , 0x14 , 0x14 , 0xB7 , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA135DA " , " AF-S Nikkor 28mm f/1.8G " } ,
{ 0xB6 , 0x3C , 0xB0 , 0xB0 , 0x3C , 0x3C , 0xB8 , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA531DA " , " AF-S VR Nikkor 800mm f/5.6E FL ED " } ,
{ 0xB6 , 0x3C , 0xB0 , 0xB0 , 0x3C , 0x3C , 0xB8 , 0x4E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA531DA " , " AF-S VR Nikkor 800mm f/5.6E FL ED " } ,
{ 0xB7 , 0x44 , 0x60 , 0x98 , 0x34 , 0x3C , 0xB9 , 0x0E , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA817DA " , " AF-S Nikkor 80-400mm f/4.5-5.6G ED VR " } ,
{ 0xB8 , 0x40 , 0x2D , 0x44 , 0x2C , 0x34 , 0xBA , 0x06 , 0x01 , 0x00 , 0x00 , " Nikon " , " JAA818DA " , " AF-S Nikkor 18-35mm f/3.5-4.5G ED " } ,
{ 0xA0 , 0x40 , 0x2D , 0x74 , 0x2C , 0x3C , 0xBB , 0x0E , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA819DA " , " AF-S DX Nikkor 18-140mm f/3.5-5.6G ED VR " } ,
{ 0xA1 , 0x54 , 0x55 , 0x55 , 0x0C , 0x0C , 0xBC , 0x06 , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA136DA " , " AF-S Nikkor 58mm f/1.4G " } ,
{ 0xA2 , 0x40 , 0x2D , 0x53 , 0x2C , 0x3C , 0xBD , 0x0E , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA820DA " , " AF-S DX Nikkor 18-55mm f/3.5-5.6G VR II " } ,
{ 0xA4 , 0x40 , 0x2D , 0x8E , 0x2C , 0x40 , 0xBF , 0x0E , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA821DA " , " AF-S DX Nikkor 18-300mm f/3.5-6.3G ED VR " } ,
{ 0xA5 , 0x4C , 0x44 , 0x44 , 0x14 , 0x14 , 0xC0 , 0x06 , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA137DA " , " AF-S Nikkor 35mm f/1.8G ED " } ,
{ 0xA6 , 0x48 , 0x98 , 0x98 , 0x24 , 0x24 , 0xC1 , 0x0E , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA532DA " , " AF-S Nikkor 400mm f/2.8E FL ED VR " } ,
{ 0xA7 , 0x3C , 0x53 , 0x80 , 0x30 , 0x3C , 0xC2 , 0x0E , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA823DA " , " AF-S DX Nikkor 55-200mm f/4-5.6G ED VR II " } ,
{ 0xA8 , 0x48 , 0x8E , 0x8E , 0x30 , 0x30 , 0xC3 , 0x4E , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA342DA " , " AF-S Nikkor 300mm f/4E PF ED VR " } ,
{ 0xA8 , 0x48 , 0x8E , 0x8E , 0x30 , 0x30 , 0xC3 , 0x0E , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA342DA " , " AF-S Nikkor 300mm f/4E PF ED VR " } ,
{ 0xA9 , 0x4C , 0x31 , 0x31 , 0x14 , 0x14 , 0xC4 , 0x06 , 0x01 , 0x00 , 0x01 , " Nikon " , " JAA138DA " , " AF-S Nikkor 20mm f/1.8G ED " } ,
{ 0xAA , 0x48 , 0x37 , 0x5C , 0x24 , 0x24 , 0xC5 , 0x4E , 0x01 , 0x00 , 0x02 , " Nikon " , " JAA824DA " , " AF-S Nikkor 24-70mm f/2.8E ED VR " } ,
{ 0xAA , 0x48 , 0x37 , 0x5C , 0x24 , 0x24 , 0xC5 , 0x0E , 0x01 , 0x00 , 0x02 , " Nikon " , " JAA824DA " , " AF-S Nikkor 24-70mm f/2.8E ED VR " } ,
{ 0xAB , 0x3C , 0xA0 , 0xA0 , 0x30 , 0x30 , 0xC6 , 0x4E , 0x01 , 0x00 , 0x02 , " Nikon " , " JAA533DA " , " AF-S Nikkor 500mm f/4E FL ED VR " } ,
{ 0xAC , 0x3C , 0xA6 , 0xA6 , 0x30 , 0x30 , 0xC7 , 0x4E , 0x01 , 0x00 , 0x02 , " Nikon " , " JAA534DA " , " AF-S Nikkor 600mm f/4E FL ED VR " } ,
{ 0xAD , 0x48 , 0x28 , 0x60 , 0x24 , 0x30 , 0xC8 , 0x4E , 0x01 , 0x00 , 0x02 , " Nikon " , " JAA825DA " , " AF-S DX Nikkor 16-80mm f/2.8-4E ED VR " } ,
{ 0xAD , 0x48 , 0x28 , 0x60 , 0x24 , 0x30 , 0xC8 , 0x0E , 0x01 , 0x00 , 0x02 , " Nikon " , " JAA825DA " , " AF-S DX Nikkor 16-80mm f/2.8-4E ED VR " } ,
{ 0xAE , 0x3C , 0x80 , 0xA0 , 0x3C , 0x3C , 0xC9 , 0x4E , 0x01 , 0x00 , 0x02 , " Nikon " , " JAA822DA " , " AF-S Nikkor 200-500mm f/5.6E ED VR " } ,
{ 0xAE , 0x3C , 0x80 , 0xA0 , 0x3C , 0x3C , 0xC9 , 0x0E , 0x01 , 0x00 , 0x02 , " Nikon " , " JAA822DA " , " AF-S Nikkor 200-500mm f/5.6E ED VR " } ,
{ 0xA0 , 0x40 , 0x2D , 0x53 , 0x2C , 0x3C , 0xCA , 0x8E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA826DA " , " AF-P DX Nikkor 18-55mm f/3.5-5.6G VR " } ,
{ 0xA0 , 0x40 , 0x2D , 0x53 , 0x2C , 0x3C , 0xCA , 0x0E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA827DA " , " AF-P DX Nikkor 18-55mm f/3.5-5.6G " } ,
// CB
{ 0xAF , 0x4C , 0x37 , 0x37 , 0x14 , 0x14 , 0xCC , 0x06 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA139DA " , " AF-S Nikkor 24mm f/1.8G ED " } ,
{ 0xA3 , 0x38 , 0x5C , 0x8E , 0x34 , 0x40 , 0xCE , 0x8E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA829DA " , " AF-P DX Nikkor 70-300mm f/4.5-6.3G ED VR " } ,
{ 0xA3 , 0x38 , 0x5C , 0x8E , 0x34 , 0x40 , 0xCE , 0x0E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA828DA " , " AF-P DX Nikkor 70-300mm f/4.5-6.3G ED " } ,
{ 0xA4 , 0x48 , 0x5C , 0x80 , 0x24 , 0x24 , 0xCF , 0x4E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA830DA " , " AF-S Nikkor 70-200mm f/2.8E FL ED VR " } ,
{ 0xA4 , 0x48 , 0x5C , 0x80 , 0x24 , 0x24 , 0xCF , 0x0E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA830DA " , " AF-S Nikkor 70-200mm f/2.8E FL ED VR " } ,
{ 0xA5 , 0x54 , 0x6A , 0x6A , 0x0C , 0x0C , 0xD0 , 0x46 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA343DA " , " AF-S Nikkor 105mm f/1.4E ED " } ,
{ 0xA5 , 0x54 , 0x6A , 0x6A , 0x0C , 0x0C , 0xD0 , 0x06 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA343DA " , " AF-S Nikkor 105mm f/1.4E ED " } ,
{ 0xA6 , 0x48 , 0x2F , 0x2F , 0x30 , 0x30 , 0xD1 , 0x46 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA639DA " , " PC Nikkor 19mm f/4E ED " } ,
{ 0xA6 , 0x48 , 0x2F , 0x2F , 0x30 , 0x30 , 0xD1 , 0x06 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA639DA " , " PC Nikkor 19mm f/4E ED " } ,
{ 0xA7 , 0x40 , 0x11 , 0x26 , 0x2C , 0x34 , 0xD2 , 0x46 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA831DA " , " AF-S Fisheye Nikkor 8-15mm f/3.5-4.5E ED " } ,
{ 0xA7 , 0x40 , 0x11 , 0x26 , 0x2C , 0x34 , 0xD2 , 0x06 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA831DA " , " AF-S Fisheye Nikkor 8-15mm f/3.5-4.5E ED " } ,
{ 0xA8 , 0x38 , 0x18 , 0x30 , 0x34 , 0x3C , 0xD3 , 0x8E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA832DA " , " AF-P DX Nikkor 10-20mm f/4.5-5.6G VR " } ,
{ 0xA8 , 0x38 , 0x18 , 0x30 , 0x34 , 0x3C , 0xD3 , 0x0E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA832DA " , " AF-P DX Nikkor 10-20mm f/4.5-5.6G VR " } ,
//A9 D4
//AA D5
{ 0xAB , 0x44 , 0x5C , 0x8E , 0x34 , 0x3C , 0xD6 , 0xCE , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA833DA " , " AF-P Nikkor 70-300mm f/4.5-5.6E ED VR " } ,
{ 0xAB , 0x44 , 0x5C , 0x8E , 0x34 , 0x3C , 0xD6 , 0x0E , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA833DA " , " AF-P Nikkor 70-300mm f/4.5-5.6E ED VR " } ,
{ 0xAC , 0x54 , 0x3C , 0x3C , 0x0C , 0x0C , 0xD7 , 0x46 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA140DA " , " AF-S Nikkor 28mm f/1.4E ED " } ,
{ 0xAC , 0x54 , 0x3C , 0x3C , 0x0C , 0x0C , 0xD7 , 0x06 , 0x01 , 0x00 , 0x03 , " Nikon " , " JAA140DA " , " AF-S Nikkor 28mm f/1.4E ED " } ,
//
//
//
//
// "AF-S DX Nikkor 18-200mm f/3.5-5.6G ED VR II"
//
{ 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA90701 " , " TC-16A " } ,
{ 0x01 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x08 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA90701 " , " TC-16A " } ,
//
//------------------------------------------------------------------------------
// Sigma lenses by focal length, first fixed then zoom lenses
//------------------------------------------------------------------------------
//
{ 0xFE , 0x47 , 0x00 , 0x00 , 0x24 , 0x24 , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 486556 " , " 4.5mm F2.8 EX DC HSM Circular Fisheye " } ,
{ 0x26 , 0x48 , 0x11 , 0x11 , 0x30 , 0x30 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 483 " , " 8mm F4 EX Circular Fisheye " } ,
{ 0x79 , 0x40 , 0x11 , 0x11 , 0x2C , 0x2C , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 485597 " , " 8mm F3.5 EX Circular Fisheye " } ,
{ 0xDC , 0x48 , 0x19 , 0x19 , 0x24 , 0x24 , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 477554 " , " 10mm F2.8 EX DC HSM Fisheye " } ,
{ 0x02 , 0x3F , 0x24 , 0x24 , 0x2C , 0x2C , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " 468 " , " 14mm F3.5 " } ,
{ 0x48 , 0x48 , 0x24 , 0x24 , 0x24 , 0x24 , 0x4B , 0x02 , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 14mm F2.8 EX Aspherical HSM " } ,
{ 0x26 , 0x48 , 0x27 , 0x27 , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 476441 " , " 15mm F2.8 EX Diagonal Fisheye " } ,
{ 0xEA , 0x48 , 0x27 , 0x27 , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 15mm F2.8 EX Diagonal Fisheye " } ,
//M "Sigma" "410" "18mm F3.5";
{ 0x26 , 0x58 , 0x31 , 0x31 , 0x14 , 0x14 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 411442 " , " 20mm F1.8 EX DG Aspherical RF " } ,
{ 0x79 , 0x54 , 0x31 , 0x31 , 0x0C , 0x0C , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 412555 " , " 20mm F1.4 DG HSM | A " } ,
{ 0x26 , 0x58 , 0x37 , 0x37 , 0x14 , 0x14 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 432447 " , " 24mm F1.8 EX DG Aspherical Macro " } ,
{ 0xE1 , 0x58 , 0x37 , 0x37 , 0x14 , 0x14 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 432447 " , " 24mm F1.8 EX DG Aspherical Macro " } ,
{ 0x02 , 0x46 , 0x37 , 0x37 , 0x25 , 0x25 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " 438 " , " 24mm F2.8 Super Wide II Macro " } ,
{ 0x26 , 0x58 , 0x3C , 0x3C , 0x14 , 0x14 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 440442 " , " 28mm F1.8 EX DG Aspherical Macro " } ,
{ 0x48 , 0x54 , 0x3E , 0x3E , 0x0C , 0x0C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 477554 " , " 30mm F1.4 EX DC HSM " } ,
{ 0xF8 , 0x54 , 0x3E , 0x3E , 0x0C , 0x0C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 477554 " , " 30mm F1.4 EX DC HSM " } ,
{ 0x91 , 0x54 , 0x44 , 0x44 , 0x0C , 0x0C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 35mm F1.4 DG HSM " } ,
{ 0xDE , 0x54 , 0x50 , 0x50 , 0x0C , 0x0C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 310554 " , " 50mm F1.4 EX DG HSM " } ,
{ 0x88 , 0x54 , 0x50 , 0x50 , 0x0C , 0x0C , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 311551 " , " 50mm F1.4 DG HSM | A " } ,
{ 0x02 , 0x48 , 0x50 , 0x50 , 0x24 , 0x24 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " Macro 50mm F2.8 " } ,
{ 0x32 , 0x54 , 0x50 , 0x50 , 0x24 , 0x24 , 0x35 , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 346447 " , " Macro 50mm F2.8 EX DG " } ,
{ 0xE3 , 0x54 , 0x50 , 0x50 , 0x24 , 0x24 , 0x35 , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " Macro 50mm F2.8 EX DG " } ,
{ 0x79 , 0x48 , 0x5C , 0x5C , 0x24 , 0x24 , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 270599 " , " Macro 70mm F2.8 EX DG " } ,
{ 0x9B , 0x54 , 0x62 , 0x62 , 0x0C , 0x0C , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 85mm F1.4 EX DG HSM " } ,
{ 0x02 , 0x48 , 0x65 , 0x65 , 0x24 , 0x24 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " Macro 90mm F2.8 " } ,
{ 0x32 , 0x54 , 0x6A , 0x6A , 0x24 , 0x24 , 0x35 , 0x02 , 0x00 , 0x02 , 0x00 , " Sigma " , " 256 " , " Macro 105mm F2.8 EX DG " } ,
{ 0xE5 , 0x54 , 0x6A , 0x6A , 0x24 , 0x24 , 0x35 , 0x02 , 0x40 , 0x00 , 0x00 , " Sigma " , " 257446 " , " Macro 105mm F2.8 EX DG " } ,
{ 0x97 , 0x48 , 0x6A , 0x6A , 0x24 , 0x24 , 0x4B , 0x0E , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " Macro 105mm F2.8 EX DG OS HSM " } ,
{ 0x48 , 0x48 , 0x76 , 0x76 , 0x24 , 0x24 , 0x4B , 0x06 , 0x43 , 0x00 , 0x00 , " Sigma " , " 104559 " , " APO Macro 150mm F2.8 EX DG HSM " } ,
{ 0xF5 , 0x48 , 0x76 , 0x76 , 0x24 , 0x24 , 0x4B , 0x06 , 0x43 , 0x00 , 0x00 , " Sigma " , " 104559 " , " APO Macro 150mm F2.8 EX DG HSM " } ,
{ 0x99 , 0x48 , 0x76 , 0x76 , 0x24 , 0x24 , 0x4B , 0x0E , 0x43 , 0x00 , 0x00 , " Sigma " , " " , " APO Macro 150mm F2.8 EX DG OS HSM " } ,
{ 0x48 , 0x4C , 0x7C , 0x7C , 0x2C , 0x2C , 0x4B , 0x02 , 0x43 , 0x00 , 0x00 , " Sigma " , " " , " APO Macro 180mm F3.5 EX DG HSM " } ,
{ 0x48 , 0x4C , 0x7D , 0x7D , 0x2C , 0x2C , 0x4B , 0x02 , 0x43 , 0x00 , 0x00 , " Sigma " , " 105556 " , " APO Macro 180mm F3.5 EX DG HSM " } ,
{ 0x94 , 0x48 , 0x7C , 0x7C , 0x24 , 0x24 , 0x4B , 0x0E , 0x43 , 0x00 , 0x00 , " Sigma " , " " , " APO Macro 180mm F2.8 EX DG OS HSM " } ,
//M "Sigma" "" "APO 300mm F2.8";
{ 0x48 , 0x54 , 0x8E , 0x8E , 0x24 , 0x24 , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " APO 300mm F2.8 EX DG HSM " } ,
{ 0xFB , 0x54 , 0x8E , 0x8E , 0x24 , 0x24 , 0x4B , 0x02 , 0x13 , 0x00 , 0x00 , " Sigma " , " 195557 " , " APO 300mm F2.8 EX DG HSM " } ,
{ 0x26 , 0x48 , 0x8E , 0x8E , 0x30 , 0x30 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO Tele Macro 300mm F4 " } ,
{ 0x02 , 0x2F , 0x98 , 0x98 , 0x3D , 0x3D , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO 400mm F5.6 " } ,
{ 0x26 , 0x3C , 0x98 , 0x98 , 0x3C , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO Tele Macro 400mm F5.6 " } ,
{ 0x02 , 0x37 , 0xA0 , 0xA0 , 0x34 , 0x34 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO 500mm F4.5 " } ,
{ 0x48 , 0x44 , 0xA0 , 0xA0 , 0x34 , 0x34 , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " APO 500mm F4.5 EX HSM " } ,
{ 0xF1 , 0x44 , 0xA0 , 0xA0 , 0x34 , 0x34 , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " 184551 " , " APO 500mm F4.5 EX DG HSM " } ,
{ 0x02 , 0x34 , 0xA0 , 0xA0 , 0x44 , 0x44 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO 500mm F7.2 " } ,
{ 0x02 , 0x3C , 0xB0 , 0xB0 , 0x3C , 0x3C , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO 800mm F5.6 " } ,
{ 0x48 , 0x3C , 0xB0 , 0xB0 , 0x3C , 0x3C , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " APO 800mm F5.6 EX HSM " } ,
//M "Sigma" "152550" "APO 800mm F5.6 EX DG HSM";
//M2 B8 B8 49 49 02" "00" "00" "00" "00" "Sigma" "" "APO 1000mm F8.0";
//
{ 0x9E , 0x38 , 0x11 , 0x29 , 0x34 , 0x3C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 8-16mm F4.5-5.6 DC HSM " } ,
{ 0xA1 , 0x41 , 0x19 , 0x31 , 0x2C , 0x2C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 10-20mm F3.5 EX DC HSM " } ,
{ 0x48 , 0x3C , 0x19 , 0x31 , 0x30 , 0x3C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 201555 " , " 10-20mm F4-5.6 EX DC HSM " } ,
{ 0xF9 , 0x3C , 0x19 , 0x31 , 0x30 , 0x3C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 201555 " , " 10-20mm F4-5.6 EX DC HSM " } ,
{ 0xCA , 0x3C , 0x1F , 0x37 , 0x30 , 0x30 , 0x4B , 0x46 , 0x01 , 0x00 , 0x00 , " Sigma " , " 205955 " , " 12-24mm F4 DG HSM Art " } ,
{ 0x48 , 0x38 , 0x1F , 0x37 , 0x34 , 0x3C , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 200558 " , " 12-24mm F4.5-5.6 EX DG Aspherical HSM " } ,
{ 0xF0 , 0x38 , 0x1F , 0x37 , 0x34 , 0x3C , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 200558 " , " 12-24mm F4.5-5.6 EX DG Aspherical HSM " } ,
{ 0x96 , 0x38 , 0x1F , 0x37 , 0x34 , 0x3C , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 12-24mm F4.5-5.6 II DG HSM " } ,
{ 0x26 , 0x40 , 0x27 , 0x3F , 0x2C , 0x34 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 15-30mm F3.5-4.5 EX DG Aspherical DF " } ,
{ 0x48 , 0x48 , 0x2B , 0x44 , 0x24 , 0x30 , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 17-35mm F2.8-4 EX DG Aspherical HSM " } ,
{ 0x26 , 0x54 , 0x2B , 0x44 , 0x24 , 0x30 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 17-35mm F2.8-4 EX Aspherical " } ,
{ 0x9D , 0x48 , 0x2B , 0x50 , 0x24 , 0x24 , 0x4B , 0x0E , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 17-50mm F2.8 EX DC OS HSM " } ,
{ 0x8F , 0x48 , 0x2B , 0x50 , 0x24 , 0x24 , 0x4B , 0x0E , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 17-50mm F2.8 EX DC OS HSM " } ,
{ 0x7A , 0x47 , 0x2B , 0x5C , 0x24 , 0x34 , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 689599 " , " 17-70mm F2.8-4.5 DC Macro Asp. IF HSM " } ,
{ 0x7A , 0x48 , 0x2B , 0x5C , 0x24 , 0x34 , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 689599 " , " 17-70mm F2.8-4.5 DC Macro Asp. IF HSM " } ,
{ 0x7F , 0x48 , 0x2B , 0x5C , 0x24 , 0x34 , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 17-70mm F2.8-4.5 DC Macro Asp. IF " } ,
{ 0x8E , 0x3C , 0x2B , 0x5C , 0x24 , 0x30 , 0x4B , 0x0E , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 17-70mm F2.8-4 DC MACRO OS HSM | C " } ,
{ 0xA0 , 0x48 , 0x2A , 0x5C , 0x24 , 0x30 , 0x4B , 0x0E , 0x00 , 0x00 , 0xFE , " Sigma " , " " , " 17-70mm F2.8-4 DC Macro OS HSM " } ,
{ 0x8B , 0x4C , 0x2D , 0x44 , 0x14 , 0x14 , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 18-35mm F1.8 DC HSM " } ,
{ 0x26 , 0x40 , 0x2D , 0x44 , 0x2B , 0x34 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 18-35mm F3.5-4.5 Aspherical " } ,
{ 0x26 , 0x48 , 0x2D , 0x50 , 0x24 , 0x24 , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 18-50mm F2.8 EX DC " } ,
{ 0x7F , 0x48 , 0x2D , 0x50 , 0x24 , 0x24 , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 18-50mm F2.8 EX DC Macro " } ,
{ 0x7A , 0x48 , 0x2D , 0x50 , 0x24 , 0x24 , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 582593 " , " 18-50mm F2.8 EX DC Macro " } ,
{ 0xF6 , 0x48 , 0x2D , 0x50 , 0x24 , 0x24 , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 582593 " , " 18-50mm F2.8 EX DC Macro " } ,
{ 0xA4 , 0x47 , 0x2D , 0x50 , 0x24 , 0x34 , 0x4B , 0x0E , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 18-50mm F2.8-4.5 DC OS HSM " } ,
{ 0x26 , 0x40 , 0x2D , 0x50 , 0x2C , 0x3C , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 18-50mm F3.5-5.6 DC " } ,
{ 0x7A , 0x40 , 0x2D , 0x50 , 0x2C , 0x3C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 551551 " , " 18-50mm F3.5-5.6 DC HSM " } ,
{ 0x26 , 0x40 , 0x2D , 0x70 , 0x2B , 0x3C , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 18-125mm F3.5-5.6 DC " } ,
{ 0xCD , 0x3D , 0x2D , 0x70 , 0x2E , 0x3C , 0x4B , 0x0E , 0x01 , 0x00 , 0x00 , " Sigma " , " 853556 " , " 18-125mm F3.8-5.6 DC OS HSM " } ,
{ 0x26 , 0x40 , 0x2D , 0x80 , 0x2C , 0x40 , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 777555 " , " 18-200mm F3.5-6.3 DC " } ,
{ 0xFF , 0x40 , 0x2D , 0x80 , 0x2C , 0x40 , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 18-200mm F3.5-6.3 DC " } ,
{ 0x7A , 0x40 , 0x2D , 0x80 , 0x2C , 0x40 , 0x4B , 0x0E , 0x01 , 0x00 , 0x00 , " Sigma " , " 888558 " , " 18-200mm F3.5-6.3 DC OS HSM " } ,
{ 0xED , 0x40 , 0x2D , 0x80 , 0x2C , 0x40 , 0x4B , 0x0E , 0x01 , 0x00 , 0x00 , " Sigma " , " 888558 " , " 18-200mm F3.5-6.3 DC OS HSM " } ,
{ 0x90 , 0x40 , 0x2D , 0x80 , 0x2C , 0x40 , 0x4B , 0x0E , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 18-200mm F3.5-6.3 II DC OS HSM " } ,
{ 0xA5 , 0x40 , 0x2D , 0x88 , 0x2C , 0x40 , 0x4B , 0x0E , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 18-250mm F3.5-6.3 DC OS HSM " } ,
{ 0x92 , 0x39 , 0x2D , 0x88 , 0x2C , 0x40 , 0x4B , 0x0E , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 18-250mm F3.5-6.3 DC OS Macro HSM " } ,
{ 0x26 , 0x48 , 0x31 , 0x49 , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 20-40mm F2.8 " } ,
{ 0x02 , 0x3A , 0x37 , 0x50 , 0x31 , 0x3D , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 24-50mm F4-5.6 UC " } ,
{ 0x26 , 0x48 , 0x37 , 0x56 , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 547448 " , " 24-60mm F2.8 EX DG " } ,
{ 0xB6 , 0x48 , 0x37 , 0x56 , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 547448 " , " 24-60mm F2.8 EX DG " } ,
{ 0xA6 , 0x48 , 0x37 , 0x5C , 0x24 , 0x24 , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " 571559 " , " 24-70mm F2.8 IF EX DG HSM " } ,
{ 0x26 , 0x54 , 0x37 , 0x5C , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 24-70mm F2.8 EX DG Macro " } ,
{ 0x67 , 0x54 , 0x37 , 0x5C , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 548445 " , " 24-70mm F2.8 EX DG Macro " } ,
{ 0xE9 , 0x54 , 0x37 , 0x5C , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 548445 " , " 24-70mm F2.8 EX DG Macro " } ,
{ 0x26 , 0x40 , 0x37 , 0x5C , 0x2C , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 24-70mm F3.5-5.6 Aspherical HF " } ,
{ 0x8A , 0x3C , 0x37 , 0x6A , 0x30 , 0x30 , 0x4B , 0x0E , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 24-105mm F4 DG OS HSM " } ,
{ 0x26 , 0x54 , 0x37 , 0x73 , 0x24 , 0x34 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 24-135mm F2.8-4.5 " } ,
{ 0x02 , 0x46 , 0x3C , 0x5C , 0x25 , 0x25 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-70mm F2.8 " } ,
{ 0x26 , 0x54 , 0x3C , 0x5C , 0x24 , 0x24 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-70mm F2.8 EX " } ,
{ 0x26 , 0x48 , 0x3C , 0x5C , 0x24 , 0x24 , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 549442 " , " 28-70mm F2.8 EX DG " } ,
{ 0x79 , 0x48 , 0x3C , 0x5C , 0x24 , 0x24 , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-70mm F2.8 EX DG " } ,
{ 0x26 , 0x48 , 0x3C , 0x5C , 0x24 , 0x30 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 634445 " , " 28-70mm F2.8-4 DG " } ,
{ 0x02 , 0x3F , 0x3C , 0x5C , 0x2D , 0x35 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-70mm F3.5-4.5 UC " } ,
{ 0x26 , 0x40 , 0x3C , 0x60 , 0x2C , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-80mm F3.5-5.6 Mini Zoom Macro II Aspherical " } ,
{ 0x26 , 0x40 , 0x3C , 0x65 , 0x2C , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-90mm F3.5-5.6 Macro " } ,
{ 0x26 , 0x48 , 0x3C , 0x6A , 0x24 , 0x30 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-105mm F2.8-4 Aspherical " } ,
{ 0x26 , 0x3E , 0x3C , 0x6A , 0x2E , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-105mm F3.8-5.6 UC-III Aspherical IF " } ,
{ 0x26 , 0x40 , 0x3C , 0x80 , 0x2C , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro " } ,
{ 0x26 , 0x40 , 0x3C , 0x80 , 0x2B , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro " } ,
{ 0x26 , 0x3D , 0x3C , 0x80 , 0x2F , 0x3D , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-300mm F3.8-5.6 Aspherical " } ,
{ 0x26 , 0x41 , 0x3C , 0x8E , 0x2C , 0x40 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " 795443 " , " 28-300mm F3.5-6.3 DG Macro " } ,
{ 0xE6 , 0x41 , 0x3C , 0x8E , 0x2C , 0x40 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-300mm F3.5-6.3 DG Macro " } ,
{ 0x26 , 0x40 , 0x3C , 0x8E , 0x2C , 0x40 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 28-300mm F3.5-6.3 Macro " } ,
{ 0x02 , 0x3B , 0x44 , 0x61 , 0x30 , 0x3D , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 35-80mm F4-5.6 " } ,
{ 0x02 , 0x40 , 0x44 , 0x73 , 0x2B , 0x36 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 35-135mm F3.5-4.5 a " } ,
{ 0xCC , 0x4C , 0x50 , 0x68 , 0x14 , 0x14 , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 50-100mm F1.8 DC HSM | A " } ,
{ 0x7A , 0x47 , 0x50 , 0x76 , 0x24 , 0x24 , 0x4B , 0x06 , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 50-150mm F2.8 EX APO DC HSM " } ,
{ 0xFD , 0x47 , 0x50 , 0x76 , 0x24 , 0x24 , 0x4B , 0x06 , 0x03 , 0x00 , 0x00 , " Sigma " , " 691554 " , " 50-150mm F2.8 EX APO DC HSM II " } ,
{ 0x98 , 0x48 , 0x50 , 0x76 , 0x24 , 0x24 , 0x4B , 0x0E , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 50-150 f/2.8 EX DC APO OS HSM " } ,
{ 0x48 , 0x3C , 0x50 , 0xA0 , 0x30 , 0x40 , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " 736552 " , " APO 50-500mm F4-6.3 EX HSM " } ,
{ 0x9F , 0x37 , 0x50 , 0xA0 , 0x34 , 0x40 , 0x4B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 50-500mm F4.5-6.3 APO DG OS HSM " } ,
//M "Sigma" "686550" "50-200mm F4-5.6 DC OS HSM";
{ 0x26 , 0x3C , 0x54 , 0x80 , 0x30 , 0x3C , 0x1C , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 55-200mm F4-5.6 DC " } ,
{ 0x7A , 0x3B , 0x53 , 0x80 , 0x30 , 0x3C , 0x4B , 0x06 , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 55-200mm F4-5.6 DC HSM " } ,
{ 0x48 , 0x54 , 0x5C , 0x80 , 0x24 , 0x24 , 0x4B , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 70-200mm F2.8 EX APO IF HSM " } ,
{ 0x7A , 0x48 , 0x5C , 0x80 , 0x24 , 0x24 , 0x4B , 0x06 , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 70-200mm F2.8 EX APO DG Macro HSM II " } ,
{ 0xEE , 0x48 , 0x5C , 0x80 , 0x24 , 0x24 , 0x4B , 0x06 , 0x03 , 0x00 , 0x00 , " Sigma " , " 579555 " , " 70-200mm F2.8 EX APO DG Macro HSM II " } ,
{ 0x9C , 0x48 , 0x5C , 0x80 , 0x24 , 0x24 , 0x4B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 70-200mm F2.8 EX DG OS HSM " } ,
{ 0x02 , 0x46 , 0x5C , 0x82 , 0x25 , 0x25 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 70-210mm F2.8 APO " } ,
{ 0x02 , 0x40 , 0x5C , 0x82 , 0x2C , 0x35 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO 70-210mm F3.5-4.5 " } ,
{ 0x26 , 0x3C , 0x5C , 0x82 , 0x30 , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 70-210mm F4-5.6 UC-II " } ,
{ 0x26 , 0x3C , 0x5C , 0x8E , 0x30 , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 70-300mm F4-5.6 DG Macro " } ,
{ 0x56 , 0x3C , 0x5C , 0x8E , 0x30 , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 70-300mm F4-5.6 APO Macro Super II " } ,
{ 0xE0 , 0x3C , 0x5C , 0x8E , 0x30 , 0x3C , 0x4B , 0x06 , 0x00 , 0x00 , 0x00 , " Sigma " , " 508555 " , " APO 70-300mm F4-5.6 DG Macro " } ,
{ 0xA3 , 0x3C , 0x5C , 0x8E , 0x30 , 0x3C , 0x4B , 0x0E , 0x00 , 0x00 , 0x00 , " Sigma " , " 572556 " , " 70-300mm F4-5.6 DG OS " } ,
{ 0x02 , 0x37 , 0x5E , 0x8E , 0x35 , 0x3D , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 75-300mm F4.5-5.6 APO " } ,
{ 0x02 , 0x3A , 0x5E , 0x8E , 0x32 , 0x3D , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 75-300mm F4.0-5.6 " } ,
{ 0x77 , 0x44 , 0x61 , 0x98 , 0x34 , 0x3C , 0x7B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 80-400mm f4.5-5.6 EX OS " } ,
{ 0x77 , 0x44 , 0x60 , 0x98 , 0x34 , 0x3C , 0x7B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 80-400mm f4.5-5.6 APO DG D OS " } ,
{ 0x48 , 0x48 , 0x68 , 0x8E , 0x30 , 0x30 , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " 134556 " , " APO 100-300mm F4 EX IF HSM " } ,
{ 0xF3 , 0x48 , 0x68 , 0x8E , 0x30 , 0x30 , 0x4B , 0x02 , 0x13 , 0x00 , 0x00 , " Sigma " , " 134556 " , " APO 100-300mm F4 EX IF HSM " } ,
{ 0x48 , 0x54 , 0x6F , 0x8E , 0x24 , 0x24 , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " APO 120-300mm F2.8 EX DG HSM " } ,
{ 0x7A , 0x54 , 0x6E , 0x8E , 0x24 , 0x24 , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " 135553 " , " APO 120-300mm F2.8 EX DG HSM " } ,
{ 0xFA , 0x54 , 0x6E , 0x8E , 0x24 , 0x24 , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " 135553 " , " APO 120-300mm F2.8 EX DG HSM " } ,
{ 0xCF , 0x38 , 0x6E , 0x98 , 0x34 , 0x3C , 0x4B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " 728557 " , " APO 120-400mm F4.5-5.6 DG OS HSM " } ,
{ 0xC3 , 0x34 , 0x68 , 0x98 , 0x38 , 0x40 , 0x4B , 0x4E , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 100-400mm F5-6.3 DG OS HSM C " } ,
{ 0x8D , 0x48 , 0x6E , 0x8E , 0x24 , 0x24 , 0x4B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 120-300mm F2.8 DG OS HSM | S " } ,
{ 0x26 , 0x44 , 0x73 , 0x98 , 0x34 , 0x3C , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " 135-400mm F4.5-5.6 APO Aspherical " } ,
{ 0xCE , 0x34 , 0x76 , 0xA0 , 0x38 , 0x40 , 0x4B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " 737559 " , " APO 150-500mm F5-6.3 DG OS HSM " } ,
{ 0x81 , 0x34 , 0x76 , 0xA6 , 0x38 , 0x40 , 0x4B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 150-600mm F5-6.3 DG OS HSM Sports " } ,
{ 0x82 , 0x34 , 0x76 , 0xA6 , 0x38 , 0x40 , 0x4B , 0x0E , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " 150-600mm F5-6.3 DG OS HSM Contemporary " } ,
{ 0x26 , 0x40 , 0x7B , 0xA0 , 0x34 , 0x40 , 0x1C , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO 170-500mm F5-6.3 Aspherical RF " } ,
{ 0xA7 , 0x49 , 0x80 , 0xA0 , 0x24 , 0x24 , 0x4B , 0x06 , 0x03 , 0x00 , 0x00 , " Sigma " , " " , " APO 200-500mm F2.8 EX DG " } ,
{ 0x48 , 0x3C , 0x8E , 0xB0 , 0x3C , 0x3C , 0x4B , 0x02 , 0x03 , 0x00 , 0x00 , " Sigma " , " 595555 " , " APO 300-800mm F5.6 EX DG HSM " } ,
//
//------------------------------------------------------------------------------
// Tamron lenses by focal length, first fixed then zoom lenses
//------------------------------------------------------------------------------
//
{ 0x00 , 0x47 , 0x25 , 0x25 , 0x24 , 0x24 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 69E " , " SP AF 14mm F/2.8 Aspherical (IF) " } ,
{ 0xE8 , 0x4C , 0x44 , 0x44 , 0x14 , 0x14 , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " F012 " , " SP 35mm F/1.8 Di VC USD " } ,
{ 0xE7 , 0x4C , 0x4C , 0x4C , 0x14 , 0x14 , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " F013 " , " SP 45mm F/1.8 Di VC USD " } ,
{ 0xF4 , 0x54 , 0x56 , 0x56 , 0x18 , 0x18 , 0x84 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " G005 " , " SP AF 60mm F/2 Di II LD (IF) Macro 1:1 " } ,
{ 0x1E , 0x5D , 0x64 , 0x64 , 0x20 , 0x20 , 0x13 , 0x00 , 0x40 , 0x00 , 0x00 , " Tamron " , " 52E " , " SP AF 90mm F/2.5 " } ,
{ 0x20 , 0x5A , 0x64 , 0x64 , 0x20 , 0x20 , 0x14 , 0x00 , 0x40 , 0x00 , 0x00 , " Tamron " , " 152E " , " SP AF 90mm F/2.5 Macro " } ,
{ 0x22 , 0x53 , 0x64 , 0x64 , 0x24 , 0x24 , 0xE0 , 0x02 , 0x40 , 0x00 , 0x00 , " Tamron " , " 72E " , " SP AF 90mm F/2.8 Macro 1:1 " } ,
{ 0x32 , 0x53 , 0x64 , 0x64 , 0x24 , 0x24 , 0x35 , 0x02 , 0x40 , 0x01 , 0x00 , " Tamron " , " 172E " , " SP AF 90mm F/2.8 Macro 1:1 " } ,
{ 0x32 , 0x53 , 0x64 , 0x64 , 0x24 , 0x24 , 0x35 , 0x02 , 0x40 , 0x02 , 0x00 , " Tamron " , " 272E " , " SP AF 90mm F/2.8 Di Macro 1:1 " } ,
{ 0xF8 , 0x55 , 0x64 , 0x64 , 0x24 , 0x24 , 0x84 , 0x06 , 0x41 , 0x00 , 0x00 , " Tamron " , " 272NII " , " SP AF 90mm F/2.8 Di Macro 1:1 " } ,
{ 0xF8 , 0x54 , 0x64 , 0x64 , 0x24 , 0x24 , 0xDF , 0x06 , 0x41 , 0x00 , 0x00 , " Tamron " , " 272NII " , " SP AF 90mm F/2.8 Di Macro 1:1 " } ,
{ 0xFE , 0x54 , 0x64 , 0x64 , 0x24 , 0x24 , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " F004 " , " SP 90mm F/2.8 Di VC USD MACRO 1:1 " } ,
{ 0xE4 , 0x54 , 0x64 , 0x64 , 0x24 , 0x24 , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " F017 " , " SP 90mm f/2.8 Di VC USD Macro 1:1 " } ,
{ 0x00 , 0x4C , 0x7C , 0x7C , 0x2C , 0x2C , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " B01 " , " SP AF 180mm F/3.5 Di Model " } ,
{ 0x21 , 0x56 , 0x8E , 0x8E , 0x24 , 0x24 , 0x14 , 0x00 , 0x00 , 0x00 , 0x00 , " Tamron " , " 60E " , " SP AF 300mm F/2.8 LD-IF " } ,
{ 0x27 , 0x54 , 0x8E , 0x8E , 0x24 , 0x24 , 0x1D , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 360E " , " SP AF 300mm F/2.8 LD-IF " } ,
//
{ 0xF6 , 0x3F , 0x18 , 0x37 , 0x2C , 0x34 , 0x84 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " B001 " , " SP AF 10-24mm F/3.5-4.5 Di II LD Aspherical (IF) " } ,
{ 0xF6 , 0x3F , 0x18 , 0x37 , 0x2C , 0x34 , 0xDF , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " B001 " , " SP AF 10-24mm F/3.5-4.5 Di II LD Aspherical (IF) " } ,
{ 0x00 , 0x36 , 0x1C , 0x2D , 0x34 , 0x3C , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tamron " , " A13 " , " SP AF 11-18mm F/4.5-5.6 Di II LD Aspherical (IF) " } ,
{ 0xE9 , 0x48 , 0x27 , 0x3E , 0x24 , 0x24 , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " A012 " , " SP 15-30mm F/2.8 Di VC USD " } ,
{ 0xEA , 0x40 , 0x29 , 0x8E , 0x2C , 0x40 , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " B016 " , " AF 16-300mm F/3.5-6.3 Di II VC PZD " } ,
{ 0x07 , 0x46 , 0x2B , 0x44 , 0x24 , 0x30 , 0x03 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A05 " , " SP AF 17-35mm F/2.8-4 Di LD Aspherical (IF) " } ,
{ 0x00 , 0x53 , 0x2B , 0x50 , 0x24 , 0x24 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tamron " , " A16 " , " SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF) " } ,
{ 0x00 , 0x54 , 0x2B , 0x50 , 0x24 , 0x24 , 0x00 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A16NII " , " SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF) " } ,
{ 0xFB , 0x54 , 0x2B , 0x50 , 0x24 , 0x24 , 0x84 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A16NII " , " SP AF 17-50mm F/2.8 XR Di II LD Aspherical (IF) " } ,
{ 0xF3 , 0x54 , 0x2B , 0x50 , 0x24 , 0x24 , 0x84 , 0x0E , 0x01 , 0x00 , 0x00 , " Tamron " , " B005 " , " SP AF 17-50mm F/2.8 XR Di II VC LD Aspherical (IF) " } ,
{ 0x00 , 0x3F , 0x2D , 0x80 , 0x2B , 0x40 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tamron " , " A14 " , " AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) " } ,
{ 0x00 , 0x3F , 0x2D , 0x80 , 0x2C , 0x40 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tamron " , " A14 " , " AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro " } ,
{ 0x00 , 0x40 , 0x2D , 0x80 , 0x2C , 0x40 , 0x00 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A14NII " , " AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro " } ,
{ 0xFC , 0x40 , 0x2D , 0x80 , 0x2C , 0x40 , 0xDF , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A14NII " , " AF 18-200mm F/3.5-6.3 XR Di II LD Aspherical (IF) Macro " } ,
{ 0xE6 , 0x40 , 0x2D , 0x80 , 0x2C , 0x40 , 0xDF , 0x0E , 0x01 , 0x00 , 0x00 , " Tamron " , " B018 " , " AF 18-200mm f/3.5-6.3 Di II VC " } ,
{ 0x00 , 0x40 , 0x2D , 0x88 , 0x2C , 0x40 , 0x62 , 0x06 , 0x00 , 0x00 , 0x00 , " Tamron " , " A18 " , " AF 18-250mm F/3.5-6.3 Di II LD Aspherical (IF) Macro " } ,
{ 0x00 , 0x40 , 0x2D , 0x88 , 0x2C , 0x40 , 0x00 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A18NII " , " AF 18-250mm F/3.5-6.3 Di II LD Aspherical (IF) Macro " } ,
{ 0xF5 , 0x40 , 0x2C , 0x8A , 0x2C , 0x40 , 0x40 , 0x0E , 0x01 , 0x00 , 0x00 , " Tamron " , " B003 " , " AF 18-270mm F/3.5-6.3 Di II VC LD Aspherical (IF) Macro " } ,
{ 0xF0 , 0x3F , 0x2D , 0x8A , 0x2C , 0x40 , 0xDF , 0x0E , 0x01 , 0x00 , 0x00 , " Tamron " , " B008 " , " AF 18-270mm F/3.5-6.3 Di II VC PZD " } ,
{ 0xE0 , 0x40 , 0x2D , 0x98 , 0x2C , 0x41 , 0xDF , 0x4E , 0x01 , 0x00 , 0x00 , " Tamron " , " B028 " , " AF 18-400mm F/3.5-6.3 Di II VC HLD " } ,
{ 0x07 , 0x40 , 0x2F , 0x44 , 0x2C , 0x34 , 0x03 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A10 " , " AF 19-35mm F/3.5-4.5 " } ,
{ 0x07 , 0x40 , 0x30 , 0x45 , 0x2D , 0x35 , 0x03 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A10 " , " AF 19-35mm F/3.5-4.5 " } ,
{ 0x00 , 0x49 , 0x30 , 0x48 , 0x22 , 0x2B , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 166D " , " SP AF 20-40mm F/2.7-3.5 " } ,
{ 0x0E , 0x4A , 0x31 , 0x48 , 0x23 , 0x2D , 0x0E , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 166D " , " SP AF 20-40mm F/2.7-3.5 " } ,
//M "Tamron" "266D" "SP AF 20-40mm F/2.7-3.5 Aspherical-IF";
{ 0xFE , 0x48 , 0x37 , 0x5C , 0x24 , 0x24 , 0xDF , 0x0E , 0x01 , 0x00 , 0x00 , " Tamron " , " A007 " , " SP 24-70mm F/2.8 Di VC USD " } ,
//M "Tamron" "73D" "AF 24-70mm F/3.3-5.6 Aspherical";
{ 0xCE , 0x47 , 0x37 , 0x5C , 0x25 , 0x25 , 0xDF , 0x4E , 0x00 , 0x00 , 0x00 , " Tamron " , " A032 " , " SP 24-70mm F/2.8 Di VC USD G2 " } ,
{ 0xCE , 0x47 , 0x37 , 0x5C , 0x25 , 0x25 , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " A032 " , " SP 24-70mm F/2.8 Di VC USD G2 " } ,
{ 0x45 , 0x41 , 0x37 , 0x72 , 0x2C , 0x3C , 0x48 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 190D " , " SP AF 24-135mm F/3.5-5.6 AD Aspherical (IF) Macro " } ,
//M "Tamron" "159D" "AF 28-70mm F/3.5-4.5";
//M "Tamron" "259D" "AF 28-70mm F/3.5-4.5";
{ 0x33 , 0x54 , 0x3C , 0x5E , 0x24 , 0x24 , 0x62 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A09 " , " SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro " } ,
{ 0xFA , 0x54 , 0x3C , 0x5E , 0x24 , 0x24 , 0x84 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A09NII " , " SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro " } ,
{ 0xFA , 0x54 , 0x3C , 0x5E , 0x24 , 0x24 , 0xDF , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A09NII " , " SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro " } ,
{ 0x10 , 0x3D , 0x3C , 0x60 , 0x2C , 0x3C , 0xD2 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 177D " , " AF 28-80mm F/3.5-5.6 Aspherical " } ,
{ 0x45 , 0x3D , 0x3C , 0x60 , 0x2C , 0x3C , 0x48 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 177D " , " AF 28-80mm F/3.5-5.6 Aspherical " } ,
{ 0x00 , 0x48 , 0x3C , 0x6A , 0x24 , 0x24 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 176D " , " SP AF 28-105mm F/2.8 LD Aspherical IF " } ,
//M "Tamron" "276D" "SP AF 28-105mm F/2.8 LD Aspherical IF";
//M "Tamron" "179D" "AF 28-105mm F4.0-5.6 IF";
{ 0x4D , 0x3E , 0x3C , 0x80 , 0x2E , 0x3C , 0x62 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A03N " , " AF 28-200mm F/3.8-5.6 XR Aspherical (IF) Macro " } ,
//M "Tamron" "471D" "AF 28-200mm F/3.8-5.6 Aspherical IF Super2 Silver";
{ 0x0B , 0x3E , 0x3D , 0x7F , 0x2F , 0x3D , 0x0E , 0x00 , 0x00 , 0x00 , 0x00 , " Tamron " , " 71D " , " AF 28-200mm F/3.8-5.6 " } ,
{ 0x0B , 0x3E , 0x3D , 0x7F , 0x2F , 0x3D , 0x0E , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 171D " , " AF 28-200mm F/3.8-5.6D " } ,
{ 0x12 , 0x3D , 0x3C , 0x80 , 0x2E , 0x3C , 0xDF , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 271D " , " AF 28-200mm F/3.8-5.6 LD Aspherical (IF) " } ,
{ 0x4D , 0x41 , 0x3C , 0x8E , 0x2B , 0x40 , 0x62 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A061 " , " AF 28-300mm F/3.5-6.3 XR Di LD Aspherical (IF) " } ,
{ 0x4D , 0x41 , 0x3C , 0x8E , 0x2C , 0x40 , 0x62 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 185D " , " AF 28-300mm F/3.5-6.3 XR LD Aspherical (IF) " } ,
//M "Tamron" "285D" "AF 28-300mm F/3.8-6.3 LD Aspherical IF Silver";
{ 0xF9 , 0x40 , 0x3C , 0x8E , 0x2C , 0x40 , 0x40 , 0x0E , 0x01 , 0x00 , 0x00 , " Tamron " , " A20 " , " AF 28-300mm F/3.5-6.3 XR Di VC LD Aspherical (IF) Macro " } ,
//M "Tamron" "63D" "AF 35-90mm F/4-5.6";
//M "Tamron" "65D" "SP AF 35-105mm F/2.8 Aspherical";
//M "Tamron" "" "AF 35-135mm F/3.5-4.5";
{ 0x00 , 0x47 , 0x53 , 0x80 , 0x30 , 0x3C , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tamron " , " A15 " , " AF 55-200mm F/4-5.6 Di II LD " } ,
{ 0xF7 , 0x53 , 0x5C , 0x80 , 0x24 , 0x24 , 0x84 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A001 " , " SP AF 70-200mm F/2.8 Di LD (IF) Macro " } ,
{ 0xFE , 0x53 , 0x5C , 0x80 , 0x24 , 0x24 , 0x84 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A001 " , " SP AF 70-200mm F/2.8 Di LD (IF) Macro " } ,
{ 0xF7 , 0x53 , 0x5C , 0x80 , 0x24 , 0x24 , 0x40 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A001 " , " SP AF 70-200mm F/2.8 Di LD (IF) Macro " } ,
{ 0xFE , 0x54 , 0x5C , 0x80 , 0x24 , 0x24 , 0xDF , 0x0E , 0x01 , 0x00 , 0x00 , " Tamron " , " A009 " , " SP 70-200mm F/2.8 Di VC USD " } ,
//M "Tamron" "67D" "SP AF 70-210mm f/2.8 LD";
//M "Tamron" "" "AF 70-210mm F/3.5-4.5";
//M "Tamron" "158D" "AF 70-210mm F/4-5.6";
//M "Tamron" "258D" "AF 70-210mm F/4-5.6";
//M "Tamron" "172D" "AF 70-300mm F/4-5.6";
//M "Tamron" "472D" "AF 70-300mm F/4-5.6 LD";
{ 0x69 , 0x48 , 0x5C , 0x8E , 0x30 , 0x3C , 0x6F , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 572D/772D " , " AF 70-300mm F/4-5.6 LD Macro 1:2 " } ,
{ 0x69 , 0x47 , 0x5C , 0x8E , 0x30 , 0x3C , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A17N " , " AF 70-300mm F/4-5.6 Di LD Macro 1:2 " } ,
{ 0x00 , 0x48 , 0x5C , 0x8E , 0x30 , 0x3C , 0x00 , 0x06 , 0x01 , 0x00 , 0x00 , " Tamron " , " A17NII " , " AF 70-300mm F/4-5.6 Di LD Macro 1:2 " } ,
{ 0xF1 , 0x47 , 0x5C , 0x8E , 0x30 , 0x3C , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " A005 " , " SP 70-300mm F4-5.6 Di VC USD " } ,
//M "Tamron" "872D" "AF 75-300mm F/4-5.6 LD";
//M "Tamron" "278D" "AF 80-210mm F/4.5-5.6";
//M "Tamron" "62D" "AF 90-300mm F/4.5-5.6";
//M "Tamron" "186D" "AF 100-300mm F/5-6.3";
{ 0xEB , 0x40 , 0x76 , 0xA6 , 0x38 , 0x40 , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " A011 " , " SP AF 150-600mm F/5-6.3 VC USD " } ,
{ 0xE3 , 0x40 , 0x76 , 0xA6 , 0x38 , 0x40 , 0xDF , 0x4E , 0x00 , 0x00 , 0x00 , " Tamron " , " A022 " , " SP AF 150-600mm F/5-6.3 Di VC USD G2 " } ,
{ 0x20 , 0x3C , 0x80 , 0x98 , 0x3D , 0x3D , 0x1E , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " 75D " , " AF 200-400mm F/5.6 LD IF " } ,
{ 0x00 , 0x3E , 0x80 , 0xA0 , 0x38 , 0x3F , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A08 " , " SP AF 200-500mm F/5-6.3 Di LD (IF) " } ,
{ 0x00 , 0x3F , 0x80 , 0xA0 , 0x38 , 0x3F , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tamron " , " A08 " , " SP AF 200-500mm F/5-6.3 Di " } ,
//
//------------------------------------------------------------------------------
// Tokina Lenses by focal length, first fixed then zoom lenses
//------------------------------------------------------------------------------
//
{ 0x00 , 0x40 , 0x2B , 0x2B , 0x2C , 0x2C , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 17 AF PRO (AF 17mm f/3.5) " } ,
{ 0x00 , 0x47 , 0x44 , 0x44 , 0x24 , 0x24 , 0x00 , 0x06 , 0x40 , 0x00 , 0x00 , " Tokina " , " T303503 " , " AT-X M35 PRO DX (AF 35mm f/2.8 Macro) " } ,
{ 0x00 , 0x54 , 0x68 , 0x68 , 0x24 , 0x24 , 0x00 , 0x02 , 0x40 , 0x00 , 0x00 , " Tokina " , " T310003N " , " AT-X M100 AF PRO D (AF 100mm f/2.8 Macro) " } ,
{ 0x27 , 0x48 , 0x8E , 0x8E , 0x30 , 0x30 , 0x1D , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 304 AF (AF 300mm f/4.0) " } ,
{ 0x00 , 0x54 , 0x8E , 0x8E , 0x24 , 0x24 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 300 AF PRO (AF 300mm f/2.8) " } ,
{ 0x12 , 0x3B , 0x98 , 0x98 , 0x3D , 0x3D , 0x09 , 0x00 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 400 AF SD (AF 400mm f/5.6) " } ,
//
{ 0x00 , 0x40 , 0x18 , 0x2B , 0x2C , 0x34 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " T4101703 " , " AT-X 107 AF DX Fisheye (AF 10-17mm f/3.5-4.5) " } ,
{ 0x00 , 0x48 , 0x1C , 0x29 , 0x24 , 0x24 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " T4111603 " , " AT-X 116 PRO DX (AF 11-16mm f/2.8) " } ,
{ 0x7A , 0x48 , 0x1C , 0x29 , 0x24 , 0x24 , 0x7E , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 116 PRO DX II (AF 11-16mm f/2.8) " } ,
{ 0x7A , 0x48 , 0x1C , 0x30 , 0x24 , 0x24 , 0x7E , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 11-20 F2.8 PRO DX (AF 11-20mm f/2.8) " } ,
{ 0x94 , 0x54 , 0x24 , 0x30 , 0x18 , 0x18 , 0x4a , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 14-20 F2 PRO DX " } ,
{ 0x00 , 0x3C , 0x1F , 0x37 , 0x30 , 0x30 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " T4122403 " , " AT-X 124 AF PRO DX (AF 12-24mm f/4) " } ,
{ 0x7A , 0x3C , 0x1F , 0x37 , 0x30 , 0x30 , 0x7E , 0x06 , 0x01 , 0x02 , 0x00 , " Tokina " , " T4122423 " , " AT-X 124 AF PRO DX II (AF 12-24mm f/4) " } ,
{ 0x7A , 0x3C , 0x1F , 0x3C , 0x30 , 0x30 , 0x7E , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 12-28 PRO DX (AF 12-28mm F/4) " } ,
{ 0x00 , 0x48 , 0x29 , 0x3C , 0x24 , 0x24 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 16-28 AF PRO FX (AF 16-28mm f/2.8) " } ,
{ 0x00 , 0x48 , 0x29 , 0x50 , 0x24 , 0x24 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 165 PRO DX (AF 16-50mm f/2.8) " } ,
{ 0x00 , 0x40 , 0x2A , 0x72 , 0x2C , 0x3C , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 16.5-135 DX (AF 16.5-135mm F3.5-5.6) " } ,
{ 0x00 , 0x3C , 0x2B , 0x44 , 0x30 , 0x30 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 17-35 F4 PRO FX (AF 17-35mm f/4) " } ,
{ 0x2F , 0x40 , 0x30 , 0x44 , 0x2C , 0x34 , 0x29 , 0x02 , 0x00 , 0x02 , 0x00 , " Tokina " , " " , " AF 193 (AF 19-35mm f/3.5-4.5) " } ,
{ 0x2F , 0x48 , 0x30 , 0x44 , 0x24 , 0x24 , 0x29 , 0x02 , 0x00 , 0x02 , 0x00 , " Tokina " , " " , " AT-X 235 AF PRO (AF 20-35mm f/2.8) " } ,
//M "Tokina" "" "AF 235 (AF 20-35mm f/3.5-4.5)"
{ 0x2F , 0x40 , 0x30 , 0x44 , 0x2C , 0x34 , 0x29 , 0x02 , 0x00 , 0x01 , 0x00 , " Tokina " , " " , " AF 235 II (AF 20-35mm f/3.5-4.5) " } ,
//M "Tokina" "" "AT-X 240 AF (AF 24-40mm f/2.8)"
{ 0x00 , 0x48 , 0x37 , 0x5C , 0x24 , 0x24 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 24-70MM F2.8 PRO FX (AF 24-70mm f/2.8) " } ,
{ 0x00 , 0x40 , 0x37 , 0x80 , 0x2C , 0x3C , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 242 AF (AF 24-200mm f/3.5-5.6) " } ,
{ 0x25 , 0x48 , 0x3C , 0x5C , 0x24 , 0x24 , 0x1B , 0x02 , 0x00 , 0x02 , 0x00 , " Tokina " , " " , " AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8) " } ,
{ 0x25 , 0x48 , 0x3C , 0x5C , 0x24 , 0x24 , 0x1B , 0x02 , 0x00 , 0x01 , 0x00 , " Tokina " , " " , " AT-X 287 AF PRO SV (AF 28-70mm f/2.8) " } ,
{ 0x07 , 0x48 , 0x3C , 0x5C , 0x24 , 0x24 , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 287 AF (AF 28-70mm f/2.8) " } ,
{ 0x07 , 0x47 , 0x3C , 0x5C , 0x25 , 0x35 , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AF 287 SD (AF 28-70mm f/2.8-4.5) " } ,
{ 0x07 , 0x40 , 0x3C , 0x5C , 0x2C , 0x35 , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AF 270 II (AF 28-70mm f/3.5-4.5) " } ,
{ 0x00 , 0x48 , 0x3C , 0x60 , 0x24 , 0x24 , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 280 AF PRO (AF 28-80mm f/2.8) " } ,
//M "Tokina" "" "AF 280 II EMZ (AF 28-80mm f/3.5-5.6)"
//M "Tokina" "" "AF 205 (AF 28-105mm f/3.5-4.5)"
//M "Tokina" "" "AF 282 (AF 28-200mm 3.5-5.6)"
//M "Tokina" "" "AF 282 EMZ II (AF 28-210mm f/4.2-6.5)"
//M "Tokina" "" "AF 370 (AF 35-70mm f/3.5-4.6)"
//M "Tokina" "" "AF 370 II (AF 35-70mm f/3.5-4.6)"
{ 0x25 , 0x44 , 0x44 , 0x8E , 0x34 , 0x42 , 0x1B , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AF 353 (AF 35-300mm f/4.5-6.7) " } ,
{ 0x00 , 0x48 , 0x50 , 0x72 , 0x24 , 0x24 , 0x00 , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 535 PRO DX (AF 50-135mm f/2.8) " } ,
{ 0x00 , 0x3C , 0x5C , 0x80 , 0x30 , 0x30 , 0x00 , 0x0E , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 70-200MM F4 FX VCM-S (AF 70-200mm f/4) " } ,
{ 0x00 , 0x48 , 0x5C , 0x80 , 0x30 , 0x30 , 0x00 , 0x0E , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 70-200MM F4 FX VCM-S (AF 70-200mm f/4) " } ,
//M "Tokina" "" "AF 745 (AF 70-210mm f/4.5)"
//M "Tokina" "" "AF 210 (AF 70-210mm f/4.0-5.6)"
//M "Tokina" "" "AF 210 II SD (AF 70-210mm f/4.0-5.6)"
{ 0x12 , 0x44 , 0x5E , 0x8E , 0x34 , 0x3C , 0x09 , 0x00 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AF 730 (AF 75-300mm F4.5-5.6) " } ,
//M "Tokina" "" "AF 730 II (AF 75-300mm f/4.5-5.6)"
{ 0x14 , 0x54 , 0x60 , 0x80 , 0x24 , 0x24 , 0x0B , 0x00 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 828 AF (AF 80-200mm f/2.8) " } ,
{ 0x24 , 0x54 , 0x60 , 0x80 , 0x24 , 0x24 , 0x1A , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 828 AF PRO (AF 80-200mm f/2.8) " } ,
//M "Tokina" "" "AT-X 840 AF (AF 80-400mm f/4.5-5.6)"
{ 0x24 , 0x44 , 0x60 , 0x98 , 0x34 , 0x3C , 0x1A , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 840 AF-II (AF 80-400mm f/4.5-5.6) " } ,
{ 0x00 , 0x44 , 0x60 , 0x98 , 0x34 , 0x3C , 0x00 , 0x02 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 840 D (AF 80-400mm f/4.5-5.6) " } ,
{ 0x14 , 0x48 , 0x68 , 0x8E , 0x30 , 0x30 , 0x0B , 0x00 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " AT-X 340 AF (AF 100-300mm f/4) " } ,
//M "Tokina" "" "AT-X 340 AF-II (AF 100-300mm f/4)"
//M "Tokina" "" "AF 130 EMZ II (AF 100-300mm f/5.6-6.7)"
//M "Tokina" "" "AF 140 EMZ (AF 100-400mm f/4.5-6.3)"
//
//------------------------------------------------------------------------------
// Lenses from various other brands
//------------------------------------------------------------------------------
//
{ 0x06 , 0x3F , 0x68 , 0x68 , 0x2C , 0x2C , 0x06 , 0x00 , 0x00 , 0x00 , 0x00 , " Cosina " , " " , " AF 100mm F3.5 Macro " } ,
{ 0x07 , 0x36 , 0x3D , 0x5F , 0x2C , 0x3C , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Cosina " , " " , " AF Zoom 28-80mm F3.5-5.6 MC Macro " } ,
{ 0x07 , 0x46 , 0x3D , 0x6A , 0x25 , 0x2F , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Cosina " , " " , " AF Zoom 28-105mm F2.8-3.8 MC " } ,
//M "Cosina" "" "AF Zoom 28-210mm F3.5-5.6";
//M "Cosina" "" "AF Zoom 28-210mm F4.2-6.5 Aspherical IF";
//M "Cosina" "" "AF Zoom 28-300mm F4.0-6.3";
//M "Cosina" "" "AF Zoom 70-210mm F2.8-4.0";
{ 0x12 , 0x36 , 0x5C , 0x81 , 0x35 , 0x3D , 0x09 , 0x00 , 0x00 , 0x00 , 0x00 , " Cosina " , " " , " AF Zoom 70-210mm F4.5-5.6 MC Macro " } ,
{ 0x12 , 0x39 , 0x5C , 0x8E , 0x34 , 0x3D , 0x08 , 0x02 , 0x00 , 0x00 , 0x00 , " Cosina " , " " , " AF Zoom 70-300mm F4.5-5.6 MC Macro " } ,
{ 0x12 , 0x3B , 0x68 , 0x8D , 0x3D , 0x43 , 0x09 , 0x02 , 0x00 , 0x00 , 0x00 , " Cosina " , " " , " AF Zoom 100-300mm F5.6-6.7 MC Macro " } ,
//M "Cosina" "" "AF Zoom 100-400mm F5.6-6.7 MC";
//
{ 0x12 , 0x38 , 0x69 , 0x97 , 0x35 , 0x42 , 0x09 , 0x02 , 0x00 , 0x00 , 0x00 , " Promaster " , " " , " Spectrum 7 100-400mm 1:4.5-6.7 " } ,
//
{ 0x00 , 0x40 , 0x31 , 0x31 , 0x2C , 0x2C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Voigtlander " , " BA295AN " , " Color Skopar 20mm F3.5 SLII Aspherical " } ,
{ 0x00 , 0x48 , 0x3C , 0x3C , 0x24 , 0x24 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Voigtlander " , " " , " Color Skopar 28mm F2.8 SL II " } ,
{ 0x00 , 0x54 , 0x48 , 0x48 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Voigtlander " , " BA229DN " , " Ultron 40mm F2 SLII Aspherical " } ,
{ 0x00 , 0x54 , 0x55 , 0x55 , 0x0C , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Voigtlander " , " BA239BN " , " Nokton 58mm F1.4 SLII " } ,
{ 0x00 , 0x40 , 0x64 , 0x64 , 0x2C , 0x2C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Voigtlander " , " " , " APO-Lanthar 90mm F3.5 SLII Close Focus " } ,
//
{ 0x00 , 0x40 , 0x2D , 0x2D , 0x2C , 0x2C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Distagon T* 3,5/18 ZF.2 " } ,
{ 0x00 , 0x48 , 0x32 , 0x32 , 0x24 , 0x24 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Distagon T* 2,8/21 ZF.2 " } ,
{ 0x00 , 0x54 , 0x38 , 0x38 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Distagon T* 2/25 ZF.2 " } ,
{ 0x00 , 0x54 , 0x3C , 0x3C , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Distagon T* 2/28 ZF.2 " } ,
{ 0x00 , 0x54 , 0x44 , 0x44 , 0x0C , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Distagon T* 1.4/35 ZF.2 " } ,
{ 0x00 , 0x54 , 0x44 , 0x44 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Distagon T* 2/35 ZF.2 " } ,
{ 0x00 , 0x54 , 0x50 , 0x50 , 0x0C , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Planar T* 1,4/50 ZF.2 " } ,
{ 0x00 , 0x54 , 0x50 , 0x50 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Makro-Planar T* 2/50 ZF.2 " } ,
{ 0x00 , 0x54 , 0x62 , 0x62 , 0x0C , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Planar T* 1,4/85 ZF.2 " } ,
{ 0x00 , 0x54 , 0x68 , 0x68 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Makro-Planar T* 2/100 ZF.2 " } ,
{ 0x00 , 0x54 , 0x72 , 0x72 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Carl Zeiss " , " " , " Apo Sonnar T* 2/135 ZF.2 " } ,
{ 0x00 , 0x54 , 0x53 , 0x53 , 0x0C , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Zeiss " , " " , " Otus 1.4/55 " } ,
{ 0x01 , 0x54 , 0x62 , 0x62 , 0x0C , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Zeiss " , " " , " Otus 1.4/85 " } ,
// " "00" "00" "00" "00" "Zeiss" "" "Milvus 2.8/21"
{ 0x52 , 0x54 , 0x44 , 0x44 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Zeiss " , " " , " Milvus 2/35 " } ,
{ 0x53 , 0x54 , 0x50 , 0x50 , 0x0C , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Zeiss " , " " , " Milvus 1.4/50 " } ,
{ 0x54 , 0x54 , 0x50 , 0x50 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Zeiss " , " " , " Milvus 2/50M " } ,
{ 0x55 , 0x54 , 0x62 , 0x62 , 0x0C , 0x0C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Zeiss " , " " , " Milvus 1.4/85 " } ,
{ 0x56 , 0x54 , 0x68 , 0x68 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Zeiss " , " " , " Milvus 2/100M " } ,
//
{ 0x00 , 0x54 , 0x56 , 0x56 , 0x30 , 0x30 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Coastal Optical Systems " , " " , " 60mm 1:4 UV-VIS-IR Macro Apo " } ,
//
{ 0xBF , 0x4E , 0x26 , 0x26 , 0x1E , 0x1E , 0x01 , 0x04 , 0x00 , 0x00 , 0x00 , " Irix " , " " , " 15mm f/2.4 Firefly " } ,
{ 0xBF , 0x3C , 0x1B , 0x1B , 0x30 , 0x30 , 0x01 , 0x04 , 0x00 , 0x00 , 0x00 , " Irix " , " " , " 11mm f/4.0 Blackstone/Firefly " } ,
//
{ 0x4A , 0x40 , 0x11 , 0x11 , 0x2C , 0x0C , 0x4D , 0x02 , 0x00 , 0x00 , 0x00 , " Samyang " , " " , " 8mm f/3.5 Fish-Eye CS " } ,
{ 0x4A , 0x48 , 0x24 , 0x24 , 0x24 , 0x0C , 0x4D , 0x02 , 0x00 , 0x02 , 0x00 , " Samyang " , " " , " 10mm f/2.8 ED AS NCS CS " } ,
{ 0x4A , 0x48 , 0x1E , 0x1E , 0x24 , 0x0C , 0x4D , 0x02 , 0x00 , 0x00 , 0x00 , " Samyang " , " " , " 12mm f/2.8 ED AS NCS Fish-eye " } ,
{ 0x4A , 0x4C , 0x24 , 0x24 , 0x1E , 0x6C , 0x4D , 0x06 , 0x00 , 0x00 , 0x00 , " Samyang " , " " , " 14mm f/2.4 Premium " } ,
{ 0x4A , 0x48 , 0x24 , 0x24 , 0x24 , 0x0C , 0x4D , 0x02 , 0x00 , 0x01 , 0x00 , " Samyang " , " " , " AE 14mm f/2.8 ED AS IF UMC " } ,
{ 0x4A , 0x54 , 0x29 , 0x29 , 0x18 , 0x0C , 0x4D , 0x02 , 0x00 , 0x00 , 0x00 , " Samyang " , " " , " 16mm F2.0 ED AS UMC CS " } ,
{ 0x4A , 0x60 , 0x36 , 0x36 , 0x0C , 0x0C , 0x4D , 0x02 , 0x00 , 0x00 , 0x00 , " Samyang " , " " , " 24mm f/1.4 ED AS UMC " } ,
{ 0x4A , 0x60 , 0x44 , 0x44 , 0x0C , 0x0C , 0x4D , 0x02 , 0x00 , 0x00 , 0x00 , " Samyang " , " " , " 35mm f/1.4 AS UMC " } ,
{ 0x4A , 0x60 , 0x62 , 0x62 , 0x0C , 0x0C , 0x4D , 0x02 , 0x00 , 0x00 , 0x00 , " Samyang " , " " , " AE 85mm f/1.4 AS IF UMC " } ,
//
{ 0x9A , 0x4C , 0x50 , 0x50 , 0x14 , 0x14 , 0x9C , 0x06 , 0x00 , 0x00 , 0x00 , " Yongnuo " , " " , " YN50mm F1.8N " } ,
//
{ 0x02 , 0x40 , 0x44 , 0x5C , 0x2C , 0x34 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Exakta " , " " , " AF 35-70mm 1:3.5-4.5 MC " } ,
{ 0x07 , 0x3E , 0x30 , 0x43 , 0x2D , 0x35 , 0x03 , 0x00 , 0x00 , 0x00 , 0x00 , " Soligor " , " " , " AF Zoom 19-35mm 1:3.5-4.5 MC " } ,
{ 0x03 , 0x43 , 0x5C , 0x81 , 0x35 , 0x35 , 0x02 , 0x00 , 0x00 , 0x00 , 0x00 , " Soligor " , " " , " AF C/D Zoom UMCS 70-210mm 1:4.5 " } ,
{ 0x12 , 0x4A , 0x5C , 0x81 , 0x31 , 0x3D , 0x09 , 0x00 , 0x00 , 0x00 , 0x00 , " Soligor " , " " , " AF C/D Auto Zoom+Macro 70-210mm 1:4-5.6 UMCS " } ,
{ 0x12 , 0x36 , 0x69 , 0x97 , 0x35 , 0x42 , 0x09 , 0x00 , 0x00 , 0x00 , 0x00 , " Soligor " , " " , " AF Zoom 100-400mm 1:4.5-6.7 MC " } ,
//
{ 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , " Manual Lens " , " " , " No CPU " } ,
{ 0x00 , 0x00 , 0x48 , 0x48 , 0x53 , 0x53 , 0x00 , 0x01 , 0x00 , 0x00 , 0x00 , " Loreo " , " " , " 40mm F11-22 3D Lens in a Cap 9005 " } ,
//
//------------------------------------------------------------------------------
//
// Lenses, that were upgraded with custom CPU
//
{ 0x00 , 0x47 , 0x10 , 0x10 , 0x24 , 0x24 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA604AC " , " Fisheye Nikkor 8mm f/2.8 AiS " } ,
{ 0x00 , 0x47 , 0x3C , 0x3C , 0x24 , 0x24 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " Nikkor 28mm f/2.8 AiS " } ,
//"00 54 44 44 0C 0C 00" "00" "00" "00" "00" "Nikon" "JAA115AD" "Nikkor 35mm f/1.4 AiS" double ID with Zeiss
{ 0x00 , 0x57 , 0x50 , 0x50 , 0x14 , 0x14 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " Nikkor 50mm f/1.8 AI " } ,
{ 0x00 , 0x48 , 0x50 , 0x50 , 0x18 , 0x18 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " " , " Nikkor H 50mm f/2 " } ,
{ 0x00 , 0x48 , 0x68 , 0x68 , 0x24 , 0x24 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA304AA " , " Series E 100mm f/2.8 " } ,
{ 0x00 , 0x4C , 0x6A , 0x6A , 0x20 , 0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA305AA " , " Nikkor 105mm f/2.5 AiS " } ,
{ 0x00 , 0x48 , 0x80 , 0x80 , 0x30 , 0x30 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Nikon " , " JAA313AA " , " Nikkor 200mm f/4 AiS " } ,
{ 0x00 , 0x40 , 0x11 , 0x11 , 0x2C , 0x2C , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Samyang " , " " , " 8mm f/3.5 Fish-Eye " } ,
{ 0x00 , 0x58 , 0x64 , 0x64 , 0x20 , 0x20 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , " Soligor " , " " , " C/D Macro MC 90mm f/2.5 " } ,
// https://github.com/Exiv2/exiv2/issues/743
{ 0xc9 , 0x48 , 0x37 , 0x5c , 0x24 , 0x24 , 0x4b , 0x4e , 0x01 , 0x00 , 0x00 , " Sigma " , " " , " 24-70mm F2.8 DG OS HSM Art " } ,
// https://github.com/Exiv2/exiv2/issues/598 , https://github.com/Exiv2/exiv2/pull/891
{ 0xCF , 0x47 , 0x5C , 0x8E , 0x31 , 0x3D , 0xDF , 0x0E , 0x00 , 0x00 , 0x00 , " Tamron " , " A030 " , " SP 70-300mm F/4-5.6 Di VC USD " } ,
//
{ 0xf4 , 0x4c , 0x7c , 0x7c , 0x2c , 0x2c , 0x4b , 0x02 , 0x00 , 0x00 , 0x00 , " Sigma " , " " , " APO Macro 180mm F3.5 EX DG HSM " } ,
// https://github.com/Exiv2/exiv2/issues/1078
{ 0x80 , 0x48 , 0x1C , 0x29 , 0x24 , 0x24 , 0x7A , 0x06 , 0x00 , 0x00 , 0x00 , " Tokina " , " " , " atx-i 11-16mm F2.8 CF " } ,
// https://github.com/Exiv2/exiv2/issues/1069
{ 0xc8 , 0x54 , 0x44 , 0x44 , 0x0d , 0x0d , 0xdf , 0x46 , 0x00 , 0x00 , 0x00 , " Tamron " , " F045 " , " SP 35mm f/1.4 Di USD " } ,
// https://github.com/Exiv2/exiv2/pull/1105
{ 0xCB , 0x3C , 0x2B , 0x44 , 0x24 , 0x31 , 0xDF , 0x46 , 0x00 , 0x00 , 0x00 , " Tamron " , " A037 " , " 17-35mm F/2.8-4 Di OSD " } ,
// https://github.com/Exiv2/exiv2/issues/1208
{ 0xC8 , 0x54 , 0x62 , 0x62 , 0x0C , 0x0C , 0x4B , 0x46 , 0x00 , 0x00 , 0x00 , " Sigma " , " 321550 " , " 85mm F1.4 DG HSM | A " } ,
// Always leave this at the end!
{ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , nullptr , nullptr , nullptr }
} ;
//------------------------------------------------------------------------------
# endif
// 8< - - - 8< do not remove this line >8 - - - >8
/* if no meta obj is provided, try to use the value param that *may*
* be the pre - parsed lensid
*/
if ( metadata = = nullptr )
{
const unsigned char vid = static_cast < unsigned > ( value . toLong ( 0 ) ) ;
/* the 'FMntLens' name is added to the anonymous struct for
* fmountlens [ ]
*
* remember to name the struct when importing / updating the lens info
* from :
*
* www . rottmerhusen . com / objektives / lensid / files / c - header / fmountlens4 . h
*/
const struct FMntLens * pf = fmountlens ;
while ( pf - > lid & & pf - > lensname ) {
if ( pf - > lid = = vid ) {
break ;
}
+ + pf ;
}
if ( pf - > lensname = = nullptr ) {
return os < < value ;
}
return os < < pf - > manuf < < " " < < pf - > lensname ;
}
byte raw [ ] = { 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 , 0x0 } ;
static const char * tags [ ] = {
" LensIDNumber " ,
" LensFStops " ,
" MinFocalLength " ,
" MaxFocalLength " ,
" MaxApertureAtMinFocal " ,
" MaxApertureAtMaxFocal " ,
" MCUVersion "
} ;
const std : : string pre = std : : string ( " Exif. " ) + group + std : : string ( " . " ) ;
for ( unsigned int i = 0 ; i < 7 ; + + i ) {
ExifKey key ( pre + std : : string ( tags [ i ] ) ) ;
auto md = metadata - > findKey ( key ) ;
if ( md = = metadata - > end ( ) | | md - > typeId ( ) ! = unsignedByte | | md - > count ( ) = = 0 ) {
return os < < value ;
}
raw [ i ] = static_cast < byte > ( md - > toLong ( ) ) ;
}
auto md = metadata - > findKey ( ExifKey ( " Exif.Nikon3.LensType " ) ) ;
if ( md = = metadata - > end ( ) | | md - > typeId ( ) ! = unsignedByte | | md - > count ( ) = = 0 ) {
return os < < value ;
}
raw [ 7 ] = static_cast < byte > ( md - > toLong ( ) ) ;
for ( int i = 0 ; fmountlens [ i ] . lensname ! = nullptr ; + + i ) {
if ( raw [ 0 ] = = fmountlens [ i ] . lid ) {
// #1034
const std : : string undefined ( " undefined " ) ;
const std : : string section ( " nikon " ) ;
std : : ostringstream lensIDStream ;
lensIDStream < < static_cast < int > ( raw [ 7 ] ) ;
if ( Internal : : readExiv2Config ( section , lensIDStream . str ( ) , undefined ) ! = undefined ) {
return os < < Internal : : readExiv2Config ( section , lensIDStream . str ( ) , undefined ) ;
}
}
if ( raw [ 0 ] = = fmountlens [ i ] . lid
// stps varies with focal length for some Sigma zoom lenses.
& & ( raw [ 1 ] = = fmountlens [ i ] . stps | | strcmp ( fmountlens [ i ] . manuf , " Sigma " ) = = 0 )
& & raw [ 2 ] = = fmountlens [ i ] . focs
& & raw [ 3 ] = = fmountlens [ i ] . focl
& & raw [ 4 ] = = fmountlens [ i ] . aps
& & raw [ 5 ] = = fmountlens [ i ] . apl
& & raw [ 6 ] = = fmountlens [ i ] . lfw
& & raw [ 7 ] = = fmountlens [ i ] . ltype ) {
// Lens found in database
return os < < fmountlens [ i ] . manuf < < " " < < fmountlens [ i ] . lensname ;
}
}
// Lens not found in database
return os < < value ;
# else
return os < < value ;
# endif // EXV_HAVE_LENSDATA
}
std : : ostream & Nikon3MakerNote : : printFocusDistance ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
double dist = 0.01 * pow ( 10.0 , value . toLong ( ) / 40.0 ) ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 2 ) < < dist < < " m " ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printAperture ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
double aperture = pow ( 2.0 , value . toLong ( ) / 24.0 ) ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < " F " < < aperture ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFocal ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
return os < < " ( " < < value < < " ) " ;
}
double focal = 5.0 * pow ( 2.0 , value . toLong ( ) / 24.0 ) ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < focal < < " mm " ;
os . copyfmt ( oss ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFStops ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
double fstops = value . toLong ( ) / 12.0 ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < " F " < < fstops ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printExitPupilPosition ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte | | value . toLong ( ) = = 0 ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
double epp = 2048.0 / value . toLong ( ) ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < epp < < " mm " ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFlashFocalLength ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
auto temp = value . toLong ( ) ;
if ( temp = = 0 | | temp = = 255 )
return os < < _ ( " n/a " ) ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < temp < < " mm " ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printRepeatingFlashRate ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
return os < < " ( " < < value < < " ) " ;
}
auto temp = value . toLong ( ) ;
if ( temp = = 0 | | temp = = 255 )
return os < < _ ( " n/a " ) ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 2 ) < < temp < < " Hz " ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printRepeatingFlashCount ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
return os < < " ( " < < value < < " ) " ;
}
auto temp = value . toLong ( ) ;
if ( temp = = 0 | | temp = = 255 )
return os < < _ ( " n/a " ) ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 2 ) < < temp ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printExternalFlashData1 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < ( value . toLong ( ) & 0x80 ? _ ( " External flash zoom override " ) : _ ( " No external flash zoom override " ) ) ;
os < < " , " ;
os < < ( value . toLong ( ) & 0x01 ? _ ( " external flash attached " ) : _ ( " external flash not attached " ) ) ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printExternalFlashData2 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
long temp = value . toLong ( ) ;
switch ( temp & 0x07 ) {
case 0 :
os < < _ ( " n/a " ) ;
break ;
case 1 :
os < < _ ( " Ready " ) ;
break ;
case 6 :
os < < _ ( " Not ready " ) ;
break ;
default :
os < < " ( " < < temp < < " ) " ;
break ;
}
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFlashCompensation ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = signedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
float temp = ( value . toFloat ( ) / float ( - 6.0 ) ) ;
if ( temp = = 0 )
os < < 0 ;
else if ( ! std : : isfinite ( temp ) )
os < < " ( " < < value < < " ) " ;
else if ( std : : abs ( std : : remainderf ( temp , 1 ) ) < 0.001 )
os < < std : : round ( temp ) ;
else if ( std : : abs ( std : : remainderf ( temp * 2 , 1 ) ) < 0.001 )
os < < std : : round ( temp * 2 ) < < " /2 " ;
else if ( std : : abs ( std : : remainderf ( temp * 3 , 1 ) ) < 0.001 )
os < < std : : round ( temp * 3 ) < < " /3 " ;
else
os < < std : : setprecision ( 3 ) < < temp ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFlashGroupBCControlData ( std : : ostream & os ,
const Value & value ,
const ExifData * data )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
long temp = value . toLong ( ) ;
printTag < EXV_COUNTOF ( nikonFlashControlMode ) , nikonFlashControlMode > ( os , ( temp > > 4 ) , data ) ;
os < < " , " ;
printTag < EXV_COUNTOF ( nikonFlashControlMode ) , nikonFlashControlMode > ( os , ( temp & 0x0f ) , data ) ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFlashGroupAData ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
double temp = value . toFloat ( ) / double ( - 6.0 ) ;
auto pos = metadata - > findKey ( ExifKey ( " Exif.NikonFl7.FlashGroupAControlData " ) ) ;
if ( pos = = metadata - > end ( ) | | pos - > count ( ) ! = 1 | | pos - > typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
}
else {
if ( pos - > toLong ( ) < 0x06 ) {
// FlashGroupACompensation value
if ( temp = = 0 )
os < < 0 ;
else
os < < std : : fixed < < std : : setprecision ( 1 ) < < temp ;
}
else {
// FlashGroupAOutput value
double flashGroupAOutput = std : : exp2 ( temp ) ;
if ( flashGroupAOutput > 0.99 )
os < < _ ( " Full " ) ;
else
os < < std : : setprecision ( 2 ) < < std : : round ( flashGroupAOutput * 100 ) < < " % " ;
}
}
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFlashGroupBData ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
double temp = value . toFloat ( ) / double ( - 6.0 ) ;
auto pos = metadata - > findKey ( ExifKey ( " Exif.NikonFl7.FlashGroupBCControlData " ) ) ;
if ( pos = = metadata - > end ( ) | | pos - > count ( ) ! = 1 | | pos - > typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
}
else {
if ( pos - > toLong ( ) < 0x06 ) {
// FlashGroupBCompensation value
if ( temp = = 0 )
os < < 0 ;
else
os < < std : : fixed < < std : : setprecision ( 1 ) < < temp ;
}
else {
// FlashGroupBOutput value
double flashGroupAOutput = std : : exp2 ( temp ) ;
if ( flashGroupAOutput > 0.99 )
os < < _ ( " Full " ) ;
else
os < < std : : setprecision ( 2 ) < < std : : round ( flashGroupAOutput * 100 ) < < " % " ;
}
}
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFlashGroupCData ( std : : ostream & os ,
const Value & value ,
const ExifData * metadata )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
double temp = value . toFloat ( ) / double ( - 6.0 ) ;
auto pos = metadata - > findKey ( ExifKey ( " Exif.NikonFl7.FlashGroupBCControlData " ) ) ;
if ( pos = = metadata - > end ( ) | | pos - > count ( ) ! = 1 | | pos - > typeId ( ) ! = unsignedByte ) {
os < < " ( " < < value < < " ) " ;
}
else {
if ( pos - > toLong ( ) < 0x06 ) {
// FlashGroupCCompensation value
if ( temp = = 0 )
os < < 0 ;
else
os < < std : : fixed < < std : : setprecision ( 1 ) < < temp ;
}
else {
// FlashGroupCOutput value
double flashGroupAOutput = std : : exp2 ( temp ) ;
if ( flashGroupAOutput > 0.99 )
os < < _ ( " Full " ) ;
else
os < < std : : setprecision ( 2 ) < < std : : round ( flashGroupAOutput * 100 ) < < " % " ;
}
}
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printTimeZone ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
std : : ios : : fmtflags f ( os . flags ( ) ) ;
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = signedShort ) {
os < < " ( " < < value < < " ) " ;
os . flags ( f ) ;
return os ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
char sign = value . toLong ( ) < 0 ? ' - ' : ' + ' ;
long h = long ( std : : abs ( static_cast < int > ( value . toFloat ( ) / 60.0F ) ) ) % 24 ;
long min = long ( std : : abs ( static_cast < int > ( value . toFloat ( ) - h * 60 ) ) ) % 60 ;
os < < std : : fixed < < " UTC " < < sign < < std : : setw ( 2 ) < < std : : setfill ( ' 0 ' ) < < h < < " : "
< < std : : setw ( 2 ) < < std : : setfill ( ' 0 ' ) < < min ;
os . copyfmt ( oss ) ;
os . flags ( f ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printPictureControl ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedByte ) {
return os < < " ( " < < value < < " ) " ;
}
long pcval = value . toLong ( ) - 0x80 ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
switch ( pcval )
{
case 0 :
os < < " Normal " ;
break ;
case 127 :
os < < " n/a " ;
break ;
case - 127 :
os < < " User " ;
break ;
case - 128 :
os < < " Auto " ;
break ;
default :
os < < pcval ;
break ;
}
os . copyfmt ( oss ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : print0x009a ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) ! = 2 | | value . typeId ( ) ! = unsignedRational ) {
return os < < value ;
}
float f1 = value . toFloat ( 0 ) ;
float f2 = value . toFloat ( 1 ) ;
return os < < f1 < < " x " < < f2 < < " um " ;
}
std : : ostream & Nikon3MakerNote : : print0x009e ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) ! = 10 | | value . typeId ( ) ! = unsignedShort ) {
return os < < value ;
}
std : : string s ;
bool trim = true ;
for ( int i = 9 ; i > = 0 ; - - i ) {
long l = value . toLong ( i ) ;
if ( i > 0 & & l = = 0 & & trim ) continue ;
if ( l ! = 0 ) trim = false ;
std : : string d = s . empty ( ) ? " " : " ; " ;
const TagDetails * td = find ( nikonRetouchHistory , l ) ;
if ( td ) {
s = std : : string ( exvGettext ( td - > label_ ) ) + d + s ;
}
else {
s = std : : string ( _ ( " Unknown " ) ) + std : : string ( " ( " ) + toString ( l ) + std : : string ( " ) " ) + d + s ;
}
}
return os < < s ;
}
std : : ostream & Nikon3MakerNote : : printLensId4ZMount ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedShort ) {
return os < < " ( " < < value < < " ) " ;
}
// from https://github.com/exiftool/exiftool/blob/12.12/lib/Image/ExifTool/Nikon.pm#L4646
static const struct ZMntLens
{
uint16_t lid ;
const char * manuf , * lensname ;
} zmountlens [ ] = {
{ 1 , " Nikon " , " Nikkor Z 24-70mm f/4 S " } ,
{ 2 , " Nikon " , " Nikkor Z 14-30mm f/4 S " } ,
{ 4 , " Nikon " , " Nikkor Z 35mm f/1.8 S " } ,
{ 8 , " Nikon " , " Nikkor Z 58mm f/0.95 S Noct " } , // IB
{ 9 , " Nikon " , " Nikkor Z 50mm f/1.8 S " } ,
{ 11 , " Nikon " , " Nikkor Z DX 16-50mm f/3.5-6.3 VR " } ,
{ 12 , " Nikon " , " Nikkor Z DX 50-250mm f/4.5-6.3 VR " } ,
{ 13 , " Nikon " , " Nikkor Z 24-70mm f/2.8 S " } ,
{ 14 , " Nikon " , " Nikkor Z 85mm f/1.8 S " } ,
{ 15 , " Nikon " , " Nikkor Z 24mm f/1.8 S " } , // IB
{ 16 , " Nikon " , " Nikkor Z 70-200mm f/2.8 VR S " } , // IB
{ 17 , " Nikon " , " Nikkor Z 20mm f/1.8 S " } , // IB
{ 18 , " Nikon " , " Nikkor Z 24-200mm f/4-6.3 VR " } , // IB
{ 21 , " Nikon " , " Nikkor Z 50mm f/1.2 S " } , // IB
{ 22 , " Nikon " , " Nikkor Z 24-50mm f/4-6.3 " } , // IB
{ 23 , " Nikon " , " Nikkor Z 14-24mm f/2.8 S " } , // IB
} ;
auto lid = static_cast < uint16_t > ( value . toLong ( ) ) ;
auto it =
std : : find_if ( std : : begin ( zmountlens ) , std : : end ( zmountlens ) , [ = ] ( const ZMntLens & z ) { return z . lid = = lid ; } ) ;
if ( it ! = std : : end ( zmountlens ) )
return os < < it - > manuf < < " " < < it - > lensname ;
return os < < lid ;
}
std : : ostream & Nikon3MakerNote : : printApertureLd4 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedShort ) {
return os < < " ( " < < value < < " ) " ;
}
double aperture = pow ( 2.0 , value . toLong ( ) / 384.0 - 1.0 ) ;
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < " F " < < aperture ;
os . copyfmt ( oss ) ;
return os ;
}
std : : ostream & Nikon3MakerNote : : printFocalLd4 ( std : : ostream & os ,
const Value & value ,
const ExifData * )
{
if ( value . count ( ) ! = 1 | | value . typeId ( ) ! = unsignedShort ) {
return os < < " ( " < < value < < " ) " ;
}
std : : ostringstream oss ;
oss . copyfmt ( os ) ;
os < < std : : fixed < < std : : setprecision ( 1 ) < < value . toLong ( ) < < " mm " ;
os . copyfmt ( oss ) ;
return os ;
}
} // namespace Internal
} // namespace Exiv2