exiftool-vendored.exe 12.50.0 → 12.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/bin/exiftool_files/Changes +81 -3
  2. package/bin/exiftool_files/README +3 -3
  3. package/bin/exiftool_files/exiftool.pl +14 -11
  4. package/bin/exiftool_files/fmt_files/kml_track.fmt +3 -3
  5. package/bin/exiftool_files/lib/File/RandomAccess.pm +1 -1
  6. package/bin/exiftool_files/lib/File/RandomAccess.pod +2 -2
  7. package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
  8. package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +1 -1
  9. package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +1 -1
  10. package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +1 -1
  11. package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
  12. package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +1 -1
  13. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +197 -27
  14. package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
  16. package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +1 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
  19. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +4 -4
  20. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +1 -1
  21. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +14 -2
  22. package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +1 -1
  23. package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
  24. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +9 -9
  25. package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
  26. package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +4 -4
  27. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +1 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +1 -1
  29. package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +1 -1
  30. package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +1 -1
  31. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
  32. package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +1 -1
  34. package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +1 -1
  36. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +5 -16
  37. package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +1 -1
  38. package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
  39. package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +1 -1
  40. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +7 -6
  41. package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +1 -1
  42. package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
  43. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +1 -1
  44. package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +1 -1
  45. package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
  46. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +21 -13
  47. package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
  48. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +1 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +12 -6
  51. package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
  52. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +25 -8
  53. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +1 -1
  54. package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
  55. package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +1 -1
  56. package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
  57. package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +1 -1
  58. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  59. package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +1 -1
  60. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +1 -1
  61. package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +1 -1
  62. package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
  63. package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
  64. package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +1 -1
  65. package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +1 -1
  66. package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +2 -1
  67. package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  68. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +1 -1
  69. package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +1 -1
  70. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +35 -8
  71. package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
  72. package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  73. package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
  74. package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +1 -1
  75. package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
  76. package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +2 -2
  77. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  78. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  79. package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +1 -1
  80. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
  81. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +6016 -760
  82. package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +1 -1
  83. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
  84. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
  85. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
  86. package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
  87. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
  88. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sk.pm +1806 -0
  89. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
  90. package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
  91. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  92. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  93. package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +1 -1
  94. package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
  95. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +1 -1
  96. package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +1 -1
  97. package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
  98. package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
  99. package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +1 -1
  100. package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
  101. package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
  102. package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
  103. package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
  104. package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
  105. package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
  106. package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
  107. package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +1 -1
  108. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +1 -1
  109. package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +1 -1
  110. package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +262 -46
  111. package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +1 -1
  112. package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
  113. package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  114. package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
  115. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +687 -280
  116. package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
  117. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +140 -107
  118. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +1 -1
  119. package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
  120. package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +1 -1
  121. package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +1 -1
  122. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +4 -3
  123. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +1 -1
  124. package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
  125. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
  126. package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
  127. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +1 -1
  128. package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
  129. package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
  130. package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +12 -7
  131. package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
  132. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +9 -2
  133. package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +1 -1
  134. package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
  135. package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
  136. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +1 -1
  137. package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  138. package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
  139. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +1 -1
  140. package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +1 -1
  141. package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
  142. package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  143. package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +1 -1
  144. package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +1 -1
  145. package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
  146. package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
  147. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +26 -7
  148. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +166 -39
  149. package/bin/exiftool_files/lib/Image/ExifTool/README +5 -1
  150. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +1 -1
  151. package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +1 -1
  152. package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +1 -1
  153. package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
  154. package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
  155. package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
  156. package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
  157. package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
  158. package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +1 -1
  159. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +3 -1
  160. package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
  161. package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
  162. package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +1 -1
  163. package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +1 -1
  164. package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
  165. package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  166. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +7 -7
  167. package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
  168. package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
  169. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +13 -8
  170. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +4608 -4512
  171. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +323 -43
  172. package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +1 -1
  173. package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
  174. package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +1 -1
  175. package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
  176. package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +1 -1
  177. package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +1 -1
  178. package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
  179. package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
  180. package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  181. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +14 -1
  182. package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  183. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +5 -1
  184. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +1 -1
  185. package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  186. package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
  187. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +30 -14
  188. package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  189. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +16 -2
  190. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +35 -15
  191. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +23 -3
  192. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +20 -1
  193. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +1 -1
  194. package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +20 -8
  195. package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +1 -1
  196. package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
  197. package/bin/exiftool_files/lib/Image/ExifTool.pm +38 -16
  198. package/bin/exiftool_files/lib/Image/ExifTool.pod +39 -38
  199. package/package.json +3 -3
@@ -64,7 +64,7 @@ use Image::ExifTool::Exif;
64
64
  use Image::ExifTool::GPS;
65
65
  use Image::ExifTool::XMP;
66
66
 
67
- $VERSION = '4.13';
67
+ $VERSION = '4.17';
68
68
 
69
69
  sub LensIDConv($$$);
70
70
  sub ProcessNikonAVI($$$);
@@ -369,6 +369,7 @@ sub GetAFPointGrid($$;$);
369
369
  '48 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM',
370
370
  'F8 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM', #JD
371
371
  '91 54 44 44 0C 0C 4B 06' => 'Sigma 35mm F1.4 DG HSM', #30
372
+ 'BD 54 48 48 0C 0C 4B 46' => 'Sigma 40mm F1.4 DG HSM | A', #30
372
373
  'DE 54 50 50 0C 0C 4B 06' => 'Sigma 50mm F1.4 EX DG HSM',
373
374
  '88 54 50 50 0C 0C 4B 06' => 'Sigma 50mm F1.4 DG HSM | A',
374
375
  '02 48 50 50 24 24 02 00' => 'Sigma Macro 50mm F2.8', #https://exiftool.org/forum/index.php/topic,4027.0.html
@@ -382,6 +383,7 @@ sub GetAFPointGrid($$;$);
382
383
  '32 54 6A 6A 24 24 35 02.2' => 'Sigma Macro 105mm F2.8 EX DG', #JD
383
384
  'E5 54 6A 6A 24 24 35 02' => 'Sigma Macro 105mm F2.8 EX DG',
384
385
  '97 48 6A 6A 24 24 4B 0E' => 'Sigma Macro 105mm F2.8 EX DG OS HSM',
386
+ 'BE 54 6A 6A 0C 0C 4B 46' => 'Sigma 105mm F1.4 DG HSM | A', #30
385
387
  '48 48 76 76 24 24 4B 06' => 'Sigma APO Macro 150mm F2.8 EX DG HSM',
386
388
  'F5 48 76 76 24 24 4B 06' => 'Sigma APO Macro 150mm F2.8 EX DG HSM', #24
387
389
  '99 48 76 76 24 24 4B 0E' => 'Sigma APO Macro 150mm F2.8 EX DG OS HSM', #(Christian Hesse)
@@ -437,7 +439,7 @@ sub GetAFPointGrid($$;$);
437
439
  '90 40 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 II DC OS HSM', #JohnHelour
438
440
  '89 30 2D 80 2C 40 4B 0E' => 'Sigma 18-200mm F3.5-6.3 DC Macro OS HS | C', #JoeSchonberg
439
441
  'A5 40 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC OS HSM',
440
- # LensFStops varies with FocalLength for this lens (ref 2):
442
+ # LensFStops varies with FocalLength for this lens (ref 2):
441
443
  '92 2C 2D 88 2C 40 4B 0E' => 'Sigma 18-250mm F3.5-6.3 DC Macro OS HSM', #2
442
444
  '87 2C 2D 8E 2C 40 4B 0E' => 'Sigma 18-300mm F3.5-6.3 DC Macro HSM', #30
443
445
  # '92 2C 2D 88 2C 40 4B 0E' (250mm)
@@ -615,6 +617,7 @@ sub GetAFPointGrid($$;$);
615
617
  #
