1 // ***************************************************************** -*- C++ -*- 2 /* 3 * Lens database for the conversion of Nikon lens data to readable lens names 4 * Copyright (C) 2005-2014 Robert Rottmerhusen <lens_id@rottmerhusen.com> 5 * 6 * Copyright (C) 2004-2021 Exiv2 authors 7 * This program is part of the Exiv2 distribution. 8 * 9 * This program is free software; you can redistribute it and/or 10 * modify it under the terms of the GNU General Public License 11 * as published by the Free Software Foundation; either version 2 12 * of the License, or (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Public License for more details. 18 * 19 * You should have received a copy of the GNU General Public License 20 * along with this program; if not, write to the Free Software 21 * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. 22 */ 23 // ***************************************************************************** 24 // included header files 25 #include "types.hpp" 26 #include "nikonmn_int.hpp" 27 #include "value.hpp" 28 #include "image.hpp" 29 #include "tags_int.hpp" 30 #include "makernote_int.hpp" 31 #include "error.hpp" 32 #include "i18n.h" // NLS support. 33 34 // + standard includes 35 #include <string> 36 #include <sstream> 37 #include <iomanip> 38 #include <cassert> 39 #include <cstring> 40 #include <math.h> //for log, pow, abs 41 42 // ***************************************************************************** 43 // class member definitions 44 namespace Exiv2 { 45 namespace Internal { 46 47 //! OffOn, multiple tags 48 extern const TagDetails nikonOffOn[] = { 49 { 0, N_("Off") }, 50 { 1, N_("On") } 51 }; 52 53 //! Off, Low, Normal, High, multiple tags 54 extern const TagDetails nikonOlnh[] = { 55 { 0, N_("Off") }, 56 { 1, N_("Low") }, 57 { 3, N_("Normal") }, 58 { 5, N_("High") } 59 }; 60 61 //! Off, Low, Normal, High, multiple tags 62 extern const TagDetails nikonActiveDLighning[] = { 63 { 0, N_("Off") }, 64 { 1, N_("Low") }, 65 { 3, N_("Normal") }, 66 { 5, N_("High") }, 67 { 7, N_("Extra High") }, 68 { 65535, N_("Auto") } 69 }; 70 71 //! Focus area for Nikon cameras. 72 extern const char * const nikonFocusarea[] = { 73 N_("Single area"), 74 N_("Dynamic area"), 75 N_("Dynamic area, closest subject"), 76 N_("Group dynamic"), 77 N_("Single area (wide)"), 78 N_("Dynamic area (wide)") 79 }; 80 81 // Roger Larsson: My guess is that focuspoints will follow autofocus sensor 82 // module. Note that relative size and position will vary depending on if 83 // "wide" or not 84 //! Focus points for Nikon cameras, used for Nikon 1 and Nikon 3 makernotes. 85 extern const char * const nikonFocuspoints[] = { 86 N_("Center"), 87 N_("Top"), 88 N_("Bottom"), 89 N_("Left"), 90 N_("Right"), 91 N_("Upper-left"), 92 N_("Upper-right"), 93 N_("Lower-left"), 94 N_("Lower-right"), 95 N_("Left-most"), 96 N_("Right-most") 97 }; 98 99 //! Shutter Modes (credits to exiftool) 100 extern const TagDetails nikonShutterModes[] = { 101 { 0, "Mechanical" }, 102 { 16, "Electronic" }, 103 { 48, "Electronic Front Curtain" }, 104 { 64, "Electronic (Movie)" }, 105 { 80, "Auto (Mechanical)" }, 106 { 81, "Auto (Electronic Front Curtain)" } 107 }; 108 109 //! FlashComp, tag 0x0012 110 extern const TagDetails nikonFlashComp[] = { 111 // From the PHP JPEG Metadata Toolkit 112 { 0x06, "+1.0 EV" }, 113 { 0x04, "+0.7 EV" }, 114 { 0x03, "+0.5 EV" }, 115 { 0x02, "+0.3 EV" }, 116 { 0x00, "0.0 EV" }, 117 { 0xfe, "-0.3 EV" }, 118 { 0xfd, "-0.5 EV" }, 119 { 0xfc, "-0.7 EV" }, 120 { 0xfa, "-1.0 EV" }, 121 { 0xf8, "-1.3 EV" }, 122 { 0xf7, "-1.5 EV" }, 123 { 0xf6, "-1.7 EV" }, 124 { 0xf4, "-2.0 EV" }, 125 { 0xf2, "-2.3 EV" }, 126 { 0xf1, "-2.5 EV" }, 127 { 0xf0, "-2.7 EV" }, 128 { 0xee, "-3.0 EV" } 129 }; 130 131 //! ColorSpace, tag 0x001e 132 extern const TagDetails nikonColorSpace[] = { 133 { 1, N_("sRGB") }, 134 { 2, N_("Adobe RGB") } 135 }; 136 137 //! FlashMode, tag 0x0087 138 extern const TagDetails nikonFlashMode[] = { 139 { 0, N_("Did not fire") }, 140 { 1, N_("Fire, manual") }, 141 { 7, N_("Fire, external") }, 142 { 8, N_("Fire, commander mode") }, 143 { 9, N_("Fire, TTL mode") } 144 }; 145 146 //! ShootingMode, tag 0x0089 147 extern const TagDetailsBitmask nikonShootingMode[] = { 148 { 0x0001, N_("Continuous") }, 149 { 0x0002, N_("Delay") }, 150 { 0x0004, N_("PC Control") }, 151 { 0x0008, N_("Self-timer") }, 152 { 0x0010, N_("Exposure Bracketing") }, 153 { 0x0020, N_("Auto ISO") }, 154 { 0x0040, N_("White-Balance Bracketing") }, 155 { 0x0080, N_("IR Control") }, 156 { 0x0100, N_("D-Lighting Bracketing") } 157 }; 158 159 //! ShootingMode D70, tag 0x0089 160 extern const TagDetailsBitmask nikonShootingModeD70[] = { 161 { 0x0001, N_("Continuous") }, 162 { 0x0002, N_("Delay") }, 163 { 0x0004, N_("PC control") }, 164 { 0x0010, N_("Exposure bracketing") }, 165 { 0x0020, N_("Unused LE-NR slowdown") }, 166 { 0x0040, N_("White balance bracketing") }, 167 { 0x0080, N_("IR control") } 168 }; 169 170 //! AutoBracketRelease, tag 0x008a 171 extern const TagDetails nikonAutoBracketRelease[] = { 172 { 0, N_("None") }, 173 { 1, N_("Auto release") }, 174 { 2, N_("Manual release") } 175 }; 176 177 //! NEFCompression, tag 0x0093 178 extern const TagDetails nikonNefCompression[] = { 179 { 1, N_("Lossy (type 1)") }, 180 { 2, N_("Uncompressed") }, 181 { 3, N_("Lossless") }, 182 { 4, N_("Lossy (type 2)") } 183 }; 184 185 //! RetouchHistory, tag 0x009e 186 extern const TagDetails nikonRetouchHistory[] = { 187 { 0, N_("None") }, 188 { 3, N_("B & W") }, 189 { 4, N_("Sepia") }, 190 { 5, N_("Trim") }, 191 { 6, N_("Small picture") }, 192 { 7, N_("D-Lighting") }, 193 { 8, N_("Red eye") }, 194 { 9, N_("Cyanotype") }, 195 { 10, N_("Sky light") }, 196 { 11, N_("Warm tone") }, 197 { 12, N_("Color custom") }, 198 { 13, N_("Image overlay") } 199 }; 200 201 //! HighISONoiseReduction, tag 0x00b1 202 extern const TagDetails nikonHighISONoiseReduction[] = { 203 { 0, N_("Off") }, 204 { 1, N_("Minimal") }, 205 { 2, N_("Low") }, 206 { 4, N_("Normal") }, 207 { 6, N_("High") } 208 }; 209 210 // Nikon1 MakerNote Tag Info 211 const TagInfo Nikon1MakerNote::tagInfo_[] = { 212 TagInfo(0x0001, "Version", N_("Version"), 213 N_("Nikon Makernote version"), 214 nikon1Id, makerTags, undefined, -1, printValue), 215 TagInfo(0x0002, "ISOSpeed", N_("ISO Speed"), 216 N_("ISO speed setting"), 217 nikon1Id, makerTags, unsignedShort, -1, print0x0002), 218 TagInfo(0x0003, "ColorMode", N_("Color Mode"), 219 N_("Color mode"), 220 nikon1Id, makerTags, asciiString, -1, printValue), 221 TagInfo(0x0004, "Quality", N_("Quality"), 222 N_("Image quality setting"), 223 nikon1Id, makerTags, asciiString, -1, printValue), 224 TagInfo(0x0005, "WhiteBalance", N_("White Balance"), 225 N_("White balance"), 226 nikon1Id, makerTags, asciiString, -1, printValue), 227 TagInfo(0x0006, "Sharpening", N_("Sharpening"), 228 N_("Image sharpening setting"), 229 nikon1Id, makerTags, asciiString, -1, printValue), 230 TagInfo(0x0007, "Focus", N_("Focus"), 231 N_("Focus mode"), 232 nikon1Id, makerTags, asciiString, -1, print0x0007), 233 TagInfo(0x0008, "FlashSetting", N_("Flash Setting"), 234 N_("Flash setting"), 235 nikon1Id, makerTags, asciiString, -1, printValue), 236 TagInfo(0x000a, "0x000a", "0x000a", 237 N_("Unknown"), 238 nikon1Id, makerTags, unsignedRational, -1, printValue), 239 TagInfo(0x000f, "ISOSelection", N_("ISO Selection"), 240 N_("ISO selection"), 241 nikon1Id, makerTags, asciiString, -1, printValue), 242 TagInfo(0x0010, "DataDump", N_("Data Dump"), 243 N_("Data dump"), 244 nikon1Id, makerTags, undefined, -1, printValue), 245 TagInfo(0x0080, "ImageAdjustment", N_("Image Adjustment"), 246 N_("Image adjustment setting"), 247 nikon1Id, makerTags, asciiString, -1, printValue), 248 TagInfo(0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), 249 N_("Auxiliary lens (adapter)"), 250 nikon1Id, makerTags, asciiString, -1, printValue), 251 TagInfo(0x0085, "FocusDistance", N_("Focus Distance"), 252 N_("Manual focus distance"), 253 nikon1Id, makerTags, unsignedRational, -1, print0x0085), 254 TagInfo(0x0086, "DigitalZoom", N_("Digital Zoom"), 255 N_("Digital zoom setting"), 256 nikon1Id, makerTags, unsignedRational, -1, print0x0086), 257 TagInfo(0x0088, "AFFocusPos", N_("AF Focus Position"), 258 N_("AF focus position information"), 259 nikon1Id, makerTags, undefined, -1, print0x0088), 260 // End of list marker 261 TagInfo(0xffff, "(UnknownNikon1MnTag)", "(UnknownNikon1MnTag)", 262 N_("Unknown Nikon1MakerNote tag"), 263 nikon1Id, makerTags, asciiString, -1, printValue) 264 }; 265 tagList()266 const TagInfo* Nikon1MakerNote::tagList() 267 { 268 return tagInfo_; 269 } 270 print0x0002(std::ostream & os,const Value & value,const ExifData *)271 std::ostream& Nikon1MakerNote::print0x0002(std::ostream& os, 272 const Value& value, 273 const ExifData*) 274 { 275 if (value.count() > 1) { 276 os << value.toLong(1); 277 } 278 else { 279 os << "(" << value << ")"; 280 } 281 return os; 282 } 283 getKeyString(const std::string & key,const ExifData * metadata)284 static std::string getKeyString(const std::string& key,const ExifData* metadata) 285 { 286 std::string result; 287 if ( metadata->findKey(ExifKey(key)) != metadata->end() ) { 288 result = metadata->findKey(ExifKey(key))->toString(); 289 } 290 return result; 291 } 292 293 printBarValue(std::ostream & os,const Value & value,const ExifData * exifData)294 std::ostream& Nikon1MakerNote::printBarValue(std::ostream& os, 295 const Value& value, 296 const ExifData* exifData) 297 { 298 if ( ! exifData ) return os << "undefined" ; 299 300 if ( value.count() >= 9 ) { 301 ByteOrder bo = getKeyString("Exif.MakerNote.ByteOrder",exifData) == "MM" ? bigEndian : littleEndian; 302 byte p[4]; 303 for ( int n = 0 ; n < 4 ; n++ ) p[n] = (byte)value.toLong(6+n); 304 os << getLong(p, bo); 305 } 306 307 return os; 308 } 309 print0x0007(std::ostream & os,const Value & value,const ExifData *)310 std::ostream& Nikon1MakerNote::print0x0007(std::ostream& os, 311 const Value& value, 312 const ExifData*) 313 { 314 std::string focus = value.toString(); 315 if (focus == "AF-C ") os << _("Continuous autofocus"); 316 else if (focus == "AF-S ") os << _("Single autofocus"); 317 else if (focus == "AF-A ") os << _("Automatic"); 318 else os << "(" << value << ")"; 319 return os; 320 } 321 print0x0085(std::ostream & os,const Value & value,const ExifData *)322 std::ostream& Nikon1MakerNote::print0x0085(std::ostream& os, 323 const Value& value, 324 const ExifData*) 325 { 326 std::ios::fmtflags f( os.flags() ); 327 Rational distance = value.toRational(); 328 if (distance.first == 0) { 329 os << _("Unknown"); 330 } 331 else if (distance.second != 0) { 332 std::ostringstream oss; 333 oss.copyfmt(os); 334 os << std::fixed << std::setprecision(2) 335 << (float)distance.first / distance.second 336 << " m"; 337 os.copyfmt(oss); 338 } 339 else { 340 os << "(" << value << ")"; 341 } 342 os.flags(f); 343 return os; 344 } 345 print0x0086(std::ostream & os,const Value & value,const ExifData *)346 std::ostream& Nikon1MakerNote::print0x0086(std::ostream& os, 347 const Value& value, 348 const ExifData*) 349 { 350 std::ios::fmtflags f( os.flags() ); 351 Rational zoom = value.toRational(); 352 if (zoom.first == 0) { 353 os << _("Not used"); 354 } 355 else if (zoom.second != 0) { 356 std::ostringstream oss; 357 oss.copyfmt(os); 358 os << std::fixed << std::setprecision(1) 359 << (float)zoom.first / zoom.second 360 << "x"; 361 os.copyfmt(oss); 362 } 363 else { 364 os << "(" << value << ")"; 365 } 366 os.flags(f); 367 return os; 368 } 369 print0x0088(std::ostream & os,const Value & value,const ExifData *)370 std::ostream& Nikon1MakerNote::print0x0088(std::ostream& os, 371 const Value& value, 372 const ExifData*) 373 { 374 if (value.count() >= 1) { 375 const unsigned long focusArea = value.toLong(0); 376 if (focusArea >= EXV_COUNTOF(nikonFocusarea)) { 377 os << "Invalid value"; 378 } else { 379 os << nikonFocusarea[focusArea]; 380 } 381 } 382 if (value.count() >= 2) { 383 os << "; "; 384 unsigned long focusPoint = value.toLong(1); 385 386 switch (focusPoint) { 387 // Could use array nikonFokuspoints 388 case 0: 389 case 1: 390 case 2: 391 case 3: 392 case 4: 393 os << nikonFocuspoints[focusPoint]; 394 break; 395 default: 396 os << value; 397 if (focusPoint < sizeof(nikonFocuspoints)/sizeof(nikonFocuspoints[0])) 398 os << " " << _("guess") << " " << nikonFocuspoints[focusPoint]; 399 break; 400 } 401 } 402 if (value.count() >= 3) { 403 unsigned long focusPointsUsed1 = value.toLong(2); 404 unsigned long focusPointsUsed2 = value.toLong(3); 405 406 if (focusPointsUsed1 != 0 && focusPointsUsed2 != 0) 407 { 408 os << "; ["; 409 410 if (focusPointsUsed1 & 1) 411 os << nikonFocuspoints[0] << " "; 412 if (focusPointsUsed1 & 2) 413 os << nikonFocuspoints[1] << " "; 414 if (focusPointsUsed1 & 4) 415 os << nikonFocuspoints[2] << " "; 416 if (focusPointsUsed1 & 8) 417 os << nikonFocuspoints[3] << " "; 418 if (focusPointsUsed1 & 16) 419 os << nikonFocuspoints[4] << " "; 420 if (focusPointsUsed1 & 32) 421 os << nikonFocuspoints[5] << " "; 422 if (focusPointsUsed1 & 64) 423 os << nikonFocuspoints[6] << " "; 424 if (focusPointsUsed1 & 128) 425 os << nikonFocuspoints[7] << " "; 426 427 if (focusPointsUsed2 & 1) 428 os << nikonFocuspoints[8] << " "; 429 if (focusPointsUsed2 & 2) 430 os << nikonFocuspoints[9] << " "; 431 if (focusPointsUsed2 & 4) 432 os << nikonFocuspoints[10] << " "; 433 434 os << "]"; 435 } 436 } 437 else { 438 os << "(" << value << ")"; 439 } 440 return os; 441 } 442 443 //! Quality, tag 0x0003 444 extern const TagDetails nikon2Quality[] = { 445 { 1, N_("VGA Basic") }, 446 { 2, N_("VGA Normal") }, 447 { 3, N_("VGA Fine") }, 448 { 4, N_("SXGA Basic") }, 449 { 5, N_("SXGA Normal") }, 450 { 6, N_("SXGA Fine") } 451 }; 452 453 //! ColorMode, tag 0x0004 454 extern const TagDetails nikon2ColorMode[] = { 455 { 1, N_("Color") }, 456 { 2, N_("Monochrome") } 457 }; 458 459 //! ImageAdjustment, tag 0x0005 460 extern const TagDetails nikon2ImageAdjustment[] = { 461 { 0, N_("Normal") }, 462 { 1, N_("Bright+") }, 463 { 2, N_("Bright-") }, 464 { 3, N_("Contrast+") }, 465 { 4, N_("Contrast-") } 466 }; 467 468 //! ISOSpeed, tag 0x0006 469 extern const TagDetails nikon2IsoSpeed[] = { 470 { 0, "80" }, 471 { 2, "160" }, 472 { 4, "320" }, 473 { 5, "100" } 474 }; 475 476 //! WhiteBalance, tag 0x0007 477 extern const TagDetails nikon2WhiteBalance[] = { 478 { 0, N_("Auto") }, 479 { 1, N_("Preset") }, 480 { 2, N_("Daylight") }, 481 { 3, N_("Incandescent") }, 482 { 4, N_("Fluorescent") }, 483 { 5, N_("Cloudy") }, 484 { 6, N_("Speedlight") } 485 }; 486 487 // Nikon2 MakerNote Tag Info 488 const TagInfo Nikon2MakerNote::tagInfo_[] = { 489 TagInfo(0x0002, "0x0002", "0x0002", 490 N_("Unknown"), 491 nikon2Id, makerTags, asciiString, -1, printValue), 492 TagInfo(0x0003, "Quality", N_("Quality"), 493 N_("Image quality setting"), 494 nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2Quality)), 495 TagInfo(0x0004, "ColorMode", N_("Color Mode"), 496 N_("Color mode"), 497 nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ColorMode)), 498 TagInfo(0x0005, "ImageAdjustment", N_("Image Adjustment"), 499 N_("Image adjustment setting"), 500 nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2ImageAdjustment)), 501 TagInfo(0x0006, "ISOSpeed", N_("ISO Speed"), 502 N_("ISO speed setting"), 503 nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2IsoSpeed)), 504 TagInfo(0x0007, "WhiteBalance", N_("White Balance"), 505 N_("White balance"), 506 nikon2Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikon2WhiteBalance)), 507 TagInfo(0x0008, "Focus", N_("Focus Mode"), 508 N_("Focus mode"), 509 nikon2Id, makerTags, unsignedRational, -1, printValue), 510 TagInfo(0x0009, "0x0009", "0x0009", 511 N_("Unknown"), 512 nikon2Id, makerTags, asciiString, -1, printValue), 513 TagInfo(0x000a, "DigitalZoom", N_("Digital Zoom"), 514 N_("Digital zoom setting"), 515 nikon2Id, makerTags, unsignedRational, -1, print0x000a), 516 TagInfo(0x000b, "AuxiliaryLens", N_("Auxiliary Lens"), 517 N_("Auxiliary lens (adapter)"), 518 nikon2Id, makerTags, unsignedShort, -1, printValue), 519 TagInfo(0x0f00, "0x0f00", "0x0f00", 520 N_("Unknown"), 521 nikon2Id, makerTags, unsignedLong, -1, printValue), 522 // End of list marker 523 TagInfo(0xffff, "(UnknownNikon2MnTag)", "(UnknownNikon2MnTag)", 524 N_("Unknown Nikon2MakerNote tag"), 525 nikon2Id, makerTags, asciiString, -1, printValue) 526 }; 527 tagList()528 const TagInfo* Nikon2MakerNote::tagList() 529 { 530 return tagInfo_; 531 } 532 print0x000a(std::ostream & os,const Value & value,const ExifData *)533 std::ostream& Nikon2MakerNote::print0x000a(std::ostream& os, 534 const Value& value, 535 const ExifData*) 536 { 537 std::ios::fmtflags f( os.flags() ); 538 Rational zoom = value.toRational(); 539 if (zoom.first == 0) { 540 os << _("Not used"); 541 } 542 else if (zoom.second != 0) { 543 std::ostringstream oss; 544 oss.copyfmt(os); 545 os << std::fixed << std::setprecision(1) 546 << (float)zoom.first / zoom.second 547 << "x"; 548 os.copyfmt(oss); 549 } 550 else { 551 os << "(" << value << ")"; 552 } 553 os.flags(f); 554 return os; 555 } 556 557 // Nikon3 MakerNote Tag Info 558 const TagInfo Nikon3MakerNote::tagInfo_[] = { 559 TagInfo(0x0001, "Version", N_("Version"), N_("Nikon Makernote version"), nikon3Id, makerTags, undefined, -1, printExifVersion), 560 TagInfo(0x0002, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002), 561 TagInfo(0x0003, "ColorMode", N_("Color Mode"), N_("Color mode"), nikon3Id, makerTags, asciiString, -1, printValue), 562 TagInfo(0x0004, "Quality", N_("Quality"), N_("Image quality setting"), nikon3Id, makerTags, asciiString, -1, printValue), 563 TagInfo(0x0005, "WhiteBalance", N_("White Balance"), N_("White balance"), nikon3Id, makerTags, asciiString, -1, printValue), 564 TagInfo(0x0006, "Sharpening", N_("Sharpening"), N_("Image sharpening setting"), nikon3Id, makerTags, asciiString, -1, printValue), 565 TagInfo(0x0007, "Focus", N_("Focus"), N_("Focus mode"), nikon3Id, makerTags, asciiString, -1, print0x0007), 566 TagInfo(0x0008, "FlashSetting", N_("Flash Setting"), N_("Flash setting"), nikon3Id, makerTags, asciiString, -1, printValue), 567 TagInfo(0x0009, "FlashDevice", N_("Flash Device"), N_("Flash device"), nikon3Id, makerTags, asciiString, -1, printValue), 568 TagInfo(0x000a, "0x000a", "0x000a", N_("Unknown"), nikon3Id, makerTags, unsignedRational, -1, printValue), 569 TagInfo(0x000b, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance bias"), nikon3Id, makerTags, signedShort, -1, printValue), 570 TagInfo(0x000c, "WB_RBLevels", N_("WB RB Levels"), N_("WB RB levels"), nikon3Id, makerTags, unsignedRational, -1, printValue), 571 TagInfo(0x000d, "ProgramShift", N_("Program Shift"), N_("Program shift"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), 572 TagInfo(0x000e, "ExposureDiff", N_("Exposure Difference"), N_("Exposure difference"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), 573 TagInfo(0x000f, "ISOSelection", N_("ISO Selection"), N_("ISO selection"), nikon3Id, makerTags, asciiString, -1, printValue), 574 TagInfo(0x0010, "DataDump", N_("Data Dump"), N_("Data dump"), nikon3Id, makerTags, undefined, -1, printValue), 575 TagInfo(0x0011, "Preview", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), nikon3Id, makerTags, undefined, -1, printValue), 576 TagInfo(0x0012, "FlashComp", N_("Flash Comp"), N_("Flash compensation setting"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), 577 TagInfo(0x0013, "ISOSettings", N_("ISO Settings"), N_("ISO setting"), nikon3Id, makerTags, unsignedShort, -1, print0x0002), // use 0x0002 print fct 578 TagInfo(0x0016, "ImageBoundary", N_("Image Boundary"), N_("Image boundary"), nikon3Id, makerTags, unsignedShort, -1, printValue), 579 TagInfo(0x0017, "FlashExposureComp", "Flash Exposure Comp", N_("Flash exposure comp"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), 580 TagInfo(0x0018, "FlashBracketComp", N_("Flash Bracket Comp"), N_("Flash bracket compensation applied"), nikon3Id, makerTags, undefined, -1, EXV_PRINT_TAG(nikonFlashComp)), // use 0x0012 print fct 581 TagInfo(0x0019, "ExposureBracketComp", N_("Exposure Bracket Comp"), N_("AE bracket compensation applied"), nikon3Id, makerTags, signedRational, -1, printValue), 582 TagInfo(0x001a, "ImageProcessing", N_("Image Processing"), N_("Image processing"), nikon3Id, makerTags, asciiString, -1, printValue), 583 TagInfo(0x001b, "CropHiSpeed", N_("Crop High Speed"), N_("Crop high speed"), nikon3Id, makerTags, unsignedShort, -1, printValue), 584 TagInfo(0x001c, "ExposureTuning", N_("Exposure Tuning"), N_("Exposure tuning"), nikon3Id, makerTags, unsignedShort, -1, printValue), 585 TagInfo(0x001d, "SerialNumber", N_("Serial Number"), N_("Serial Number"), nikon3Id, makerTags, asciiString, -1, printValue), 586 TagInfo(0x001e, "ColorSpace", N_("Color Space"), N_("Color space"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonColorSpace)), 587 TagInfo(0x001f, "VRInfo", N_("VR Info"), N_("VR info"), nikon3Id, makerTags, undefined, -1, printValue), 588 TagInfo(0x0020, "ImageAuthentication", N_("Image Authentication"), N_("Image authentication"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonOffOn)), 589 TagInfo(0x0022, "ActiveDLighting", N_("ActiveD-Lighting"), N_("ActiveD-lighting"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonActiveDLighning)), 590 TagInfo(0x0023, "PictureControl", N_("Picture Control"), N_(" Picture control"), nikon3Id, makerTags, undefined, -1, printValue), 591 TagInfo(0x0024, "WorldTime", N_("World Time"), N_("World time"), nikon3Id, makerTags, undefined, -1, printValue), 592 TagInfo(0x0025, "ISOInfo", N_("ISO Info"), N_("ISO info"), nikon3Id, makerTags, undefined, -1, printValue), 593 TagInfo(0x002a, "VignetteControl", N_("Vignette Control"), N_("Vignette control"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonOlnh)), 594 TagInfo(0x0034, "ShutterMode", N_("Shutter Mode"), N_("Shutter mode"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonShutterModes)), 595 TagInfo(0x0037, "MechanicalShutterCount", N_("Mechanical Shutter Count"), N_("Mechanical shutter count"), nikon3Id, makerTags, unsignedLong, -1, printValue), 596 TagInfo(0x0080, "ImageAdjustment", N_("Image Adjustment"), N_("Image adjustment setting"), nikon3Id, makerTags, asciiString, -1, printValue), 597 TagInfo(0x0081, "ToneComp", N_("Tone Compensation"), N_("Tone compensation"), nikon3Id, makerTags, asciiString, -1, printValue), 598 TagInfo(0x0082, "AuxiliaryLens", N_("Auxiliary Lens"), N_("Auxiliary lens (adapter)"), nikon3Id, makerTags, asciiString, -1, printValue), 599 TagInfo(0x0083, "LensType", N_("Lens Type"), N_("Lens type"), nikon3Id, makerTags, unsignedByte, -1, print0x0083), 600 TagInfo(0x0084, "Lens", N_("Lens"), N_("Lens"), nikon3Id, makerTags, unsignedRational, -1, print0x0084), 601 TagInfo(0x0085, "FocusDistance", N_("Focus Distance"), N_("Manual focus distance"), nikon3Id, makerTags, unsignedRational, -1, print0x0085), 602 TagInfo(0x0086, "DigitalZoom", N_("Digital Zoom"), N_("Digital zoom setting"), nikon3Id, makerTags, unsignedRational, -1, print0x0086), 603 TagInfo(0x0087, "FlashMode", N_("Flash Mode"), N_("Mode of flash used"), nikon3Id, makerTags, unsignedByte, -1, EXV_PRINT_TAG(nikonFlashMode)), 604 TagInfo(0x0088, "AFInfo", N_("AF Info"), N_("AF info"), nikon3Id, makerTags, undefined, -1, printValue), 605 TagInfo(0x0089, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), nikon3Id, makerTags, unsignedShort, -1, print0x0089), 606 TagInfo(0x008a, "AutoBracketRelease", N_("Auto Bracket Release"), N_("Auto bracket release"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonAutoBracketRelease)), 607 TagInfo(0x008b, "LensFStops", N_("Lens FStops"), N_("Lens FStops"), nikon3Id, makerTags, undefined, -1, print0x008b), 608 TagInfo(0x008c, "ContrastCurve", N_("Contrast Curve"), N_("Contrast curve"), nikon3Id, makerTags, undefined, -1, printValue), 609 TagInfo(0x008d, "ColorHue", N_("Color Hue"), N_("Color hue"), nikon3Id, makerTags, asciiString, -1, printValue), 610 TagInfo(0x008f, "SceneMode", N_("Scene Mode"), N_("Scene mode"), nikon3Id, makerTags, asciiString, -1, printValue), 611 TagInfo(0x0090, "LightSource", N_("Light Source"), N_("Light source"), nikon3Id, makerTags, asciiString, -1, printValue), 612 TagInfo(0x0091, "ShotInfo", "Shot Info", N_("Shot info"), nikon3Id, makerTags, undefined, -1, printValue), 613 TagInfo(0x0092, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikon3Id, makerTags, signedShort, -1, printValue), 614 TagInfo(0x0093, "NEFCompression", N_("NEF Compression"), N_("NEF compression"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonNefCompression)), 615 TagInfo(0x0094, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, signedShort, -1, printValue), 616 TagInfo(0x0095, "NoiseReduction", N_("Noise Reduction"), N_("Noise reduction"), nikon3Id, makerTags, asciiString, -1, printValue), 617 TagInfo(0x0096, "LinearizationTable", N_("Linearization Table"), N_("Linearization table"), nikon3Id, makerTags, undefined, -1, printValue), 618 TagInfo(0x0097, "ColorBalance", N_("Color Balance"), N_("Color balance"), nikon3Id, makerTags, undefined, -1, printValue), 619 TagInfo(0x0098, "LensData", N_("Lens Data"), N_("Lens data settings"), nikon3Id, makerTags, undefined, -1, printValue), 620 TagInfo(0x0099, "RawImageCenter", N_("Raw Image Center"), N_("Raw image center"), nikon3Id, makerTags, unsignedShort, -1, printValue), 621 TagInfo(0x009a, "SensorPixelSize", N_("Sensor Pixel Size"), N_("Sensor pixel size"), nikon3Id, makerTags, unsignedRational, -1, print0x009a), 622 TagInfo(0x009b, "0x009b", "0x009b", N_("Unknown"), nikon3Id, makerTags, unsignedShort, -1, printValue), 623 TagInfo(0x009c, "SceneAssist", N_("Scene Assist"), N_("Scene assist"), nikon3Id, makerTags, asciiString, -1, printValue), 624 TagInfo(0x009e, "RetouchHistory", N_("Retouch History"), N_("Retouch history"), nikon3Id, makerTags, unsignedShort, -1, print0x009e), 625 TagInfo(0x009f, "0x009f", "0x009f", N_("Unknown"), nikon3Id, makerTags, signedShort, -1, printValue), 626 TagInfo(0x00a0, "SerialNO", N_("Serial NO"), N_("Camera serial number, usually starts with \"NO= \""), nikon3Id, makerTags, asciiString, -1, printValue), 627 TagInfo(0x00a2, "ImageDataSize", N_("Image Data Size"), N_("Image data size"), nikon3Id, makerTags, unsignedLong, -1, printValue), 628 TagInfo(0x00a3, "0x00a3", "0x00a3", N_("Unknown"), nikon3Id, makerTags, unsignedByte, -1, printValue), 629 TagInfo(0x00a5, "ImageCount", N_("Image Count"), N_("Image count"), nikon3Id, makerTags, unsignedLong, -1, printValue), 630 TagInfo(0x00a6, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikon3Id, makerTags, unsignedLong, -1, printValue), 631 TagInfo(0x00a7, "ShutterCount", N_("Shutter Count"), N_("Number of shots taken by camera"), nikon3Id, makerTags, unsignedLong, -1, printValue), 632 TagInfo(0x00a8, "FlashInfo", "Flash Info", N_("Flash info"), nikon3Id, makerTags, undefined, -1, printValue), 633 TagInfo(0x00a9, "ImageOptimization", N_("Image Optimization"), N_("Image optimization"), nikon3Id, makerTags, asciiString, -1, printValue), 634 TagInfo(0x00aa, "Saturation", N_("Saturation"), N_("Saturation"), nikon3Id, makerTags, asciiString, -1, printValue), 635 TagInfo(0x00ab, "VariProgram", N_("Program Variation"), N_("Program variation"), nikon3Id, makerTags, asciiString, -1, printValue), 636 TagInfo(0x00ac, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), nikon3Id, makerTags, asciiString, -1, printValue), 637 TagInfo(0x00ad, "AFResponse", N_("AF Response"), N_("AF response"), nikon3Id, makerTags, asciiString, -1, printValue), 638 TagInfo(0x00b0, "MultiExposure", "Multi Exposure", N_("Multi exposure"), nikon3Id, makerTags, undefined, -1, printValue), 639 TagInfo(0x00b1, "HighISONoiseReduction", N_("High ISO Noise Reduction"), N_("High ISO Noise Reduction"), nikon3Id, makerTags, unsignedShort, -1, EXV_PRINT_TAG(nikonHighISONoiseReduction)), 640 TagInfo(0x00b3, "ToningEffect", "Toning Effect", N_("Toning effect"), nikon3Id, makerTags, asciiString, -1, printValue), 641 TagInfo(0x00b7, "AFInfo2", "AF Info 2", N_("AF info 2"), nikon3Id, makerTags, undefined, -1, printValue), 642 TagInfo(0x00b8, "FileInfo", "File Info", N_("File info"), nikon3Id, makerTags, undefined, -1, printValue), 643 TagInfo(0x00b9, "AFTune", "AF Tune", N_("AF tune"), nikon3Id, makerTags, undefined, -1, printValue), 644 TagInfo(0x00c3, "BarometerInfo", "Barometer Info", N_("Barometer Info"), nikon3Id, makerTags, signedLong, -1, Nikon1MakerNote::printBarValue), 645 TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), nikon3Id, makerTags, undefined, -1, printValue), 646 // TODO: Add Capture Data decoding implementation. 647 TagInfo(0x0e01, "CaptureData", N_("Capture Data"), N_("Capture data"), nikon3Id, makerTags, undefined, -1, printValue), 648 TagInfo(0x0e09, "CaptureVersion", N_("Capture Version"), N_("Capture version"), nikon3Id, makerTags, asciiString, -1, printValue), 649 // TODO: Add Capture Offsets decoding implementation. 650 TagInfo(0x0e0e, "CaptureOffsets", N_("Capture Offsets"), N_("Capture offsets"), nikon3Id, makerTags, undefined, -1, printValue), 651 TagInfo(0x0e10, "ScanIFD", "Scan IFD", N_("Scan IFD"), nikon3Id, makerTags, undefined, -1, printValue), 652 TagInfo(0x0e1d, "ICCProfile", "ICC Profile", N_("ICC profile"), nikon3Id, makerTags, undefined, -1, printValue), 653 TagInfo(0x0e1e, "CaptureOutput", "Capture Output", N_("Capture output"), nikon3Id, makerTags, undefined, -1, printValue), 654 // End of list marker 655 TagInfo(0xffff, "(UnknownNikon3MnTag)", "(UnknownNikon3MnTag)", N_("Unknown Nikon3MakerNote tag"), nikon3Id, makerTags, asciiString, -1, printValue) 656 }; 657 tagList()658 const TagInfo* Nikon3MakerNote::tagList() 659 { 660 return tagInfo_; 661 } 662 663 //! YesNo, used for DaylightSavings, tag index 2 664 extern const TagDetails nikonYesNo[] = { 665 { 0, N_("No") }, 666 { 1, N_("Yes") } 667 }; 668 669 //! DateDisplayFormat, tag index 3 670 extern const TagDetails nikonDateDisplayFormat[] = { 671 { 0, N_("Y/M/D") }, 672 { 1, N_("M/D/Y") }, 673 { 2, N_("D/M/Y") } 674 }; 675 676 //! OnOff 677 extern const TagDetails nikonOnOff[] = { 678 { 1, N_("On") }, 679 { 2, N_("Off") } 680 }; 681 682 // Nikon3 Vibration Reduction Tag Info 683 const TagInfo Nikon3MakerNote::tagInfoVr_[] = { 684 TagInfo(0, "Version", N_("Version"), N_("Version"), nikonVrId, makerTags, undefined, 4, printExifVersion), 685 TagInfo(4, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonVrId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOnOff)), 686 // End of list marker 687 TagInfo(0xffff, "(UnknownNikonVrTag)", "(UnknownNikonVrTag)", N_("Unknown Nikon Vibration Reduction Tag"), nikonVrId, makerTags, unsignedByte, 1, printValue) 688 }; 689 tagListVr()690 const TagInfo* Nikon3MakerNote::tagListVr() 691 { 692 return tagInfoVr_; 693 } 694 695 //! Adjust 696 extern const TagDetails nikonAdjust[] = { 697 { 0, N_("Default Settings") }, 698 { 1, N_("Quick Adjust") }, 699 { 2, N_("Full Control") } 700 }; 701 702 //! FilterEffect 703 extern const TagDetails nikonFilterEffect[] = { 704 { 0x80, N_("Off") }, 705 { 0x81, N_("Yellow") }, 706 { 0x82, N_("Orange") }, 707 { 0x83, N_("Red") }, 708 { 0x84, N_("Green") }, 709 { 0xff, N_("n/a") } 710 }; 711 712 //! ToningEffect 713 extern const TagDetails nikonToningEffect[] = { 714 { 0x80, N_("B&W") }, 715 { 0x81, N_("Sepia") }, 716 { 0x82, N_("Cyanotype") }, 717 { 0x83, N_("Red") }, 718 { 0x84, N_("Yellow") }, 719 { 0x85, N_("Green") }, 720 { 0x86, N_("Blue-green") }, 721 { 0x87, N_("Blue") }, 722 { 0x88, N_("Purple-blue") }, 723 { 0x89, N_("Red-purple") }, 724 { 0xff, N_("n/a") } 725 }; 726 727 // Nikon3 Picture Control Tag Info 728 const TagInfo Nikon3MakerNote::tagInfoPc_[] = { 729 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonPcId, makerTags, undefined, 4, printExifVersion), 730 TagInfo( 4, "Name", N_("Name"), N_("Name"), nikonPcId, makerTags, asciiString, 20, printValue), 731 TagInfo(24, "Base", N_("Base"), N_("Base"), nikonPcId, makerTags, asciiString, 20, printValue), 732 TagInfo(48, "Adjust", N_("Adjust"), N_("Adjust"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAdjust)), 733 TagInfo(49, "QuickAdjust", N_("Quick Adjust"), N_("Quick adjust"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), 734 TagInfo(50, "Sharpness", N_("Sharpness"), N_("Sharpness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), 735 TagInfo(51, "Contrast", N_("Contrast"), N_("Contrast"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), 736 TagInfo(52, "Brightness", N_("Brightness"), N_("Brightness"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), 737 TagInfo(53, "Saturation", N_("Saturation"), N_("Saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), 738 TagInfo(54, "HueAdjustment", N_("Hue Adjustment"), N_("Hue adjustment"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), 739 TagInfo(55, "FilterEffect", N_("Filter Effect"), N_("Filter effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFilterEffect)), 740 TagInfo(56, "ToningEffect", N_("Toning Effect"), N_("Toning effect"), nikonPcId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonToningEffect)), 741 TagInfo(57, "ToningSaturation", N_("Toning Saturation"), N_("Toning saturation"), nikonPcId, makerTags, unsignedByte, 1, printPictureControl), 742 // End of list marker 743 TagInfo(0xffff, "(UnknownNikonPcTag)", "(UnknownNikonPcTag)", N_("Unknown Nikon Picture Control Tag"), nikonPcId, makerTags, unsignedByte, 1, printValue) 744 }; 745 tagListPc()746 const TagInfo* Nikon3MakerNote::tagListPc() 747 { 748 return tagInfoPc_; 749 } 750 751 //! OnOff 752 extern const TagDetails aftOnOff[] = { 753 { 0, N_("Off") }, 754 { 1, N_("On") }, 755 { 2, N_("On") } 756 }; 757 758 // Nikon3 AF Fine Tune 759 const TagInfo Nikon3MakerNote::tagInfoAFT_[] = { 760 TagInfo(0, "AFFineTune", N_("AF Fine Tune"), N_("AF fine tune"), nikonAFTId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(aftOnOff)), 761 TagInfo(1, "AFFineTuneIndex", N_("AF Fine Tune Index"), N_("AF fine tune index"), nikonAFTId, makerTags, unsignedByte, 1, printValue), 762 TagInfo(2, "AFFineTuneAdj", N_("AF Fine Tune Adjustment"), N_("AF fine tune adjustment"), nikonAFTId, makerTags, signedByte, 1, printValue), 763 // End of list marker 764 TagInfo(0xffff, "(UnknownNikonAFTTag)", "(UnknownNikonAFTTag)", N_("Unknown Nikon AF Fine Tune Tag"), nikonAFTId, makerTags, unsignedByte, 1, printValue) 765 }; 766 tagListAFT()767 const TagInfo* Nikon3MakerNote::tagListAFT() 768 { 769 return tagInfoAFT_; 770 } 771 772 // Nikon3 World Time Tag Info 773 const TagInfo Nikon3MakerNote::tagInfoWt_[] = { 774 TagInfo(0, "Timezone", N_("Timezone"), N_("Timezone"), nikonWtId, makerTags, signedShort, 1, printTimeZone), 775 TagInfo(2, "DaylightSavings", N_("Daylight Savings"), N_("Daylight savings"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonYesNo)), 776 TagInfo(3, "DateDisplayFormat", N_("Date Display Format"), N_("Date display format"), nikonWtId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonDateDisplayFormat)), 777 // End of list marker 778 TagInfo(0xffff, "(UnknownNikonWtTag)", "(UnknownNikonWtTag)", N_("Unknown Nikon World Time Tag"), nikonWtId, makerTags, unsignedByte, 1, printValue) 779 }; 780 tagListWt()781 const TagInfo* Nikon3MakerNote::tagListWt() 782 { 783 return tagInfoWt_; 784 } 785 786 //! ISOExpansion, tag index 4 and 10 787 extern const TagDetails nikonIsoExpansion[] = { 788 { 0x000, N_("Off") }, 789 { 0x101, N_("Hi 0.3") }, 790 { 0x102, N_("Hi 0.5") }, 791 { 0x103, N_("Hi 0.7") }, 792 { 0x104, N_("Hi 1.0") }, 793 { 0x105, N_("Hi 1.3") }, 794 { 0x106, N_("Hi 1.5") }, 795 { 0x107, N_("Hi 1.7") }, 796 { 0x108, N_("Hi 2.0") }, 797 { 0x109, N_("Hi 2.3") }, 798 { 0x10a, N_("Hi 2.5") }, 799 { 0x10b, N_("Hi 2.7") }, 800 { 0x10c, N_("Hi 3.0") }, 801 { 0x10d, N_("Hi 3.3") }, 802 { 0x10e, N_("Hi 3.5") }, 803 { 0x10f, N_("Hi 3.7") }, 804 { 0x110, N_("Hi 4.0") }, 805 { 0x111, N_("Hi 4.3") }, 806 { 0x112, N_("Hi 4.5") }, 807 { 0x113, N_("Hi 4.7") }, 808 { 0x114, N_("Hi 5.0") }, 809 { 0x201, N_("Lo 0.3") }, 810 { 0x202, N_("Lo 0.5") }, 811 { 0x203, N_("Lo 0.7") }, 812 { 0x204, N_("Lo 1.0") } 813 }; 814 815 // Nikon3 ISO Info Tag Info 816 const TagInfo Nikon3MakerNote::tagInfoIi_[] = { 817 TagInfo( 0, "ISO", N_("ISO"), N_("ISO"), nikonIiId, makerTags, unsignedByte, 1, printIiIso), 818 TagInfo( 4, "ISOExpansion", N_("ISO Expansion"), N_("ISO expansion"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)), 819 TagInfo( 6, "ISO2", N_("ISO 2"), N_("ISO 2"), nikonIiId, makerTags, unsignedByte, 1, printIiIso), 820 TagInfo(10, "ISOExpansion2", N_("ISO Expansion 2"), N_("ISO expansion 2"), nikonIiId, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonIsoExpansion)), 821 // End of list marker 822 TagInfo(0xffff, "(UnknownNikonIiTag)", "(UnknownNikonIiTag)", N_("Unknown Nikon Iso Info Tag"), nikonIiId, makerTags, unsignedByte, 1, printValue) 823 }; 824 tagListIi()825 const TagInfo* Nikon3MakerNote::tagListIi() 826 { 827 return tagInfoIi_; 828 } 829 830 //! AfAreaMode 831 extern const TagDetails nikonAfAreaMode[] = { 832 { 0, N_("Single Area") }, 833 { 1, N_("Dynamic Area") }, 834 { 2, N_("Dynamic Area, Closest Subject") }, 835 { 3, N_("Group Dynamic") }, 836 { 4, N_("Single Area (wide)") }, 837 { 5, N_("Dynamic Area (wide)") } 838 }; 839 840 //! AfPoint 841 extern const TagDetails nikonAfPoint[] = { 842 { 0, N_("Center") }, 843 { 1, N_("Top") }, 844 { 2, N_("Bottom") }, 845 { 3, N_("Mid-left") }, 846 { 4, N_("Mid-right") }, 847 { 5, N_("Upper-left") }, 848 { 6, N_("Upper-right") }, 849 { 7, N_("Lower-left") }, 850 { 8, N_("Lower-right") }, 851 { 9, N_("Far Left") }, 852 { 10, N_("Far Right") } 853 }; 854 855 //! AfPointsInFocus 856 extern const TagDetailsBitmask nikonAfPointsInFocus[] = { 857 { 0x0001, N_("Center") }, 858 { 0x0002, N_("Top") }, 859 { 0x0004, N_("Bottom") }, 860 { 0x0008, N_("Mid-left") }, 861 { 0x0010, N_("Mid-right") }, 862 { 0x0020, N_("Upper-left") }, 863 { 0x0040, N_("Upper-right") }, 864 { 0x0080, N_("Lower-left") }, 865 { 0x0100, N_("Lower-right") }, 866 { 0x0200, N_("Far Left") }, 867 { 0x0400, N_("Far Right") } 868 }; 869 870 // Nikon3 Auto Focus Tag Info 871 const TagInfo Nikon3MakerNote::tagInfoAf_[] = { 872 TagInfo( 0, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfAreaMode)), 873 TagInfo( 1, "AFPoint", N_("AF Point"), N_("AF point"), nikonAfId, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonAfPoint)), 874 TagInfo( 2, "AFPointsInFocus", N_("AF Points In Focus"), N_("AF points in focus"), nikonAfId, makerTags, unsignedShort, 1, printAfPointsInFocus), 875 // End of list marker 876 TagInfo(0xffff, "(UnknownNikonAfTag)", "(UnknownNikonAfTag)", N_("Unknown Nikon Auto Focus Tag"), nikonAfId, makerTags, unsignedByte, 1, printValue) 877 }; 878 tagListAf()879 const TagInfo* Nikon3MakerNote::tagListAf() 880 { 881 return tagInfoAf_; 882 } 883 884 //! PhaseDetectAF 885 extern const TagDetails nikonPhaseDetectAF[] = { 886 { 0, N_("Off") }, 887 { 1, N_("On (51-point)") }, 888 { 2, N_("On (11-point)") }, 889 { 3, N_("On (39-point)") }, 890 { 4, N_("On (73-point)") }, 891 { 5, N_("On (73-point, new)") }, 892 { 6, N_("On (105-point)") }, 893 { 7, N_("On (153-point)") }, 894 }; 895 896 // Nikon3 Auto Focus Tag Info 897 const TagInfo Nikon3MakerNote::tagInfoAf21_[] = { 898 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonAf21Id, makerTags, undefined, 4, printExifVersion), 899 TagInfo( 4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf21Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), 900 TagInfo( 5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf21Id, makerTags, unsignedByte, 1, printValue), 901 TagInfo( 6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf21Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)), 902 TagInfo( 7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf21Id, makerTags, unsignedByte, 1, printValue), 903 TagInfo( 8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf21Id, makerTags, unsignedByte, 7, printValue), 904 TagInfo( 16, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), 905 TagInfo( 18, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), 906 TagInfo( 20, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), 907 TagInfo( 22, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), 908 TagInfo( 24, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), 909 TagInfo( 26, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), 910 TagInfo( 28, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf21Id, makerTags, unsignedShort, 1, printValue), 911 // End of list marker 912 TagInfo(0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf21Id, makerTags, unsignedByte, 1, printValue) 913 }; 914 tagListAf21()915 const TagInfo* Nikon3MakerNote::tagListAf21() 916 { 917 return tagInfoAf21_; 918 } 919 920 // Nikon3 Auto Focus Tag Info Version 1.01 https://github.com/Exiv2/exiv2/pull/900 921 const TagInfo Nikon3MakerNote::tagInfoAf22_[] = { 922 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonAf22Id, makerTags, undefined, 4, printExifVersion), 923 TagInfo( 4, "ContrastDetectAF", N_("Contrast Detect AF"), N_("Contrast detect AF"), nikonAf22Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), 924 TagInfo( 5, "AFAreaMode", N_("AF Area Mode"), N_("AF area mode"), nikonAf22Id, makerTags, unsignedByte, 1, printValue), 925 TagInfo( 6, "PhaseDetectAF", N_("Phase Detect AF"), N_("Phase detect AF"), nikonAf22Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonPhaseDetectAF)), 926 TagInfo( 7, "PrimaryAFPoint", N_("Primary AF Point"), N_("Primary AF point"), nikonAf22Id, makerTags, unsignedByte, 1, printValue), 927 TagInfo( 8, "AFPointsUsed", N_("AF Points Used"), N_("AF points used"), nikonAf22Id, makerTags, unsignedByte, 7, printValue), 928 TagInfo( 70, "AFImageWidth", N_("AF Image Width"), N_("AF image width"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), 929 TagInfo( 72, "AFImageHeight", N_("AF Image Height"), N_("AF image height"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), 930 TagInfo( 74, "AFAreaXPosition", N_("AF Area X Position"), N_("AF area x position"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), 931 TagInfo( 76, "AFAreaYPosition", N_("AF Area Y Position"), N_("AF area y position"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), 932 TagInfo( 78, "AFAreaWidth", N_("AF Area Width"), N_("AF area width"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), 933 TagInfo( 80, "AFAreaHeight", N_("AF Area Height"), N_("AF area height"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), 934 TagInfo( 82, "ContrastDetectAFInFocus", N_("Contrast Detect AF In Focus"), N_("Contrast detect AF in focus"), nikonAf22Id, makerTags, unsignedShort, 1, printValue), 935 // End of list marker 936 TagInfo(0xffff, "(UnknownNikonAf2Tag)", "(UnknownNikonAf2Tag)", N_("Unknown Nikon Auto Focus 2 Tag"), nikonAf22Id, makerTags, unsignedByte, 1, printValue) 937 }; 938 tagListAf22()939 const TagInfo* Nikon3MakerNote::tagListAf22() 940 { 941 return tagInfoAf22_; 942 } 943 944 945 // Nikon3 File Info Tag Info 946 const TagInfo Nikon3MakerNote::tagInfoFi_[] = { 947 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFiId, makerTags, undefined, 4, printExifVersion), 948 TagInfo( 6, "DirectoryNumber", N_("Directory Number"), N_("Directory number"), nikonFiId, makerTags, unsignedShort, 1, printValue), 949 TagInfo( 8, "FileNumber", N_("File Number"), N_("File number"), nikonFiId, makerTags, unsignedShort, 1, printValue), 950 // End of list marker 951 TagInfo(0xffff, "(UnknownNikonFiTag)", "(UnknownNikonFiTag)", N_("Unknown Nikon File Info Tag"), nikonFiId, makerTags, unsignedByte, 1, printValue) 952 }; 953 tagListFi()954 const TagInfo* Nikon3MakerNote::tagListFi() 955 { 956 return tagInfoFi_; 957 } 958 959 //! MultiExposureMode 960 extern const TagDetails nikonMultiExposureMode[] = { 961 { 0, N_("Off") }, 962 { 1, N_("Multiple Exposure") }, 963 { 2, N_("Image Overlay") } 964 }; 965 966 // Nikon3 Multi Exposure Tag Info 967 const TagInfo Nikon3MakerNote::tagInfoMe_[] = { 968 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonMeId, makerTags, undefined, 4, printExifVersion), 969 TagInfo( 4, "MultiExposureMode", N_("Multi Exposure Mode"), N_("Multi exposure mode"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonMultiExposureMode)), 970 TagInfo( 8, "MultiExposureShots", N_("Multi Exposure Shots"), N_("Multi exposure shots"), nikonMeId, makerTags, unsignedLong, 1, printValue), 971 TagInfo( 12, "MultiExposureAutoGain", N_("Multi Exposure Auto Gain"), N_("Multi exposure auto gain"), nikonMeId, makerTags, unsignedLong, 1, EXV_PRINT_TAG(nikonOffOn)), 972 // End of list marker 973 TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonMeId, makerTags, unsignedByte, 1, printValue) 974 }; 975 tagListMe()976 const TagInfo* Nikon3MakerNote::tagListMe() 977 { 978 return tagInfoMe_; 979 } 980 981 //! FlashSource 982 extern const TagDetails nikonFlashSource[] = { 983 { 0, N_("None") }, 984 { 1, N_("External") }, 985 { 2, N_("Internal") } 986 }; 987 988 //! FlashFirmware 989 extern const TagDetails nikonFlashFirmware[] = { 990 { 0x0000, N_("n/a") }, 991 { 0x0101, N_("1.01 (SB-800 or Metz 58 AF-1)") }, 992 { 0x0103, "1.03 (SB-800)" }, 993 { 0x0201, "2.01 (SB-800)" }, 994 { 0x0204, "2.04 (SB-600)" }, 995 { 0x0205, "2.05 (SB-600)" }, 996 { 0x0301, "3.01 (SU-800 Remote Commander)" }, 997 { 0x0401, "4.01 (SB-400)" }, 998 { 0x0402, "4.02 (SB-400)" }, 999 { 0x0404, "4.04 (SB-400)" }, 1000 { 0x0501, "5.01 (SB-900)" }, 1001 { 0x0502, "5.02 (SB-900)" }, 1002 { 0x0601, "6.01 (SB-700)" }, 1003 { 0x0701, "7.01 (SB-910)" } 1004 }; 1005 1006 //! FlashGNDistance 1007 extern const TagDetails nikonFlashGNDistance[] = { 1008 { 0, N_("None") }, 1009 { 1, "0.1 m" }, 1010 { 2, "0.2 m" }, 1011 { 3, "0.3 m" }, 1012 { 4, "0.4 m" }, 1013 { 5, "0.5 m" }, 1014 { 6, "0.6 m" }, 1015 { 7, "0.7 m" }, 1016 { 8, "0.8 m" }, 1017 { 9, "0.9 m" }, 1018 { 10, "1.0 m" }, 1019 { 11, "1.1 m" }, 1020 { 12, "1.3 m" }, 1021 { 13, "1.4 m" }, 1022 { 14, "1.6 m" }, 1023 { 15, "1.8 m" }, 1024 { 16, "2.0 m" }, 1025 { 17, "2.2 m" }, 1026 { 18, "2.5 m" }, 1027 { 19, "2.8 m" }, 1028 { 20, "3.2 m" }, 1029 { 21, "3.6 m" }, 1030 { 22, "4.0 m" }, 1031 { 23, "4.5 m" }, 1032 { 24, "5.0 m" }, 1033 { 25, "5.6 m" }, 1034 { 26, "6.3 m" }, 1035 { 27, "7.1 m" }, 1036 { 28, "8.0 m" }, 1037 { 29, "9.0 m" }, 1038 { 30, "10.0 m" }, 1039 { 31, "11.0 m" }, 1040 { 32, "13.0 m" }, 1041 { 33, "14.0 m" }, 1042 { 34, "16.0 m" }, 1043 { 35, "18.0 m" }, 1044 { 36, "20.0 m" }, 1045 { 255, N_("n/a") } 1046 }; 1047 1048 //! FlashControlMode 1049 extern const TagDetails nikonFlashControlMode[] = { 1050 { 0, N_("Off") }, 1051 { 1, N_("iTTL-BL") }, 1052 { 2, N_("iTTL") }, 1053 { 3, N_("Auto Aperture") }, 1054 { 4, N_("Automatic") }, 1055 { 5, N_("GN (distance priority)") }, 1056 { 6, N_("Manual") }, 1057 { 7, N_("Repeating Flash") }, 1058 { 7, N_("Repeating Flash") } // To silence compiler warning 1059 }; 1060 1061 //! ExternalFlashFlags 1062 extern const TagDetails nikonExternalFlashFlags[] = { 1063 { 0, N_("Fired") }, 1064 { 2, N_("Bounce Flash") }, 1065 { 4, N_("Wide Flash Adapter") } 1066 }; 1067 1068 //! FlashColorFilter 1069 extern const TagDetails nikonFlashColorFilter[] = { 1070 { 0, N_("None") }, 1071 { 1, N_("FL-GL1") }, 1072 { 2, N_("FL-GL2") }, 1073 { 9, N_("TN-A1") }, 1074 { 10, N_("TN-A2") }, 1075 { 65, N_("Red") }, 1076 { 66, N_("Blue") }, 1077 { 67, N_("Yellow") }, 1078 { 68, N_("Amber") } 1079 }; 1080 1081 // Nikon3 Flash Info 1 Tag Info 1082 const TagInfo Nikon3MakerNote::tagInfoFl1_[] = { 1083 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl1Id, makerTags, undefined, 4, printExifVersion), 1084 TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), 1085 TagInfo( 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl1Id, makerTags, unsignedByte, 1, printValue), 1086 TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl1Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), 1087 TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), 1088 TagInfo( 11, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl1Id, makerTags, unsignedByte, 1, printFlashFocalLength), 1089 TagInfo( 12, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), 1090 TagInfo( 13, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl1Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), 1091 TagInfo( 14, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), 1092 TagInfo( 15, "FlashGroupAControlMode", N_("Flash Group A Control Mode"), N_("Flash group a control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)), 1093 TagInfo( 16, "FlashGroupBControlMode", N_("Flash Group B Control Mode"), N_("Flash group b control mode"), nikonFl1Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashControlMode)), 1094 // End of list marker 1095 TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl1Id, makerTags, unsignedByte, 1, printValue) 1096 }; 1097 tagListFl1()1098 const TagInfo* Nikon3MakerNote::tagListFl1() 1099 { 1100 return tagInfoFl1_; 1101 } 1102 1103 // Nikon3 Flash Info 2 Tag Info 1104 const TagInfo Nikon3MakerNote::tagInfoFl2_[] = { 1105 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl2Id, makerTags, undefined, 4, printExifVersion), 1106 TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), 1107 TagInfo( 5, "0x0005", N_("0x0005"), N_("Unknown"), nikonFl2Id, makerTags, unsignedByte, 1, printValue), 1108 TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl2Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), 1109 TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), 1110 TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl2Id, makerTags, unsignedByte, 1, printFlashFocalLength), 1111 TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), 1112 TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl2Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), 1113 TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl2Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), 1114 // End of list marker 1115 TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl2Id, makerTags, unsignedByte, 1, printValue) 1116 }; 1117 tagListFl2()1118 const TagInfo* Nikon3MakerNote::tagListFl2() 1119 { 1120 return tagInfoFl2_; 1121 } 1122 1123 // Nikon3 Flash Info 3 Tag Info 1124 const TagInfo Nikon3MakerNote::tagInfoFl3_[] = { 1125 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonFl3Id, makerTags, undefined, 4, printExifVersion), 1126 TagInfo( 4, "FlashSource", N_("Flash Source"), N_("Flash source"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashSource)), 1127 TagInfo( 6, "ExternalFlashFirmware", N_("External Flash Firmware"), N_("External flash firmware"), nikonFl3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonFlashFirmware)), 1128 TagInfo( 8, "ExternalFlashFlags", N_("External Flash Flags"), N_("External flash flags"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonExternalFlashFlags)), 1129 TagInfo( 12, "FlashFocalLength", N_("Flash Focal Length"), N_("Flash focal length"), nikonFl3Id, makerTags, unsignedByte, 1, printFlashFocalLength), 1130 TagInfo( 13, "RepeatingFlashRate", N_("Repeating Flash Rate"), N_("Repeating flash rate"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashRate), 1131 TagInfo( 14, "RepeatingFlashCount", N_("Repeating Flash Count"), N_("Repeating flash count"), nikonFl3Id, makerTags, unsignedByte, 1, printRepeatingFlashCount), 1132 TagInfo( 15, "FlashGNDistance", N_("Flash GN Distance"), N_("Flash GN distance"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashGNDistance)), 1133 TagInfo( 16, "FlashColorFilter", N_("Flash Color Filter"), N_("Flash color filter"), nikonFl3Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonFlashColorFilter)), 1134 // End of list marker 1135 TagInfo(0xffff, "(UnknownNikonMeTag)", "(UnknownNikonMeTag)", N_("Unknown Nikon Multi Exposure Tag"), nikonFl3Id, makerTags, unsignedByte, 1, printValue) 1136 }; 1137 tagListFl3()1138 const TagInfo* Nikon3MakerNote::tagListFl3() 1139 { 1140 return tagInfoFl3_; 1141 } 1142 1143 // Nikon3 Shot Info D80 Tag Info 1144 const TagInfo Nikon3MakerNote::tagInfoSi1_[] = { 1145 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi1Id, makerTags, unsignedByte, 4, printExifVersion), 1146 TagInfo( 586, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi1Id, makerTags, unsignedLong, 1, printValue), 1147 // End of list marker 1148 TagInfo(0xffff, "(UnknownNikonSi1Tag)", "(UnknownNikonSi1Tag)", N_("Unknown Nikon Shot Info D80 Tag"), nikonSi1Id, makerTags, unsignedByte, 1, printValue) 1149 }; 1150 tagListSi1()1151 const TagInfo* Nikon3MakerNote::tagListSi1() 1152 { 1153 return tagInfoSi1_; 1154 } 1155 1156 // Nikon3 Shot Info D40 Tag Info 1157 const TagInfo Nikon3MakerNote::tagInfoSi2_[] = { 1158 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi2Id, makerTags, unsignedByte, 4, printExifVersion), 1159 TagInfo( 582, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi2Id, makerTags, unsignedLong, 1, printValue), 1160 TagInfo( 738, "FlashLevel", N_("Flash Level"), N_("Flash level"), nikonSi2Id, makerTags, unsignedByte, 1, printValue), 1161 // End of list marker 1162 TagInfo(0xffff, "(UnknownNikonSi2Tag)", "(UnknownNikonSi2Tag)", N_("Unknown Nikon Shot Info D40 Tag"), nikonSi2Id, makerTags, unsignedByte, 1, printValue) 1163 }; 1164 tagListSi2()1165 const TagInfo* Nikon3MakerNote::tagListSi2() 1166 { 1167 return tagInfoSi2_; 1168 } 1169 1170 //! AfFineTuneAdj D300 (a) 1171 extern const TagDetails nikonAfFineTuneAdj1[] = { 1172 { 0x0000, "0" }, 1173 { 0x003a, "+1" }, 1174 { 0x003b, "+2" }, 1175 { 0x003c, "+4" }, 1176 { 0x003d, "+8" }, 1177 { 0x003e, "+16" }, 1178 { 0x00c2, "-16" }, 1179 { 0x00c3, "-8" }, 1180 { 0x00c4, "-4" }, 1181 { 0x00c5, "-2" }, 1182 { 0x00c6, "-1" }, 1183 { 0x103e, "+17" }, 1184 { 0x10c2, "-17" }, 1185 { 0x203d, "+9" }, 1186 { 0x203e, "+18" }, 1187 { 0x20c2, "-18" }, 1188 { 0x20c3, "-9" }, 1189 { 0x303e, "+19" }, 1190 { 0x30c2, "-19" }, 1191 { 0x403c, "+5" }, 1192 { 0x403d, "+10" }, 1193 { 0x403e, "+20" }, 1194 { 0x40c2, "-20" }, 1195 { 0x40c3, "-10" }, 1196 { 0x40c4, "-5" }, 1197 { 0x603d, "+11" }, 1198 { 0x60c3, "-11" }, 1199 { 0x803b, "+3" }, 1200 { 0x803c, "+6" }, 1201 { 0x803d, "+12" }, 1202 { 0x80c3, "-12" }, 1203 { 0x80c4, "-6" }, 1204 { 0x80c5, "-3" }, 1205 { 0xa03d, "+13" }, 1206 { 0xa0c3, "-13" }, 1207 { 0xc03c, "+7" }, 1208 { 0xc03d, "+14" }, 1209 { 0xc0c3, "-14" }, 1210 { 0xc0c4, "-7" }, 1211 { 0xe03d, "+15" }, 1212 { 0xe0c3, "-15" } 1213 }; 1214 1215 // Nikon3 Shot Info D300 (a) Tag Info 1216 const TagInfo Nikon3MakerNote::tagInfoSi3_[] = { 1217 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi3Id, makerTags, unsignedByte, 4, printExifVersion), 1218 TagInfo( 604, "ISO", N_("ISO"), N_("ISO"), nikonSi3Id, makerTags, unsignedByte, 1, printIiIso), 1219 TagInfo( 633, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi3Id, makerTags, unsignedLong, 1, printValue), 1220 TagInfo( 721, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi3Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj1)), 1221 // End of list marker 1222 TagInfo(0xffff, "(UnknownNikonSi3Tag)", "(UnknownNikonSi3Tag)", N_("Unknown Nikon Shot Info D300 (a) Tag"), nikonSi3Id, makerTags, unsignedByte, 1, printValue) 1223 }; 1224 tagListSi3()1225 const TagInfo* Nikon3MakerNote::tagListSi3() 1226 { 1227 return tagInfoSi3_; 1228 } 1229 1230 //! AfFineTuneAdj D300 (b) 1231 extern const TagDetails nikonAfFineTuneAdj2[] = { 1232 { 0x0000, "0" }, 1233 { 0x043e, "+13" }, 1234 { 0x04c2, "-13" }, 1235 { 0x183d, "+7" }, 1236 { 0x183e, "+14" }, 1237 { 0x18c2, "-14" }, 1238 { 0x18c3, "-7" }, 1239 { 0x2c3e, "+15" }, 1240 { 0x2cc2, "-15" }, 1241 { 0x403a, "+1" }, 1242 { 0x403b, "+2" }, 1243 { 0x403c, "+4" }, 1244 { 0x403d, "+8" }, 1245 { 0x403e, "+16" }, 1246 { 0x40c2, "-16" }, 1247 { 0x40c3, "-8" }, 1248 { 0x40c4, "-4" }, 1249 { 0x40c5, "-2" }, 1250 { 0x40c6, "-1" }, 1251 { 0x543e, "+17" }, 1252 { 0x54c2, "-17" }, 1253 { 0x683d, "+9" }, 1254 { 0x683e, "+18" }, 1255 { 0x68c2, "-18" }, 1256 { 0x68c3, "-9" }, 1257 { 0x7c3e, "+19" }, 1258 { 0x7cc2, "-19" }, 1259 { 0x903c, "+5" }, 1260 { 0x903d, "+10" }, 1261 { 0x903e, "+20" }, 1262 { 0x90c2, "-20" }, 1263 { 0x90c3, "-10" }, 1264 { 0x90c4, "-5" }, 1265 { 0xb83d, "+11" }, 1266 { 0xb8c3, "-11" }, 1267 { 0xe03b, "+3" }, 1268 { 0xe03c, "+6" }, 1269 { 0xe03d, "+12" }, 1270 { 0xe0c3, "-12" }, 1271 { 0xe0c4, "-6" }, 1272 { 0xe0c5, "-3" } 1273 }; 1274 1275 // Nikon3 Shot Info D300 (b) Tag Info 1276 const TagInfo Nikon3MakerNote::tagInfoSi4_[] = { 1277 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi4Id, makerTags, unsignedByte, 4, printExifVersion), 1278 TagInfo( 613, "ISO", N_("ISO"), N_("ISO"), nikonSi4Id, makerTags, unsignedByte, 1, printIiIso), 1279 TagInfo( 644, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi4Id, makerTags, unsignedLong, 1, printValue), 1280 TagInfo( 732, "AFFineTuneAdj", N_("AF Fine Tune Adj"), N_("AF fine tune adj"), nikonSi4Id, makerTags, unsignedShort, 1, EXV_PRINT_TAG(nikonAfFineTuneAdj2)), 1281 // End of list marker 1282 TagInfo(0xffff, "(UnknownNikonSi4Tag)", "(UnknownNikonSi4Tag)", N_("Unknown Nikon Shot Info D300 (b) Tag"), nikonSi4Id, makerTags, unsignedByte, 1, printValue) 1283 }; 1284 tagListSi4()1285 const TagInfo* Nikon3MakerNote::tagListSi4() 1286 { 1287 return tagInfoSi4_; 1288 } 1289 1290 //! VibrationReduction 1291 extern const TagDetails nikonOffOn2[] = { 1292 { 0, N_("Off") }, 1293 { 1, N_("On (1)") }, 1294 { 2, N_("On (2)") }, 1295 { 3, N_("On (3)") } 1296 }; 1297 1298 //! VibrationReduction2 1299 extern const TagDetails nikonOffOn3[] = { 1300 { 0x0, N_("n/a") }, 1301 { 0xc, N_("Off") }, 1302 { 0xf, N_("On") } 1303 }; 1304 1305 // Nikon3 Shot Info Tag Info 1306 const TagInfo Nikon3MakerNote::tagInfoSi5_[] = { 1307 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonSi5Id, makerTags, unsignedByte, 4, printExifVersion), 1308 TagInfo( 106, "ShutterCount1", N_("Shutter Count 1"), N_("Shutter count 1"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), 1309 TagInfo( 110, "DeletedImageCount", N_("Deleted Image Count"), N_("Deleted image count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), 1310 TagInfo( 117, "VibrationReduction", N_("Vibration Reduction"), N_("Vibration reduction"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn2)), 1311 TagInfo( 130, "VibrationReduction1", N_("Vibration Reduction 1"), N_("Vibration reduction 1"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn)), 1312 TagInfo( 343, "ShutterCount2", N_("Shutter Count 2"), N_("Shutter count 2"), nikonSi5Id, makerTags, undefined, 2, printValue), 1313 TagInfo( 430, "VibrationReduction2", N_("Vibration Reduction 2"), N_("Vibration reduction 2"), nikonSi5Id, makerTags, unsignedByte, 1, EXV_PRINT_TAG(nikonOffOn3)), 1314 TagInfo( 598, "ISO", N_("ISO"), N_("ISO"), nikonSi5Id, makerTags, unsignedByte, 1, printIiIso), 1315 TagInfo( 630, "ShutterCount", N_("Shutter Count"), N_("Shutter count"), nikonSi5Id, makerTags, unsignedLong, 1, printValue), 1316 // End of list marker 1317 TagInfo(0xffff, "(UnknownNikonSi5Tag)", "(UnknownNikonSi5Tag)", N_("Unknown Nikon Shot Info Tag"), nikonSi5Id, makerTags, unsignedByte, 1, printValue) 1318 }; 1319 tagListSi5()1320 const TagInfo* Nikon3MakerNote::tagListSi5() 1321 { 1322 return tagInfoSi5_; 1323 } 1324 1325 // Nikon3 Color Balance 1 Tag Info 1326 const TagInfo Nikon3MakerNote::tagInfoCb1_[] = { 1327 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb1Id, makerTags, undefined, 4, printExifVersion), 1328 TagInfo(36, "WB_RBGGLevels", N_("WB RBGG Levels"), N_("WB RBGG levels"), nikonCb1Id, makerTags, unsignedShort, 4, printValue), 1329 // End of list marker 1330 TagInfo(0xffff, "(UnknownNikonCb1Tag)", "(UnknownNikonCb1Tag)", N_("Unknown Nikon Color Balance 1 Tag"), nikonCb1Id, makerTags, unsignedShort, 1, printValue) 1331 }; 1332 tagListCb1()1333 const TagInfo* Nikon3MakerNote::tagListCb1() 1334 { 1335 return tagInfoCb1_; 1336 } 1337 1338 // Nikon3 Color Balance 2 Tag Info 1339 const TagInfo Nikon3MakerNote::tagInfoCb2_[] = { 1340 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2Id, makerTags, undefined, 4, printExifVersion), 1341 TagInfo( 5, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2Id, makerTags, unsignedShort, 4, printValue), 1342 // End of list marker 1343 TagInfo(0xffff, "(UnknownNikonCb2Tag)", "(UnknownNikonCb2Tag)", N_("Unknown Nikon Color Balance 2 Tag"), nikonCb2Id, makerTags, unsignedShort, 1, printValue) 1344 }; 1345 tagListCb2()1346 const TagInfo* Nikon3MakerNote::tagListCb2() 1347 { 1348 return tagInfoCb2_; 1349 } 1350 1351 // Nikon3 Color Balance 2a Tag Info 1352 const TagInfo Nikon3MakerNote::tagInfoCb2a_[] = { 1353 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2aId, makerTags, undefined, 4, printExifVersion), 1354 TagInfo( 9, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2aId, makerTags, unsignedShort, 4, printValue), 1355 // End of list marker 1356 TagInfo(0xffff, "(UnknownNikonCb2aTag)", "(UnknownNikonCb2aTag)", N_("Unknown Nikon Color Balance 2a Tag"), nikonCb2aId, makerTags, unsignedShort, 1, printValue) 1357 }; 1358 tagListCb2a()1359 const TagInfo* Nikon3MakerNote::tagListCb2a() 1360 { 1361 return tagInfoCb2a_; 1362 } 1363 1364 // Nikon3 Color Balance 2b Tag Info 1365 const TagInfo Nikon3MakerNote::tagInfoCb2b_[] = { 1366 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb2bId, makerTags, undefined, 4, printExifVersion), 1367 TagInfo(145, "WB_RGGBLevels", N_("WB RGGB Levels"), N_("WB RGGB levels"), nikonCb2bId, makerTags, unsignedShort, 4, printValue), 1368 // End of list marker 1369 TagInfo(0xffff, "(UnknownNikonCb2bTag)", "(UnknownNikonCb2bTag)", N_("Unknown Nikon Color Balance 2b Tag"), nikonCb2bId, makerTags, unsignedShort, 1, printValue) 1370 }; 1371 tagListCb2b()1372 const TagInfo* Nikon3MakerNote::tagListCb2b() 1373 { 1374 return tagInfoCb2b_; 1375 } 1376 1377 // Nikon3 Color Balance 3 Tag Info 1378 const TagInfo Nikon3MakerNote::tagInfoCb3_[] = { 1379 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb3Id, makerTags, undefined, 4, printExifVersion), 1380 TagInfo(10, "WB_RGBGLevels", N_("WB RGBG Levels"), N_("WB RGBG levels"), nikonCb3Id, makerTags, unsignedShort, 4, printValue), 1381 // End of list marker 1382 TagInfo(0xffff, "(UnknownNikonCb3Tag)", "(UnknownNikonCb3Tag)", N_("Unknown Nikon Color Balance 3 Tag"), nikonCb3Id, makerTags, unsignedShort, 1, printValue) 1383 }; 1384 tagListCb3()1385 const TagInfo* Nikon3MakerNote::tagListCb3() 1386 { 1387 return tagInfoCb3_; 1388 } 1389 1390 // Nikon3 Color Balance 4 Tag Info 1391 const TagInfo Nikon3MakerNote::tagInfoCb4_[] = { 1392 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonCb4Id, makerTags, undefined, 4, printExifVersion), 1393 TagInfo(147, "WB_GRBGLevels", N_("WB GRBG Levels"), N_("WB GRBG levels"), nikonCb4Id, makerTags, unsignedShort, 4, printValue), 1394 // End of list marker 1395 TagInfo(0xffff, "(UnknownNikonCb4Tag)", "(UnknownNikonCb4Tag)", N_("Unknown Nikon Color Balance 4 Tag"), nikonCb4Id, makerTags, unsignedShort, 1, printValue) 1396 }; 1397 tagListCb4()1398 const TagInfo* Nikon3MakerNote::tagListCb4() 1399 { 1400 return tagInfoCb4_; 1401 } 1402 1403 // Nikon3 Lens Data 1 Tag Info 1404 const TagInfo Nikon3MakerNote::tagInfoLd1_[] = { 1405 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd1Id, makerTags, undefined, 4, printExifVersion), 1406 TagInfo( 6, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd1Id, makerTags, unsignedByte, 1, printLensId1), 1407 TagInfo( 7, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd1Id, makerTags, unsignedByte, 1, printFStops), 1408 TagInfo( 8, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal), 1409 TagInfo( 9, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd1Id, makerTags, unsignedByte, 1, printFocal), 1410 TagInfo(10, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture), 1411 TagInfo(11, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd1Id, makerTags, unsignedByte, 1, printAperture), 1412 TagInfo(12, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd1Id, makerTags, unsignedByte, 1, printValue), 1413 // End of list marker 1414 TagInfo(0xffff, "(UnknownNikonLd1Tag)", "(UnknownNikonLd1Tag)", N_("Unknown Nikon Lens Data 1 Tag"), nikonLd1Id, makerTags, unsignedByte, 1, printValue) 1415 }; 1416 tagListLd1()1417 const TagInfo* Nikon3MakerNote::tagListLd1() 1418 { 1419 return tagInfoLd1_; 1420 } 1421 1422 // Nikon3 Lens Data 2 Tag Info 1423 const TagInfo Nikon3MakerNote::tagInfoLd2_[] = { 1424 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd2Id, makerTags, undefined, 4, printExifVersion), 1425 TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd2Id, makerTags, unsignedByte, 1, printExitPupilPosition), 1426 TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), 1427 TagInfo( 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd2Id, makerTags, unsignedByte, 1, printValue), 1428 TagInfo( 9, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd2Id, makerTags, unsignedByte, 1, printFocusDistance), 1429 TagInfo(10, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), 1430 TagInfo(11, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd2Id, makerTags, unsignedByte, 1, printLensId2), 1431 TagInfo(12, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd2Id, makerTags, unsignedByte, 1, printFStops), 1432 TagInfo(13, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), 1433 TagInfo(14, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd2Id, makerTags, unsignedByte, 1, printFocal), 1434 TagInfo(15, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), 1435 TagInfo(16, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), 1436 TagInfo(17, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd2Id, makerTags, unsignedByte, 1, printValue), 1437 TagInfo(18, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd2Id, makerTags, unsignedByte, 1, printAperture), 1438 // End of list marker 1439 TagInfo(0xffff, "(UnknownNikonLd2Tag)", "(UnknownNikonLd2Tag)", N_("Unknown Nikon Lens Data 2 Tag"), nikonLd2Id, makerTags, unsignedByte, 1, printValue) 1440 }; 1441 tagListLd2()1442 const TagInfo* Nikon3MakerNote::tagListLd2() 1443 { 1444 return tagInfoLd2_; 1445 } 1446 1447 // Nikon3 Lens Data 3 Tag Info 1448 const TagInfo Nikon3MakerNote::tagInfoLd3_[] = { 1449 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd3Id, makerTags, undefined, 4, printExifVersion), 1450 TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd3Id, makerTags, unsignedByte, 1, printExitPupilPosition), 1451 TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), 1452 TagInfo( 8, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd3Id, makerTags, unsignedByte, 1, printValue), 1453 TagInfo(10, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd3Id, makerTags, unsignedByte, 1, printFocusDistance), 1454 TagInfo(11, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), 1455 TagInfo(12, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd3Id, makerTags, unsignedByte, 1, printLensId3), 1456 TagInfo(13, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd3Id, makerTags, unsignedByte, 1, printFStops), 1457 TagInfo(14, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), 1458 TagInfo(15, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printFocal), 1459 TagInfo(16, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), 1460 TagInfo(17, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), 1461 TagInfo(18, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd3Id, makerTags, unsignedByte, 1, printValue), 1462 TagInfo(19, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd3Id, makerTags, unsignedByte, 1, printAperture), 1463 // End of list marker 1464 TagInfo(0xffff, "(UnknownNikonLd3Tag)", "(UnknownNikonLd3Tag)", N_("Unknown Nikon Lens Data 3 Tag"), nikonLd3Id, makerTags, unsignedByte, 1, printValue) 1465 }; 1466 tagListLd3()1467 const TagInfo* Nikon3MakerNote::tagListLd3() 1468 { 1469 return tagInfoLd3_; 1470 } 1471 1472 // Nikon3 Lens Data 4 Tag Info 1473 // based on https://exiftool.org/TagNames/Nikon.html#LensData0800 1474 const TagInfo Nikon3MakerNote::tagInfoLd4_[] = { 1475 TagInfo( 0, "Version", N_("Version"), N_("Version"), nikonLd4Id, makerTags, undefined, 4, printExifVersion), 1476 TagInfo( 4, "ExitPupilPosition", N_("Exit Pupil Position"), N_("Exit pupil position"), nikonLd4Id, makerTags, unsignedByte, 1, printExitPupilPosition), 1477 TagInfo( 5, "AFAperture", N_("AF Aperture"), N_("AF aperture"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture), 1478 TagInfo( 9, "FocusPosition", N_("Focus Position"), N_("Focus position"), nikonLd4Id, makerTags, unsignedByte, 1, printValue), 1479 TagInfo(11, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd4Id, makerTags, unsignedByte, 1, printFocusDistance), 1480 TagInfo(12, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal), 1481 TagInfo(13, "LensIDNumber", N_("Lens ID Number"), N_("Lens ID number"), nikonLd4Id, makerTags, unsignedByte, 1, printLensId4), 1482 TagInfo(14, "LensFStops", N_("Lens F-Stops"), N_("Lens F-stops"), nikonLd4Id, makerTags, unsignedByte, 1, printFStops), 1483 TagInfo(15, "MinFocalLength", N_("Min Focal Length"), N_("Min focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal), 1484 TagInfo(16, "MaxFocalLength", N_("Max Focal Length"), N_("Max focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printFocal), 1485 TagInfo(17, "MaxApertureAtMinFocal", N_("Max Aperture At Min Focal"), N_("Max aperture at min focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture), 1486 TagInfo(18, "MaxApertureAtMaxFocal", N_("Max Aperture At Max Focal"), N_("Max aperture at max focal length"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture), 1487 TagInfo(19, "MCUVersion", N_("MCU Version"), N_("MCU version"), nikonLd4Id, makerTags, unsignedByte, 1, printValue), 1488 TagInfo(20, "EffectiveMaxAperture", N_("Effective Max Aperture"), N_("Effective max aperture"), nikonLd4Id, makerTags, unsignedByte, 1, printAperture), 1489 TagInfo(48, "LensID", N_("LensID"), N_("Lens ID"), nikonLd4Id, makerTags, unsignedShort, 1, printLensId4ZMount), 1490 TagInfo(54, "MaxAperture", N_("Max Aperture"), N_("Max aperture"), nikonLd4Id, makerTags, unsignedShort, 1, printApertureLd4), 1491 TagInfo(56, "FNumber", N_("F-Number"), N_("F-Number"), nikonLd4Id, makerTags, unsignedShort, 1, printApertureLd4), 1492 TagInfo(60, "FocalLength", N_("Focal Length"), N_("Focal length"), nikonLd4Id, makerTags, unsignedShort, 1, printFocalLd4), 1493 TagInfo(79, "FocusDistance", N_("Focus Distance"), N_("Focus distance"), nikonLd4Id, makerTags, unsignedByte, 1, printFocusDistance), 1494 // End of list marker 1495 TagInfo(0xffff, "(UnknownNikonLd4Tag)", "(UnknownNikonLd4Tag)", N_("Unknown Nikon Lens Data 3 Tag"), nikonLd4Id, makerTags, unsignedByte, 1, printValue) 1496 }; 1497 tagListLd4()1498 const TagInfo* Nikon3MakerNote::tagListLd4() 1499 { 1500 return tagInfoLd4_; 1501 } 1502 printIiIso(std::ostream & os,const Value & value,const ExifData *)1503 std::ostream& Nikon3MakerNote::printIiIso(std::ostream& os, 1504 const Value& value, 1505 const ExifData*) 1506 { 1507 double v = 100 * exp((value.toLong() / 12.0 - 5) * log(2.0)); 1508 return os << static_cast<int>(v + 0.5); 1509 } 1510 print0x0002(std::ostream & os,const Value & value,const ExifData *)1511 std::ostream& Nikon3MakerNote::print0x0002(std::ostream& os, 1512 const Value& value, 1513 const ExifData*) 1514 { 1515 if (value.count() > 1) { 1516 os << value.toLong(1); 1517 } 1518 else { 1519 os << "(" << value << ")"; 1520 } 1521 return os; 1522 } 1523 print0x0007(std::ostream & os,const Value & value,const ExifData *)1524 std::ostream& Nikon3MakerNote::print0x0007(std::ostream& os, 1525 const Value& value, 1526 const ExifData*) 1527 { 1528 std::string focus = value.toString(); 1529 if (focus == "AF-C ") os << _("Continuous autofocus"); 1530 else if (focus == "AF-S ") os << _("Single autofocus"); 1531 else if (focus == "AF-A ") os << _("Automatic"); 1532 else os << "(" << value << ")"; 1533 return os; 1534 } 1535 print0x0083(std::ostream & os,const Value & value,const ExifData *)1536 std::ostream& Nikon3MakerNote::print0x0083(std::ostream& os, 1537 const Value& value, 1538 const ExifData*) 1539 { 1540 long lensType = value.toLong(); 1541 1542 bool valid=false; 1543 if (lensType & 1) 1544 { 1545 os << "MF "; 1546 valid=true; 1547 } 1548 if (lensType & 2) 1549 { 1550 os << "D "; 1551 valid=true; 1552 } 1553 if (lensType & 4) 1554 { 1555 os << "G "; 1556 valid=true; 1557 } 1558 if (lensType & 8) 1559 { 1560 os << "VR"; 1561 valid=true; 1562 } 1563 1564 if (!valid) 1565 os << "(" << lensType << ")"; 1566 1567 return os; 1568 } 1569 print0x0084(std::ostream & os,const Value & value,const ExifData *)1570 std::ostream& Nikon3MakerNote::print0x0084(std::ostream& os, 1571 const Value& value, 1572 const ExifData*) 1573 { 1574 std::ios::fmtflags f( os.flags() ); 1575 if ( value.count() != 4 1576 || value.toRational(0).second == 0 1577 || value.toRational(1).second == 0) { 1578 os << "(" << value << ")"; 1579 return os; 1580 } 1581 long len1 = value.toLong(0); 1582 long len2 = value.toLong(1); 1583 1584 Rational fno1 = value.toRational(2); 1585 Rational fno2 = value.toRational(3); 1586 os << len1; 1587 if (len2 != len1) { 1588 os << "-" << len2; 1589 } 1590 os << "mm "; 1591 std::ostringstream oss; 1592 oss.copyfmt(os); 1593 os << "F" << std::setprecision(2) 1594 << static_cast<float>(fno1.first) / fno1.second; 1595 if (fno2 != fno1) { 1596 os << "-" << std::setprecision(2) 1597 << static_cast<float>(fno2.first) / fno2.second; 1598 } 1599 os.copyfmt(oss); 1600 os.flags(f); 1601 return os; 1602 } 1603 print0x0085(std::ostream & os,const Value & value,const ExifData *)1604 std::ostream& Nikon3MakerNote::print0x0085(std::ostream& os, 1605 const Value& value, 1606 const ExifData*) 1607 { 1608 std::ios::fmtflags f( os.flags() ); 1609 Rational distance = value.toRational(); 1610 if (distance.first == 0) { 1611 os << _("Unknown"); 1612 } 1613 else if (distance.second != 0) { 1614 std::ostringstream oss; 1615 oss.copyfmt(os); 1616 os << std::fixed << std::setprecision(2) 1617 << (float)distance.first / distance.second 1618 << " m"; 1619 os.copyfmt(oss); 1620 } 1621 else { 1622 os << "(" << value << ")"; 1623 } 1624 os.flags(f); 1625 return os; 1626 } 1627 print0x0086(std::ostream & os,const Value & value,const ExifData *)1628 std::ostream& Nikon3MakerNote::print0x0086(std::ostream& os, 1629 const Value& value, 1630 const ExifData*) 1631 { 1632 std::ios::fmtflags f( os.flags() ); 1633 Rational zoom = value.toRational(); 1634 if (zoom.first == 0) { 1635 os << _("Not used"); 1636 } 1637 else if (zoom.second != 0) { 1638 std::ostringstream oss; 1639 oss.copyfmt(os); 1640 os << std::fixed << std::setprecision(1) 1641 << (float)zoom.first / zoom.second 1642 << "x"; 1643 os.copyfmt(oss); 1644 } 1645 else { 1646 os << "(" << value << ")"; 1647 } 1648 os.flags(f); 1649 return os; 1650 } 1651 print0x0088(std::ostream & os,const Value & value,const ExifData *)1652 std::ostream& Nikon3MakerNote::print0x0088(std::ostream& os, 1653 const Value& value, 1654 const ExifData*) 1655 { 1656 if (value.size() != 4) { // Size is 4 even for those who map this way... 1657 os << "(" << value << ")"; 1658 } 1659 else { 1660 // Mapping by Roger Larsson 1661 unsigned focusmetering = value.toLong(0); 1662 unsigned focuspoint = value.toLong(1); 1663 unsigned focusused = (value.toLong(2) << 8) + value.toLong(3); 1664 // TODO: enum {standard, wide} combination = standard; 1665 const unsigned focuspoints = sizeof(nikonFocuspoints) 1666 / sizeof(nikonFocuspoints[0]); 1667 1668 if (focusmetering == 0 && focuspoint == 0 && focusused == 0) { 1669 // Special case, in Manual focus and with Nikon compacts 1670 // this indicates that the field has no meaning. 1671 // But when actually in "Single area, Center" this can mean 1672 // that focus was not found (try this in AF-C mode) 1673 // TODO: handle the meaningful case (interacts with other fields) 1674 os << "N/A"; 1675 return os; 1676 } 1677 1678 switch (focusmetering) { 1679 case 0x00: os << _("Single area"); break; // D70, D200 1680 case 0x01: os << _("Dynamic area"); break; // D70, D200 1681 case 0x02: os << _("Closest subject"); break; // D70, D200 1682 case 0x03: os << _("Group dynamic-AF"); break; // D200 1683 case 0x04: os << _("Single area (wide)"); /* TODO: combination = wide; */ break; // D200 1684 case 0x05: os << _("Dynamic area (wide)"); /* TODO: combination = wide; */ break; // D200 1685 default: os << "(" << focusmetering << ")"; break; 1686 } 1687 1688 char sep = ';'; 1689 if (focusmetering != 0x02) { // No user selected point for Closest subject 1690 os << sep << ' '; 1691 1692 // What focuspoint did the user select? 1693 if (focuspoint < focuspoints) { 1694 os << nikonFocuspoints[focuspoint]; 1695 // TODO: os << position[fokuspoint][combination] 1696 } 1697 else 1698 os << "(" << focuspoint << ")"; 1699 1700 sep = ','; 1701 } 1702 1703 // What fokuspoints(!) did the camera use? add if differs 1704 if (focusused == 0) 1705 os << sep << " " << _("none"); 1706 else if (focusused != 1U<<focuspoint) { 1707 // selected point was not the actually used one 1708 // (Roger Larsson: my interpretation, verify) 1709 os << sep; 1710 for (unsigned fpid=0; fpid<focuspoints; fpid++) 1711 if (focusused & 1<<fpid) 1712 os << ' ' << nikonFocuspoints[fpid]; 1713 } 1714 1715 os << " " << _("used"); 1716 } 1717 1718 return os; 1719 } 1720 printAfPointsInFocus(std::ostream & os,const Value & value,const ExifData * metadata)1721 std::ostream& Nikon3MakerNote::printAfPointsInFocus(std::ostream& os, 1722 const Value& value, 1723 const ExifData* metadata) 1724 { 1725 if (value.typeId() != unsignedShort) return os << "(" << value << ")"; 1726 1727 bool dModel = false; 1728 if (metadata) { 1729 ExifData::const_iterator pos = metadata->findKey(ExifKey("Exif.Image.Model")); 1730 if (pos != metadata->end() && pos->count() != 0) { 1731 std::string model = pos->toString(); 1732 if (model.find("NIKON D") != std::string::npos) { 1733 dModel = true; 1734 } 1735 } 1736 } 1737 1738 uint16_t val = static_cast<uint16_t>(value.toLong()); 1739 if (dModel) val = (val >> 8) | ((val & 0x00ff) << 8); 1740 1741 if (val == 0x07ff) return os << _("All 11 Points"); 1742 1743 UShortValue v; 1744 v.value_.push_back(val); 1745 return EXV_PRINT_TAG_BITMASK(nikonAfPointsInFocus)(os, v, 0); 1746 } 1747 print0x0089(std::ostream & os,const Value & value,const ExifData * metadata)1748 std::ostream& Nikon3MakerNote::print0x0089(std::ostream& os, 1749 const Value& value, 1750 const ExifData* metadata) 1751 { 1752 if (value.count() != 1 || value.typeId() != unsignedShort) { 1753 return os << "(" << value << ")"; 1754 } 1755 long l = value.toLong(0); 1756 if (l == 0) return os << _("Single-frame"); 1757 if (!(l & 0x87)) os << _("Single-frame") << ", "; 1758 bool d70 = false; 1759 if (metadata) { 1760 ExifKey key("Exif.Image.Model"); 1761 ExifData::const_iterator pos = metadata->findKey(key); 1762 if (pos != metadata->end() && pos->count() != 0) { 1763 std::string model = pos->toString(); 1764 if (model.find("D70") != std::string::npos) { 1765 d70 = true; 1766 } 1767 } 1768 } 1769 if (d70) { 1770 EXV_PRINT_TAG_BITMASK(nikonShootingModeD70)(os, value, 0); 1771 } 1772 else { 1773 EXV_PRINT_TAG_BITMASK(nikonShootingMode)(os, value, 0); 1774 } 1775 return os; 1776 } 1777 print0x008b(std::ostream & os,const Value & value,const ExifData *)1778 std::ostream& Nikon3MakerNote::print0x008b(std::ostream& os, 1779 const Value& value, 1780 const ExifData*) 1781 { 1782 // Decoded by Robert Rottmerhusen <email@rottmerhusen.com> 1783 if ( value.size() != 4 1784 || value.typeId() != undefined) { 1785 return os << "(" << value << ")"; 1786 } 1787 float a = value.toFloat(0); 1788 long b = value.toLong(1); 1789 long c = value.toLong(2); 1790 if (c == 0) return os << "(" << value << ")"; 1791 return os << a * b / c; 1792 } 1793 1794 static bool testConfigFile(std::ostream& os,const Value& value); testConfigFile(std::ostream & os,const Value & value)1795 static bool testConfigFile(std::ostream& os,const Value& value) 1796 { 1797 bool result = false; 1798 const std::string undefined("undefined") ; 1799 const std::string section ("nikon"); 1800 if ( Internal::readExiv2Config(section,value.toString(),undefined) != undefined ) { 1801 os << Internal::readExiv2Config(section,value.toString(),undefined); 1802 result = true; 1803 } 1804 return result; 1805 } 1806 printLensId1(std::ostream & os,const Value & value,const ExifData * metadata)1807 std::ostream& Nikon3MakerNote::printLensId1(std::ostream& os, 1808 const Value& value, 1809 const ExifData* metadata) 1810 { 1811 return testConfigFile(os,value) ? os : printLensId(os, value, metadata, "NikonLd1"); 1812 } 1813 printLensId2(std::ostream & os,const Value & value,const ExifData * metadata)1814 std::ostream& Nikon3MakerNote::printLensId2(std::ostream& os, 1815 const Value& value, 1816 const ExifData* metadata) 1817 { 1818 return testConfigFile(os,value) ? os : printLensId(os, value, metadata, "NikonLd2"); 1819 } 1820 printLensId3(std::ostream & os,const Value & value,const ExifData * metadata)1821 std::ostream& Nikon3MakerNote::printLensId3(std::ostream& os, 1822 const Value& value, 1823 const ExifData* metadata) 1824 { 1825 return testConfigFile(os,value) ? os : printLensId(os, value, metadata, "NikonLd3"); 1826 } 1827 printLensId4(std::ostream & os,const Value & value,const ExifData * metadata)1828 std::ostream& Nikon3MakerNote::printLensId4(std::ostream& os, 1829 const Value& value, 1830 const ExifData* metadata) 1831 { 1832 return testConfigFile(os,value) ? os : printLensId(os, value, metadata, "NikonLd4"); 1833 } 1834 printLensId(std::ostream & os,const Value & value,const ExifData * metadata,const std::string & group)1835 std::ostream& Nikon3MakerNote::printLensId(std::ostream& os, 1836 const Value& value, 1837 const ExifData* metadata, 1838 const std::string& group) 1839 { 1840 #ifdef EXV_HAVE_LENSDATA 1841 // 8< - - - 8< do not remove this line >8 - - - >8 1842 //------------------------------------------------------------------------------ 1843 #ifndef FMOUNTLH 1844 #define FMOUNTLH 1845 //------------------------------------------------------------------------------ 1846 // List of AF F-Mount lenses - Version 4.4.550.02 2018-03-03 1847 //------------------------------------------------------------------------------ 1848 #define FMLVERSION "4.4.550.02" 1849 #define FMLDATE "2018-03-03" 1850 //------------------------------------------------------------------------------ 1851 // 1852 // 1853 // Created by Robert Rottmerhusen 2005 - 2018 1854 // http://www.rottmerhusen.com (lens_id@rottmerhusen.com) 1855 // 1856 // For contributor info and more visit my online list: 1857 // http://www.rottmerhusen.com/objektives/lensid/thirdparty.html 1858 // 1859 // 1860 // Eight misidentified lenses due to double LensIDs: 1861 // 1862 // 2F 48 30 44 24 24 29 02.1: Nikon AF Zoom-Nikkor 20-35mm f/2.8D IF 1863 // 2F 48 30 44 24 24 29 02.2: Tokina AT-X 235 AF PRO (AF 20-35mm f/2.8) 1864 // 1865 // 32 54 6A 6A 24 24 35 02.1: Nikon AF Micro-Nikkor 105mm f/2.8D 1866 // 32 54 6A 6A 24 24 35 02.2: Sigma Macro 105mm F2.8 EX DG 1867 // 1868 // 7A 3C 1F 37 30 30 7E 06.1: Nikon AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED 1869 // 7A 3C 1F 37 30 30 7E 06.2: Tokina AT-X 124 AF PRO DX II (AF 12-24mm f/4) 1870 // 1871 // 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 1872 // 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 1873 // 1874 // 32 53 64 64 24 24 35 02.1: Tamron SP AF 90mm F/2.8 Macro 1:1 (172E) 1875 // 32 53 64 64 24 24 35 02.2: Tamron SP AF 90mm F/2.8 Di Macro 1:1 (272E) 1876 // 1877 // 2F 40 30 44 2C 34 29 02.1: Tokina AF 235 II (AF 20-35mm f/3.5-4.5) 1878 // 2F 40 30 44 2C 34 29 02.2: Tokina AF 193 (AF 19-35mm f/3.5-4.5) 1879 // 1880 // 25 48 3C 5C 24 24 1B 02.1: Tokina AT-X 287 AF PRO SV (AF 28-70mm f/2.8) 1881 // 25 48 3C 5C 24 24 1B 02.2: Tokina AT-X 270 AF PRO II (AF 28-70mm f/2.6-2.8) 1882 // 1883 // 4A 48 24 24 24 0C 4D 02.1: Samyang AE 14mm f/2.8 ED AS IF UMC 1884 // 4A 48 24 24 24 0C 4D 02.2: Samyang 10mm f/2.8 ED AS NCS CS 1885 // 1886 // 1887 // product number/order code not complete 1888 // 1889 // Free use in non-commercial, GPL or open source software only! 1890 // Please contact me for adding lenses or use in commercial software. 1891 // 1892 //"data from TAG 0x98" "ltyp" " "TC" "MID" "maker" "PN" "lens name from manuf"; 1893 // 1894 //------------------------------------------------------------------------------ 1895 // Nikkor lenses by their LensID 1896 //------------------------------------------------------------------------------ 1897 // 1898 static const struct FMntLens {unsigned char lid,stps,focs,focl,aps,apl,lfw, ltype, tcinfo, dblid, mid; const char *manuf, *lnumber, *lensname;} 1899 fmountlens[] = { 1900 {0x01,0x58,0x50,0x50,0x14,0x14,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA00901", "AF Nikkor 50mm f/1.8"}, 1901 {0x01,0x58,0x50,0x50,0x14,0x14,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA00901", "AF Nikkor 50mm f/1.8"}, 1902 {0x02,0x42,0x44,0x5C,0x2A,0x34,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA72701", "AF Zoom-Nikkor 35-70mm f/3.3-4.5"}, 1903 {0x02,0x42,0x44,0x5C,0x2A,0x34,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA72701", "AF Zoom-Nikkor 35-70mm f/3.3-4.5"}, 1904 {0x03,0x48,0x5C,0x81,0x30,0x30,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA72801", "AF Zoom-Nikkor 70-210mm f/4"}, 1905 {0x04,0x48,0x3C,0x3C,0x24,0x24,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA12001", "AF Nikkor 28mm f/2.8"}, 1906 {0x05,0x54,0x50,0x50,0x0C,0x0C,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA01001", "AF Nikkor 50mm f/1.4"}, 1907 {0x06,0x54,0x53,0x53,0x24,0x24,0x06,0x00,0x40,0x00,0x00, "Nikon", "JAA62101", "AF Micro-Nikkor 55mm f/2.8"}, 1908 {0x07,0x40,0x3C,0x62,0x2C,0x34,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA72901", "AF Zoom-Nikkor 28-85mm f/3.5-4.5"}, 1909 {0x08,0x40,0x44,0x6A,0x2C,0x34,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA73001", "AF Zoom-Nikkor 35-105mm f/3.5-4.5"}, 1910 {0x09,0x48,0x37,0x37,0x24,0x24,0x04,0x00,0x00,0x00,0x00, "Nikon", "JAA12101", "AF Nikkor 24mm f/2.8"}, 1911 {0x0A,0x48,0x8E,0x8E,0x24,0x24,0x03,0x00,0x00,0x00,0x00, "Nikon", "JAA322AA", "AF Nikkor 300mm f/2.8 IF-ED"}, 1912 {0x0A,0x48,0x8E,0x8E,0x24,0x24,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA322AB", "AF Nikkor 300mm f/2.8 IF-ED"}, 1913 {0x0B,0x48,0x7C,0x7C,0x24,0x24,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA32101", "AF Nikkor 180mm f/2.8 IF-ED"}, 1914 //0C 1915 {0x0D,0x40,0x44,0x72,0x2C,0x34,0x07,0x00,0x00,0x00,0x00, "Nikon", "JAA73101", "AF Zoom-Nikkor 35-135mm f/3.5-4.5"}, 1916 {0x0E,0x48,0x5C,0x81,0x30,0x30,0x05,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 70-210mm f/4"}, 1917 {0x0F,0x58,0x50,0x50,0x14,0x14,0x05,0x00,0x00,0x00,0x00, "Nikon", "JAA009AD", "AF Nikkor 50mm f/1.8 N"}, 1918 {0x10,0x48,0x8E,0x8E,0x30,0x30,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA32301", "AF Nikkor 300mm f/4 IF-ED"}, 1919 {0x11,0x48,0x44,0x5C,0x24,0x24,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA73301", "AF Zoom-Nikkor 35-70mm f/2.8"}, 1920 {0x11,0x48,0x44,0x5C,0x24,0x24,0x15,0x00,0x00,0x00,0x00, "Nikon", "JAA73301", "AF Zoom-Nikkor 35-70mm f/2.8"}, 1921 {0x12,0x48,0x5C,0x81,0x30,0x3C,0x09,0x00,0x00,0x00,0x00, "Nikon", "JAA73201", "AF Nikkor 70-210mm f/4-5.6"}, 1922 {0x13,0x42,0x37,0x50,0x2A,0x34,0x0B,0x00,0x00,0x00,0x00, "Nikon", "JAA73401", "AF Zoom-Nikkor 24-50mm f/3.3-4.5"}, 1923 {0x14,0x48,0x60,0x80,0x24,0x24,0x0B,0x00,0x00,0x00,0x00, "Nikon", "JAA73501", "AF Zoom-Nikkor 80-200mm f/2.8 ED"}, 1924 {0x15,0x4C,0x62,0x62,0x14,0x14,0x0C,0x00,0x00,0x00,0x00, "Nikon", "JAA32401", "AF Nikkor 85mm f/1.8"}, 1925 //16 1926 {0x17,0x3C,0xA0,0xA0,0x30,0x30,0x0F,0x00,0x00,0x00,0x00, "Nikon", "JAA518AA", "Nikkor 500mm f/4 P ED IF"}, 1927 {0x17,0x3C,0xA0,0xA0,0x30,0x30,0x11,0x00,0x00,0x00,0x00, "Nikon", "JAA518AA", "Nikkor 500mm f/4 P ED IF"}, 1928 {0x18,0x40,0x44,0x72,0x2C,0x34,0x0E,0x00,0x00,0x00,0x00, "Nikon", "JAA736AA", "AF Zoom-Nikkor 35-135mm f/3.5-4.5 N"}, 1929 //19 1930 {0x1A,0x54,0x44,0x44,0x18,0x18,0x11,0x00,0x00,0x00,0x00, "Nikon", "JAA12201", "AF Nikkor 35mm f/2"}, 1931 {0x1B,0x44,0x5E,0x8E,0x34,0x3C,0x10,0x00,0x00,0x00,0x00, "Nikon", "JAA738AA", "AF Zoom-Nikkor 75-300mm f/4.5-5.6"}, 1932 {0x1C,0x48,0x30,0x30,0x24,0x24,0x12,0x00,0x00,0x00,0x00, "Nikon", "JAA12301", "AF Nikkor 20mm f/2.8"}, 1933 {0x1D,0x42,0x44,0x5C,0x2A,0x34,0x12,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-70mm f/3.3-4.5 N"}, 1934 {0x1E,0x54,0x56,0x56,0x24,0x24,0x13,0x00,0x40,0x00,0x00, "Nikon", "JAA62201", "AF Micro-Nikkor 60mm f/2.8"}, 1935 {0x1F,0x54,0x6A,0x6A,0x24,0x24,0x14,0x00,0x40,0x00,0x00, "Nikon", "JAA62301", "AF Micro-Nikkor 105mm f/2.8"}, 1936 {0x20,0x48,0x60,0x80,0x24,0x24,0x15,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 80-200mm f/2.8 ED"}, 1937 {0x21,0x40,0x3C,0x5C,0x2C,0x34,0x16,0x00,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 28-70mm f/3.5-4.5"}, 1938 {0x22,0x48,0x72,0x72,0x18,0x18,0x16,0x00,0x00,0x00,0x00, "Nikon", "JAA32501", "AF DC-Nikkor 135mm f/2"}, 1939 {0x23,0x30,0xBE,0xCA,0x3C,0x48,0x17,0x00,0x00,0x00,0x00, "Nikon", "", "Zoom-Nikkor 1200-1700mm f/5.6-8 P ED IF"}, 1940 // - D - lenses from here 1941 {0x24,0x48,0x60,0x80,0x24,0x24,0x1A,0x02,0x00,0x00,0x00, "Nikon", "JAA742DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, 1942 {0x25,0x48,0x44,0x5c,0x24,0x24,0x1B,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D"}, 1943 {0x25,0x48,0x44,0x5C,0x24,0x24,0x3A,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D"}, 1944 {0x25,0x48,0x44,0x5c,0x24,0x24,0x52,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D"}, 1945 {0x26,0x40,0x3C,0x5C,0x2C,0x34,0x1C,0x02,0x00,0x00,0x00, "Nikon", "JAA744DA", "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"}, 1946 // ^- not yet verified 1947 {0x27,0x48,0x8E,0x8E,0x24,0x24,0x1D,0x02,0x07,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED"}, 1948 {0x27,0x48,0x8E,0x8E,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-14E"}, 1949 {0x27,0x48,0x8E,0x8E,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-17E"}, 1950 {0x27,0x48,0x8E,0x8E,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA326DA", "AF-I Nikkor 300mm f/2.8D IF-ED + TC-20E"}, 1951 {0x28,0x3C,0xA6,0xA6,0x30,0x30,0x1D,0x02,0x07,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED"}, 1952 {0x28,0x3C,0xA6,0xA6,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-14E"}, 1953 {0x28,0x3C,0xA6,0xA6,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-17E"}, 1954 {0x28,0x3C,0xA6,0xA6,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA519DA", "AF-I Nikkor 600mm f/4D IF-ED + TC-20E"}, 1955 //29 1956 {0x2A,0x54,0x3C,0x3C,0x0C,0x0C,0x26,0x02,0x00,0x00,0x00, "Nikon", "JAA124DA", "AF Nikkor 28mm f/1.4D"}, 1957 {0x2B,0x3C,0x44,0x60,0x30,0x3C,0x1F,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-80mm f/4-5.6D"}, 1958 {0x2C,0x48,0x6A,0x6A,0x18,0x18,0x27,0x02,0x00,0x00,0x00, "Nikon", "JAA327DA", "AF DC-Nikkor 105mm f/2D"}, 1959 {0x2D,0x48,0x80,0x80,0x30,0x30,0x21,0x02,0x40,0x00,0x00, "Nikon", "JAA624DA", "AF Micro-Nikkor 200mm f/4D IF-ED"}, 1960 {0x2E,0x48,0x5C,0x82,0x30,0x3C,0x22,0x02,0x00,0x00,0x00, "Nikon", "JAA747DA", "AF Nikkor 70-210mm f/4-5.6D"}, 1961 {0x2E,0x48,0x5C,0x82,0x30,0x3C,0x28,0x02,0x00,0x00,0x00, "Nikon", "JAA747DA", "AF Nikkor 70-210mm f/4-5.6D"}, 1962 {0x2F,0x48,0x30,0x44,0x24,0x24,0x29,0x02,0x00,0x01,0x00, "Nikon", "JAA746DA", "AF Zoom-Nikkor 20-35mm f/2.8D IF"}, 1963 {0x30,0x48,0x98,0x98,0x24,0x24,0x24,0x02,0x07,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED"}, 1964 {0x30,0x48,0x98,0x98,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-14E"}, 1965 {0x30,0x48,0x98,0x98,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-17E"}, 1966 {0x30,0x48,0x98,0x98,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA520DA", "AF-I Nikkor 400mm f/2.8D IF-ED + TC-20E"}, 1967 {0x31,0x54,0x56,0x56,0x24,0x24,0x25,0x02,0x40,0x00,0x00, "Nikon", "JAA625DA", "AF Micro-Nikkor 60mm f/2.8D"}, 1968 {0x32,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x40,0x01,0x00, "Nikon", "JAA627DA", "AF Micro-Nikkor 105mm f/2.8D"}, 1969 {0x33,0x48,0x2D,0x2D,0x24,0x24,0x31,0x02,0x00,0x00,0x00, "Nikon", "JAA126DA", "AF Nikkor 18mm f/2.8D"}, 1970 {0x34,0x48,0x29,0x29,0x24,0x24,0x32,0x02,0x00,0x00,0x00, "Nikon", "JAA626DA", "AF Fisheye Nikkor 16mm f/2.8D"}, 1971 {0x35,0x3C,0xA0,0xA0,0x30,0x30,0x33,0x02,0x07,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED"}, 1972 {0x35,0x3C,0xA0,0xA0,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-14E"}, 1973 {0x35,0x3C,0xA0,0xA0,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-17E"}, 1974 {0x35,0x3C,0xA0,0xA0,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA521DA", "AF-I Nikkor 500mm f/4D IF-ED + TC-20E"}, 1975 {0x36,0x48,0x37,0x37,0x24,0x24,0x34,0x02,0x00,0x00,0x00, "Nikon", "JAA125DA", "AF Nikkor 24mm f/2.8D"}, 1976 {0x37,0x48,0x30,0x30,0x24,0x24,0x36,0x02,0x00,0x00,0x00, "Nikon", "JAA127DA", "AF Nikkor 20mm f/2.8D"}, 1977 {0x38,0x4C,0x62,0x62,0x14,0x14,0x37,0x02,0x00,0x00,0x00, "Nikon", "JAA328DA", "AF Nikkor 85mm f/1.8D"}, 1978 //39 38 1979 {0x3A,0x40,0x3C,0x5C,0x2C,0x34,0x39,0x02,0x00,0x00,0x00, "Nikon", "JAA744DA", "AF Zoom-Nikkor 28-70mm f/3.5-4.5D"}, 1980 {0x3B,0x48,0x44,0x5C,0x24,0x24,0x3A,0x02,0x00,0x00,0x00, "Nikon", "JAA743DA", "AF Zoom-Nikkor 35-70mm f/2.8D N"}, 1981 {0x3C,0x48,0x60,0x80,0x24,0x24,0x3B,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, 1982 {0x3D,0x3C,0x44,0x60,0x30,0x3C,0x3E,0x02,0x00,0x00,0x00, "Nikon", "", "AF Zoom-Nikkor 35-80mm f/4-5.6D"}, 1983 {0x3E,0x48,0x3C,0x3C,0x24,0x24,0x3D,0x02,0x00,0x00,0x00, "Nikon", "JAA128DA", "AF Nikkor 28mm f/2.8D"}, 1984 {0x3F,0x40,0x44,0x6A,0x2C,0x34,0x45,0x02,0x00,0x00,0x00, "Nikon", "JAA748DA", "AF Zoom-Nikkor 35-105mm f/3.5-4.5D"}, 1985 //40 1986 {0x41,0x48,0x7c,0x7c,0x24,0x24,0x43,0x02,0x00,0x00,0x00, "Nikon", "JAA330DA", "AF Nikkor 180mm f/2.8D IF-ED"}, 1987 {0x42,0x54,0x44,0x44,0x18,0x18,0x44,0x02,0x00,0x00,0x00, "Nikon", "JAA129DA", "AF Nikkor 35mm f/2D"}, 1988 {0x43,0x54,0x50,0x50,0x0C,0x0C,0x46,0x02,0x00,0x00,0x00, "Nikon", "JAA011DB", "AF Nikkor 50mm f/1.4D"}, 1989 {0x44,0x44,0x60,0x80,0x34,0x3C,0x47,0x02,0x00,0x00,0x00, "Nikon", "JAA753DB", "AF Zoom-Nikkor 80-200mm f/4.5-5.6D"}, 1990 {0x45,0x40,0x3C,0x60,0x2C,0x3C,0x48,0x02,0x00,0x00,0x00, "Nikon", "JAA752DA", "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"}, 1991 {0x46,0x3C,0x44,0x60,0x30,0x3C,0x49,0x02,0x00,0x00,0x00, "Nikon", "JAA754DA", "AF Zoom-Nikkor 35-80mm f/4-5.6D N"}, 1992 {0x47,0x42,0x37,0x50,0x2A,0x34,0x4A,0x02,0x00,0x00,0x00, "Nikon", "JAA756DA", "AF Zoom-Nikkor 24-50mm f/3.3-4.5D"}, 1993 {0x48,0x48,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x07,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED"}, 1994 {0x48,0x48,0x8E,0x8E,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-14E"}, 1995 {0x48,0x48,0x8E,0x8E,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E"}, 1996 {0x48,0x48,0x8E,0x8E,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA333DA", "AF-S Nikkor 300mm f/2.8D IF-ED + TC-20E"}, 1997 {0x49,0x3C,0xA6,0xA6,0x30,0x30,0x4C,0x02,0x07,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED"}, 1998 {0x49,0x3C,0xA6,0xA6,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-14E"}, 1999 {0x49,0x3C,0xA6,0xA6,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-17E"}, 2000 {0x49,0x3C,0xA6,0xA6,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA522DA", "AF-S Nikkor 600mm f/4D IF-ED + TC-20E"}, 2001 {0x4A,0x54,0x62,0x62,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Nikon", "JAA332DA", "AF Nikkor 85mm f/1.4D IF"}, 2002 {0x4B,0x3C,0xA0,0xA0,0x30,0x30,0x4E,0x02,0x07,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED"}, 2003 {0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-14E"}, 2004 {0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-17E"}, 2005 {0x4B,0x3C,0xA0,0xA0,0x30,0x30,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA523DA", "AF-S Nikkor 500mm f/4D IF-ED + TC-20E"}, 2006 {0x4C,0x40,0x37,0x6E,0x2C,0x3C,0x4F,0x02,0x00,0x00,0x00, "Nikon", "JAA757DA", "AF Zoom-Nikkor 24-120mm f/3.5-5.6D IF"}, 2007 {0x4D,0x40,0x3C,0x80,0x2C,0x3C,0x62,0x02,0x00,0x00,0x00, "Nikon", "JAA758DA", "AF Zoom-Nikkor 28-200mm f/3.5-5.6D IF"}, 2008 {0x4E,0x48,0x72,0x72,0x18,0x18,0x51,0x02,0x00,0x00,0x00, "Nikon", "JAA329DA", "AF DC-Nikkor 135mm f/2D"}, 2009 {0x4F,0x40,0x37,0x5C,0x2C,0x3C,0x53,0x06,0x00,0x00,0x00, "Nikon", "JBA701AA", "IX-Nikkor 24-70mm f/3.5-5.6"}, 2010 {0x50,0x48,0x56,0x7C,0x30,0x3C,0x54,0x06,0x00,0x00,0x00, "Nikon", "JBA702AA", "IX-Nikkor 60-180mm f/4-5.6"}, 2011 // "JBA703AC" "IX-Nikkor 20-60 mm f/3.5-5.6"; 2012 //51 2013 //52 2014 {0x53,0x48,0x60,0x80,0x24,0x24,0x57,0x02,0x00,0x00,0x00, "Nikon", "JAA762DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, 2015 {0x53,0x48,0x60,0x80,0x24,0x24,0x60,0x02,0x00,0x00,0x00, "Nikon", "JAA762DA", "AF Zoom-Nikkor 80-200mm f/2.8D ED"}, 2016 {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"}, 2017 {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"}, 2018 //55 2019 {0x56,0x48,0x5C,0x8E,0x30,0x3C,0x5A,0x02,0x00,0x00,0x00, "Nikon", "JAA764DA", "AF Zoom-Nikkor 70-300mm f/4-5.6D ED"}, 2020 //57 2021 //58 2022 {0x59,0x48,0x98,0x98,0x24,0x24,0x5D,0x02,0x07,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED"}, 2023 {0x59,0x48,0x98,0x98,0x24,0x24,0xF1,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-14E"}, 2024 {0x59,0x48,0x98,0x98,0x24,0x24,0xE1,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-17E"}, 2025 {0x59,0x48,0x98,0x98,0x24,0x24,0xF2,0x02,0x0F,0x00,0x00, "Nikon", "JAA524DA", "AF-S Nikkor 400mm f/2.8D IF-ED + TC-20E"}, 2026 {0x5A,0x3C,0x3E,0x56,0x30,0x3C,0x5E,0x06,0x00,0x00,0x00, "Nikon", "JBA704AA", "IX-Nikkor 30-60mm f/4-5.6"}, 2027 {0x5B,0x44,0x56,0x7C,0x34,0x3C,0x5F,0x06,0x00,0x00,0x00, "Nikon", "JBA705AA", "IX-Nikkor 60-180mm f/4.5-5.6"}, 2028 // "JBA706AC" "IX-Nikkor 20-60 mm f/3.5-5.6N"; 2029 //5C 2030 {0x5D,0x48,0x3C,0x5C,0x24,0x24,0x63,0x02,0x01,0x00,0x00, "Nikon", "JAA767DA", "AF-S Zoom-Nikkor 28-70mm f/2.8D IF-ED"}, 2031 {0x5E,0x48,0x60,0x80,0x24,0x24,0x64,0x02,0x03,0x00,0x00, "Nikon", "JAA765DA", "AF-S Zoom-Nikkor 80-200mm f/2.8D IF-ED"}, 2032 {0x5F,0x40,0x3C,0x6A,0x2C,0x34,0x65,0x02,0x00,0x00,0x00, "Nikon", "JAA766DA", "AF Zoom-Nikkor 28-105mm f/3.5-4.5D IF"}, 2033 {0x60,0x40,0x3C,0x60,0x2C,0x3C,0x66,0x02,0x00,0x00,0x00, "Nikon", "JAA769DA", "AF Zoom-Nikkor 28-80mm f/3.5-5.6D"}, 2034 {0x61,0x44,0x5E,0x86,0x34,0x3C,0x67,0x02,0x00,0x00,0x00, "Nikon", "JAA768DA", "AF Zoom-Nikkor 75-240mm f/4.5-5.6D"}, 2035 //62 69 2036 {0x63,0x48,0x2B,0x44,0x24,0x24,0x68,0x02,0x01,0x00,0x00, "Nikon", "JAA770DA", "AF-S Nikkor 17-35mm f/2.8D IF-ED"}, 2037 {0x64,0x00,0x62,0x62,0x24,0x24,0x6A,0x02,0x40,0x00,0x00, "Nikon", "JAA628DA", "PC Micro-Nikkor 85mm f/2.8D"}, 2038 {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"}, 2039 {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"}, 2040 {0x67,0x48,0x37,0x62,0x24,0x30,0x6D,0x02,0x00,0x00,0x00, "Nikon", "JAA774DA", "AF Zoom-Nikkor 24-85mm f/2.8-4D IF"}, 2041 {0x68,0x42,0x3C,0x60,0x2A,0x3C,0x6E,0x06,0x00,0x00,0x00, "Nikon", "JAA777DA", "AF Zoom-Nikkor 28-80mm f/3.3-5.6G"}, 2042 {0x69,0x48,0x5C,0x8E,0x30,0x3C,0x6F,0x06,0x00,0x00,0x00, "Nikon", "JAA776DA", "AF Zoom-Nikkor 70-300mm f/4-5.6G"}, 2043 {0x6A,0x48,0x8E,0x8E,0x30,0x30,0x70,0x02,0x03,0x00,0x00, "Nikon", "JAA334DA", "AF-S Nikkor 300mm f/4D IF-ED"}, 2044 {0x6B,0x48,0x24,0x24,0x24,0x24,0x71,0x02,0x00,0x00,0x00, "Nikon", "JAA130DA", "AF Nikkor ED 14mm f/2.8D"}, 2045 //6C 72 2046 {0x6D,0x48,0x8E,0x8E,0x24,0x24,0x73,0x02,0x03,0x00,0x00, "Nikon", "JAA335DA", "AF-S Nikkor 300mm f/2.8D IF-ED II"}, 2047 {0x6E,0x48,0x98,0x98,0x24,0x24,0x74,0x02,0x03,0x00,0x00, "Nikon", "JAA525DA", "AF-S Nikkor 400mm f/2.8D IF-ED II"}, 2048 {0x6F,0x3C,0xA0,0xA0,0x30,0x30,0x75,0x02,0x03,0x00,0x00, "Nikon", "JAA526DA", "AF-S Nikkor 500mm f/4D IF-ED II"}, 2049 {0x70,0x3C,0xA6,0xA6,0x30,0x30,0x76,0x02,0x03,0x00,0x00, "Nikon", "JAA527DA", "AF-S Nikkor 600mm f/4D IF-ED II"}, 2050 //71 2051 {0x72,0x48,0x4C,0x4C,0x24,0x24,0x77,0x00,0x00,0x00,0x00, "Nikon", "JAA012AA", "Nikkor 45mm f/2.8 P"}, 2052 //73 2053 {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"}, 2054 {0x75,0x40,0x3C,0x68,0x2C,0x3C,0x79,0x06,0x00,0x00,0x00, "Nikon", "JAA778DA", "AF Zoom-Nikkor 28-100mm f/3.5-5.6G"}, 2055 {0x76,0x58,0x50,0x50,0x14,0x14,0x7A,0x02,0x00,0x00,0x00, "Nikon", "JAA013DA", "AF Nikkor 50mm f/1.8D"}, 2056 {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"}, 2057 {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"}, 2058 {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"}, 2059 {0x7A,0x3C,0x1F,0x37,0x30,0x30,0x7E,0x06,0x01,0x01,0x00, "Nikon", "JAA784DA", "AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED"}, 2060 {0x7B,0x48,0x80,0x98,0x30,0x30,0x80,0x0E,0x03,0x00,0x00, "Nikon", "JAA787DA", "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED"}, 2061 //7C 81 2062 {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"}, 2063 //7E 83 2064 {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"}, 2065 {0x80,0x48,0x1A,0x1A,0x24,0x24,0x85,0x06,0x00,0x00,0x00, "Nikon", "JAA629DA", "AF DX Fisheye-Nikkor 10.5mm f/2.8G ED"}, 2066 {0x81,0x54,0x80,0x80,0x18,0x18,0x86,0x0E,0x03,0x00,0x00, "Nikon", "JAA336DA", "AF-S VR Nikkor 200mm f/2G IF-ED"}, 2067 {0x82,0x48,0x8E,0x8E,0x24,0x24,0x87,0x0E,0x13,0x00,0x00, "Nikon", "JAA337DA", "AF-S VR Nikkor 300mm f/2.8G IF-ED"}, 2068 {0x83,0x00,0xB0,0xB0,0x5A,0x5A,0x88,0x04,0x00,0x00,0x00, "Nikon", "", "FSA-L2, EDG 65, 800mm F13 G"}, 2069 //84 2070 //85 2071 //86 2072 //87 2073 //88 2074 {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"}, 2075 {0x8A,0x54,0x6A,0x6A,0x24,0x24,0x8C,0x0E,0x53,0x00,0x00, "Nikon", "JAA630DA", "AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED"}, 2076 {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"}, 2077 //{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. 2078 {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"}, 2079 {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"}, 2080 {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"}, 2081 //8E 90 2082 {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"}, 2083 {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"}, 2084 //91 93 2085 {0x92,0x48,0x24,0x37,0x24,0x24,0x94,0x06,0x01,0x00,0x00, "Nikon", "JAA801DA", "AF-S Zoom-Nikkor 14-24mm f/2.8G ED"}, 2086 {0x93,0x48,0x37,0x5C,0x24,0x24,0x95,0x06,0x01,0x00,0x00, "Nikon", "JAA802DA", "AF-S Zoom-Nikkor 24-70mm f/2.8G ED"}, 2087 {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"}, 2088 {0x95,0x4C,0x37,0x37,0x2C,0x2C,0x97,0x02,0x00,0x00,0x00, "Nikon", "JAA631DA", "PC-E Nikkor 24mm f/3.5D ED"}, 2089 {0x95,0x00,0x37,0x37,0x2C,0x2C,0x97,0x06,0x00,0x00,0x00, "Nikon", "JAA631DA", "PC-E Nikkor 24mm f/3.5D ED"}, 2090 {0x96,0x48,0x98,0x98,0x24,0x24,0x98,0x0E,0x13,0x00,0x00, "Nikon", "JAA528DA", "AF-S VR Nikkor 400mm f/2.8G ED"}, 2091 {0x97,0x3C,0xA0,0xA0,0x30,0x30,0x99,0x0E,0x13,0x00,0x00, "Nikon", "JAA529DA", "AF-S VR Nikkor 500mm f/4G ED"}, 2092 {0x98,0x3C,0xA6,0xA6,0x30,0x30,0x9A,0x0E,0x13,0x00,0x00, "Nikon", "JAA530DA", "AF-S VR Nikkor 600mm f/4G ED"}, 2093 {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"}, 2094 {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"}, 2095 {0x9B,0x54,0x4C,0x4C,0x24,0x24,0x9D,0x02,0x00,0x00,0x00, "Nikon", "JAA633DA", "PC-E Micro Nikkor 45mm f/2.8D ED"}, 2096 {0x9B,0x00,0x4C,0x4C,0x24,0x24,0x9D,0x06,0x00,0x00,0x00, "Nikon", "JAA633DA", "PC-E Micro Nikkor 45mm f/2.8D ED"}, 2097 {0x9C,0x54,0x56,0x56,0x24,0x24,0x9E,0x06,0x41,0x00,0x00, "Nikon", "JAA632DA", "AF-S Micro Nikkor 60mm f/2.8G ED"}, 2098 {0x9D,0x54,0x62,0x62,0x24,0x24,0x9F,0x02,0x40,0x00,0x00, "Nikon", "JAA634DA", "PC-E Micro Nikkor 85mm f/2.8D"}, 2099 {0x9D,0x00,0x62,0x62,0x24,0x24,0x9F,0x06,0x40,0x00,0x00, "Nikon", "JAA634DA", "PC-E Micro Nikkor 85mm f/2.8D"}, 2100 {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"}, 2101 {0x9F,0x58,0x44,0x44,0x14,0x14,0xA1,0x06,0x01,0x00,0x00, "Nikon", "JAA132DA", "AF-S DX Nikkor 35mm f/1.8G"}, 2102 {0xA0,0x54,0x50,0x50,0x0C,0x0C,0xA2,0x06,0x01,0x00,0x00, "Nikon", "JAA014DA", "AF-S Nikkor 50mm f/1.4G"}, 2103 {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"}, 2104 {0xA2,0x48,0x5C,0x80,0x24,0x24,0xA4,0x0E,0x13,0x00,0x00, "Nikon", "JAA807DA", "AF-S Nikkor 70-200mm f/2.8G ED VR II"}, 2105 {0xA3,0x3C,0x29,0x44,0x30,0x30,0xA5,0x0E,0x01,0x00,0x00, "Nikon", "JAA806DA", "AF-S Nikkor 16-35mm f/4G ED VR"}, 2106 {0xA4,0x54,0x37,0x37,0x0C,0x0C,0xA6,0x06,0x01,0x00,0x00, "Nikon", "JAA131DA", "AF-S Nikkor 24mm f/1.4G ED"}, 2107 {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"}, 2108 {0xA6,0x48,0x8E,0x8E,0x24,0x24,0xA8,0x0E,0x13,0x00,0x00, "Nikon", "JAA339DA", "AF-S Nikkor 300mm f/2.8G IF-ED VR II"}, 2109 {0xA7,0x4B,0x62,0x62,0x2C,0x2C,0xA9,0x0E,0x41,0x00,0x00, "Nikon", "JAA637DA", "AF-S DX Micro Nikkor 85mm f/3.5G ED VR"}, 2110 {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"}, 2111 {0xA9,0x54,0x80,0x80,0x18,0x18,0xAB,0x0E,0x13,0x00,0x00, "Nikon", "JAA340DA", "AF-S Nikkor 200mm f/2G ED VR II"}, 2112 {0xAA,0x3C,0x37,0x6E,0x30,0x30,0xAC,0x0E,0x01,0x00,0x00, "Nikon", "JAA811DA", "AF-S Nikkor 24-120mm f/4G ED VR"}, 2113 //AB AD -- no lens -- 2114 {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"}, 2115 {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"}, 2116 {0xAE,0x54,0x62,0x62,0x0C,0x0C,0xB0,0x06,0x01,0x00,0x00, "Nikon", "JAA338DA", "AF-S Nikkor 85mm f/1.4G"}, 2117 {0xAF,0x54,0x44,0x44,0x0C,0x0C,0xB1,0x06,0x01,0x00,0x00, "Nikon", "JAA134DA", "AF-S Nikkor 35mm f/1.4G"}, 2118 {0xB0,0x4C,0x50,0x50,0x14,0x14,0xB2,0x06,0x01,0x00,0x00, "Nikon", "JAA015DA", "AF-S Nikkor 50mm f/1.8G"}, 2119 {0xB1,0x48,0x48,0x48,0x24,0x24,0xB3,0x06,0x01,0x00,0x00, "Nikon", "JAA638DA", "AF-S DX Micro Nikkor 40mm f/2.8G"}, 2120 {0xB2,0x48,0x5C,0x80,0x30,0x30,0xB4,0x0E,0x01,0x00,0x00, "Nikon", "JAA815DA", "AF-S Nikkor 70-200mm f/4G ED VR"}, 2121 {0xB3,0x4C,0x62,0x62,0x14,0x14,0xB5,0x06,0x01,0x00,0x00, "Nikon", "JAA341DA", "AF-S Nikkor 85mm f/1.8G"}, 2122 {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"}, 2123 {0xB5,0x4C,0x3C,0x3C,0x14,0x14,0xB7,0x06,0x01,0x00,0x00, "Nikon", "JAA135DA", "AF-S Nikkor 28mm f/1.8G"}, 2124 {0xB6,0x3C,0xB0,0xB0,0x3C,0x3C,0xB8,0x0E,0x01,0x00,0x00, "Nikon", "JAA531DA", "AF-S VR Nikkor 800mm f/5.6E FL ED"}, 2125 {0xB6,0x3C,0xB0,0xB0,0x3C,0x3C,0xB8,0x4E,0x01,0x00,0x00, "Nikon", "JAA531DA", "AF-S VR Nikkor 800mm f/5.6E FL ED"}, 2126 {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"}, 2127 {0xB8,0x40,0x2D,0x44,0x2C,0x34,0xBA,0x06,0x01,0x00,0x00, "Nikon", "JAA818DA", "AF-S Nikkor 18-35mm f/3.5-4.5G ED"}, 2128 {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"}, 2129 {0xA1,0x54,0x55,0x55,0x0C,0x0C,0xBC,0x06,0x01,0x00,0x01, "Nikon", "JAA136DA", "AF-S Nikkor 58mm f/1.4G"}, 2130 {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"}, 2131 {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"}, 2132 {0xA5,0x4C,0x44,0x44,0x14,0x14,0xC0,0x06,0x01,0x00,0x01, "Nikon", "JAA137DA", "AF-S Nikkor 35mm f/1.8G ED"}, 2133 {0xA6,0x48,0x98,0x98,0x24,0x24,0xC1,0x0E,0x01,0x00,0x01, "Nikon", "JAA532DA", "AF-S Nikkor 400mm f/2.8E FL ED VR"}, 2134 {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"}, 2135 {0xA8,0x48,0x8E,0x8E,0x30,0x30,0xC3,0x4E,0x01,0x00,0x01, "Nikon", "JAA342DA", "AF-S Nikkor 300mm f/4E PF ED VR"}, 2136 {0xA8,0x48,0x8E,0x8E,0x30,0x30,0xC3,0x0E,0x01,0x00,0x01, "Nikon", "JAA342DA", "AF-S Nikkor 300mm f/4E PF ED VR"}, 2137 {0xA9,0x4C,0x31,0x31,0x14,0x14,0xC4,0x06,0x01,0x00,0x01, "Nikon", "JAA138DA", "AF-S Nikkor 20mm f/1.8G ED"}, 2138 {0xAA,0x48,0x37,0x5C,0x24,0x24,0xC5,0x4E,0x01,0x00,0x02, "Nikon", "JAA824DA", "AF-S Nikkor 24-70mm f/2.8E ED VR"}, 2139 {0xAA,0x48,0x37,0x5C,0x24,0x24,0xC5,0x0E,0x01,0x00,0x02, "Nikon", "JAA824DA", "AF-S Nikkor 24-70mm f/2.8E ED VR"}, 2140 {0xAB,0x3C,0xA0,0xA0,0x30,0x30,0xC6,0x4E,0x01,0x00,0x02, "Nikon", "JAA533DA", "AF-S Nikkor 500mm f/4E FL ED VR"}, 2141 {0xAC,0x3C,0xA6,0xA6,0x30,0x30,0xC7,0x4E,0x01,0x00,0x02, "Nikon", "JAA534DA", "AF-S Nikkor 600mm f/4E FL ED VR"}, 2142 {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"}, 2143 {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"}, 2144 {0xAE,0x3C,0x80,0xA0,0x3C,0x3C,0xC9,0x4E,0x01,0x00,0x02, "Nikon", "JAA822DA", "AF-S Nikkor 200-500mm f/5.6E ED VR"}, 2145 {0xAE,0x3C,0x80,0xA0,0x3C,0x3C,0xC9,0x0E,0x01,0x00,0x02, "Nikon", "JAA822DA", "AF-S Nikkor 200-500mm f/5.6E ED VR"}, 2146 {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"}, 2147 {0xA0,0x40,0x2D,0x53,0x2C,0x3C,0xCA,0x0E,0x01,0x00,0x03, "Nikon", "JAA827DA", "AF-P DX Nikkor 18-55mm f/3.5-5.6G"}, 2148 // CB 2149 {0xAF,0x4C,0x37,0x37,0x14,0x14,0xCC,0x06,0x01,0x00,0x03, "Nikon", "JAA139DA", "AF-S Nikkor 24mm f/1.8G ED"}, 2150 {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"}, 2151 {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"}, 2152 {0xA4,0x48,0x5C,0x80,0x24,0x24,0xCF,0x4E,0x01,0x00,0x03, "Nikon", "JAA830DA", "AF-S Nikkor 70-200mm f/2.8E FL ED VR"}, 2153 {0xA4,0x48,0x5C,0x80,0x24,0x24,0xCF,0x0E,0x01,0x00,0x03, "Nikon", "JAA830DA", "AF-S Nikkor 70-200mm f/2.8E FL ED VR"}, 2154 {0xA5,0x54,0x6A,0x6A,0x0C,0x0C,0xD0,0x46,0x01,0x00,0x03, "Nikon", "JAA343DA", "AF-S Nikkor 105mm f/1.4E ED"}, 2155 {0xA5,0x54,0x6A,0x6A,0x0C,0x0C,0xD0,0x06,0x01,0x00,0x03, "Nikon", "JAA343DA", "AF-S Nikkor 105mm f/1.4E ED"}, 2156 {0xA6,0x48,0x2F,0x2F,0x30,0x30,0xD1,0x46,0x01,0x00,0x03, "Nikon", "JAA639DA", "PC Nikkor 19mm f/4E ED"}, 2157 {0xA6,0x48,0x2F,0x2F,0x30,0x30,0xD1,0x06,0x01,0x00,0x03, "Nikon", "JAA639DA", "PC Nikkor 19mm f/4E ED"}, 2158 {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"}, 2159 {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"}, 2160 {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"}, 2161 {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"}, 2162 //A9 D4 2163 //AA D5 2164 {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"}, 2165 {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"}, 2166 {0xAC,0x54,0x3C,0x3C,0x0C,0x0C,0xD7,0x46,0x01,0x00,0x03, "Nikon", "JAA140DA", "AF-S Nikkor 28mm f/1.4E ED"}, 2167 {0xAC,0x54,0x3C,0x3C,0x0C,0x0C,0xD7,0x06,0x01,0x00,0x03, "Nikon", "JAA140DA", "AF-S Nikkor 28mm f/1.4E ED"}, 2168 // 2169 // 2170 // 2171 // 2172 // "AF-S DX Nikkor 18-200mm f/3.5-5.6G ED VR II" 2173 // 2174 {0x01,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00, "Nikon", "JAA90701", "TC-16A"}, 2175 {0x01,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00, "Nikon", "JAA90701", "TC-16A"}, 2176 // 2177 //------------------------------------------------------------------------------ 2178 // Sigma lenses by focal length, first fixed then zoom lenses 2179 //------------------------------------------------------------------------------ 2180 // 2181 {0xFE,0x47,0x00,0x00,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "486556", "4.5mm F2.8 EX DC HSM Circular Fisheye"}, 2182 {0x26,0x48,0x11,0x11,0x30,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "483", "8mm F4 EX Circular Fisheye"}, 2183 {0x79,0x40,0x11,0x11,0x2C,0x2C,0x1C,0x06,0x00,0x00,0x00, "Sigma", "485597", "8mm F3.5 EX Circular Fisheye"}, 2184 {0xDC,0x48,0x19,0x19,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "477554", "10mm F2.8 EX DC HSM Fisheye"}, 2185 {0x02,0x3F,0x24,0x24,0x2C,0x2C,0x02,0x00,0x00,0x00,0x00, "Sigma", "468", "14mm F3.5"}, 2186 {0x48,0x48,0x24,0x24,0x24,0x24,0x4B,0x02,0x01,0x00,0x00, "Sigma", "", "14mm F2.8 EX Aspherical HSM"}, 2187 {0x26,0x48,0x27,0x27,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "476441", "15mm F2.8 EX Diagonal Fisheye"}, 2188 {0xEA,0x48,0x27,0x27,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "15mm F2.8 EX Diagonal Fisheye"}, 2189 //M "Sigma" "410" "18mm F3.5"; 2190 {0x26,0x58,0x31,0x31,0x14,0x14,0x1C,0x02,0x00,0x00,0x00, "Sigma", "411442", "20mm F1.8 EX DG Aspherical RF"}, 2191 {0x79,0x54,0x31,0x31,0x0C,0x0C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "412555", "20mm F1.4 DG HSM | A"}, 2192 {0x26,0x58,0x37,0x37,0x14,0x14,0x1C,0x02,0x00,0x00,0x00, "Sigma", "432447", "24mm F1.8 EX DG Aspherical Macro"}, 2193 {0xE1,0x58,0x37,0x37,0x14,0x14,0x1C,0x02,0x00,0x00,0x00, "Sigma", "432447", "24mm F1.8 EX DG Aspherical Macro"}, 2194 {0x02,0x46,0x37,0x37,0x25,0x25,0x02,0x00,0x00,0x00,0x00, "Sigma", "438", "24mm F2.8 Super Wide II Macro"}, 2195 {0x26,0x58,0x3C,0x3C,0x14,0x14,0x1C,0x02,0x00,0x00,0x00, "Sigma", "440442", "28mm F1.8 EX DG Aspherical Macro"}, 2196 {0x48,0x54,0x3E,0x3E,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "477554", "30mm F1.4 EX DC HSM"}, 2197 {0xF8,0x54,0x3E,0x3E,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "477554", "30mm F1.4 EX DC HSM"}, 2198 {0x91,0x54,0x44,0x44,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "", "35mm F1.4 DG HSM"}, 2199 {0xDE,0x54,0x50,0x50,0x0C,0x0C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "310554", "50mm F1.4 EX DG HSM"}, 2200 {0x88,0x54,0x50,0x50,0x0C,0x0C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "311551", "50mm F1.4 DG HSM | A"}, 2201 {0x02,0x48,0x50,0x50,0x24,0x24,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "Macro 50mm F2.8"}, 2202 {0x32,0x54,0x50,0x50,0x24,0x24,0x35,0x02,0x00,0x00,0x00, "Sigma", "346447", "Macro 50mm F2.8 EX DG"}, 2203 {0xE3,0x54,0x50,0x50,0x24,0x24,0x35,0x02,0x00,0x00,0x00, "Sigma", "", "Macro 50mm F2.8 EX DG"}, 2204 {0x79,0x48,0x5C,0x5C,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "270599", "Macro 70mm F2.8 EX DG"}, 2205 {0x9B,0x54,0x62,0x62,0x0C,0x0C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "85mm F1.4 EX DG HSM"}, 2206 {0x02,0x48,0x65,0x65,0x24,0x24,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "Macro 90mm F2.8"}, 2207 {0x32,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x00,0x02,0x00, "Sigma", "256", "Macro 105mm F2.8 EX DG"}, 2208 {0xE5,0x54,0x6A,0x6A,0x24,0x24,0x35,0x02,0x40,0x00,0x00, "Sigma", "257446", "Macro 105mm F2.8 EX DG"}, 2209 {0x97,0x48,0x6A,0x6A,0x24,0x24,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "Macro 105mm F2.8 EX DG OS HSM"}, 2210 {0x48,0x48,0x76,0x76,0x24,0x24,0x4B,0x06,0x43,0x00,0x00, "Sigma", "104559", "APO Macro 150mm F2.8 EX DG HSM"}, 2211 {0xF5,0x48,0x76,0x76,0x24,0x24,0x4B,0x06,0x43,0x00,0x00, "Sigma", "104559", "APO Macro 150mm F2.8 EX DG HSM"}, 2212 {0x99,0x48,0x76,0x76,0x24,0x24,0x4B,0x0E,0x43,0x00,0x00, "Sigma", "", "APO Macro 150mm F2.8 EX DG OS HSM"}, 2213 {0x48,0x4C,0x7C,0x7C,0x2C,0x2C,0x4B,0x02,0x43,0x00,0x00, "Sigma", "", "APO Macro 180mm F3.5 EX DG HSM"}, 2214 {0x48,0x4C,0x7D,0x7D,0x2C,0x2C,0x4B,0x02,0x43,0x00,0x00, "Sigma", "105556", "APO Macro 180mm F3.5 EX DG HSM"}, 2215 {0x94,0x48,0x7C,0x7C,0x24,0x24,0x4B,0x0E,0x43,0x00,0x00, "Sigma", "", "APO Macro 180mm F2.8 EX DG OS HSM"}, 2216 //M "Sigma" "" "APO 300mm F2.8"; 2217 {0x48,0x54,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x00, "Sigma", "", "APO 300mm F2.8 EX DG HSM"}, 2218 {0xFB,0x54,0x8E,0x8E,0x24,0x24,0x4B,0x02,0x13,0x00,0x00, "Sigma", "195557", "APO 300mm F2.8 EX DG HSM"}, 2219 {0x26,0x48,0x8E,0x8E,0x30,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "APO Tele Macro 300mm F4"}, 2220 {0x02,0x2F,0x98,0x98,0x3D,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 400mm F5.6"}, 2221 {0x26,0x3C,0x98,0x98,0x3C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "APO Tele Macro 400mm F5.6"}, 2222 {0x02,0x37,0xA0,0xA0,0x34,0x34,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 500mm F4.5"}, 2223 {0x48,0x44,0xA0,0xA0,0x34,0x34,0x4B,0x02,0x03,0x00,0x00, "Sigma", "", "APO 500mm F4.5 EX HSM"}, 2224 {0xF1,0x44,0xA0,0xA0,0x34,0x34,0x4B,0x02,0x03,0x00,0x00, "Sigma", "184551", "APO 500mm F4.5 EX DG HSM"}, 2225 {0x02,0x34,0xA0,0xA0,0x44,0x44,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 500mm F7.2"}, 2226 {0x02,0x3C,0xB0,0xB0,0x3C,0x3C,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 800mm F5.6"}, 2227 {0x48,0x3C,0xB0,0xB0,0x3C,0x3C,0x4B,0x02,0x03,0x00,0x00, "Sigma", "", "APO 800mm F5.6 EX HSM"}, 2228 //M "Sigma" "152550" "APO 800mm F5.6 EX DG HSM"; 2229 //M2 B8 B8 49 49 02" "00" "00" "00" "00" "Sigma" "" "APO 1000mm F8.0"; 2230 // 2231 {0x9E,0x38,0x11,0x29,0x34,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "", "8-16mm F4.5-5.6 DC HSM"}, 2232 {0xA1,0x41,0x19,0x31,0x2C,0x2C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "", "10-20mm F3.5 EX DC HSM"}, 2233 {0x48,0x3C,0x19,0x31,0x30,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "201555", "10-20mm F4-5.6 EX DC HSM"}, 2234 {0xF9,0x3C,0x19,0x31,0x30,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "201555", "10-20mm F4-5.6 EX DC HSM"}, 2235 {0x48,0x38,0x1F,0x37,0x34,0x3C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "200558", "12-24mm F4.5-5.6 EX DG Aspherical HSM"}, 2236 {0xF0,0x38,0x1F,0x37,0x34,0x3C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "200558", "12-24mm F4.5-5.6 EX DG Aspherical HSM"}, 2237 {0x96,0x38,0x1F,0x37,0x34,0x3C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "12-24mm F4.5-5.6 II DG HSM"}, 2238 {0x26,0x40,0x27,0x3F,0x2C,0x34,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "15-30mm F3.5-4.5 EX DG Aspherical DF"}, 2239 {0x48,0x48,0x2B,0x44,0x24,0x30,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "17-35mm F2.8-4 EX DG Aspherical HSM"}, 2240 {0x26,0x54,0x2B,0x44,0x24,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "17-35mm F2.8-4 EX Aspherical"}, 2241 {0x9D,0x48,0x2B,0x50,0x24,0x24,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "17-50mm F2.8 EX DC OS HSM"}, 2242 {0x8F,0x48,0x2B,0x50,0x24,0x24,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "17-50mm F2.8 EX DC OS HSM"}, 2243 {0x7A,0x47,0x2B,0x5C,0x24,0x34,0x4B,0x06,0x00,0x00,0x00, "Sigma", "689599", "17-70mm F2.8-4.5 DC Macro Asp. IF HSM"}, 2244 {0x7A,0x48,0x2B,0x5C,0x24,0x34,0x4B,0x06,0x00,0x00,0x00, "Sigma", "689599", "17-70mm F2.8-4.5 DC Macro Asp. IF HSM"}, 2245 {0x7F,0x48,0x2B,0x5C,0x24,0x34,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "17-70mm F2.8-4.5 DC Macro Asp. IF"}, 2246 {0x8E,0x3C,0x2B,0x5C,0x24,0x30,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "17-70mm F2.8-4 DC MACRO OS HSM | C"}, 2247 {0xA0,0x48,0x2A,0x5C,0x24,0x30,0x4B,0x0E,0x00,0x00,0xFE, "Sigma", "", "17-70mm F2.8-4 DC Macro OS HSM"}, 2248 {0x8B,0x4C,0x2D,0x44,0x14,0x14,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "18-35mm F1.8 DC HSM"}, 2249 {0x26,0x40,0x2D,0x44,0x2B,0x34,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "18-35mm F3.5-4.5 Aspherical"}, 2250 {0x26,0x48,0x2D,0x50,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "18-50mm F2.8 EX DC"}, 2251 {0x7F,0x48,0x2D,0x50,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "18-50mm F2.8 EX DC Macro"}, 2252 {0x7A,0x48,0x2D,0x50,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "582593", "18-50mm F2.8 EX DC Macro"}, 2253 {0xF6,0x48,0x2D,0x50,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "582593", "18-50mm F2.8 EX DC Macro"}, 2254 {0xA4,0x47,0x2D,0x50,0x24,0x34,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "", "18-50mm F2.8-4.5 DC OS HSM"}, 2255 {0x26,0x40,0x2D,0x50,0x2C,0x3C,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "18-50mm F3.5-5.6 DC"}, 2256 {0x7A,0x40,0x2D,0x50,0x2C,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "551551", "18-50mm F3.5-5.6 DC HSM"}, 2257 {0x26,0x40,0x2D,0x70,0x2B,0x3C,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "18-125mm F3.5-5.6 DC"}, 2258 {0xCD,0x3D,0x2D,0x70,0x2E,0x3C,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "853556", "18-125mm F3.8-5.6 DC OS HSM"}, 2259 {0x26,0x40,0x2D,0x80,0x2C,0x40,0x1C,0x06,0x00,0x00,0x00, "Sigma", "777555", "18-200mm F3.5-6.3 DC"}, 2260 {0xFF,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "18-200mm F3.5-6.3 DC"}, 2261 {0x7A,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "888558", "18-200mm F3.5-6.3 DC OS HSM"}, 2262 {0xED,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "888558", "18-200mm F3.5-6.3 DC OS HSM"}, 2263 {0x90,0x40,0x2D,0x80,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "", "18-200mm F3.5-6.3 II DC OS HSM"}, 2264 {0xA5,0x40,0x2D,0x88,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "", "18-250mm F3.5-6.3 DC OS HSM"}, 2265 {0x92,0x39,0x2D,0x88,0x2C,0x40,0x4B,0x0E,0x01,0x00,0x00, "Sigma", "", "18-250mm F3.5-6.3 DC OS Macro HSM"}, 2266 {0x26,0x48,0x31,0x49,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "20-40mm F2.8"}, 2267 {0x02,0x3A,0x37,0x50,0x31,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "24-50mm F4-5.6 UC"}, 2268 {0x26,0x48,0x37,0x56,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "547448", "24-60mm F2.8 EX DG"}, 2269 {0xB6,0x48,0x37,0x56,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "547448", "24-60mm F2.8 EX DG"}, 2270 {0xA6,0x48,0x37,0x5C,0x24,0x24,0x4B,0x06,0x01,0x00,0x00, "Sigma", "571559", "24-70mm F2.8 IF EX DG HSM"}, 2271 {0x26,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "24-70mm F2.8 EX DG Macro"}, 2272 {0x67,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "548445", "24-70mm F2.8 EX DG Macro"}, 2273 {0xE9,0x54,0x37,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "548445", "24-70mm F2.8 EX DG Macro"}, 2274 {0x26,0x40,0x37,0x5C,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "24-70mm F3.5-5.6 Aspherical HF"}, 2275 {0x8A,0x3C,0x37,0x6A,0x30,0x30,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "24-105mm F4 DG OS HSM"}, 2276 {0x26,0x54,0x37,0x73,0x24,0x34,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "24-135mm F2.8-4.5"}, 2277 {0x02,0x46,0x3C,0x5C,0x25,0x25,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "28-70mm F2.8"}, 2278 {0x26,0x54,0x3C,0x5C,0x24,0x24,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-70mm F2.8 EX"}, 2279 {0x26,0x48,0x3C,0x5C,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "549442", "28-70mm F2.8 EX DG"}, 2280 {0x79,0x48,0x3C,0x5C,0x24,0x24,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "28-70mm F2.8 EX DG"}, 2281 {0x26,0x48,0x3C,0x5C,0x24,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "634445", "28-70mm F2.8-4 DG"}, 2282 {0x02,0x3F,0x3C,0x5C,0x2D,0x35,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "28-70mm F3.5-4.5 UC"}, 2283 {0x26,0x40,0x3C,0x60,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-80mm F3.5-5.6 Mini Zoom Macro II Aspherical"}, 2284 {0x26,0x40,0x3C,0x65,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-90mm F3.5-5.6 Macro"}, 2285 {0x26,0x48,0x3C,0x6A,0x24,0x30,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-105mm F2.8-4 Aspherical"}, 2286 {0x26,0x3E,0x3C,0x6A,0x2E,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-105mm F3.8-5.6 UC-III Aspherical IF"}, 2287 {0x26,0x40,0x3C,0x80,0x2C,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro"}, 2288 {0x26,0x40,0x3C,0x80,0x2B,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro"}, 2289 {0x26,0x3D,0x3C,0x80,0x2F,0x3D,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-300mm F3.8-5.6 Aspherical"}, 2290 {0x26,0x41,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x00, "Sigma", "795443", "28-300mm F3.5-6.3 DG Macro"}, 2291 {0xE6,0x41,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-300mm F3.5-6.3 DG Macro"}, 2292 {0x26,0x40,0x3C,0x8E,0x2C,0x40,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "28-300mm F3.5-6.3 Macro"}, 2293 {0x02,0x3B,0x44,0x61,0x30,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "35-80mm F4-5.6"}, 2294 {0x02,0x40,0x44,0x73,0x2B,0x36,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "35-135mm F3.5-4.5 a"}, 2295 {0xCC,0x4C,0x50,0x68,0x14,0x14,0x4B,0x06,0x00,0x00,0x00, "Sigma", "", "50-100mm F1.8 DC HSM | A"}, 2296 {0x7A,0x47,0x50,0x76,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "", "50-150mm F2.8 EX APO DC HSM"}, 2297 {0xFD,0x47,0x50,0x76,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "691554", "50-150mm F2.8 EX APO DC HSM II"}, 2298 {0x98,0x48,0x50,0x76,0x24,0x24,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "", "50-150 f/2.8 EX DC APO OS HSM"}, 2299 {0x48,0x3C,0x50,0xA0,0x30,0x40,0x4B,0x02,0x03,0x00,0x00, "Sigma", "736552", "APO 50-500mm F4-6.3 EX HSM"}, 2300 {0x9F,0x37,0x50,0xA0,0x34,0x40,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "", "50-500mm F4.5-6.3 APO DG OS HSM"}, 2301 //M "Sigma" "686550" "50-200mm F4-5.6 DC OS HSM"; 2302 {0x26,0x3C,0x54,0x80,0x30,0x3C,0x1C,0x06,0x00,0x00,0x00, "Sigma", "", "55-200mm F4-5.6 DC"}, 2303 {0x7A,0x3B,0x53,0x80,0x30,0x3C,0x4B,0x06,0x01,0x00,0x00, "Sigma", "", "55-200mm F4-5.6 DC HSM"}, 2304 {0x48,0x54,0x5C,0x80,0x24,0x24,0x4B,0x02,0x00,0x00,0x00, "Sigma", "", "70-200mm F2.8 EX APO IF HSM"}, 2305 {0x7A,0x48,0x5C,0x80,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "", "70-200mm F2.8 EX APO DG Macro HSM II"}, 2306 {0xEE,0x48,0x5C,0x80,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "579555", "70-200mm F2.8 EX APO DG Macro HSM II"}, 2307 {0x9C,0x48,0x5C,0x80,0x24,0x24,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "", "70-200mm F2.8 EX DG OS HSM"}, 2308 {0x02,0x46,0x5C,0x82,0x25,0x25,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "70-210mm F2.8 APO"}, 2309 {0x02,0x40,0x5C,0x82,0x2C,0x35,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "APO 70-210mm F3.5-4.5"}, 2310 {0x26,0x3C,0x5C,0x82,0x30,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "70-210mm F4-5.6 UC-II"}, 2311 {0x26,0x3C,0x5C,0x8E,0x30,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "70-300mm F4-5.6 DG Macro"}, 2312 {0x56,0x3C,0x5C,0x8E,0x30,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "70-300mm F4-5.6 APO Macro Super II"}, 2313 {0xE0,0x3C,0x5C,0x8E,0x30,0x3C,0x4B,0x06,0x00,0x00,0x00, "Sigma", "508555", "APO 70-300mm F4-5.6 DG Macro"}, 2314 {0xA3,0x3C,0x5C,0x8E,0x30,0x3C,0x4B,0x0E,0x00,0x00,0x00, "Sigma", "572556", "70-300mm F4-5.6 DG OS"}, 2315 {0x02,0x37,0x5E,0x8E,0x35,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "75-300mm F4.5-5.6 APO"}, 2316 {0x02,0x3A,0x5E,0x8E,0x32,0x3D,0x02,0x00,0x00,0x00,0x00, "Sigma", "", "75-300mm F4.0-5.6"}, 2317 {0x77,0x44,0x61,0x98,0x34,0x3C,0x7B,0x0E,0x03,0x00,0x00, "Sigma", "", "80-400mm f4.5-5.6 EX OS"}, 2318 {0x77,0x44,0x60,0x98,0x34,0x3C,0x7B,0x0E,0x03,0x00,0x00, "Sigma", "", "80-400mm f4.5-5.6 APO DG D OS"}, 2319 {0x48,0x48,0x68,0x8E,0x30,0x30,0x4B,0x02,0x03,0x00,0x00, "Sigma", "134556", "APO 100-300mm F4 EX IF HSM"}, 2320 {0xF3,0x48,0x68,0x8E,0x30,0x30,0x4B,0x02,0x13,0x00,0x00, "Sigma", "134556", "APO 100-300mm F4 EX IF HSM"}, 2321 {0x48,0x54,0x6F,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x00, "Sigma", "", "APO 120-300mm F2.8 EX DG HSM"}, 2322 {0x7A,0x54,0x6E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x00, "Sigma", "135553", "APO 120-300mm F2.8 EX DG HSM"}, 2323 {0xFA,0x54,0x6E,0x8E,0x24,0x24,0x4B,0x02,0x03,0x00,0x00, "Sigma", "135553", "APO 120-300mm F2.8 EX DG HSM"}, 2324 {0xCF,0x38,0x6E,0x98,0x34,0x3C,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "728557", "APO 120-400mm F4.5-5.6 DG OS HSM"}, 2325 {0xC3,0x34,0x68,0x98,0x38,0x40,0x4B,0x4E,0x03,0x00,0x00, "Sigma", "", "100-400mm F5-6.3 DG OS HSM C"}, 2326 {0x8D,0x48,0x6E,0x8E,0x24,0x24,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "", "120-300mm F2.8 DG OS HSM | S"}, 2327 {0x26,0x44,0x73,0x98,0x34,0x3C,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "135-400mm F4.5-5.6 APO Aspherical"}, 2328 {0xCE,0x34,0x76,0xA0,0x38,0x40,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "737559", "APO 150-500mm F5-6.3 DG OS HSM"}, 2329 {0x81,0x34,0x76,0xA6,0x38,0x40,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "", "150-600mm F5-6.3 DG OS HSM Sports"}, 2330 {0x82,0x34,0x76,0xA6,0x38,0x40,0x4B,0x0E,0x03,0x00,0x00, "Sigma", "", "150-600mm F5-6.3 DG OS HSM Contemporary"}, 2331 {0x26,0x40,0x7B,0xA0,0x34,0x40,0x1C,0x02,0x00,0x00,0x00, "Sigma", "", "APO 170-500mm F5-6.3 Aspherical RF"}, 2332 {0xA7,0x49,0x80,0xA0,0x24,0x24,0x4B,0x06,0x03,0x00,0x00, "Sigma", "", "APO 200-500mm F2.8 EX DG"}, 2333 {0x48,0x3C,0x8E,0xB0,0x3C,0x3C,0x4B,0x02,0x03,0x00,0x00, "Sigma", "595555", "APO 300-800mm F5.6 EX DG HSM"}, 2334 // 2335 //------------------------------------------------------------------------------ 2336 // Tamron lenses by focal length, first fixed then zoom lenses 2337 //------------------------------------------------------------------------------ 2338 // 2339 {0x00,0x47,0x25,0x25,0x24,0x24,0x00,0x02,0x00,0x00,0x00, "Tamron", "69E", "SP AF 14mm F/2.8 Aspherical (IF)"}, 2340 {0xE8,0x4C,0x44,0x44,0x14,0x14,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "F012", "SP 35mm F/1.8 Di VC USD"}, 2341 {0xE7,0x4C,0x4C,0x4C,0x14,0x14,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "F013", "SP 45mm F/1.8 Di VC USD"}, 2342 {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"}, 2343 {0x1E,0x5D,0x64,0x64,0x20,0x20,0x13,0x00,0x40,0x00,0x00, "Tamron", "52E", "SP AF 90mm F/2.5"}, 2344 {0x20,0x5A,0x64,0x64,0x20,0x20,0x14,0x00,0x40,0x00,0x00, "Tamron", "152E", "SP AF 90mm F/2.5 Macro"}, 2345 {0x22,0x53,0x64,0x64,0x24,0x24,0xE0,0x02,0x40,0x00,0x00, "Tamron", "72E", "SP AF 90mm F/2.8 Macro 1:1"}, 2346 {0x32,0x53,0x64,0x64,0x24,0x24,0x35,0x02,0x40,0x01,0x00, "Tamron", "172E", "SP AF 90mm F/2.8 Macro 1:1"}, 2347 {0x32,0x53,0x64,0x64,0x24,0x24,0x35,0x02,0x40,0x02,0x00, "Tamron", "272E", "SP AF 90mm F/2.8 Di Macro 1:1"}, 2348 {0xF8,0x55,0x64,0x64,0x24,0x24,0x84,0x06,0x41,0x00,0x00, "Tamron", "272NII", "SP AF 90mm F/2.8 Di Macro 1:1"}, 2349 {0xF8,0x54,0x64,0x64,0x24,0x24,0xDF,0x06,0x41,0x00,0x00, "Tamron", "272NII", "SP AF 90mm F/2.8 Di Macro 1:1"}, 2350 {0xFE,0x54,0x64,0x64,0x24,0x24,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "F004", "SP 90mm F/2.8 Di VC USD MACRO 1:1"}, 2351 {0xE4,0x54,0x64,0x64,0x24,0x24,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "F017", "SP 90mm f/2.8 Di VC USD Macro 1:1"}, 2352 {0x00,0x4C,0x7C,0x7C,0x2C,0x2C,0x00,0x02,0x00,0x00,0x00, "Tamron", "B01", "SP AF 180mm F/3.5 Di Model"}, 2353 {0x21,0x56,0x8E,0x8E,0x24,0x24,0x14,0x00,0x00,0x00,0x00, "Tamron", "60E", "SP AF 300mm F/2.8 LD-IF"}, 2354 {0x27,0x54,0x8E,0x8E,0x24,0x24,0x1D,0x02,0x00,0x00,0x00, "Tamron", "360E", "SP AF 300mm F/2.8 LD-IF"}, 2355 // 2356 {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)"}, 2357 {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)"}, 2358 {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)"}, 2359 {0xE9,0x48,0x27,0x3E,0x24,0x24,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "A012", "SP 15-30mm F/2.8 Di VC USD"}, 2360 {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"}, 2361 {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)"}, 2362 {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)"}, 2363 {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)"}, 2364 {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)"}, 2365 {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)"}, 2366 {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)"}, 2367 {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"}, 2368 {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"}, 2369 {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"}, 2370 {0xE6,0x40,0x2D,0x80,0x2C,0x40,0xDF,0x0E,0x01,0x00,0x00, "Tamron", "B018", "AF 18-200mm f/3.5-6.3 Di II VC"}, 2371 {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"}, 2372 {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 "}, 2373 {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"}, 2374 {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"}, 2375 {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"}, 2376 {0x07,0x40,0x2F,0x44,0x2C,0x34,0x03,0x02,0x00,0x00,0x00, "Tamron", "A10", "AF 19-35mm F/3.5-4.5"}, 2377 {0x07,0x40,0x30,0x45,0x2D,0x35,0x03,0x02,0x00,0x00,0x00, "Tamron", "A10", "AF 19-35mm F/3.5-4.5"}, 2378 {0x00,0x49,0x30,0x48,0x22,0x2B,0x00,0x02,0x00,0x00,0x00, "Tamron", "166D", "SP AF 20-40mm F/2.7-3.5"}, 2379 {0x0E,0x4A,0x31,0x48,0x23,0x2D,0x0E,0x02,0x00,0x00,0x00, "Tamron", "166D", "SP AF 20-40mm F/2.7-3.5"}, 2380 //M "Tamron" "266D" "SP AF 20-40mm F/2.7-3.5 Aspherical-IF"; 2381 {0xFE,0x48,0x37,0x5C,0x24,0x24,0xDF,0x0E,0x01,0x00,0x00, "Tamron", "A007", "SP 24-70mm F/2.8 Di VC USD"}, 2382 //M "Tamron" "73D" "AF 24-70mm F/3.3-5.6 Aspherical"; 2383 {0xCE,0x47,0x37,0x5C,0x25,0x25,0xDF,0x4E,0x00,0x00,0x00, "Tamron", "A032", "SP 24-70mm F/2.8 Di VC USD G2"}, 2384 {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"}, 2385 //M "Tamron" "159D" "AF 28-70mm F/3.5-4.5"; 2386 //M "Tamron" "259D" "AF 28-70mm F/3.5-4.5"; 2387 {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"}, 2388 {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"}, 2389 {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"}, 2390 {0x10,0x3D,0x3C,0x60,0x2C,0x3C,0xD2,0x02,0x00,0x00,0x00, "Tamron", "177D", "AF 28-80mm F/3.5-5.6 Aspherical"}, 2391 {0x45,0x3D,0x3C,0x60,0x2C,0x3C,0x48,0x02,0x00,0x00,0x00, "Tamron", "177D", "AF 28-80mm F/3.5-5.6 Aspherical"}, 2392 {0x00,0x48,0x3C,0x6A,0x24,0x24,0x00,0x02,0x00,0x00,0x00, "Tamron", "176D", "SP AF 28-105mm F/2.8 LD Aspherical IF"}, 2393 //M "Tamron" "276D" "SP AF 28-105mm F/2.8 LD Aspherical IF"; 2394 //M "Tamron" "179D" "AF 28-105mm F4.0-5.6 IF"; 2395 {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"}, 2396 //M "Tamron" "471D" "AF 28-200mm F/3.8-5.6 Aspherical IF Super2 Silver"; 2397 {0x0B,0x3E,0x3D,0x7F,0x2F,0x3D,0x0E,0x00,0x00,0x00,0x00, "Tamron", "71D", "AF 28-200mm F/3.8-5.6"}, 2398 {0x0B,0x3E,0x3D,0x7F,0x2F,0x3D,0x0E,0x02,0x00,0x00,0x00, "Tamron", "171D", "AF 28-200mm F/3.8-5.6D"}, 2399 {0x12,0x3D,0x3C,0x80,0x2E,0x3C,0xDF,0x02,0x00,0x00,0x00, "Tamron", "271D", "AF 28-200mm F/3.8-5.6 LD Aspherical (IF)"}, 2400 {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)"}, 2401 {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)"}, 2402 //M "Tamron" "285D" "AF 28-300mm F/3.8-6.3 LD Aspherical IF Silver"; 2403 {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"}, 2404 //M "Tamron" "63D" "AF 35-90mm F/4-5.6"; 2405 //M "Tamron" "65D" "SP AF 35-105mm F/2.8 Aspherical"; 2406 //M "Tamron" "" "AF 35-135mm F/3.5-4.5"; 2407 {0x00,0x47,0x53,0x80,0x30,0x3C,0x00,0x06,0x00,0x00,0x00, "Tamron", "A15", "AF 55-200mm F/4-5.6 Di II LD"}, 2408 {0xF7,0x53,0x5C,0x80,0x24,0x24,0x84,0x06,0x01,0x00,0x00, "Tamron", "A001", "SP AF 70-200mm F/2.8 Di LD (IF) Macro"}, 2409 {0xFE,0x53,0x5C,0x80,0x24,0x24,0x84,0x06,0x01,0x00,0x00, "Tamron", "A001", "SP AF 70-200mm F/2.8 Di LD (IF) Macro"}, 2410 {0xF7,0x53,0x5C,0x80,0x24,0x24,0x40,0x06,0x01,0x00,0x00, "Tamron", "A001", "SP AF 70-200mm F/2.8 Di LD (IF) Macro"}, 2411 {0xFE,0x54,0x5C,0x80,0x24,0x24,0xDF,0x0E,0x01,0x00,0x00, "Tamron", "A009", "SP 70-200mm F/2.8 Di VC USD"}, 2412 //M "Tamron" "67D" "SP AF 70-210mm f/2.8 LD"; 2413 //M "Tamron" "" "AF 70-210mm F/3.5-4.5"; 2414 //M "Tamron" "158D" "AF 70-210mm F/4-5.6"; 2415 //M "Tamron" "258D" "AF 70-210mm F/4-5.6"; 2416 //M "Tamron" "172D" "AF 70-300mm F/4-5.6"; 2417 //M "Tamron" "472D" "AF 70-300mm F/4-5.6 LD"; 2418 {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"}, 2419 {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"}, 2420 {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"}, 2421 {0xF1,0x47,0x5C,0x8E,0x30,0x3C,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "A005", "SP 70-300mm F4-5.6 Di VC USD"}, 2422 //M "Tamron" "872D" "AF 75-300mm F/4-5.6 LD"; 2423 //M "Tamron" "278D" "AF 80-210mm F/4.5-5.6"; 2424 //M "Tamron" "62D" "AF 90-300mm F/4.5-5.6"; 2425 //M "Tamron" "186D" "AF 100-300mm F/5-6.3"; 2426 {0xEB,0x40,0x76,0xA6,0x38,0x40,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "A011", "SP AF 150-600mm F/5-6.3 VC USD"}, 2427 {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"}, 2428 {0x20,0x3C,0x80,0x98,0x3D,0x3D,0x1E,0x02,0x00,0x00,0x00, "Tamron", "75D", "AF 200-400mm F/5.6 LD IF"}, 2429 {0x00,0x3E,0x80,0xA0,0x38,0x3F,0x00,0x02,0x00,0x00,0x00, "Tamron", "A08", "SP AF 200-500mm F/5-6.3 Di LD (IF)"}, 2430 {0x00,0x3F,0x80,0xA0,0x38,0x3F,0x00,0x02,0x00,0x00,0x00, "Tamron", "A08", "SP AF 200-500mm F/5-6.3 Di"}, 2431 // 2432 //------------------------------------------------------------------------------ 2433 // Tokina Lenses by focal length, first fixed then zoom lenses 2434 //------------------------------------------------------------------------------ 2435 // 2436 {0x00,0x40,0x2B,0x2B,0x2C,0x2C,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 17 AF PRO (AF 17mm f/3.5)"}, 2437 {0x00,0x47,0x44,0x44,0x24,0x24,0x00,0x06,0x40,0x00,0x00, "Tokina", "T303503", "AT-X M35 PRO DX (AF 35mm f/2.8 Macro)"}, 2438 {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)"}, 2439 {0x27,0x48,0x8E,0x8E,0x30,0x30,0x1D,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 304 AF (AF 300mm f/4.0)"}, 2440 {0x00,0x54,0x8E,0x8E,0x24,0x24,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 300 AF PRO (AF 300mm f/2.8)"}, 2441 {0x12,0x3B,0x98,0x98,0x3D,0x3D,0x09,0x00,0x00,0x00,0x00, "Tokina", "", "AT-X 400 AF SD (AF 400mm f/5.6)"}, 2442 // 2443 {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)"}, 2444 {0x00,0x48,0x1C,0x29,0x24,0x24,0x00,0x06,0x00,0x00,0x00, "Tokina", "T4111603", "AT-X 116 PRO DX (AF 11-16mm f/2.8)"}, 2445 {0x7A,0x48,0x1C,0x29,0x24,0x24,0x7E,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 116 PRO DX II (AF 11-16mm f/2.8)"}, 2446 {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)"}, 2447 {0x00,0x3C,0x1F,0x37,0x30,0x30,0x00,0x06,0x00,0x00,0x00, "Tokina", "T4122403", "AT-X 124 AF PRO DX (AF 12-24mm f/4)"}, 2448 {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)"}, 2449 {0x7A,0x3C,0x1F,0x3C,0x30,0x30,0x7E,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 12-28 PRO DX (AF 12-28mm F/4)"}, 2450 {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)"}, 2451 {0x00,0x48,0x29,0x50,0x24,0x24,0x00,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 165 PRO DX (AF 16-50mm f/2.8)"}, 2452 {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)"}, 2453 {0x00,0x3C,0x2B,0x44,0x30,0x30,0x00,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 17-35 F4 PRO FX (AF 17-35mm f/4)"}, 2454 {0x2F,0x40,0x30,0x44,0x2C,0x34,0x29,0x02,0x00,0x02,0x00, "Tokina", "", "AF 193 (AF 19-35mm f/3.5-4.5)"}, 2455 {0x2F,0x48,0x30,0x44,0x24,0x24,0x29,0x02,0x00,0x02,0x00, "Tokina", "", "AT-X 235 AF PRO (AF 20-35mm f/2.8)"}, 2456 //M "Tokina" "" "AF 235 (AF 20-35mm f/3.5-4.5)" 2457 {0x2F,0x40,0x30,0x44,0x2C,0x34,0x29,0x02,0x00,0x01,0x00, "Tokina", "", "AF 235 II (AF 20-35mm f/3.5-4.5)"}, 2458 //M "Tokina" "" "AT-X 240 AF (AF 24-40mm f/2.8)" 2459 {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)"}, 2460 {0x00,0x40,0x37,0x80,0x2C,0x3C,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 242 AF (AF 24-200mm f/3.5-5.6)"}, 2461 {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)"}, 2462 {0x25,0x48,0x3C,0x5C,0x24,0x24,0x1B,0x02,0x00,0x01,0x00, "Tokina", "", "AT-X 287 AF PRO SV (AF 28-70mm f/2.8)"}, 2463 {0x07,0x48,0x3C,0x5C,0x24,0x24,0x03,0x00,0x00,0x00,0x00, "Tokina", "", "AT-X 287 AF (AF 28-70mm f/2.8)"}, 2464 {0x07,0x47,0x3C,0x5C,0x25,0x35,0x03,0x00,0x00,0x00,0x00, "Tokina", "", "AF 287 SD (AF 28-70mm f/2.8-4.5)"}, 2465 {0x07,0x40,0x3C,0x5C,0x2C,0x35,0x03,0x00,0x00,0x00,0x00, "Tokina", "", "AF 270 II (AF 28-70mm f/3.5-4.5)"}, 2466 {0x00,0x48,0x3C,0x60,0x24,0x24,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 280 AF PRO (AF 28-80mm f/2.8)"}, 2467 //M "Tokina" "" "AF 280 II EMZ (AF 28-80mm f/3.5-5.6)" 2468 //M "Tokina" "" "AF 205 (AF 28-105mm f/3.5-4.5)" 2469 //M "Tokina" "" "AF 282 (AF 28-200mm 3.5-5.6)" 2470 //M "Tokina" "" "AF 282 EMZ II (AF 28-210mm f/4.2-6.5)" 2471 //M "Tokina" "" "AF 370 (AF 35-70mm f/3.5-4.6)" 2472 //M "Tokina" "" "AF 370 II (AF 35-70mm f/3.5-4.6)" 2473 {0x25,0x44,0x44,0x8E,0x34,0x42,0x1B,0x02,0x00,0x00,0x00, "Tokina", "", "AF 353 (AF 35-300mm f/4.5-6.7)"}, 2474 {0x00,0x48,0x50,0x72,0x24,0x24,0x00,0x06,0x00,0x00,0x00, "Tokina", "", "AT-X 535 PRO DX (AF 50-135mm f/2.8)"}, 2475 {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)"}, 2476 {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)"}, 2477 //M "Tokina" "" "AF 745 (AF 70-210mm f/4.5)" 2478 //M "Tokina" "" "AF 210 (AF 70-210mm f/4.0-5.6)" 2479 //M "Tokina" "" "AF 210 II SD (AF 70-210mm f/4.0-5.6)" 2480 {0x12,0x44,0x5E,0x8E,0x34,0x3C,0x09,0x00,0x00,0x00,0x00, "Tokina", "", "AF 730 (AF 75-300mm F4.5-5.6)"}, 2481 //M "Tokina" "" "AF 730 II (AF 75-300mm f/4.5-5.6)" 2482 {0x14,0x54,0x60,0x80,0x24,0x24,0x0B,0x00,0x00,0x00,0x00, "Tokina", "", "AT-X 828 AF (AF 80-200mm f/2.8)"}, 2483 {0x24,0x54,0x60,0x80,0x24,0x24,0x1A,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 828 AF PRO (AF 80-200mm f/2.8)"}, 2484 //M "Tokina" "" "AT-X 840 AF (AF 80-400mm f/4.5-5.6)" 2485 {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)"}, 2486 {0x00,0x44,0x60,0x98,0x34,0x3C,0x00,0x02,0x00,0x00,0x00, "Tokina", "", "AT-X 840 D (AF 80-400mm f/4.5-5.6)"}, 2487 {0x14,0x48,0x68,0x8E,0x30,0x30,0x0B,0x00,0x00,0x00,0x00, "Tokina", "", "AT-X 340 AF (AF 100-300mm f/4)"}, 2488 //M "Tokina" "" "AT-X 340 AF-II (AF 100-300mm f/4)" 2489 //M "Tokina" "" "AF 130 EMZ II (AF 100-300mm f/5.6-6.7)" 2490 //M "Tokina" "" "AF 140 EMZ (AF 100-400mm f/4.5-6.3)" 2491 // 2492 //------------------------------------------------------------------------------ 2493 // Lenses from various other brands 2494 //------------------------------------------------------------------------------ 2495 // 2496 {0x06,0x3F,0x68,0x68,0x2C,0x2C,0x06,0x00,0x00,0x00,0x00, "Cosina", "", "AF 100mm F3.5 Macro"}, 2497 {0x07,0x36,0x3D,0x5F,0x2C,0x3C,0x03,0x00,0x00,0x00,0x00, "Cosina", "", "AF Zoom 28-80mm F3.5-5.6 MC Macro"}, 2498 {0x07,0x46,0x3D,0x6A,0x25,0x2F,0x03,0x00,0x00,0x00,0x00, "Cosina", "", "AF Zoom 28-105mm F2.8-3.8 MC"}, 2499 //M "Cosina" "" "AF Zoom 28-210mm F3.5-5.6"; 2500 //M "Cosina" "" "AF Zoom 28-210mm F4.2-6.5 Aspherical IF"; 2501 //M "Cosina" "" "AF Zoom 28-300mm F4.0-6.3"; 2502 //M "Cosina" "" "AF Zoom 70-210mm F2.8-4.0"; 2503 {0x12,0x36,0x5C,0x81,0x35,0x3D,0x09,0x00,0x00,0x00,0x00, "Cosina", "", "AF Zoom 70-210mm F4.5-5.6 MC Macro"}, 2504 {0x12,0x39,0x5C,0x8E,0x34,0x3D,0x08,0x02,0x00,0x00,0x00, "Cosina", "", "AF Zoom 70-300mm F4.5-5.6 MC Macro"}, 2505 {0x12,0x3B,0x68,0x8D,0x3D,0x43,0x09,0x02,0x00,0x00,0x00, "Cosina", "", "AF Zoom 100-300mm F5.6-6.7 MC Macro"}, 2506 //M "Cosina" "" "AF Zoom 100-400mm F5.6-6.7 MC"; 2507 // 2508 {0x12,0x38,0x69,0x97,0x35,0x42,0x09,0x02,0x00,0x00,0x00, "Promaster", "", "Spectrum 7 100-400mm 1:4.5-6.7"}, 2509 // 2510 {0x00,0x40,0x31,0x31,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "BA295AN", "Color Skopar 20mm F3.5 SLII Aspherical"}, 2511 {0x00,0x48,0x3C,0x3C,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "", "Color Skopar 28mm F2.8 SL II"}, 2512 {0x00,0x54,0x48,0x48,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "BA229DN", "Ultron 40mm F2 SLII Aspherical"}, 2513 {0x00,0x54,0x55,0x55,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "BA239BN", "Nokton 58mm F1.4 SLII"}, 2514 {0x00,0x40,0x64,0x64,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00, "Voigtlander", "", "APO-Lanthar 90mm F3.5 SLII Close Focus"}, 2515 // 2516 {0x00,0x40,0x2D,0x2D,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 3,5/18 ZF.2"}, 2517 {0x00,0x48,0x32,0x32,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 2,8/21 ZF.2"}, 2518 {0x00,0x54,0x38,0x38,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 2/25 ZF.2"}, 2519 {0x00,0x54,0x3C,0x3C,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 2/28 ZF.2"}, 2520 {0x00,0x54,0x44,0x44,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 1.4/35 ZF.2"}, 2521 {0x00,0x54,0x44,0x44,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Distagon T* 2/35 ZF.2"}, 2522 {0x00,0x54,0x50,0x50,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Planar T* 1,4/50 ZF.2"}, 2523 {0x00,0x54,0x50,0x50,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Makro-Planar T* 2/50 ZF.2"}, 2524 {0x00,0x54,0x62,0x62,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Planar T* 1,4/85 ZF.2"}, 2525 {0x00,0x54,0x68,0x68,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Makro-Planar T* 2/100 ZF.2"}, 2526 {0x00,0x54,0x72,0x72,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Carl Zeiss", "", "Apo Sonnar T* 2/135 ZF.2"}, 2527 {0x00,0x54,0x53,0x53,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Zeiss", "", "Otus 1.4/55"}, 2528 {0x01,0x54,0x62,0x62,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Zeiss", "", "Otus 1.4/85"}, 2529 // " "00" "00" "00" "00" "Zeiss" "" "Milvus 2.8/21" 2530 {0x52,0x54,0x44,0x44,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Zeiss", "", "Milvus 2/35"}, 2531 {0x53,0x54,0x50,0x50,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Zeiss", "", "Milvus 1.4/50"}, 2532 {0x54,0x54,0x50,0x50,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Zeiss", "", "Milvus 2/50M"}, 2533 {0x55,0x54,0x62,0x62,0x0C,0x0C,0x00,0x00,0x00,0x00,0x00, "Zeiss", "", "Milvus 1.4/85"}, 2534 {0x56,0x54,0x68,0x68,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Zeiss", "", "Milvus 2/100M"}, 2535 // 2536 {0x00,0x54,0x56,0x56,0x30,0x30,0x00,0x00,0x00,0x00,0x00, "Coastal Optical Systems", "", "60mm 1:4 UV-VIS-IR Macro Apo"}, 2537 // 2538 {0xBF,0x4E,0x26,0x26,0x1E,0x1E,0x01,0x04,0x00,0x00,0x00, "Irix", "", "15mm f/2.4 Firefly"}, 2539 {0xBF,0x3C,0x1B,0x1B,0x30,0x30,0x01,0x04,0x00,0x00,0x00, "Irix", "", "11mm f/4.0 Blackstone/Firefly"}, 2540 // 2541 {0x4A,0x40,0x11,0x11,0x2C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "8mm f/3.5 Fish-Eye CS"}, 2542 {0x4A,0x48,0x24,0x24,0x24,0x0C,0x4D,0x02,0x00,0x02,0x00, "Samyang", "", "10mm f/2.8 ED AS NCS CS"}, 2543 {0x4A,0x48,0x1E,0x1E,0x24,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "12mm f/2.8 ED AS NCS Fish-eye"}, 2544 {0x4A,0x4C,0x24,0x24,0x1E,0x6C,0x4D,0x06,0x00,0x00,0x00, "Samyang", "", "14mm f/2.4 Premium"}, 2545 {0x4A,0x48,0x24,0x24,0x24,0x0C,0x4D,0x02,0x00,0x01,0x00, "Samyang", "", "AE 14mm f/2.8 ED AS IF UMC"}, 2546 {0x4A,0x54,0x29,0x29,0x18,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "16mm F2.0 ED AS UMC CS"}, 2547 {0x4A,0x60,0x36,0x36,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "24mm f/1.4 ED AS UMC"}, 2548 {0x4A,0x60,0x44,0x44,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "35mm f/1.4 AS UMC"}, 2549 {0x4A,0x60,0x62,0x62,0x0C,0x0C,0x4D,0x02,0x00,0x00,0x00, "Samyang", "", "AE 85mm f/1.4 AS IF UMC"}, 2550 // 2551 {0x9A,0x4C,0x50,0x50,0x14,0x14,0x9C,0x06,0x00,0x00,0x00, "Yongnuo", "", "YN50mm F1.8N"}, 2552 // 2553 {0x02,0x40,0x44,0x5C,0x2C,0x34,0x02,0x00,0x00,0x00,0x00, "Exakta", "", "AF 35-70mm 1:3.5-4.5 MC"}, 2554 {0x07,0x3E,0x30,0x43,0x2D,0x35,0x03,0x00,0x00,0x00,0x00, "Soligor", "", "AF Zoom 19-35mm 1:3.5-4.5 MC"}, 2555 {0x03,0x43,0x5C,0x81,0x35,0x35,0x02,0x00,0x00,0x00,0x00, "Soligor", "", "AF C/D Zoom UMCS 70-210mm 1:4.5"}, 2556 {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"}, 2557 {0x12,0x36,0x69,0x97,0x35,0x42,0x09,0x00,0x00,0x00,0x00, "Soligor", "", "AF Zoom 100-400mm 1:4.5-6.7 MC"}, 2558 // 2559 {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, "Manual Lens", "", "No CPU"}, 2560 {0x00,0x00,0x48,0x48,0x53,0x53,0x00,0x01,0x00,0x00,0x00, "Loreo", "", "40mm F11-22 3D Lens in a Cap 9005"}, 2561 // 2562 //------------------------------------------------------------------------------ 2563 // 2564 // Lenses, that were upgraded with custom CPU 2565 // 2566 {0x00,0x47,0x10,0x10,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA604AC", "Fisheye Nikkor 8mm f/2.8 AiS"}, 2567 {0x00,0x47,0x3C,0x3C,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Nikon", "", "Nikkor 28mm f/2.8 AiS"}, 2568 //"00 54 44 44 0C 0C 00" "00" "00" "00" "00" "Nikon" "JAA115AD" "Nikkor 35mm f/1.4 AiS" double ID with Zeiss 2569 {0x00,0x57,0x50,0x50,0x14,0x14,0x00,0x00,0x00,0x00,0x00, "Nikon", "", "Nikkor 50mm f/1.8 AI"}, 2570 {0x00,0x48,0x50,0x50,0x18,0x18,0x00,0x00,0x00,0x00,0x00, "Nikon", "", "Nikkor H 50mm f/2"}, 2571 {0x00,0x48,0x68,0x68,0x24,0x24,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA304AA", "Series E 100mm f/2.8"}, 2572 {0x00,0x4C,0x6A,0x6A,0x20,0x20,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA305AA", "Nikkor 105mm f/2.5 AiS"}, 2573 {0x00,0x48,0x80,0x80,0x30,0x30,0x00,0x00,0x00,0x00,0x00, "Nikon", "JAA313AA", "Nikkor 200mm f/4 AiS"}, 2574 {0x00,0x40,0x11,0x11,0x2C,0x2C,0x00,0x00,0x00,0x00,0x00, "Samyang", "", "8mm f/3.5 Fish-Eye"}, 2575 {0x00,0x58,0x64,0x64,0x20,0x20,0x00,0x00,0x00,0x00,0x00, "Soligor", "", "C/D Macro MC 90mm f/2.5"}, 2576 // https://github.com/Exiv2/exiv2/issues/743 2577 {0xc9,0x48,0x37,0x5c,0x24,0x24,0x4b,0x4e,0x01,0x00,0x00, "Sigma", "", "24-70mm F2.8 DG OS HSM Art"}, 2578 // https://github.com/Exiv2/exiv2/issues/598 , https://github.com/Exiv2/exiv2/pull/891 2579 {0xCF,0x47,0x5C,0x8E,0x31,0x3D,0xDF,0x0E,0x00,0x00,0x00, "Tamron", "A030", "SP 70-300mm F/4-5.6 Di VC USD"}, 2580 // 2581 {0xf4,0x4c,0x7c,0x7c,0x2c,0x2c,0x4b,0x02,0x00,0x00,0x00, "Sigma", "", "APO Macro 180mm F3.5 EX DG HSM"}, 2582 // https://github.com/Exiv2/exiv2/issues/1078 2583 {0x80,0x48,0x1C,0x29,0x24,0x24,0x7A,0x06,0x00,0x00,0x00, "Tokina", "", "atx-i 11-16mm F2.8 CF"}, 2584 // https://github.com/Exiv2/exiv2/issues/1069 2585 {0xc8,0x54,0x44,0x44,0x0d,0x0d,0xdf,0x46,0x00,0x00,0x00, "Tamron", "F045", "SP 35mm f/1.4 Di USD"}, 2586 // https://github.com/Exiv2/exiv2/pull/1105 2587 {0xCB,0x3C,0x2B,0x44,0x24,0x31,0xDF,0x46,0x00,0x00,0x00, "Tamron", "A037", "17-35mm F/2.8-4 Di OSD"}, 2588 // https://github.com/Exiv2/exiv2/issues/1208 2589 {0xC8,0x54,0x62,0x62,0x0C,0x0C,0x4B,0x46,0x00,0x00,0x00, "Sigma", "321550", "85mm F1.4 DG HSM | A"}, 2590 // Always leave this at the end! 2591 {0,0,0,0,0,0,0,0,0,0,0, NULL, NULL, NULL} 2592 }; 2593 //------------------------------------------------------------------------------ 2594 #endif 2595 // 8< - - - 8< do not remove this line >8 - - - >8 2596 2597 /* if no meta obj is provided, try to use the value param that *may* 2598 * be the pre-parsed lensid 2599 */ 2600 if (metadata == 0) 2601 { 2602 const unsigned char vid = (unsigned)value.toLong(0); 2603 2604 /* the 'FMntLens' name is added to the annonymous struct for 2605 * fmountlens[] 2606 * 2607 * remember to name the struct when importing/updating the lens info 2608 * from: 2609 * 2610 * www.rottmerhusen.com/objektives/lensid/files/c-header/fmountlens4.h 2611 */ 2612 const struct FMntLens* pf = fmountlens; 2613 while (pf->lid && pf->lensname) { 2614 if (pf->lid == vid) { 2615 break; 2616 } 2617 ++pf; 2618 } 2619 2620 if (pf->lensname == NULL) { 2621 return os << value; 2622 } 2623 else { 2624 return os << pf->manuf << " " << pf->lensname; 2625 } 2626 } 2627 2628 2629 byte raw[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; 2630 2631 static const char* tags[] = { 2632 "LensIDNumber", 2633 "LensFStops", 2634 "MinFocalLength", 2635 "MaxFocalLength", 2636 "MaxApertureAtMinFocal", 2637 "MaxApertureAtMaxFocal", 2638 "MCUVersion" 2639 }; 2640 2641 const std::string pre = std::string("Exif.") + group + std::string("."); 2642 for (unsigned int i = 0; i < 7; ++i) { 2643 ExifKey key(pre + std::string(tags[i])); 2644 ExifData::const_iterator md = metadata->findKey(key); 2645 if (md == metadata->end() || md->typeId() != unsignedByte || md->count() == 0) { 2646 return os << value; 2647 } 2648 raw[i] = static_cast<byte>(md->toLong()); 2649 } 2650 2651 ExifData::const_iterator md = metadata->findKey(ExifKey("Exif.Nikon3.LensType")); 2652 if (md == metadata->end() || md->typeId() != unsignedByte || md->count() == 0) { 2653 return os << value; 2654 } 2655 raw[7] = static_cast<byte>(md->toLong()); 2656 2657 for (int i = 0; fmountlens[i].lensname != NULL; ++i) { 2658 if ( raw[0] == fmountlens[i].lid ) { 2659 // #1034 2660 const std::string undefined("undefined") ; 2661 const std::string section ("nikon"); 2662 std::ostringstream lensIDStream; 2663 lensIDStream << (int) raw[7]; 2664 if ( Internal::readExiv2Config(section,lensIDStream.str(),undefined) != undefined ) { 2665 return os << Internal::readExiv2Config(section,lensIDStream.str(),undefined); 2666 } 2667 } 2668 2669 if ( raw[0] == fmountlens[i].lid 2670 // stps varies with focal length for some Sigma zoom lenses. 2671 &&(raw[1] == fmountlens[i].stps || strcmp(fmountlens[i].manuf, "Sigma") == 0) 2672 && raw[2] == fmountlens[i].focs 2673 && raw[3] == fmountlens[i].focl 2674 && raw[4] == fmountlens[i].aps 2675 && raw[5] == fmountlens[i].apl 2676 && raw[6] == fmountlens[i].lfw 2677 && raw[7] == fmountlens[i].ltype) { 2678 // Lens found in database 2679 return os << fmountlens[i].manuf << " " << fmountlens[i].lensname; 2680 } 2681 } 2682 // Lens not found in database 2683 return os << value; 2684 #else 2685 return os << value; 2686 #endif // EXV_HAVE_LENSDATA 2687 } 2688 printFocusDistance(std::ostream & os,const Value & value,const ExifData *)2689 std::ostream& Nikon3MakerNote::printFocusDistance(std::ostream& os, 2690 const Value& value, 2691 const ExifData*) 2692 { 2693 std::ios::fmtflags f( os.flags() ); 2694 if (value.count() != 1 || value.typeId() != unsignedByte) { 2695 os << "(" << value << ")"; 2696 os.flags(f); 2697 return os; 2698 } 2699 double dist = 0.01 * pow(10.0, value.toLong()/40.0); 2700 std::ostringstream oss; 2701 oss.copyfmt(os); 2702 os << std::fixed << std::setprecision(2) << dist << " m"; 2703 os.copyfmt(oss); 2704 os.flags(f); 2705 return os; 2706 } 2707 printAperture(std::ostream & os,const Value & value,const ExifData *)2708 std::ostream& Nikon3MakerNote::printAperture(std::ostream& os, 2709 const Value& value, 2710 const ExifData*) 2711 { 2712 std::ios::fmtflags f( os.flags() ); 2713 if (value.count() != 1 || value.typeId() != unsignedByte) { 2714 os << "(" << value << ")"; 2715 os.flags(f); 2716 return os; 2717 } 2718 double aperture = pow(2.0, value.toLong()/24.0); 2719 std::ostringstream oss; 2720 oss.copyfmt(os); 2721 os << std::fixed << std::setprecision(1) << "F" << aperture; 2722 os.copyfmt(oss); 2723 os.flags(f); 2724 return os; 2725 } 2726 printFocal(std::ostream & os,const Value & value,const ExifData *)2727 std::ostream& Nikon3MakerNote::printFocal(std::ostream& os, 2728 const Value& value, 2729 const ExifData*) 2730 { 2731 if (value.count() != 1 || value.typeId() != unsignedByte) { 2732 return os << "(" << value << ")"; 2733 } 2734 double focal = 5.0 * pow(2.0, value.toLong()/24.0); 2735 std::ostringstream oss; 2736 oss.copyfmt(os); 2737 os << std::fixed << std::setprecision(1) << focal << " mm"; 2738 os.copyfmt(oss); 2739 return os; 2740 } 2741 printFStops(std::ostream & os,const Value & value,const ExifData *)2742 std::ostream& Nikon3MakerNote::printFStops(std::ostream& os, 2743 const Value& value, 2744 const ExifData*) 2745 { 2746 std::ios::fmtflags f( os.flags() ); 2747 if (value.count() != 1 || value.typeId() != unsignedByte) { 2748 os << "(" << value << ")"; 2749 os.flags(f); 2750 return os; 2751 } 2752 double fstops = value.toLong()/12.0; 2753 std::ostringstream oss; 2754 oss.copyfmt(os); 2755 os << std::fixed << std::setprecision(1) << "F" << fstops; 2756 os.copyfmt(oss); 2757 os.flags(f); 2758 return os; 2759 } 2760 printExitPupilPosition(std::ostream & os,const Value & value,const ExifData *)2761 std::ostream& Nikon3MakerNote::printExitPupilPosition(std::ostream& os, 2762 const Value& value, 2763 const ExifData*) 2764 { 2765 std::ios::fmtflags f( os.flags() ); 2766 if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0) { 2767 os << "(" << value << ")"; 2768 os.flags(f); 2769 return os; 2770 } 2771 double epp = 2048.0/value.toLong(); 2772 std::ostringstream oss; 2773 oss.copyfmt(os); 2774 os << std::fixed << std::setprecision(1) << epp << " mm"; 2775 os.copyfmt(oss); 2776 os.flags(f); 2777 return os; 2778 } 2779 printFlashFocalLength(std::ostream & os,const Value & value,const ExifData *)2780 std::ostream& Nikon3MakerNote::printFlashFocalLength(std::ostream& os, 2781 const Value& value, 2782 const ExifData*) 2783 { 2784 std::ios::fmtflags f( os.flags() ); 2785 if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { 2786 os << "(" << value << ")"; 2787 os.flags(f); 2788 return os; 2789 } 2790 std::ostringstream oss; 2791 oss.copyfmt(os); 2792 os << std::fixed << std::setprecision(1) << value.toLong() << " mm"; 2793 os.copyfmt(oss); 2794 os.flags(f); 2795 return os; 2796 } 2797 printRepeatingFlashRate(std::ostream & os,const Value & value,const ExifData *)2798 std::ostream& Nikon3MakerNote::printRepeatingFlashRate(std::ostream& os, 2799 const Value& value, 2800 const ExifData*) 2801 { 2802 std::ios::fmtflags f( os.flags() ); 2803 if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { 2804 return os << "(" << value << ")"; 2805 } 2806 std::ostringstream oss; 2807 oss.copyfmt(os); 2808 os << std::fixed << std::setprecision(2) << value.toLong() << " Hz"; 2809 os.copyfmt(oss); 2810 os.flags(f); 2811 return os; 2812 } 2813 printRepeatingFlashCount(std::ostream & os,const Value & value,const ExifData *)2814 std::ostream& Nikon3MakerNote::printRepeatingFlashCount(std::ostream& os, 2815 const Value& value, 2816 const ExifData*) 2817 { 2818 std::ios::fmtflags f( os.flags() ); 2819 if (value.count() != 1 || value.typeId() != unsignedByte || value.toLong() == 0 || value.toLong() == 255) { 2820 return os << "(" << value << ")"; 2821 } 2822 std::ostringstream oss; 2823 oss.copyfmt(os); 2824 os << std::fixed << std::setprecision(2) << value.toLong(); 2825 os.copyfmt(oss); 2826 os.flags(f); 2827 return os; 2828 } 2829 printTimeZone(std::ostream & os,const Value & value,const ExifData *)2830 std::ostream& Nikon3MakerNote::printTimeZone(std::ostream& os, 2831 const Value& value, 2832 const ExifData*) 2833 { 2834 std::ios::fmtflags f( os.flags() ); 2835 if (value.count() != 1 || value.typeId() != signedShort) { 2836 os << "(" << value << ")"; 2837 os.flags(f); 2838 return os; 2839 } 2840 std::ostringstream oss; 2841 oss.copyfmt(os); 2842 char sign = value.toLong() < 0 ? '-' : '+'; 2843 long h = long(std::abs( (int) (value.toFloat()/60.0) ))%24; 2844 long min = long(std::abs( (int) (value.toFloat()-h*60) ))%60; 2845 os << std::fixed << "UTC " << sign << std::setw(2) << std::setfill('0') << h << ":" 2846 << std::setw(2) << std::setfill('0') << min; 2847 os.copyfmt(oss); 2848 os.flags(f); 2849 return os; 2850 } 2851 printPictureControl(std::ostream & os,const Value & value,const ExifData *)2852 std::ostream& Nikon3MakerNote::printPictureControl(std::ostream& os, 2853 const Value& value, 2854 const ExifData*) 2855 { 2856 if (value.count() != 1 || value.typeId() != unsignedByte) { 2857 return os << "(" << value << ")"; 2858 } 2859 long pcval = value.toLong() - 0x80; 2860 std::ostringstream oss; 2861 oss.copyfmt(os); 2862 switch(pcval) 2863 { 2864 case 0: 2865 os << "Normal"; 2866 break; 2867 case 127: 2868 os << "n/a"; 2869 break; 2870 case -127: 2871 os << "User"; 2872 break; 2873 case -128: 2874 os << "Auto"; 2875 break; 2876 default: 2877 os << pcval; 2878 break; 2879 } 2880 os.copyfmt(oss); 2881 return os; 2882 } 2883 print0x009a(std::ostream & os,const Value & value,const ExifData *)2884 std::ostream& Nikon3MakerNote::print0x009a(std::ostream& os, 2885 const Value& value, 2886 const ExifData*) 2887 { 2888 if (value.count() != 2 || value.typeId() != unsignedRational) { 2889 return os << value; 2890 } 2891 float f1 = value.toFloat(0); 2892 float f2 = value.toFloat(1); 2893 return os << f1 << " x " << f2 << " um"; 2894 } 2895 print0x009e(std::ostream & os,const Value & value,const ExifData *)2896 std::ostream& Nikon3MakerNote::print0x009e(std::ostream& os, 2897 const Value& value, 2898 const ExifData*) 2899 { 2900 if (value.count() != 10 || value.typeId() != unsignedShort) { 2901 return os << value; 2902 } 2903 std::string s; 2904 bool trim = true; 2905 for (int i = 9; i >= 0; --i) { 2906 long l = value.toLong(i); 2907 if (i > 0 && l == 0 && trim) continue; 2908 if (l != 0) trim = false; 2909 std::string d = s.empty() ? "" : "; "; 2910 const TagDetails* td = find(nikonRetouchHistory, l); 2911 if (td) { 2912 s = std::string(exvGettext(td->label_)) + d + s; 2913 } 2914 else { 2915 s = std::string(_("Unknown")) + std::string(" (") + toString(l) + std::string(")") + d + s; 2916 } 2917 } 2918 return os << s; 2919 } 2920 printLensId4ZMount(std::ostream & os,const Value & value,const ExifData *)2921 std::ostream& Nikon3MakerNote::printLensId4ZMount(std::ostream& os, 2922 const Value& value, 2923 const ExifData*) 2924 { 2925 if (value.count() != 1 || value.typeId() != unsignedShort) { 2926 return os << "(" << value << ")"; 2927 } 2928 2929 // from https://github.com/exiftool/exiftool/blob/12.12/lib/Image/ExifTool/Nikon.pm#L4646 2930 static const struct ZMntLens {uint16_t lid; const char *manuf, *lensname;} 2931 zmountlens[] = { 2932 {1 , "Nikon", "Nikkor Z 24-70mm f/4 S"}, 2933 {2 , "Nikon", "Nikkor Z 14-30mm f/4 S"}, 2934 {4 , "Nikon", "Nikkor Z 35mm f/1.8 S"}, 2935 {8 , "Nikon", "Nikkor Z 58mm f/0.95 S Noct"}, //IB 2936 {9 , "Nikon", "Nikkor Z 50mm f/1.8 S"}, 2937 {11 , "Nikon", "Nikkor Z DX 16-50mm f/3.5-6.3 VR"}, 2938 {12 , "Nikon", "Nikkor Z DX 50-250mm f/4.5-6.3 VR"}, 2939 {13 , "Nikon", "Nikkor Z 24-70mm f/2.8 S"}, 2940 {14 , "Nikon", "Nikkor Z 85mm f/1.8 S"}, 2941 {15 , "Nikon", "Nikkor Z 24mm f/1.8 S"}, //IB 2942 {16 , "Nikon", "Nikkor Z 70-200mm f/2.8 VR S"}, //IB 2943 {17 , "Nikon", "Nikkor Z 20mm f/1.8 S"}, //IB 2944 {18 , "Nikon", "Nikkor Z 24-200mm f/4-6.3 VR"}, //IB 2945 {21 , "Nikon", "Nikkor Z 50mm f/1.2 S"}, //IB 2946 {22 , "Nikon", "Nikkor Z 24-50mm f/4-6.3"}, //IB 2947 {23 , "Nikon", "Nikkor Z 14-24mm f/2.8 S"}, //IB 2948 {0 , "", ""} //end of array 2949 }; 2950 2951 uint16_t lid = static_cast<uint16_t>(value.toLong()); 2952 for(int i = 0; zmountlens[i].lid != 0; ++i){ 2953 if ( zmountlens[i].lid == lid ) return os << zmountlens[i].manuf << " " << zmountlens[i].lensname; 2954 } 2955 return os << lid; 2956 } 2957 printApertureLd4(std::ostream & os,const Value & value,const ExifData *)2958 std::ostream& Nikon3MakerNote::printApertureLd4(std::ostream& os, 2959 const Value& value, 2960 const ExifData*) 2961 { 2962 if (value.count() != 1 || value.typeId() != unsignedShort) { 2963 return os << "(" << value << ")"; 2964 } 2965 2966 double aperture = pow(2.0, value.toLong()/384.0 - 1.0); 2967 std::ostringstream oss; 2968 oss.copyfmt(os); 2969 os << std::fixed << std::setprecision(1) << "F" << aperture; 2970 os.copyfmt(oss); 2971 return os; 2972 } printFocalLd4(std::ostream & os,const Value & value,const ExifData *)2973 std::ostream& Nikon3MakerNote::printFocalLd4(std::ostream& os, 2974 const Value& value, 2975 const ExifData*) 2976 { 2977 if (value.count() != 1 || value.typeId() != unsignedShort) { 2978 return os << "(" << value << ")"; 2979 } 2980 std::ostringstream oss; 2981 oss.copyfmt(os); 2982 os << std::fixed << std::setprecision(1) << value.toLong() << " mm"; 2983 os.copyfmt(oss); 2984 return os; 2985 } 2986 2987 2988 }} // namespace Internal, Exiv2 2989