exiftool-vendored.exe 12.99.0 → 13.16.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 (209) hide show
  1. package/bin/exiftool.exe +0 -0
  2. package/bin/exiftool_files/exiftool.pl +183 -70
  3. package/bin/exiftool_files/lib/File/RandomAccess.pm +1 -1
  4. package/bin/exiftool_files/lib/File/RandomAccess.pod +2 -2
  5. package/bin/exiftool_files/lib/Image/ExifTool/AAC.pm +1 -1
  6. package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
  7. package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +6 -6
  8. package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +2 -2
  9. package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +2 -2
  10. package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
  11. package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +2 -2
  12. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +11 -9
  13. package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
  14. package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
  16. package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +1 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +36 -22
  19. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +5 -2
  20. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +66 -27
  21. package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +1 -1
  22. package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
  23. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +1 -1
  24. package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
  25. package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +1 -1
  26. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +1 -1
  27. package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +1 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +196 -30
  29. package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +1 -1
  30. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
  31. package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
  32. package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +1 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
  34. package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +138 -33
  35. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +30 -17
  36. package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +3 -3
  37. package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
  38. package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +3 -3
  39. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +1 -1
  40. package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +1 -1
  41. package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
  42. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +17 -21
  43. package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +2 -2
  44. package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
  45. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +1 -1
  46. package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
  47. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +144 -93
  48. package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/GM.pm +1 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +34 -30
  51. package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
  52. package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.dat +0 -0
  53. package/bin/exiftool_files/lib/Image/ExifTool/Geolocation.pm +19 -9
  54. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +49 -14
  55. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +120 -8
  56. package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
  57. package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +2 -2
  58. package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
  59. package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +1 -1
  60. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +81 -2
  61. package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +1 -1
  62. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +8 -8
  63. package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +10 -7
  64. package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
  65. package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
  66. package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +5 -4
  67. package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +2 -2
  68. package/bin/exiftool_files/lib/Image/ExifTool/InfiRay.pm +1 -1
  69. package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +32 -5
  70. package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  71. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +1 -1
  72. package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +1 -1
  73. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +10 -9
  74. package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
  75. package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  76. package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
  77. package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +2 -2
  78. package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
  79. package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +1 -1
  80. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  81. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  82. package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +1 -1
  83. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
  84. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +1 -1
  85. package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +1 -1
  86. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
  87. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
  88. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
  89. package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
  90. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
  91. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sk.pm +1 -1
  92. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
  93. package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
  94. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  95. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  96. package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +1 -1
  97. package/bin/exiftool_files/lib/Image/ExifTool/LigoGPS.pm +409 -0
  98. package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
  99. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +58 -19
  100. package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +15 -6
  101. package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
  102. package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
  103. package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +1 -1
  104. package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
  105. package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
  106. package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
  107. package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
  108. package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
  109. package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
  110. package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
  111. package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +3 -3
  112. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +3 -2
  113. package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +1 -1
  114. package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +22 -6
  115. package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +2 -2
  116. package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
  117. package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  118. package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
  119. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +495 -39
  120. package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
  121. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +2 -2
  122. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +1 -1
  123. package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
  124. package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +8 -8
  125. package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +1 -1
  126. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +1 -1
  127. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +1 -1
  128. package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
  129. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
  130. package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
  131. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +49 -18
  132. package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
  133. package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
  134. package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +4 -4
  135. package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
  136. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +20 -8
  137. package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +12 -3
  138. package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
  139. package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
  140. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +27 -3
  141. package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  142. package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
  143. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +1 -1
  144. package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +6 -5
  145. package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
  146. package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  147. package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +65 -4
  148. package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +1 -1
  149. package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
  150. package/bin/exiftool_files/lib/Image/ExifTool/Protobuf.pm +270 -0
  151. package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
  152. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +326 -88
  153. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +266 -200
  154. package/bin/exiftool_files/lib/Image/ExifTool/README +12 -2
  155. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +21 -6
  156. package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +1 -1
  157. package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +2 -2
  158. package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
  159. package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
  160. package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
  161. package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
  162. package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
  163. package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +4 -4
  164. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +2 -2
  165. package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
  166. package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
  167. package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +1 -1
  168. package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +1 -1
  169. package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
  170. package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  171. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +5 -4
  172. package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
  173. package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
  174. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +6 -5
  175. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +7025 -6967
  176. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +477 -46
  177. package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +4 -3
  178. package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
  179. package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +3 -3
  180. package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
  181. package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +3 -3
  182. package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +6 -6
  183. package/bin/exiftool_files/lib/Image/ExifTool/Vivo.pm +124 -0
  184. package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
  185. package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +1 -1
  186. package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
  187. package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  188. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +3 -3
  189. package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  190. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -1
  191. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +1 -1
  192. package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  193. package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
  194. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +166 -79
  195. package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +17 -6
  196. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +3 -3
  197. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +89 -96
  198. package/bin/exiftool_files/lib/Image/ExifTool/XISF.pm +1 -1
  199. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +39 -14
  200. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +103 -1
  201. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +2 -3
  202. package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +2 -2
  203. package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +1 -1
  204. package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
  205. package/bin/exiftool_files/lib/Image/ExifTool.pm +338 -166
  206. package/bin/exiftool_files/lib/Image/ExifTool.pod +119 -73
  207. package/bin/exiftool_files/readme_windows.txt +8 -13
  208. package/bin/exiftool_files/windows_exiftool.txt +102 -53
  209. package/package.json +11 -11
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
65
65
  use Image::ExifTool::GPS;
66
66
  use Image::ExifTool::XMP;
67
67
 
68
- $VERSION = '4.38';
68
+ $VERSION = '4.41';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -1546,7 +1546,108 @@ my %afPoints81 = (
1546
1546
  17 => 'H6', 34 => 'G7', 51 => 'F8', 68 => 'A9',
1547
1547
  );
1548
1548
 