616
618
  '00 40 2B 2B 2C 2C 00 02' => 'Tokina AT-X 17 AF PRO (AF 17mm f/3.5)',
617
619
  '00 47 44 44 24 24 00 06' => 'Tokina AT-X M35 PRO DX (AF 35mm f/2.8 Macro)',
620
+ '8D 54 68 68 24 24 87 02' => 'Tokina AT-X PRO 100mm F2.8 D Macro', #30
618
621
  '00 54 68 68 24 24 00 02' => 'Tokina AT-X M100 AF PRO D (AF 100mm f/2.8 Macro)',
619
622
  '27 48 8E 8E 30 30 1D 02' => 'Tokina AT-X 304 AF (AF 300mm f/4.0)',
620
623
  '00 54 8E 8E 24 24 00 02' => 'Tokina AT-X 300 AF PRO (AF 300mm f/2.8)',
@@ -807,6 +810,7 @@ my %flashColorFilter = (
807
810
  66 => 'Blue',
808
811
  67 => 'Yellow',
809
812
  68 => 'Amber',
813
+ 128 => 'Incandescent', #SZ-4TN Incandescent
810
814
  );
811
815
 
812
816
  # flash control mode values (ref JD)
@@ -829,6 +833,53 @@ my %activeDLightingZ7 = (
829
833
  5 => 'Extra High',
830
834
  );
831
835
 
836
+ my %aFAreaModeZ9 = (
837
+ 0 => 'Pinpoint',
838
+ 1 => 'Single',
839
+ 2 => 'Dynamic',
840
+ 3 => 'Wide (S)',
841
+ 4 => 'Wide (L)',
842
+ 5 => '3D',
843
+ 6 => 'Auto',
844
+ 11 => 'Subject Tracking',
845
+ 12 => 'Wide (C1)',
846
+ 13 => 'Wide (C2)',
847
+ );
848
+
849
+ my %banksZ9 = (
850
+ 0 => 'A',
851
+ 1 => 'B',
852
+ 2 => 'C',
853
+ 3 => 'D',
854
+ );
855
+
856
+ my %bracketIncrementZ9 = (
857
+ 0 => '0.3',
858
+ #1 => '0.5',
859
+ 2 => '0.7',
860
+ 3 => '1.0',
861
+ 4 => '2.0',
862
+ 5 => '3.0',
863
+ );
864
+
865
+ my %bracketSetZ9 = (
866
+ 0 => 'AE/Flash',
867
+ 1 => 'AE',
868
+ 2 => 'Flash',
869
+ 3 => 'White Balance',
870
+ 4 => 'Active-D Lighting',
871
+ );
872
+
873
+ my %bracketProgramZ9 = (
874
+ 0 => 'Disabled',
875
+ 2 => '2F',
876
+ 3 => '3F',
877
+ 4 => '4F',
878
+ 5 => '5F',
879
+ 7 => '7F',
880
+ 9 => '9F',
881
+ );
882
+
832
883
  my %flashControlModeZ7 = (
833
884
  0 => 'TTL',
834
885
  1 => 'Auto External Flash',
@@ -857,6 +908,29 @@ my %focusModeZ7 = (
857
908
  4 => 'AF-F', # full frame
858
909
  );
859
910
 
911
+ my %hDMIOutputResolutionZ9 = (
912
+ 0 => 'Auto',
913
+ 1 => '4320p',
914
+ 2 => '2160p',
915
+ 3 => '1080p',
916
+ #4 => '1080i',
917
+ 5 => '720p',
918
+ #6 => '576p',
919
+ #7 => '480p',
920
+ );
921
+
922
+ my %imageAreaZ9 = (
923
+ 0 => 'FX',
924
+ 1 => 'DX',
925
+ 4 => '16:9',
926
+ 8 => '1:1',
927
+ );
928
+
929
+ my %imageAreaZ9b = (
930
+ 0 => 'FX',
931
+ 1 => 'DX',
932
+ );
933
+
860
934
  my %infoZSeries = (
861
935
  Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
862
936
  Notes => 'Z Series cameras thru December 2021',
@@ -895,6 +969,66 @@ my %iSOAutoHiLimitZ7 = (
895
969
  32 => 'ISO Hi 2.0',
896
970
  );
897
971
 
972
+ my %iSOAutoShutterTimeZ9 = (
973
+ -15 => 'Auto', #z9 firmware 1.00 maps both 'Auto' and '30 s' to -15
974
+ -12 => '15 s',
975
+ -9 => '8 s',
976
+ -6 => '4 s',
977
+ -3 => '2 s',
978
+ 0 => '1 s',
979
+ 1 => '1/1.3 s',
980
+ 2 => '1/1.6 s',
981
+ 3 => '1/2 s',
982
+ 4 => '1/2.5 s',
983
+ 5 => '1/3 s',
984
+ 6 => '1/4 s',
985
+ 7 => '1/5 s',
986
+ 8 => '1/6 s',
987
+ 9 => '1/8 s',
988
+ 10 => '1/10 s',
989
+ 11 => '1/13 s',
990
+ 12 => '1/15 s',
991
+ 13 => '1/20 s',
992
+ 14 => '1/25 s',
993
+ 15 => '1/30 s',
994
+ 16 => '1/40 s',
995
+ 17 => '1/50 s',
996
+ 18 => '1/60 s',
997
+ 19 => '1/80 s',
998
+ 20 => '1/100 s',
999
+ 21 => '1/120 s',
1000
+ 22 => '1/160 s',
1001
+ 23 => '1/200 s',
1002
+ 24 => '1/250 s',
1003
+ 25 => '1/320 s',
1004
+ 26 => '1/400 s',
1005
+ 27 => '1/500 s',
1006
+ 28 => '1/640 s',
1007
+ 29 => '1/800 s',
1008
+ 30 => '1/1000 s',
1009
+ 31 => '1/1250 s',
1010
+ 32 => '1/1600 s',
1011
+ 33 => '1/2000 s',
1012
+ 34 => '1/2500 s',
1013
+ 35 => '1/3200 s',
1014
+ 36 => '1/4000 s',
1015
+ 37 => '1/5000 s',
1016
+ 37.5 => '1/6000 s',
1017
+ 38 => '1/6400 s',
1018
+ 39 => '1/8000 s',
1019
+ 40 => '1/10000 s',
1020
+ 40.5 => '1/12000 s',
1021
+ 41 => '1/13000 s',
1022
+ 42 => '1/16000 s',
1023
+ );
1024
+
1025
+ my %languageZ9 = (
1026
+ 4 => 'English',
1027
+ 5 => 'Spanish',
1028
+ 7 => 'French',
1029
+ 15 => 'Portuguese'
1030
+ );
1031
+
898
1032
  my %meteringModeZ7 = (
899
1033
  0 => 'Matrix',
900
1034
  1 => 'Center',
@@ -902,6 +1036,30 @@ my %meteringModeZ7 = (
902
1036
  3 => 'Highlight'
903
1037
  );
904
1038
 
1039
+ my %monitorBrightnessZ9 = (
1040
+ 0 => '-5',
1041
+ 1 => '-4',
1042
+ 2 => '-3',
1043
+ 3 => '-2',
1044
+ 4 => '-1',
1045
+ 5 => '0',
1046
+ 6 => '1',
1047
+ 7 => '2',
1048
+ 8 => '3',
1049
+ 9 => '4',
1050
+ 10 => '5',
1051
+ 14 => 'Hi1',
1052
+ 15 => 'Hi2',
1053
+ 16 => 'Lo2',
1054
+ 17 => 'Lo1',
1055
+ );
1056
+
1057
+ my %movieFlickerReductionZ9 = (
1058
+ 0 => 'Auto',
1059
+ 1 => '50Hz',
1060
+ 2 => '60Hz',
1061
+ );
1062
+
905
1063
  my %movieFrameRateZ7 = (
906
1064
  0 => '120p',
907
1065
  1 => '100p',
@@ -912,6 +1070,33 @@ my %movieFrameRateZ7 = (
912
1070
  6 => '24p',
913
1071
  );
914
1072
 
1073
+ my %movieFrameSizeZ9 = (
1074
+ 1 => '1920x1080',
1075
+ 2 => '3840x2160',
1076
+ 3 => '7680x4320',
1077
+ );
1078
+
1079
+ my %movieToneMapZ9 = (
1080
+ 0 => 'SDR',
1081
+ 1 => 'HLG',
1082
+ 2 => 'N-Log',
1083
+ );
1084
+
1085
+ my %movieTypeZ9 = (
1086
+ 1 => 'H.265 8-bit (MP4)',
1087
+ 2 => 'H.265 8-bit (MOV)',
1088
+ 3 => 'H.265 10-bit (MOV)',
1089
+ 4 => 'ProRes 422 HQ 10-bit (MOV)',
1090
+ 5 => 'ProRes RAW HQ 12-bit (MOV)',
1091
+ 6 => 'NRAW 12-bit (NEV)'
1092
+ );
1093
+
1094
+ my %multipleExposureModeZ9 = (
1095
+ 0 => 'Off',
1096
+ 1 => 'On',
1097
+ 2 => 'On (Series)',
1098
+ );
1099
+
915
1100
  my %offLowNormalHighZ7 = (
916
1101
  0 => 'Off',
917
1102
  1 => 'Low',
@@ -919,10 +1104,11 @@ my %offLowNormalHighZ7 = (
919
1104
  3 => 'High',
920
1105
  );
921
1106
 
922
- my %movieFrameSizeZ9 = (
923
- 1 => '1920x1080',
924
- 2 => '3840x2160',
925
- 3 => '7680x4320',
1107
+ my %secondarySlotFunctionZ9 = (
1108
+ 0 => 'Overflow',
1109
+ 1 => 'Backup',
1110
+ 2 => 'NEF Primary + JPG Secondary',
1111
+ 3 => 'JPG Primary + JPG Secondary',
926
1112
  );
927
1113
 
928
1114
  my %subjectDetectionZ9 = (
@@ -933,6 +1119,34 @@ my %subjectDetectionZ9 = (
933
1119
  4 => 'Vehicles',
934
1120
  );
935
1121
 
1122
+ my %timeZoneZ9 = (
1123
+ 3 => '+10:00 (Sydney)',
1124
+ 5 => '+09:00 (Tokyo)',
1125
+ 6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
1126
+ 10 => '+05:45 (Kathmandu)',
1127
+ 11 => '+05:30 (New Dehli)',
1128
+ 12 => '+05:00 (Islamabad)',
1129
+ 13 => '+04:30 (Kabul)',
1130
+ 14 => '+04:00 (Abu Dhabi)',
1131
+ 15 => '+03:30 (Tehran)',
1132
+ 16 => '+03:00 (Moscow, Nairobi)',
1133
+ 17 => '+02:00 (Athens, Helsinki)',
1134
+ 18 => '+01:00 (Madrid, Paris, Berlin)',
1135
+ 19 => '+00:00 (London)',
1136
+ 20 => '-01:00 (Azores)',
1137
+ 21 => '-02:00 (Fernando de Noronha)',
1138
+ 22 => '-03:00 (Buenos Aires, Sao Paulo)',
1139
+ 23 => '-03:30 (Newfoundland)',
1140
+ 24 => '-04:00 (Manaus, Caracas)',
1141
+ 25 => '-05:00 (New York, Toronto, Lima)',
1142
+ 26 => '-06:00 (Chicago, Mexico City)',
1143
+ 27 => '-07:00 (Denver)',
1144
+ 28 => '-08:00 (Los Angeles, Vancouver)',
1145
+ 29 => '-09:00 (Anchorage)',
1146
+ 30 => '-10:00 (Hawaii)',
1147
+ );
1148
+
1149
+
936
1150
  my %vRModeZ9 = (
937
1151
  0 => 'Off',
938
1152
  1 => 'Normal',
@@ -2091,7 +2305,7 @@ my %base64coord = (
2091
2305
  TagTable => 'Image::ExifTool::Nikon::ShotInfoZ9',
2092
2306
  DecryptStart => 4,
2093
2307
  # TODO: eventually set the length dynamically according to actual offsets!
2094
- DecryptLen => 0xec4b + 2105, # decoded thru end of Offset26
2308
+ DecryptLen => 0xec4b + 2196, # decoded thru end of Offset26
2095
2309
  ByteOrder => 'LittleEndian',
2096
2310
  },
2097
2311
  },
@@ -4078,10 +4292,10 @@ my %base64coord = (
4078
4292
  $$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
4079
4293
  $$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
4080
4294
  },
4081
- Format => 'int16u',
4295
+ Format => 'int16u', # (decodes same byte as 0x2f)
4082
4296
  },
4083
4297
  0x2f => { #28 (Z7) Still photography range 1-17 for the 493 point Z7 (arranged in a 29x17 grid. Center at x=16, y=10).
4084
- Name => 'AFFocusPointXPosition',
4298
+ Name => 'FocusPositionHorizontal',
4085
4299
  Condition => q{
4086
4300
  $$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
4087
4301
  $$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
@@ -4095,7 +4309,7 @@ my %base64coord = (
4095
4309
  $$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
4096
4310
  $$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
4097
4311
  },
4098
- Format => 'int16u',
4312
+ Format => 'int16u', # (decodes same byte as 0x31)
4099
4313
  },{ #PH (D500, see forum11190)
4100
4314
  Name => 'AFPointsInFocus',
4101
4315
  Condition => '$$self{AFInfo2Version} eq "0101" and $$self{PhaseDetectAF} == 7',
@@ -4108,7 +4322,7 @@ my %base64coord = (
4108
4322
  },
4109
4323
  ],
4110
4324
  0x31 => { #28 (Z7)
4111
- Name => 'AFFocusPointYPosition',
4325
+ Name => 'FocusPositionVertical',
4112
4326
  Condition => q{
4113
4327
  $$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
4114
4328
  $$self{ContrastDetectAF} == 1 and $$self{AFInfo2Version} =~ /^0301/
@@ -4238,6 +4452,21 @@ my %base64coord = (
4238
4452
  Writable => 0,
4239
4453
  RawConv => '$$self{AFInfo2Version} = $val',
4240
4454
  },
4455
+ 5 => { #28
4456
+ Name => 'AFAreaMode', #reflects the mode active when the shutter is tripped, not the position of the Focus Mode button (which is recorded in MenuSettingsZ9 tag also named AfAreaMode)
4457
+ PrintConv => {
4458
+ 192 => 'Pinpoint',
4459
+ 193 => 'Single',
4460
+ 195 => 'Wide (S)',
4461
+ 196 => 'Wide (L)',
4462
+ 197 => 'Auto',
4463
+ 204 => 'Dynamic Area (S)',
4464
+ 205 => 'Dynamic Area (M)',
4465
+ 206 => 'Dynamic Area (L)',
4466
+ 207 => '3D-tracking',
4467
+ 208 => 'Wide (C1/C2)',
4468
+ },
4469
+ },
4241
4470
  0x3e => {
4242
4471
  Name => 'AFImageWidth',
4243
4472
  Format => 'int16u',
@@ -4246,6 +4475,11 @@ my %base64coord = (
4246
4475
  Name => 'AFImageHeight',
4247
4476
  Format => 'int16u',
4248
4477
  },
4478
+ 0x42 => { #28
4479
+ Name => 'AFAreaXPosition', #top left image corner is the origin
4480
+ Format => 'int16u', # (decodes same byte as 0x43)
4481
+ RawConv => '$val ? $val : undef',
4482
+ },
4249
4483
  0x43 => {
4250
4484
  Name => 'FocusPositionHorizontal',
4251
4485
  Notes => q{
@@ -4257,6 +4491,11 @@ my %base64coord = (
4257
4491
  # (the 11R (5) position is not used, for a total of 29 columns, ref AlbertShan email)
4258
4492
  PrintConv => sub { my ($val) = @_; PrintAFPointsLeftRight($val, 29); },
4259
4493
  },
4494
+ 0x44 => { #28
4495
+ Name => 'AFAreaYPosition',
4496
+ Format => 'int16u', # (decodes same byte as 0x45)
4497
+ RawConv => '$val ? $val : undef',
4498
+ },
4260
4499
  0x45 => {
4261
4500
  Name => 'FocusPositionVertical',
4262
4501
  # (the 6U (4) and 2D (12) are not used, for a total of 17 rows, ref AlbertShan email)
@@ -5053,6 +5292,7 @@ my %nikonFocalConversions = (
5053
5292
  31 => 'Nikkor Z 24-120 f/4', #28
5054
5293
  32 => 'Nikkor Z 800mm f/6.3 VR S', #28
5055
5294
  36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
5295
+ 39 => 'Nikkor Z 17-28mm f/2.8', #IB
5056
5296
  },
5057
5297
  },
5058
5298
  0x35 => { #28
@@ -8250,15 +8490,26 @@ my %nikonFocalConversions = (
8250
8490
  # account for variable location of menu settings data
8251
8491
  Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0xec4b',
8252
8492
  },
8253
- 0xec4b => {
8254
- Name => 'MenuSettingsZ9',
8255
- Format => 'undef[1646]',
8256
- Condition => '$$self{FirmwareVersion} lt "03.00"',
8257
- SubDirectory => {
8258
- TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
8493
+ 0xec4b => [
8494
+ {
8495
+ Name => 'MenuSettingsZ9',
8496
+ Condition => '$$self{FirmwareVersion} lt "03.00"',
8497
+ Format => 'undef[1646]',
8498
+ Notes => 'Firmware versions 2.11 and earlier',
8499
+ SubDirectory => {
8500
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
8501
+ },
8259
8502
  },
8260
- },
8261
- # note: DecryptLen currently set to 0xec4b + 1646
8503
+ {
8504
+ Name => 'MenuSettingsZ9',
8505
+ Notes => 'Firmware versions 3.0 and later',
8506
+ Format => 'undef[1948]',
8507
+ SubDirectory => {
8508
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9Firmware3',
8509
+ },
8510
+ },
8511
+ ],
8512
+ # note: DecryptLen currently set to 0xec4b + 2196
8262
8513
  );
8263
8514
 
8264
8515
  %Image::ExifTool::Nikon::MenuSettingsZ7II = (
@@ -8366,8 +8617,8 @@ my %nikonFocalConversions = (
8366
8617
  PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
8367
8618
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8368
8619
  },
8369
- 346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
8370
- 348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1},
8620
+ 346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
8621
+ 348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
8371
8622
  352 => {
8372
8623
  Name => 'FlashMasterControlMode', # tag name chosen for compatibility with those found in FlashInfo0102 & FlashInfo0103
8373
8624
  RawConv => '$$self{FlashGroupOptionsMasterMode} = $val',
@@ -8392,12 +8643,12 @@ my %nikonFocalConversions = (
8392
8643
  PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
8393
8644
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8394
8645
  },
8395
- #360 => {Name => 'FlashGroupAControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupACompensation at 362 and FlashGroupAOutput at 368
8396
- #368 => {Name => 'FlashGroupBControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupBCompensation at 370 and FlashGroupBOutput at 374
8397
- #376 => {Name => 'FlashGroupCControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupCCompensation at 378 and FlashGroupCOutput at 382
8398
- #384 => {Name => 'FlashGroupDControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupDCompensation at 386 and FlashGroupDOutput at 390
8399
- #392 => {Name => 'FlashGroupEControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupECompensation at 394 and FlashGroupEOutput at 398
8400
- #400 => {Name => 'FlashGroupFControlMode', }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupFCompensation at 402 and FlashGroupFOutput at 406
8646
+ #360 => { Name => 'FlashGroupAControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupACompensation at 362 and FlashGroupAOutput at 368
8647
+ #368 => { Name => 'FlashGroupBControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupBCompensation at 370 and FlashGroupBOutput at 374
8648
+ #376 => { Name => 'FlashGroupCControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupCCompensation at 378 and FlashGroupCOutput at 382
8649
+ #384 => { Name => 'FlashGroupDControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupDCompensation at 386 and FlashGroupDOutput at 390
8650
+ #392 => { Name => 'FlashGroupEControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupECompensation at 394 and FlashGroupEOutput at 398
8651
+ #400 => { Name => 'FlashGroupFControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupFCompensation at 402 and FlashGroupFOutput at 406
8401
8652
  #434 => FocusMode
8402
8653
  #436 => AFAreaMode
8403
8654
  #438 => VibrationReduction
@@ -8405,8 +8656,8 @@ my %nikonFocalConversions = (
8405
8656
  #444 => BracketProgram
8406
8657
  #446 => BracketIncrement
8407
8658
  #463 => SilentPhotography
8408
- 502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1},
8409
- 504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1},
8659
+ 502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
8660
+ 504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
8410
8661
  506 => {
8411
8662
  Name => 'MovieSlowMotion',
8412
8663
  Unknown => 1,
@@ -8435,9 +8686,9 @@ my %nikonFocalConversions = (
8435
8686
  PrintConv => \%iSOAutoHiLimitZ7,
8436
8687
  },
8437
8688
  #520 => MovieWhiteBalanceSameAsPhoto
8438
- 568 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1},
8439
- 572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
8440
- 574 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
8689
+ 568 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
8690
+ 572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8691
+ 574 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8441
8692
  576 => {
8442
8693
  Name => 'MovieVignetteControlSameAsPhoto',
8443
8694
  Unknown => 1,
@@ -8453,7 +8704,7 @@ my %nikonFocalConversions = (
8453
8704
  Unknown => 1,
8454
8705
  PrintConv => \%offOn
8455
8706
  },
8456
- 584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
8707
+ 584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
8457
8708
  #586 => MovieAFAreaMode
8458
8709
  590 => {
8459
8710
  Name => 'MovieVibrationReduction',
@@ -8493,11 +8744,7 @@ my %nikonFocalConversions = (
8493
8744
  140 => {
8494
8745
  Name => 'MultipleExposureMode',
8495
8746
  RawConv => '$$self{MultipleExposureMode} = $val',
8496
- PrintConv => {
8497
- 0 => 'Off',
8498
- 1 => 'On (Series)',
8499
- 2 => 'On',
8500
- },
8747
+ PrintConv => \%multipleExposureModeZ9,
8501
8748
  },
8502
8749
  142 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0' }, #range 2-9
8503
8750
  188 => {
@@ -8533,27 +8780,11 @@ my %nikonFocalConversions = (
8533
8780
  PrintConv => \%offOn,
8534
8781
  Condition => '$$self{FocusShiftShooting} > 0',
8535
8782
  },
8536
- 274 => {
8537
- Name => 'PhotoShootingMenuBank',
8538
- PrintConv => {
8539
- 0 => 'A',
8540
- 1 => 'B',
8541
- 2 => 'C',
8542
- 3 => 'D',
8543
- },
8544
- },
8545
- 276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn, }, #single tag from both Photo & Video menus
8546
- 308 => {
8547
- Name => 'PhotoShootingMenuBankImageArea',
8548
- PrintConv => {
8549
- 0 => 'FX',
8550
- 1 => 'DX',
8551
- 4 => '16:9',
8552
- 8 => '1:1',
8553
- },
8554
- },
8783
+ 274 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
8784
+ 276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, #single tag from both Photo & Video menus
8785
+ 308 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
8555
8786
  #310 ImageQuality
8556
- 322 => { Name => 'AutoISO', PrintConv => \%offOn, },
8787
+ 322 => { Name => 'AutoISO', PrintConv => \%offOn },
8557
8788
  324 => {
8558
8789
  Name => 'ISOAutoHiLimit',
8559
8790
  Format => 'int16u',
@@ -8575,58 +8806,7 @@ my %nikonFocalConversions = (
8575
8806
  Name => 'ISOAutoShutterTime', #shutter speed is 2 ** (-$val/24)
8576
8807
  ValueConv => '$val / 8',
8577
8808
  Format => 'int16s',
8578
- PrintConv => {
8579
- -15 => 'Auto', #z9 firmware 1.00 maps both 'Auto' and '30 s' to -15
8580
- -12 => '15 s',
8581
- -9 => '8 s',
8582
- -6 => '4 s',
8583
- -3 => '2 s',
8584
- 0 => '1 s',
8585
- 1 => '1/1.3 s',
8586
- 2 => '1/1.6 s',
8587
- 3 => '1/2 s',
8588
- 4 => '1/2.5 s',
8589
- 5 => '1/3 s',
8590
- 6 => '1/4 s',
8591
- 7 => '1/5 s',
8592
- 8 => '1/6 s',
8593
- 9 => '1/8 s',
8594
- 10 => '1/10 s',
8595
- 11 => '1/13 s',
8596
- 12 => '1/15 s',
8597
- 13 => '1/20 s',
8598
- 14 => '1/25 s',
8599
- 15 => '1/30 s',
8600
- 16 => '1/40 s',
8601
- 17 => '1/50 s',
8602
- 18 => '1/60 s',
8603
- 19 => '1/80 s',
8604
- 20 => '1/100 s',
8605
- 21 => '1/120 s',
8606
- 22 => '1/160 s',
8607
- 23 => '1/200 s',
8608
- 24 => '1/250 s',
8609
- 25 => '1/320 s',
8610
- 26 => '1/400 s',
8611
- 27 => '1/500 s',
8612
- 28 => '1/640 s',
8613
- 29 => '1/800 s',
8614
- 30 => '1/1000 s',
8615
- 31 => '1/1250 s',
8616
- 32 => '1/1600 s',
8617
- 33 => '1/2000 s',
8618
- 34 => '1/2500 s',
8619
- 35 => '1/3200 s',
8620
- 36 => '1/4000 s',
8621
- 37 => '1/5000 s',
8622
- 37.5 => '1/6000 s',
8623
- 38 => '1/6400 s',
8624
- 39 => '1/8000 s',
8625
- 40 => '1/10000 s',
8626
- 40.5 => '1/12000 s',
8627
- 41 => '1/13000 s',
8628
- 42 => '1/16000 s',
8629
- },
8809
+ PrintConv => \%iSOAutoShutterTimeZ9,
8630
8810
  },
8631
8811
  #336 WhiteBalance
8632
8812
  #406 PictureControl
@@ -8635,8 +8815,8 @@ my %nikonFocalConversions = (
8635
8815
  #412 => { Name => 'NoiseReduction', PrintConv => \%offOn }, #Long Exposure Noise Reduction
8636
8816
  #414 HighISONoiseReduction
8637
8817
  #414 VignetteControl
8638
- 416 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
8639
- 418 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8818
+ 416 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8819
+ 418 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8640
8820
  #419 AutoDistortionControl #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8641
8821
  420 => { Name => 'FlickerReductionShooting', PrintConv => \%offOn },
8642
8822
  #422 MeteringMode
@@ -8671,94 +8851,39 @@ my %nikonFocalConversions = (
8671
8851
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8672
8852
  },
8673
8853
  #442 flash wirelss control 0=> 'Off' 1=> 'CMD'
8674
- 444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1},
8675
- 456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
8854
+ 444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
8855
+ 456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
8676
8856
  #526 FocusMode
8677
- 528 => {
8678
- Name => 'AFAreaMode',
8679
- PrintConv => {
8680
- 1 => 'Single',
8681
- 2 => 'Dynamic',
8682
- 3 => 'Wide (S)',
8683
- 4 => 'Wide (L)',
8684
- 5 => '3D',
8685
- 6 => 'Auto',
8686
- 12 => 'Wide (C1)',
8687
- 13 => 'Wide (C2)',
8688
- },
8689
- },
8690
- 530 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
8857
+ 528 => { Name => 'AFAreaMode',PrintConv => \%aFAreaModeZ9 },
8858
+ 530 => { Name => 'VRMode', PrintConv => \%vRModeZ9 },
8691
8859
  534 => {
8692
8860
  Name => 'BracketSet',
8693
8861
  RawConv => '$$self{BracketSet} = $val',
8694
- PrintConv => {
8695
- 0 => 'AE/Flash',
8696
- 1 => 'AE',
8697
- 2 => 'Flash',
8698
- 3 => 'White Balance',
8699
- 4 => 'Active-D Lighting',
8700
- },
8862
+ PrintConv => \%bracketSetZ9,
8701
8863
  },
8702
8864
  536 => {
8703
8865
  Name => 'BracketProgram',
8704
8866
  Condition => '$$self{BracketSet} < 3',
8705
8867
  Notes => 'AE and/or Flash Bracketing',
8706
- PrintConv => {
8707
- 0 => 'Disabled',
8708
- 2 => '2F',
8709
- 3 => '3F',
8710
- 4 => '4F',
8711
- 5 => '5F',
8712
- 7 => '7F',
8713
- 9 => '9F',
8714
- },
8868
+ PrintConv => \%bracketProgramZ9,
8715
8869
  },
8716
8870
  538 => {
8717
8871
  Name => 'BracketIncrement',
8718
8872
  Condition => '$$self{BracketSet} < 3',
8719
8873
  Notes => 'AE and/or Flash Bracketing',
8720
- PrintConv => {
8721
- 0 => '0.3',
8722
- #1 => '0.5',
8723
- 2 => '0.7',
8724
- 3 => '1.0',
8725
- 4 => '2.0',
8726
- 5 => '3.0',
8727
- },
8874
+ PrintConv => \%bracketIncrementZ9,
8728
8875
  },
8729
8876
  #544 BracketProgram for ADL
8730
- 556 => {
8731
- Name => 'SecondarySlotFunction',
8732
- PrintConv => {
8733
- 0 => 'Overflow',
8734
- 1 => 'Backup',
8735
- 2 => 'NEF Primary + JPG Secondary',
8736
- 3 => 'JPG Primary + JPG Secondary',
8737
- },
8738
- },
8739
- 572 => { Name => 'DXCropAlert', PrintConv => \%offOn, },
8740
- 574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9},
8877
+ 556 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
8878
+ 572 => { Name => 'DXCropAlert', PrintConv => \%offOn },
8879
+ 574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
8741
8880
  604 => {
8742
8881
  Name => 'MovieImageArea',
8743
8882
  Unknown => 1,
8744
- Mask => 0x01, #without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
8745
- PrintConv => {
8746
- 0 => 'FX',
8747
- 1 => 'DX',
8748
- },
8749
- },
8750
- 614 => {
8751
- Name => 'MovieType',
8752
- Unknown => 1,
8753
- PrintConv => {
8754
- 1 => 'H.265 8-bit (MP4)',
8755
- 2 => 'H.265 8-bit (MOV)',
8756
- 3 => 'H.265 10-bit (MOV)',
8757
- 4 => 'ProRes 422 HQ 10-bit (MOV)',
8758
- 5 => 'ProRes RAW HQ 12-bit (MOV)',
8759
- 6 => 'NRAW 12-bit (NEV)'
8760
- },
8883
+ Mask => 0x01, # without the mask 4 => 'FX', 5 => DX. only the 2nd Z-series field encountered with a mask
8884
+ PrintConv => \%imageAreaZ9b,
8761
8885
  },
8886
+ 614 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
8762
8887
  616 => {
8763
8888
  Name => 'MovieISOAutoHiLimit',
8764
8889
  Format => 'int16u',
@@ -8767,115 +8892,44 @@ my %nikonFocalConversions = (
8767
8892
  ValueConvInv => '8 * ($val + 104)',
8768
8893
  PrintConv => \%iSOAutoHiLimitZ7,
8769
8894
  },
8770
- 618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1},
8895
+ 618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
8771
8896
  620 => {
8772
8897
  Name => 'MovieISOAutoManualMode',
8773
8898
  Format => 'int16u',
8774
8899
  Unknown => 1,
8775
8900
  ValueConv => '($val-104)/8',
8776
- ValueConvInv => '8 * ($val + 104)',
8901
+ ValueConvInv => '8 * ($val + 104)',
8777
8902
  PrintConv => \%iSOAutoHiLimitZ7,
8778
8903
  },
8779
- 696 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1},
8780
- 698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1},
8781
- 704 => {
8782
- Name => 'MovieFlickerReduction',
8783
- PrintConv => {
8784
- 0 => 'Auto',
8785
- 1 => '50Hz',
8786
- 2 => '60Hz',
8787
- },
8788
- },
8789
- 706 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, , Unknown => 1},
8790
- 708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
8791
- 710 => {
8792
- Name => 'MovieAFAreaMode',
8793
- PrintConv => {
8794
- 1 => 'Single',
8795
- 3 => 'Wide (S)',
8796
- 4 => 'Wide (L)',
8797
- 6 => 'Auto',
8798
- 11 => 'Subject Tracking',
8799
- },
8800
- },
8801
- 712 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1},
8802
- 716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
8803
- 718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'On', 2 => 'On' }, Unknown => 1 }, #not sure why the unusal mapping with 2 => 'On'
8804
- 720 => { Name => 'MicrophoneSensitivity', Unknown => 1}, #1-20
8805
- 722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
8904
+ 696 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
8905
+ 698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8906
+ 704 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
8907
+ 706 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
8908
+ 708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
8909
+ 710 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
8910
+ 712 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
8911
+ 716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
8912
+ 718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
8913
+ 720 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, #1-20
8914
+ 722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
8806
8915
  724 => { Name => 'MicrophoneFrequencyResponse', PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
8807
- 726 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
8808
- 748 => {
8809
- Name => 'MovieToneMap',
8810
- Unknown => 1,
8811
- PrintConv => {
8812
- 0 => 'SDR',
8813
- 1 => 'HLG',
8814
- 2 => 'N-Log',
8815
- },
8816
- },
8817
- 754 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1},
8818
- 756 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1},
8819
- 762 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
8820
- 763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
8821
- 764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1},
8916
+ 726 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
8917
+ 748 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
8918
+ 754 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
8919
+ 756 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
8920
+ 762 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
8921
+ 763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
8922
+ 764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
8822
8923
  799 => {
8823
8924
  Name => 'CustomSettingsZ9',
8824
8925
  Format => 'undef[608]',
8825
8926
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
8826
8927
  },
8827
- 1426 => {
8828
- Name => 'Language',
8829
- Unknown => 1,
8830
- PrintConv => {
8831
- 4 => 'English',
8832
- 5 => 'Spanish',
8833
- 7 => 'French',
8834
- },
8835
- },
8836
- 1428 => {
8837
- Name => 'TimeZone',
8838
- PrintConv => {
8839
- 5 => '+09:00 (Tokyo)',
8840
- 6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
8841
- 10 => '+05:45 (Kathmandu)',
8842
- 11 => '+05:30 (New Dehli)',
8843
- 12 => '+05:00 (Islamabad)',
8844
- 13 => '+04:30 (Kabul)',
8845
- 14 => '+04:00 (Abu Dhabi)',
8846
- 15 => '+03:30 (Tehran)',
8847
- 16 => '+03:00 (Moscow, Nairobi)',
8848
- 17 => '+02:00 (Athens, Helsinki)',
8849
- 18 => '+01:00 (Madrid, Paris, Berlin)',
8850
- 19 => '+00:00 (London)',
8851
- 20 => '-01:00 (Azores)',
8852
- 21 => '-02:00 (Fernando de Noronha)',
8853
- 22 => '-03:00 (Buenos Aires, Sao Paulo)',
8854
- 23 => '-03:30 (Newfoundland)',
8855
- 24 => '-04:00 (Manaus, Caracas)',
8856
- 25 => '-05:00 (New York, Toronto, Lima)',
8857
- 26 => '-06:00 (Chicago, Mexico City)',
8858
- 27 => '-07:00 (Denver)',
8859
- 28 => '-08:00 (Los Angeles, Vancouver)',
8860
- 29 => '-09:00 (Anchorage)',
8861
- 30 => '-10:00 (Hawaii)',
8862
- },
8863
- },
8864
- 1434 => {Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1}, # settings: -5 to +5
8865
- 1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
8866
- 1552 => {
8867
- Name => 'HDMIOutputResolution',
8868
- PrintConv => {
8869
- 0 => 'Auto',
8870
- 1 => '4320p',
8871
- 2 => '2160p',
8872
- 3 => '1080p',
8873
- #4 => '1080i',
8874
- 5 => '720p',
8875
- #6 => '576p',
8876
- #7 => '480p',
8877
- },
8878
- },
8928
+ 1426 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
8929
+ 1428 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
8930
+ 1434 => { Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1 }, # settings: -5 to +5
8931
+ 1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
8932
+ 1552 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
8879
8933
  1565 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
8880
8934
  1572 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
8881
8935
  1573 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
@@ -8884,6 +8938,210 @@ my %nikonFocalConversions = (
8884
8938
  1636 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
8885
8939
  1645 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
8886
8940
  );
8941
+ %Image::ExifTool::Nikon::MenuSettingsZ9Firmware3 = ( #starts at Offset26 + 248
8942
+ %binaryDataAttrs,
8943
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8944
+ DATAMEMBER => [ 154, 204, 208, 248, 444, 554 ],
8945
+ IS_SUBDIR => [ 847 ],
8946
+ NOTES => 'These tags are used by the Z9 firmware 3.00.',
8947
+ 154 => {
8948
+ Name => 'MultipleExposureMode',
8949
+ RawConv => '$$self{MultipleExposureMode} = $val',
8950
+ PrintConv => \%multipleExposureModeZ9,
8951
+ },
8952
+ 156 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
8953
+ 204 => {
8954
+ Name => 'Intervals',
8955
+ Format => 'int32u',
8956
+ RawConv => '$$self{IntervalShootingIntervals} = $val',
8957
+ Condition => '$$self{IntervalShooting} > 0',
8958
+ },
8959
+ 208 => {
8960
+ Name => 'ShotsPerInterval',
8961
+ Format => 'int32u',
8962
+ RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
8963
+ Condition => '$$self{IntervalShooting} > 0',
8964
+ },
8965
+ 248 => {
8966
+ Name => 'FocusShiftNumberShots', #1-300
8967
+ RawConv => '$$self{FocusShiftNumberShots} = $val',
8968
+ Condition => '$$self{FocusShiftShooting} > 0',
8969
+ },
8970
+ 252 => {
8971
+ Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
8972
+ Condition => '$$self{FocusShiftShooting} > 0',
8973
+ },
8974
+ 256 => {
8975
+ Name => 'FocusShiftInterval',
8976
+ Condition => '$$self{FocusShiftShooting} > 0',
8977
+ PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
8978
+ },
8979
+ 260 => {
8980
+ Name => 'FocusShiftExposureLock',
8981
+ Unknown => 1,
8982
+ PrintConv => \%offOn,
8983
+ Condition => '$$self{FocusShiftShooting} > 0',
8984
+ },
8985
+ 290 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
8986
+ 292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
8987
+ 328 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
8988
+ 342 => { Name => 'AutoISO', PrintConv => \%offOn },
8989
+ 344 => {
8990
+ Name => 'ISOAutoHiLimit',
8991
+ Format => 'int16u',
8992
+ Unknown => 1,
8993
+ ValueConv => '($val-104)/8',
8994
+ ValueConvInv => '8 * ($val + 104)',
8995
+ PrintConv => \%iSOAutoHiLimitZ7,
8996
+ },
8997
+ 346 => {
8998
+ Name => 'ISOAutoFlashLimit',
8999
+ Format => 'int16u',
9000
+ Unknown => 1,
9001
+ ValueConv => '($val-104)/8',
9002
+ ValueConvInv => '8 * ($val + 104)',
9003
+ PrintConv => \%iSOAutoHiLimitZ7,
9004
+ },
9005
+ 354 => {
9006
+ Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
9007
+ ValueConv => '$val / 8',
9008
+ Format => 'int16s',
9009
+ PrintConv => \%iSOAutoShutterTimeZ9,
9010
+ },
9011
+ 436 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
9012
+ 438 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
9013
+ 440 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
9014
+ 444 => {
9015
+ Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
9016
+ RawConv => '$$self{FlashControlMode} = $val',
9017
+ PrintConv => \%flashControlModeZ7,
9018
+ },
9019
+ 446 => {
9020
+ Name => 'FlashMasterCompensation',
9021
+ Format => 'int8s',
9022
+ Unknown => 1,
9023
+ ValueConv => '$val/6',
9024
+ ValueConvInv => '6 * $val',
9025
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
9026
+ PrintConvInv => '$val',
9027
+ },
9028
+ 450 => {
9029
+ Name => 'FlashGNDistance',
9030
+ Condition => '$$self{FlashControlMode} == 2',
9031
+ Unknown => 1,
9032
+ ValueConv => '$val + 3',
9033
+ PrintConv => \%flashGNDistance,
9034
+ },
9035
+ 454 => {
9036
+ Name => 'FlashOutput', # range[0,24] with 0=>Full; 1=>50%; then decreasing flash power in 1/3 stops to 0.39% (1/256 full power). also found in FlashInfoUnknown at offset 0x0a (with different mappings)
9037
+ Condition => '$$self{FlashControlMode} >= 3',
9038
+ Unknown => 1,
9039
+ ValueConv => '2 ** (-$val/3)',
9040
+ ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
9041
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
9042
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
9043
+ },
9044
+ #462 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
9045
+ #464 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
9046
+ #476 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
9047
+ 548 => { Name => 'AFAreaMode', PrintConv => \%aFAreaModeZ9},
9048
+ 550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
9049
+ 554 => {
9050
+ Name => 'BracketSet',
9051
+ RawConv => '$$self{BracketSet} = $val',
9052
+ PrintConv => \%bracketSetZ9,
9053
+ },
9054
+ 556 => {
9055
+ Name => 'BracketProgram',
9056
+ Condition => '$$self{BracketSet} < 3',
9057
+ Notes => 'AE and/or Flash Bracketing',
9058
+ PrintConv => \%bracketProgramZ9,
9059
+ },
9060
+ 558 => {
9061
+ Name => 'BracketIncrement',
9062
+ Condition => '$$self{BracketSet} < 3',
9063
+ Notes => 'AE and/or Flash Bracketing',
9064
+ PrintConv => \%bracketIncrementZ9,
9065
+ },
9066
+ 576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
9067
+ 592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
9068
+ 594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
9069
+ 636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
9070
+ 646 => {
9071
+ Name => 'MovieImageArea',
9072
+ Unknown => 1,
9073
+ Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
9074
+ PrintConv => \%imageAreaZ9b,
9075
+ },
9076
+ 656 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
9077
+ 658 => {
9078
+ Name => 'MovieISOAutoHiLimit',
9079
+ Format => 'int16u',
9080
+ Unknown => 1,
9081
+ ValueConv => '($val-104)/8',
9082
+ ValueConvInv => '8 * ($val + 104)',
9083
+ PrintConv => \%iSOAutoHiLimitZ7,
9084
+ },
9085
+ 660 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
9086
+ 662 => {
9087
+ Name => 'MovieISOAutoManualMode',
9088
+ Format => 'int16u',
9089
+ Unknown => 1,
9090
+ ValueConv => '($val-104)/8',
9091
+ ValueConvInv => '8 * ($val + 104)',
9092
+ PrintConv => \%iSOAutoHiLimitZ7,
9093
+ },
9094
+ 736 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
9095
+ 738 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
9096
+ 744 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
9097
+ 746 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
9098
+ 748 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
9099
+ 750 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
9100
+ 752 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
9101
+ 756 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
9102
+ 758 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
9103
+ 760 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
9104
+ 762 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
9105
+ 764 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
9106
+ 766 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
9107
+ 788 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
9108
+ 794 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
9109
+ 796 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
9110
+ 802 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
9111
+ 803 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
9112
+ 804 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
9113
+ 812 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
9114
+ 847 => {
9115
+ Name => 'CustomSettingsZ9',
9116
+ Format => 'undef[608]',
9117
+ SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
9118
+ },
9119
+ 1474 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
9120
+ 1476 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
9121
+ 1482 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
9122
+ 1504 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
9123
+ 1600 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
9124
+ 1613 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
9125
+ 1620 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
9126
+ 1621 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
9127
+ 1656 => { Name => 'EnergySavingMode', PrintConv =>\%offOn, Unknown => 1 },
9128
+ 1680 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
9129
+ 1684 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
9130
+ 1693 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
9131
+ 1754 => {
9132
+ Name => 'FocusShiftAutoReset',
9133
+ Unknown => 1,
9134
+ PrintConv => \%offOn,
9135
+ Condition => '$$self{FocusShiftShooting} > 0',
9136
+ },
9137
+ #1824 ReleaseTimingIndicatorTypeADelay CSd14-b 0 => '1/200' ... 15 => '1/6'
9138
+ #1826 VerticalISOButton CSf2
9139
+ #1828 ExposureCompensationButton CSf2
9140
+ #1830 ISOButton CSf2
9141
+ #1890 ViewModeShowEffectsOfSettings CSd9-a 0=>'Always', 1=> 'Only When Flash Not Used'
9142
+ #1892 DispButton CSf2
9143
+ #1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
9144
+ );
8887
9145
 
8888
9146
  # Flash information (ref JD)
8889
9147
  %Image::ExifTool::Nikon::FlashInfo0100 = (
@@ -9999,7 +10257,7 @@ my %nikonFocalConversions = (
9999
10257
  },
10000
10258
  12 => {
10001
10259
  Name => 'FlashFocalLength',
10002
- Notes => 'only valid if flash pattern is "Standard Illumination"',
10260
+ Notes => 'only valid if flash pattern is "Standard Illumination"', #illumination pattern no no supported starting with the SB-910
10003
10261
  RawConv => '($val and $val != 255) ? $val : undef',
10004
10262
  PrintConv => '"$val mm"',
10005
10263
  PrintConvInv => '$val=~/(\d+)/; $1 || 0',
@@ -10069,7 +10327,7 @@ my %nikonFocalConversions = (
10069
10327
  0x29 => [ #PH
10070
10328
  {
10071
10329
  Name => 'FlashGroupBOutput',
10072
- Condition => '$$self{FlashGroupBControlMode} >= 0x60',
10330
+ Condition => '$$self{FlashGroupBControlMode} >= 0x06',
10073
10331
  ValueConv => '2 ** (-$val/6)',
10074
10332
  ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10075
10333
  PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
@@ -10109,6 +10367,7 @@ my %nikonFocalConversions = (
10109
10367
  %Image::ExifTool::Nikon::FlashInfo0300 = (
10110
10368
  %binaryDataAttrs,
10111
10369
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10370
+ DATAMEMBER => [ 9.2, 17.1, 18.1, 18.2 ],
10112
10371
  0 => {
10113
10372
  Name => 'FlashInfoVersion',
10114
10373
  Format => 'string[4]',
@@ -10123,15 +10382,39 @@ my %nikonFocalConversions = (
10123
10382
  },
10124
10383
  },
10125
10384
  6 => {
10126
- Format => 'int8u[2]',
10127
10385
  Name => 'ExternalFlashFirmware',
10386
+ Format => 'int8u[2]',
10128
10387
  SeparateTable => 'FlashFirmware',
10129
10388
  PrintConv => \%flashFirmware,
10130
10389
  },
10390
+ 8 => {
10391
+ Name => 'ExternalFlashFlags',
10392
+ PrintConv => { BITMASK => {
10393
+ 0 => 'Flash Ready', #flash status is 'Not Ready' when this bit is off and FlashSource is non-zero
10394
+ # 1 - ? (observed with SB-900)
10395
+ 2 => 'Bounce Flash',
10396
+ 4 => 'Wide Flash Adapter',
10397
+ 7 => 'Zoom Override', #override takes place when the Wide Flash Adapter is dropped in place and/or the zoom level is overriden on via flash menu
10398
+ }},
10399
+ },
10400
+ 9.1 => {
10401
+ Name => 'FlashCommanderMode',
10402
+ Mask => 0x80,
10403
+ PrintConv => { 0 => 'Off', 1 => 'On' },
10404
+ },
10405
+ 9.2 => {
10406
+ Name => 'FlashControlMode',
10407
+ Mask => 0x7f,
10408
+ DataMember => 'FlashControlMode',
10409
+ RawConv => '$$self{FlashControlMode} = $val',
10410
+ PrintConv => \%flashControlMode,
10411
+ SeparateTable => 'FlashControlMode',
10412
+ },
10131
10413
  10 => {
10132
10414
  Name => 'FlashCompensation',
10133
10415
  # this is the compensation from the camera (0x0012) for "Built-in" FlashType, or
10134
10416
  # the compensation from the external unit (0x0017) for "Optional" FlashType - PH
10417
+ Condition => '$$self{FlashControlMode} == 0x01 or $$self{FlashControlMode} == 0x02', #only valid for TTL and TTL-BL modes
10135
10418
  Format => 'int8s',
10136
10419
  Priority => 0,
10137
10420
  ValueConv => '-$val/6',
@@ -10139,6 +10422,130 @@ my %nikonFocalConversions = (
10139
10422
  PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
10140
10423
  PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10141
10424
  },
10425
+ 13 => {
10426
+ Name => 'RepeatingFlashRate',
10427
+ RawConv => '($val and $val != 255) ? $val : undef',
10428
+ PrintConv => '"$val Hz"',
10429
+ PrintConvInv => '$val=~/(\d+)/; $1 || 0',
10430
+ },
10431
+ 14 => {
10432
+ Name => 'RepeatingFlashCount',
10433
+ RawConv => '($val and $val != 255) ? $val : undef',
10434
+ },
10435
+ 15 => {
10436
+ Name => 'FlashGNDistance',
10437
+ SeparateTable => 1,
10438
+ PrintConv => \%flashGNDistance,
10439
+ },
10440
+ 16 => {
10441
+ Name => 'FlashColorFilter',
10442
+ SeparateTable => 1,
10443
+ PrintConv => \%flashColorFilter,
10444
+ },
10445
+ 17.1 => { #PH
10446
+ Name => 'FlashGroupAControlMode',
10447
+ Mask => 0x0f,
10448
+ Notes => 'note: group A tags may apply to the built-in flash settings for some models',
10449
+ DataMember => 'FlashGroupAControlMode',
10450
+ RawConv => '$$self{FlashGroupAControlMode} = $val',
10451
+ PrintConv => \%flashControlMode,
10452
+ SeparateTable => 'FlashControlMode',
10453
+ },
10454
+ 18.1 => { #PH
10455
+ Name => 'FlashGroupBControlMode',
10456
+ Mask => 0xf0,
10457
+ Notes => 'note: group B tags may apply to group A settings for some models',
10458
+ DataMember => 'FlashGroupBControlMode',
10459
+ RawConv => '$$self{FlashGroupBControlMode} = $val',
10460
+ PrintConv => \%flashControlMode,
10461
+ SeparateTable => 'FlashControlMode',
10462
+ },
10463
+ 18.2 => { #PH
10464
+ Name => 'FlashGroupCControlMode',
10465
+ Mask => 0x0f,
10466
+ Notes => 'note: group C tags may apply to group B settings for some models',
10467
+ DataMember => 'FlashGroupCControlMode',
10468
+ RawConv => '$$self{FlashGroupCControlMode} = $val',
10469
+ PrintConv => \%flashControlMode,
10470
+ SeparateTable => 'FlashControlMode',
10471
+ },
10472
+ 33 => {
10473
+ Name => 'FlashOutput',
10474
+ Condition => '$$self{FlashControlMode} >= 0x06', #only valid for M mode
10475
+ ValueConv => '2 ** (-$val/6)',
10476
+ ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10477
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
10478
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
10479
+ },
10480
+ 37 => {
10481
+ Name => 'FlashIlluminationPattern',
10482
+ PrintConv => {
10483
+ 0 => 'Standard',
10484
+ 1 => 'Center-weighted',
10485
+ 2 => 'Even',
10486
+ },
10487
+ },
10488
+ 38 => {
10489
+ Name => 'FlashFocalLength',
10490
+ Notes => 'only valid if flash pattern is "Standard Illumination"',
10491
+ RawConv => '($val and $val != 255) ? $val : undef',
10492
+ PrintConv => '"$val mm"',
10493
+ PrintConvInv => '$val=~/(\d+)/; $1 || 0',
10494
+ },
10495
+ 40 => [ #PH
10496
+ {
10497
+ Name => 'FlashGroupAOutput',
10498
+ Condition => '$$self{FlashGroupAControlMode} >= 0x06',
10499
+ ValueConv => '2 ** (-$val/6)',
10500
+ ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10501
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
10502
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
10503
+ },
10504
+ {
10505
+ Name => 'FlashGroupACompensation',
10506
+ Format => 'int8s',
10507
+ ValueConv => '-($val-2)/6',
10508
+ ValueConvInv => '-6 * $val + 2',
10509
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
10510
+ PrintConvInv => '$val',
10511
+ },
10512
+ ],
10513
+ 41 => [ #PH
10514
+ {
10515
+ Name => 'FlashGroupBOutput',
10516
+ Condition => '$$self{FlashGroupBControlMode} >= 0x06',
10517
+ ValueConv => '2 ** (-$val/6)',
10518
+ ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10519
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
10520
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
10521
+ },
10522
+ {
10523
+ Name => 'FlashGroupBCompensation',
10524
+ Format => 'int8s',
10525
+ ValueConv => '-($val-2)/6',
10526
+ ValueConvInv => '-6 * $val + 2',
10527
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
10528
+ PrintConvInv => '$val',
10529
+ },
10530
+ ],
10531
+ 42 => [ #PH
10532
+ {
10533
+ Name => 'FlashGroupCOutput',
10534
+ Condition => '$$self{FlashGroupCControlMode} >= 0x06',
10535
+ ValueConv => '2 ** (-$val/6)',
10536
+ ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10537
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
10538
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
10539
+ },
10540
+ {
10541
+ Name => 'FlashGroupCCompensation',
10542
+ Format => 'int8s',
10543
+ ValueConv => '-($val-2)/6',
10544
+ ValueConvInv => '-6 * $val + 2',
10545
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
10546
+ PrintConvInv => '$val',
10547
+ },
10548
+ ],
10142
10549
  );
10143
10550
  # Unknown Flash information
10144
10551
  %Image::ExifTool::Nikon::FlashInfoUnknown = (
@@ -12103,7 +12510,7 @@ Nikon maker notes in EXIF information.
12103
12510
 
12104
12511
  =head1 AUTHOR
12105
12512
 
12106
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
12513
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
12107
12514
 
12108
12515
  This library is free software; you can redistribute it and/or modify it
12109
12516
  under the same terms as Perl itself.