1549
- # AF point indices for models with 493 focus points, eg. Z8/Z9 (ref 28)
1549
+ # AF point indices for 209 focus point(single-point AF) cameras equipped with Expeed 7 processor eg. Z50ii). Single-point AF array is 11 rows x 19 columns. (ref 28)
1550
+ # - Auto Area AF has 2 additional columns available and provides 231 focus points. Uses 11 rows (A-K) and 21 columns (1-21), center is F11
1551
+ my %afPoints209 = (
1552
+ 1 => 'A1', 22 => 'B1', 43 => 'C1', 64 => 'D1', 85 => 'E1', 106 => 'F1', 127 => 'G1', 148 => 'H1',
1553
+ 2 => 'A2', 23 => 'B2', 44 => 'C2', 65 => 'D2', 86 => 'E2', 107 => 'F2', 128 => 'G2', 149 => 'H2',
1554
+ 3 => 'A3', 24 => 'B3', 45 => 'C3', 66 => 'D3', 87 => 'E3', 108 => 'F3', 129 => 'G3', 150 => 'H3',
1555
+ 4 => 'A4', 25 => 'B4', 46 => 'C4', 67 => 'D4', 88 => 'E4', 109 => 'F4', 130 => 'G4', 151 => 'H4',
1556
+ 5 => 'A5', 26 => 'B5', 47 => 'C5', 68 => 'D5', 89 => 'E5', 110 => 'F5', 131 => 'G5', 152 => 'H5',
1557
+ 6 => 'A6', 27 => 'B6', 48 => 'C6', 69 => 'D6', 90 => 'E6', 111 => 'F6', 132 => 'G6', 153 => 'H6',
1558
+ 7 => 'A7', 28 => 'B7', 49 => 'C7', 70 => 'D7', 91 => 'E7', 112 => 'F7', 133 => 'G7', 154 => 'H7',
1559
+ 8 => 'A8', 29 => 'B8', 50 => 'C8', 71 => 'D8', 92 => 'E8', 113 => 'F8', 134 => 'G8', 155 => 'H8',
1560
+ 9 => 'A9', 30 => 'B9', 51 => 'C9', 72 => 'D9', 93 => 'E9', 114 => 'F9', 135 => 'G9', 156 => 'H9',
1561
+ 10 => 'A10', 31 => 'B10', 52 => 'C10', 73 => 'D10', 94 => 'E10', 115 => 'F10', 136 => 'G10', 157 => 'H10',
1562
+ 11 => 'A11', 32 => 'B11' , 53 => 'C11', 74 => 'D11', 95 => 'E11', 116 => 'F11', 137 => 'G11', 158 => 'H11',
1563
+ 12 => 'A12', 33 => 'B12' , 54 => 'C12', 75 => 'D12', 96 => 'E12', 117 => 'F12', 138 => 'G12', 159 => 'H12',
1564
+ 13 => 'A13', 34 => 'B13' , 55 => 'C13', 76 => 'D13', 97 => 'E13', 118 => 'F13', 139 => 'G13', 160 => 'H13',
1565
+ 14 => 'A14', 35 => 'B14' , 56 => 'C14', 77 => 'D14', 98 => 'E14', 119 => 'F14', 140 => 'G14', 161 => 'H14',
1566
+ 15 => 'A15', 36 => 'B15', 57 => 'C15', 78 => 'D15', 99 => 'E15', 120 => 'F15', 141 => 'G15', 162 => 'H15',
1567
+ 16 => 'A16', 37 => 'B16' , 58 => 'C16', 79 => 'D16', 100 => 'E16', 121 => 'F16', 142 => 'G16', 163 => 'H16',
1568
+ 17 => 'A17', 38 => 'B17', 59 => 'C17', 80 => 'D17', 101 => 'E17', 122 => 'F17', 143 => 'G17', 164 => 'H17',
1569
+ 18 => 'A18', 39 => 'B18', 60 => 'C18', 81 => 'D18', 102 => 'E18', 123 => 'F18', 144 => 'G18', 165 => 'H18',
1570
+ 19 => 'A19', 40 => 'B19', 61 => 'C19', 82 => 'D19', 103 => 'E19', 124 => 'F19', 145 => 'G19', 166 => 'H19',
1571
+ 20 => 'A20', 41 => 'B20', 62 => 'C20', 83 => 'D20', 104 => 'E20', 125 => 'F20', 146 => 'G20', 167 => 'H20',
1572
+ 21 => 'A21', 42 => 'B21', 63 => 'C21', 84 => 'D21', 105 => 'E21', 126 => 'F21', 147 => 'G21', 168 => 'H21',
1573
+
1574
+ 169 => 'I1', 190 => 'J1', 211 => 'K1',
1575
+ 170 => 'I2', 191 => 'J2', 212 => 'K2',
1576
+ 171 => 'I3', 192 => 'J3', 213 => 'K3',
1577
+ 172 => 'I4', 193 => 'J4', 214 => 'K4',
1578
+ 173 => 'I5', 194 => 'J5', 215 => 'K5',
1579
+ 174 => 'I6', 195 => 'J6', 216 => 'K6',
1580
+ 175 => 'I7', 196 => 'J7', 217 => 'K7',
1581
+ 176 => 'I8', 197 => 'J8', 218 => 'K8',
1582
+ 177 => 'I9', 198 => 'J9', 219 => 'K9',
1583
+ 178 => 'I10', 199 => 'J10', 220 => 'K10',
1584
+ 179 => 'I11', 200 => 'J11', 221 => 'K11',
1585
+ 180 => 'I12', 201 => 'J12', 222 => 'K12',
1586
+ 181 => 'I13', 202 => 'J13', 223 => 'K13',
1587
+ 182 => 'I14', 203 => 'J14', 224 => 'K14',
1588
+ 183 => 'I15', 204 => 'J15', 225 => 'K15',
1589
+ 184 => 'I16', 205 => 'J16', 226 => 'K16',
1590
+ 185 => 'I17', 206 => 'J17', 227 => 'K17',
1591
+ 186 => 'I18', 207 => 'J18', 228 => 'K18',
1592
+ 187 => 'I19', 208 => 'J19', 229 => 'K19',
1593
+ 188 => 'I20', 209 => 'J20', 230 => 'K20',
1594
+ 189 => 'I21', 210 => 'J21', 231 => 'K21',
1595
+ );
1596
+
1597
+ # AF point indices for 273 focus point (single-point AF) cameras equipped with Expeed 7 processor (eg. Z6iii and Zf). Single-point AF array is 13 rows x 21 columns (ref 28)
1598
+ # - Auto Area AF has 2 additional columns available and provides 299 focus points. Uses 13 rows (A-M) and 23 columns (1-23), center is G12
1599
+ #
1600
+ my %afPoints273 = (
1601
+ 1 => 'A1', 24 => 'B1', 47 => 'C1', 70 => 'D1', 93 => 'E1', 116 => 'F1', 139 => 'G1', 162 => 'H1',
1602
+ 2 => 'A2', 25 => 'B2', 48 => 'C2', 71 => 'D2', 94 => 'E2', 117 => 'F2', 140 => 'G2', 163 => 'H2',
1603
+ 3 => 'A3', 26 => 'B3', 49 => 'C3', 72 => 'D3', 95 => 'E3', 118 => 'F3', 141 => 'G3', 164 => 'H3',
1604
+ 4 => 'A4', 27 => 'B4', 50 => 'C4', 73 => 'D4', 96 => 'E4', 119 => 'F4', 142 => 'G4', 165 => 'H4',
1605
+ 5 => 'A5', 28 => 'B5', 51 => 'C5', 74 => 'D5', 97 => 'E5', 120 => 'F5', 143 => 'G5', 166 => 'H5',
1606
+ 6 => 'A6', 29 => 'B6', 52 => 'C6', 75 => 'D6', 98 => 'E6', 121 => 'F6', 144 => 'G6', 167 => 'H6',
1607
+ 7 => 'A7', 30 => 'B7', 53 => 'C7', 76 => 'D7', 99 => 'E7', 122 => 'F7', 145 => 'G7', 168 => 'H7',
1608
+ 8 => 'A8', 31 => 'B8', 54 => 'C8', 77 => 'D8', 100 => 'E8', 123 => 'F8', 146 => 'G8', 169 => 'H8',
1609
+ 9 => 'A9', 32 => 'B9', 55 => 'C9', 78 => 'D9', 101 => 'E9', 124 => 'F9', 147 => 'G9', 170 => 'H9',
1610
+ 10 => 'A10', 33 => 'B10', 56 => 'C10', 79 => 'D10', 102 => 'E10', 125 => 'F10', 148 => 'G10', 171 => 'H10',
1611
+ 11 => 'A11', 34 => 'B11' , 57 => 'C11', 80 => 'D11', 103 => 'E11', 126 => 'F11', 149 => 'G11', 172 => 'H11',
1612
+ 12 => 'A12', 35 => 'B12' , 58 => 'C12', 81 => 'D12', 104 => 'E12', 127 => 'F12', 150 => 'G12', 173 => 'H12',
1613
+ 13 => 'A13', 36 => 'B13' , 59 => 'C13', 82 => 'D13', 105 => 'E13', 128 => 'F13', 151 => 'G13', 174 => 'H13',
1614
+ 14 => 'A14', 37 => 'B14' , 60 => 'C14', 83 => 'D14', 106 => 'E14', 129 => 'F14', 152 => 'G14', 175 => 'H14',
1615
+ 15 => 'A15', 38 => 'B15', 61 => 'C15', 84 => 'D15', 107 => 'E15', 130 => 'F15', 153 => 'G15', 176 => 'H15',
1616
+ 16 => 'A16', 39 => 'B16' , 62 => 'C16', 85 => 'D16', 108 => 'E16', 131 => 'F16', 154 => 'G16', 177 => 'H16',
1617
+ 17 => 'A17', 40 => 'B17', 63 => 'C17', 86 => 'D17', 109 => 'E17', 132 => 'F17', 155 => 'G17', 178 => 'H17',
1618
+ 18 => 'A18', 41 => 'B18', 64 => 'C18', 87 => 'D18', 110 => 'E18', 133 => 'F18', 156 => 'G18', 179 => 'H18',
1619
+ 19 => 'A19', 42 => 'B19', 65 => 'C19', 88 => 'D19', 111 => 'E19', 134 => 'F19', 157 => 'G19', 180 => 'H19',
1620
+ 20 => 'A20', 43 => 'B20', 66 => 'C20', 89 => 'D20', 112 => 'E20', 135 => 'F20', 158 => 'G20', 181 => 'H20',
1621
+ 21 => 'A21', 44 => 'B21', 67 => 'C21', 90 => 'D21', 113 => 'E21', 136 => 'F21', 159 => 'G21', 182 => 'H21',
1622
+ 22 => 'A22', 45 => 'B22', 68 => 'C22', 91 => 'D22', 114 => 'E22', 137 => 'F22', 160 => 'G22', 183 => 'H22',
1623
+ 23 => 'A23', 46 => 'B23', 69 => 'C23', 92 => 'D23', 115 => 'E23', 138 => 'F23', 161 => 'G23', 184 => 'H23',
1624
+
1625
+ 185 => 'I1', 208 => 'J1', 231 => 'K1', 254 => 'L1', 277 => 'M1',
1626
+ 186 => 'I2', 209 => 'J2', 232 => 'K2', 255 => 'L2', 278 => 'M2',
1627
+ 187 => 'I3', 210 => 'J3', 233 => 'K3', 256 => 'L3', 279 => 'M3',
1628
+ 188 => 'I4', 211 => 'J4', 234 => 'K4', 257 => 'L4', 280 => 'M4',
1629
+ 189 => 'I5', 212 => 'J5', 235 => 'K5', 258 => 'L5', 281 => 'M5',
1630
+ 190 => 'I6', 213 => 'J6', 236 => 'K6', 259 => 'L6', 282 => 'M6',
1631
+ 191 => 'I7', 214 => 'J7', 237 => 'K7', 260 => 'L7', 283 => 'M7',
1632
+ 192 => 'I8', 215 => 'J8', 238 => 'K8', 261 => 'L8', 284 => 'M8',
1633
+ 193 => 'I9', 216 => 'J9', 239 => 'K9', 262 => 'L9', 285 => 'M9',
1634
+ 194 => 'I10', 217 => 'J10', 240 => 'K10', 263 => 'L10', 286 => 'M10',
1635
+ 195 => 'I11', 218 => 'J11', 241 => 'K11', 264 => 'L11', 287 => 'M11',
1636
+ 196 => 'I12', 219 => 'J12', 242 => 'K12', 265 => 'L12', 288 => 'M12',
1637
+ 197 => 'I13', 220 => 'J13', 243 => 'K13', 266 => 'L13', 289 => 'M13',
1638
+ 198 => 'I14', 221 => 'J14', 244 => 'K14', 267 => 'L14', 290 => 'M14',
1639
+ 199 => 'I15', 222 => 'J15', 245 => 'K15', 268 => 'L15', 291 => 'M15',
1640
+ 200 => 'I16', 223 => 'J16', 246 => 'K16', 269 => 'L16', 292 => 'M16',
1641
+ 201 => 'I17', 224 => 'J17', 247 => 'K17', 270 => 'L17', 293 => 'M17',
1642
+ 202 => 'I18', 225 => 'J18', 248 => 'K18', 271 => 'L18', 294 => 'M18',
1643
+ 203 => 'I19', 226 => 'J19', 249 => 'K19', 272 => 'L19', 295 => 'M19',
1644
+ 204 => 'I20', 227 => 'J20', 250 => 'K20', 273 => 'L20', 296 => 'M20',
1645
+ 205 => 'I21', 228 => 'J21', 251 => 'K21', 274 => 'L21', 297 => 'M21',
1646
+ 206 => 'I22', 229 => 'J22', 252 => 'K22', 275 => 'L22', 298 => 'M22',
1647
+ 208 => 'I23', 230 => 'J23', 253 => 'K23', 276 => 'L23', 299 => 'M23',
1648
+ );
1649
+
1650
+ # AF point indices for 493 focus point (single-point AF) cameras equipped with Expeed 7 processor (eg. Z8 and Z9). Single-point AF array is 17 rows x 29 columns (ref 28)
1550
1651
  # - Auto Area AF uses 15 of the 17 rows (A-Q) and 27 of the 29 columns (1-27), center is H14 (405 of the 493 focus points can be used by Auto-area AF)
1551
1652
  #
1552
1653
  my %afPoints493 = (
@@ -1606,6 +1707,7 @@ my %afPoints493 = (
1606
1707
  242 => 'I26', 269 => 'J26', 296 => 'K26', 323 => 'L26', 350 => 'M26', 377 => 'N26', 404 => 'O26',
1607
1708
  243 => 'I27', 270 => 'J27', 297 => 'K27', 324 => 'L27', 351 => 'M27', 378 => 'N27', 405 => 'O27',
1608
1709
  );
1710
+
1609
1711
  my %cropHiSpeed = ( #IB
1610
1712
  0 => 'Off',
1611
1713
  1 => '1.3x Crop', # (1.3x Crop, Large)
@@ -3011,7 +3113,9 @@ my %base64coord = (
3011
3113
  },
3012
3114
  0x00b7 => [{
3013
3115
  Name => 'AFInfo2',
3014
- Condition => '$$self{Model} =~ /^NIKON (Z 8|Z 9)\b/i', #AFInfo2Version 0400
3116
+ # Expeed 7 processor models - Z8 & Z9 (AFInfo2Version 0400), Z6iii & Zf (AFInfo2Version 0401)
3117
+ # and Z50ii (AFInfo2Version 0402)
3118
+ Condition => '$$valPt =~ /^040[012]/',
3015
3119
  SubDirectory => { TagTable => 'Image::ExifTool::Nikon::AFInfo2V0400' },
3016
3120
  },{ #JD
3017
3121
  Name => 'AFInfo2',
@@ -4413,6 +4517,7 @@ my %base64coord = (
4413
4517
  { #PH (Z7)
4414
4518
  Name => 'PrimaryAFPoint',
4415
4519
  Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
4520
+ PrintConvColumns => 5,
4416
4521
  PrintConv => {
4417
4522
  0 => '(none)',
4418
4523
  %afPoints81,
@@ -4697,10 +4802,14 @@ my %base64coord = (
4697
4802
  },
4698
4803
  );
4699
4804
 
4700
- %Image::ExifTool::Nikon::AFInfo2V0400 = ( #V0400 related fields begin at x'3c' (Z9)
4805
+ %Image::ExifTool::Nikon::AFInfo2V0400 = (
4701
4806
  %binaryDataAttrs,
4702
4807
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4703
- DATAMEMBER => [ 0 ],
4808
+ DATAMEMBER => [ 0, 5 ],
4809
+ NOTES => q{
4810
+ AF information for Nikon cameras with the Expeed 7 processor: The Zf, Z6_3,
4811
+ Z8, Z9 and Z50_3.
4812
+ },
4704
4813
  0 => {
4705
4814
  Name => 'AFInfo2Version',
4706
4815
  Format => 'undef[4]',
@@ -4709,6 +4818,7 @@ my %base64coord = (
4709
4818
  },
4710
4819
  5 => { #28
4711
4820
  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)
4821
+ RawConv => '$$self{AFAreaModeUsed} = $val',
4712
4822
  PrintConv => {
4713
4823
  192 => 'Pinpoint',
4714
4824
  193 => 'Single',
@@ -4722,15 +4832,34 @@ my %base64coord = (
4722
4832
  208 => 'Wide (C1/C2)',
4723
4833
  },
4724
4834
  },
4725
- 10 => {
4726
- Name => 'AFPointsUsed',
4727
- Condition => 'defined $$self{AFAreaMode} and $$self{AFAreaMode} == 6', #only valid for Auto AF Area mode. Other modes handled via AFAreaXPosition/AFAreaYPosition
4728
- Format => 'undef[51]',
4729
- ValueConv => 'join(" ", unpack("H2"x51, $val))',
4730
- ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4731
- PrintConv => sub { PrintAFPoints(shift, \%afPoints493); },
4732
- PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints493); },
4733
- },
4835
+ 10 => [{
4836
+ # valid only for AFAreaModes where the camera selects the focus point (i.e., AutoArea & 3D-Tracking)
4837
+ # and the camera has yet to determine a focus target (in these cases tags AFAreaXPosition and AFAreaYPosition will be zeroes)
4838
+ Name => 'AFPointsUsed', # Z8 and Z9 (AFInfo2Version 0400)
4839
+ Condition => '$$self{Model} =~ /^NIKON (Z 8|Z 9)\b/i and ($$self{AFAreaModeUsed} == 197 or $$self{AFAreaModeUsed} == 207)',
4840
+ Format => 'undef[51]',
4841
+ Notes => 'either AFPointsUsed or AFAreaX/YPosition will be set, but not both',
4842
+ ValueConv => 'join(" ", unpack("H2"x51, $val))',
4843
+ ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4844
+ PrintConv => sub { PrintAFPoints(shift, \%afPoints493); },
4845
+ PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints493); },
4846
+ },{
4847
+ Name => 'AFPointsUsed', # Z6iii and Zf (AFInfo2Version 0401)
4848
+ Condition => '$$self{Model} =~ /^NIKON (Z6_3|Z f)\b/i and ($$self{AFAreaModeUsed} == 197 or $$self{AFAreaModeUsed} == 207)',
4849
+ Format => 'undef[35]',
4850
+ ValueConv => 'join(" ", unpack("H2"x35, $val))',
4851
+ ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4852
+ PrintConv => sub { PrintAFPoints(shift, \%afPoints273); },
4853
+ PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints273); },
4854
+ },{
4855
+ Name => 'AFPointsUsed', # Z50ii (AFInfo2Version 0402)
4856
+ Condition => '$$self{Model} =~ /^NIKON Z50_2\b/i and ($$self{AFAreaModeUsed} == 197 or $$self{AFAreaModeUsed} == 207)',
4857
+ Format => 'undef[27]',
4858
+ ValueConv => 'join(" ", unpack("H2"x27, $val))',
4859
+ ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
4860
+ PrintConv => sub { PrintAFPoints(shift, \%afPoints209); },
4861
+ PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints209); },
4862
+ }],
4734
4863
  0x3e => {
4735
4864
  Name => 'AFImageWidth',
4736
4865
  Format => 'int16u',
@@ -4744,27 +4873,27 @@ my %base64coord = (
4744
4873
  Format => 'int16u', # (decodes same byte as 0x43)
4745
4874
  RawConv => '$val ? $val : undef',
4746
4875
  },
4747
- 0x43 => {
4748
- Name => 'FocusPositionHorizontal',
4749
- Notes => q{
4750
- the focus points form a 29x17 grid, but the X,Y coordinate values run from 1,1
4751
- to 30,19. The horizontal coordinate 11R (5) and the vertical coordinates 6U
4752
- (4) and 2D (12) are not used for some reason
4753
- },
4754
- # 493 focus points for Z9 fall in a 30x19 grid
4755
- # (the 11R (5) position is not used, for a total of 29 columns, ref AlbertShan email)
4756
- PrintConv => sub { my ($val) = @_; PrintAFPointsLeftRight($val, 29); },
4757
- },
4876
+ #0x43 => {
4877
+ # Name => 'FocusPositionHorizontal',
4878
+ # Notes => q{
4879
+ # the focus points form a 29x17 grid, but the X,Y coordinate values run from 1,1
4880
+ # to 30,19. The horizontal coordinate 11R (5) and the vertical coordinates 6U
4881
+ # (4) and 2D (12) are not used for some reason
4882
+ # },
4883
+ # # 493 focus points for Z9 fall in a 30x19 grid
4884
+ # # (the 11R (5) position is not used, for a total of 29 columns, ref AlbertShan email)
4885
+ # PrintConv => sub { my ($val) = @_; PrintAFPointsLeftRight($val, 29); },
4886
+ #},
4758
4887
  0x44 => { #28
4759
4888
  Name => 'AFAreaYPosition',
4760
4889
  Format => 'int16u', # (decodes same byte as 0x45)
4761
4890
  RawConv => '$val ? $val : undef',
4762
4891
  },
4763
- 0x45 => {
4764
- Name => 'FocusPositionVertical',
4765
- # (the 6U (4) and 2D (12) are not used, for a total of 17 rows, ref AlbertShan email)
4766
- PrintConv => sub { my ($val) = @_; PrintAFPointsUpDown($val, 17); },
4767
- },
4892
+ #0x45 => {
4893
+ # Name => 'FocusPositionVertical',
4894
+ # # (the 6U (4) and 2D (12) are not used, for a total of 17 rows, ref AlbertShan email)
4895
+ # PrintConv => sub { my ($val) = @_; PrintAFPointsUpDown($val, 17); },
4896
+ #},
4768
4897
  0x46 => {
4769
4898
  Name => 'AFAreaWidth',
4770
4899
  Format => 'int16u',
@@ -5581,15 +5710,17 @@ my %nikonFocalConversions = (
5581
5710
  45 => 'Nikkor Z 600mm f/6.3 VR S', #28
5582
5711
  46 => 'Nikkor Z 135mm f/1.8 S Plena', #28
5583
5712
  48 => 'Nikkor Z 28-400mm f/4-8 VR', #30
5713
+ 51 => 'Nikkor Z 35mm f/1.4', #28
5714
+ 52 => 'Nikkor Z 50mm f/1.4', #28
5584
5715
  2305 => 'Laowa FFII 10mm F2.8 C&D Dreamer', #30
5585
5716
  32768 => 'Nikkor Z 400mm f/2.8 TC VR S TC-1.4x', #28
5586
5717
  32769 => 'Nikkor Z 600mm f/4 TC VR S TC-1.4x', #28
5587
5718
  },
5588
5719
  },
5589
5720
  0x34 => { #28
5590
- Name => 'LensFirmwareVersion',
5721
+ Name => 'LensFirmwareVersion',
5591
5722
  Condition => '$$self{LensID} and $$self{LensID} != 0', #only valid for Z-mount lenses
5592
- Format => 'int16u', #4 bits each for version, release amd modification in VRM scheme.
5723
+ Format => 'int16u', #4 bits each for version, release amd modification in VRM scheme.
5593
5724
  PrintConv => q{
5594
5725
  my $version = int($val / 256);
5595
5726
  my $release = int(($val - 256 * $version)/16);
@@ -8395,7 +8526,7 @@ my %nikonFocalConversions = (
8395
8526
  TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ6III',
8396
8527
  Start => '$val',
8397
8528
  },
8398
- },
8529
+ },
8399
8530
  );
8400
8531
 
8401
8532
  # shot information for the Z7II firmware 1.00 (encrypted) - ref 28
@@ -8940,13 +9071,23 @@ my %nikonFocalConversions = (
8940
9071
  },
8941
9072
  {
8942
9073
  Name => 'MenuSettingsOffsetZ9v4',
8943
- Notes => 'Firmware versions 4.0 and later',
9074
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "05.01"',
9075
+ Notes => 'Firmware versions 4.x and 5.0',
8944
9076
  Format => 'int32u',
8945
9077
  SubDirectory => {
8946
9078
  TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9v4',
8947
9079
  Start => '$dirStart + $val',
8948
9080
  },
8949
9081
  },
9082
+ {
9083
+ Name => 'MenuSettingsOffsetZ9v4',
9084
+ Notes => 'Firmware versions 4.x and 5.0',
9085
+ Format => 'int32u',
9086
+ SubDirectory => {
9087
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9v5',
9088
+ Start => '$dirStart + $val',
9089
+ },
9090
+ },
8950
9091
  ],
8951
9092
  );
8952
9093
 
@@ -9191,7 +9332,7 @@ my %nikonFocalConversions = (
9191
9332
  720 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
9192
9333
  722 => { Name => 'NikonMeteringMode', PrintConv => \%meteringModeZ7},
9193
9334
  724 => {
9194
- Name => 'FlashControlMode',
9335
+ Name => 'FlashControlMode',
9195
9336
  RawConv => '$$self{FlashControlMode} = $val',
9196
9337
  PrintConv => \%flashControlModeZ7,
9197
9338
  },
@@ -10454,12 +10595,13 @@ my %nikonFocalConversions = (
10454
10595
  #1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
10455
10596
  );
10456
10597
 
10598
+ # firmware version 4.x menu settings (ref 28)
10457
10599
  %Image::ExifTool::Nikon::MenuSettingsZ9v4 = (
10458
10600
  %binaryDataAttrs,
10459
10601
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10460
10602
  DATAMEMBER => [ 154, 204, 208, 248, 328, 444, 548, 554, 570, 596 ],
10461
10603
  IS_SUBDIR => [ 847 ],
10462
- NOTES => 'These tags are used by the Z9 firmware 4.0.0 and 4.1.0',
10604
+ NOTES => 'These tags are used by the Z9 firmware 4.0.0 and 4.1.0.',
10463
10605
  72 => {
10464
10606
  Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
10465
10607
  PrintConv => \%highFrameRateZ9,
@@ -10765,6 +10907,318 @@ my %nikonFocalConversions = (
10765
10907
  2072 => { Name => 'FlashModeButtonPlaybackMode', %buttonsZ9}, #CSf2
10766
10908
  );
10767
10909
 
10910
+ # menu settings for the Z9 with firmware version 5.1 (ref 28)
10911
+ %Image::ExifTool::Nikon::MenuSettingsZ9v5 = (
10912
+ %binaryDataAttrs,
10913
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10914
+ DATAMEMBER => [ 158, 208, 212, 252, 332, 448, 552, 558, 574, 600 ],
10915
+ IS_SUBDIR => [ 851 ],
10916
+ NOTES => 'These tags are used by the Z9 firmware 5.1.',
10917
+ 72 => {
10918
+ Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
10919
+ PrintConv => \%highFrameRateZ9,
10920
+ },
10921
+ 158 => {
10922
+ Name => 'MultipleExposureMode',
10923
+ RawConv => '$$self{MultipleExposureMode} = $val',
10924
+ PrintConv => \%multipleExposureModeZ9,
10925
+ },
10926
+ 160 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
10927
+ 208 => {
10928
+ Name => 'Intervals',
10929
+ Format => 'int32u',
10930
+ RawConv => '$$self{IntervalShootingIntervals} = $val',
10931
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
10932
+ },
10933
+ 212 => {
10934
+ Name => 'ShotsPerInterval',
10935
+ Format => 'int32u',
10936
+ RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
10937
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
10938
+ },
10939
+ 252 => {
10940
+ Name => 'FocusShiftNumberShots', #1-300
10941
+ RawConv => '$$self{FocusShiftNumberShots} = $val',
10942
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
10943
+ },
10944
+ 256 => {
10945
+ Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
10946
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
10947
+ },
10948
+ 260 => {
10949
+ Name => 'FocusShiftInterval',
10950
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
10951
+ PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
10952
+ },
10953
+ 264 => {
10954
+ Name => 'FocusShiftExposureLock',
10955
+ Unknown => 1,
10956
+ PrintConv => \%offOn,
10957
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
10958
+ },
10959
+ 294 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
10960
+ 296 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
10961
+ 332 => { Name => 'PhotoShootingMenuBankImageArea', RawConv => '$$self{ImageArea} = $val', PrintConv => \%imageAreaZ9 },
10962
+ #338 JPGCompression 0 => 'Size Priority', 1 => 'Optimal Quality',
10963
+ 346 => { Name => 'AutoISO', PrintConv => \%offOn },
10964
+ 348 => {
10965
+ Name => 'ISOAutoHiLimit',
10966
+ Format => 'int16u',
10967
+ Unknown => 1,
10968
+ ValueConv => '($val-104)/8',
10969
+ ValueConvInv => '8 * ($val + 104)',
10970
+ PrintConv => \%iSOAutoHiLimitZ7,
10971
+ },
10972
+ 350 => {
10973
+ Name => 'ISOAutoFlashLimit',
10974
+ Format => 'int16u',
10975
+ Unknown => 1,
10976
+ ValueConv => '($val-104)/8',
10977
+ ValueConvInv => '8 * ($val + 104)',
10978
+ PrintConv => \%iSOAutoHiLimitZ7,
10979
+ },
10980
+ 358 => {
10981
+ Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
10982
+ ValueConv => '$val / 8',
10983
+ Format => 'int16s',
10984
+ PrintConv => \%iSOAutoShutterTimeZ9,
10985
+ },
10986
+ 440 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
10987
+ 442 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
10988
+ 444 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
10989
+ 448 => {
10990
+ Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
10991
+ RawConv => '$$self{FlashControlMode} = $val',
10992
+ PrintConv => \%flashControlModeZ7,
10993
+ },
10994
+ 450 => {
10995
+ Name => 'FlashMasterCompensation',
10996
+ Format => 'int8s',
10997
+ Unknown => 1,
10998
+ ValueConv => '$val/6',
10999
+ ValueConvInv => '6 * $val',
11000
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
11001
+ PrintConvInv => '$val',
11002
+ },
11003
+ 454 => {
11004
+ Name => 'FlashGNDistance',
11005
+ Condition => '$$self{FlashControlMode} == 2',
11006
+ Unknown => 1,
11007
+ ValueConv => '$val + 3',
11008
+ PrintConv => \%flashGNDistance,
11009
+ },
11010
+ 458 => {
11011
+ 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)
11012
+ Condition => '$$self{FlashControlMode} >= 3',
11013
+ Unknown => 1,
11014
+ ValueConv => '2 ** (-$val/3)',
11015
+ ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
11016
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
11017
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
11018
+ },
11019
+ #466 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
11020
+ #468 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
11021
+ #480 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
11022
+ 552 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
11023
+ 554 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
11024
+ 558 => {
11025
+ Name => 'BracketSet',
11026
+ RawConv => '$$self{BracketSet} = $val',
11027
+ PrintConv => \%bracketSetZ9,
11028
+ },
11029
+ 560 => {
11030
+ Name => 'BracketProgram',
11031
+ Condition => '$$self{BracketSet} < 3',
11032
+ Notes => 'AE and/or Flash Bracketing',
11033
+ PrintConv => \%bracketProgramZ9,
11034
+ },
11035
+ 562 => {
11036
+ Name => 'BracketIncrement',
11037
+ Condition => '$$self{BracketSet} < 3',
11038
+ Notes => 'AE and/or Flash Bracketing',
11039
+ PrintConv => \%bracketIncrementZ9,
11040
+ },
11041
+ 574 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
11042
+ 580 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
11043
+ 586 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
11044
+ 590 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
11045
+ 596 => { Name => 'DXCropAlert', PrintConv => \%offOn },
11046
+ 598 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
11047
+ 600 => {
11048
+ Name => 'DynamicAFAreaSize',
11049
+ Condition => '$$self{AFAreaMode} == 2',
11050
+ RawConv => '$$self{DynamicAFAreaSize} = $val',
11051
+ PrintConv => \%dynamicAfAreaModesZ9,
11052
+ },
11053
+ 640 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
11054
+ 650 => {
11055
+ Name => 'MovieImageArea',
11056
+ Unknown => 1,
11057
+ Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
11058
+ PrintConv => \%imageAreaZ9b,
11059
+ },
11060
+ 660 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
11061
+ 662 => {
11062
+ Name => 'MovieISOAutoHiLimit',
11063
+ Format => 'int16u',
11064
+ Unknown => 1,
11065
+ ValueConv => '($val-104)/8',
11066
+ ValueConvInv => '8 * ($val + 104)',
11067
+ PrintConv => \%iSOAutoHiLimitZ7,
11068
+ },
11069
+ 664 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
11070
+ 666 => {
11071
+ Name => 'MovieISOAutoManualMode',
11072
+ Format => 'int16u',
11073
+ Unknown => 1,
11074
+ ValueConv => '($val-104)/8',
11075
+ ValueConvInv => '8 * ($val + 104)',
11076
+ PrintConv => \%iSOAutoHiLimitZ7,
11077
+ },
11078
+ 740 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
11079
+ 742 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
11080
+ 748 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
11081
+ 750 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
11082
+ 752 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
11083
+ 754 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
11084
+ 756 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
11085
+ 760 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
11086
+ 762 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
11087
+ 764 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
11088
+ 766 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
11089
+ 768 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
11090
+ 770 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
11091
+ 792 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
11092
+ 798 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
11093
+ 800 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
11094
+ 806 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
11095
+ 807 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
11096
+ 808 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
11097
+ 816 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
11098
+ 851 => {
11099
+ Name => 'CustomSettingsZ9v4',
11100
+ Format => 'undef[632]',
11101
+ SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9v4' },
11102
+ },
11103
+ 1502 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
11104
+ 1504 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
11105
+ 1510 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
11106
+ 1532 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
11107
+ 1536 => { Name => 'NonCPULens1FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
11108
+ 1540 => { Name => 'NonCPULens2FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11109
+ 1542 => { Name => 'NonCPULens3FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11110
+ 1548 => { Name => 'NonCPULens4FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11111
+ 1552 => { Name => 'NonCPULens5FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11112
+ 1556 => { Name => 'NonCPULens6FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11113
+ 1560 => { Name => 'NonCPULens7FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11114
+ 1564 => { Name => 'NonCPULens8FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11115
+ 1568 => { Name => 'NonCPULens9FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11116
+ 1572 => { Name => 'NonCPULens10FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11117
+ 1576 => { Name => 'NonCPULens11FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11118
+ 1580 => { Name => 'NonCPULens12FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11119
+ 1584 => { Name => 'NonCPULens13FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11120
+ 1588 => { Name => 'NonCPULens14FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11121
+ 1592 => { Name => 'NonCPULens15FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11122
+ 1596 => { Name => 'NonCPULens16FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11123
+ 1600 => { Name => 'NonCPULens17FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11124
+ 1604 => { Name => 'NonCPULens18FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11125
+ 1608 => { Name => 'NonCPULens19FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11126
+ 1612 => { Name => 'NonCPULens20FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11127
+ 1616 => { Name => 'NonCPULens1MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1}, #non-CPU aperture interface, values and storage differ from the Z8
11128
+ 1620 => { Name => 'NonCPULens2MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11129
+ 1624 => { Name => 'NonCPULens3MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11130
+ 1628 => { Name => 'NonCPULens4MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11131
+ 1632 => { Name => 'NonCPULens5MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11132
+ 1636 => { Name => 'NonCPULens6MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11133
+ 1640 => { Name => 'NonCPULens7MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11134
+ 1644 => { Name => 'NonCPULens8MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11135
+ 1648 => { Name => 'NonCPULens9MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11136
+ 1652 => { Name => 'NonCPULens10MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11137
+ 1656 => { Name => 'NonCPULens11MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11138
+ 1660 => { Name => 'NonCPULens12MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11139
+ 1664 => { Name => 'NonCPULens13MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11140
+ 1668 => { Name => 'NonCPULens14MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11141
+ 1672 => { Name => 'NonCPULens15MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11142
+ 1676 => { Name => 'NonCPULens16MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11143
+ 1680 => { Name => 'NonCPULens17MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11144
+ 1684 => { Name => 'NonCPULens18MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11145
+ 1688 => { Name => 'NonCPULens19MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11146
+ 1692 => { Name => 'NonCPULens20MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11147
+ 1708 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
11148
+ 1721 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
11149
+ 1728 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
11150
+ 1729 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
11151
+ 1764 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
11152
+ 1788 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
11153
+ 1792 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
11154
+ 1801 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
11155
+ 1866 => {
11156
+ Name => 'AutoCapturePreset',
11157
+ PrintConv => {
11158
+ 0 => '1',
11159
+ 1 => '2',
11160
+ 2 => '3',
11161
+ 3 => '4',
11162
+ 4 => '5',
11163
+ },
11164
+ },
11165
+ 1868 => {
11166
+ Name => 'FocusShiftAutoReset',
11167
+ Unknown => 1,
11168
+ PrintConv => \%offOn,
11169
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
11170
+ },
11171
+ 1926 => { #CSd4-a
11172
+ Name => 'PreReleaseBurstLength',
11173
+ PrintConv => {
11174
+ 0 => 'None',
11175
+ 1 => '0.3 Sec',
11176
+ 2 => '0.5 Sec',
11177
+ 3 => '1 Sec',
11178
+ },
11179
+ },
11180
+ 1928 => { #CSd4-b
11181
+ Name => 'PostReleaseBurstLength',
11182
+ PrintConv => {
11183
+ 0 => '1 Sec',
11184
+ 1 => '2 Sec',
11185
+ 2 => '3 Sec',
11186
+ 3 => 'Max',
11187
+ },
11188
+ },
11189
+ 1942 => { Name => 'VerticalISOButton', %buttonsZ9}, #CSf2
11190
+ 1944 => { Name => 'ExposureCompensationButton', %buttonsZ9}, #CSf2
11191
+ 1946 => { Name => 'ISOButton', %buttonsZ9}, #CSf2
11192
+ 2006 => { Name => 'ViewModeShowEffectsOfSettings', PrintConv => { 0=>'Always', 1=> 'Only When Flash Not Used'}, Unknown => 1 }, #CSd9-a
11193
+ 2008 => { Name => 'DispButton', %buttonsZ9}, #CSf2
11194
+ 2052 => { #CSd6
11195
+ Name => 'ExposureDelay',
11196
+ Format => 'fixed32u',
11197
+ PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
11198
+ },
11199
+ 2056 => { #CSf2-m3
11200
+ Name => 'CommandDialFrameAdvanceZoom',
11201
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
11202
+ PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
11203
+ Unknown => 1
11204
+ },
11205
+ 2058 => { #CSf2-n3
11206
+ Name => 'SubCommandDialFrameAdvanceZoom',
11207
+ Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
11208
+ PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
11209
+ Unknown => 1
11210
+ },
11211
+ 2060 => { Name => 'PlaybackButton', %buttonsZ9}, #CSf2
11212
+ 2062 => { Name => 'WBButton', %buttonsZ9}, #CSf2
11213
+ 2064 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
11214
+ 2066 => { Name => 'FlashModeButton', %buttonsZ9}, #CSf2
11215
+ 2068 => { Name => 'LensFunc1ButtonPlaybackMode', %buttonsZ9}, #CSf2
11216
+ 2070 => { Name => 'LensFunc2ButtonPlaybackMode', %buttonsZ9}, #CSf2
11217
+ 2072 => { Name => 'PlaybackButtonPlaybackMode', %buttonsZ9}, #CSf2
11218
+ 2074 => { Name => 'BracketButtonPlaybackMode', %buttonsZ9}, #CSf2
11219
+ 2076 => { Name => 'FlashModeButtonPlaybackMode', %buttonsZ9}, #CSf2
11220
+ );
11221
+
10768
11222
  # Flash information (ref JD)
10769
11223
  %Image::ExifTool::Nikon::FlashInfo0100 = (
10770
11224
  %binaryDataAttrs,
@@ -12100,7 +12554,6 @@ my %nikonFocalConversions = (
12100
12554
  3 => 'On (Required)',
12101
12555
  },
12102
12556
  },
12103
- #0x10 Degree of radial distortion correction polynomial? (always 4? - decodes for the first 3 coefficients follow, the 4th at 0x2c/0x30 seems to always be 0)
12104
12557
  0x14 => {
12105
12558
  Name => 'RadialDistortionCoefficient1',
12106
12559
  Format => 'rational64s',
@@ -13609,7 +14062,10 @@ sub ProcessNikonMOV($$$)
13609
14062
  Size => $size,
13610
14063
  Base => $$dirInfo{Base},
13611
14064
  );
13612
- $$et{RATIONAL}{$key} = $rational if $rational and $key;
14065
+ if ($key) {
14066
+ $$et{TAG_EXTRA}{$key}{Rational} = $rational if $rational;
14067
+ $$et{TAG_EXTRA}{$key}{BinVal} = substr($$dataPt, $pos, $size) if $$et{OPTIONS}{SaveBin};
14068
+ }
13613
14069
  } elsif (exists $needTags{$tag}) {
13614
14070
  $needTags{$tag} = ReadValue($dataPt, $pos, $fmtStr, $count, $size);
13615
14071
  $$et{NikonSerialKey} = SerialKey($et, $needTags{0x110a431});
@@ -14088,7 +14544,7 @@ Nikon maker notes in EXIF information.
14088
14544
 
14089
14545
  =head1 AUTHOR
14090
14546
 
14091
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
14547
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
14092
14548
 
14093
14549
  This library is free software; you can redistribute it and/or modify it
14094
14550
  under the same terms as Perl itself.