exiftool_vendored 12.50.0 → 12.54.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (204) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +69 -3
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +3 -3
  7. data/bin/exiftool +12 -9
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  13. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  14. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  15. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  16. data/bin/lib/Image/ExifTool/Apple.pm +197 -27
  17. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  18. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  19. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +3 -3
  23. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. data/bin/lib/Image/ExifTool/Canon.pm +14 -2
  25. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  26. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonVRD.pm +9 -9
  28. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. data/bin/lib/Image/ExifTool/Casio.pm +4 -4
  30. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  34. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  38. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  39. data/bin/lib/Image/ExifTool/Exif.pm +5 -16
  40. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  41. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  42. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLIR.pm +7 -6
  44. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  45. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  46. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  47. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  48. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FujiFilm.pm +20 -13
  50. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  51. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GPS.pm +12 -6
  54. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  55. data/bin/lib/Image/ExifTool/Geotag.pm +13 -5
  56. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  57. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  58. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  59. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  61. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  62. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  63. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  64. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  68. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. data/bin/lib/Image/ExifTool/JPEG.pm +2 -1
  70. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  72. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Jpeg2000.pm +35 -8
  74. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  75. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  76. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  77. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
  80. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/fr.pm +6016 -760
  85. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/sk.pm +1806 -0
  92. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  98. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  99. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  100. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  101. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  102. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  103. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  113. data/bin/lib/Image/ExifTool/Matroska.pm +262 -46
  114. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  115. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  117. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  118. data/bin/lib/Image/ExifTool/Nikon.pm +658 -276
  119. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  120. data/bin/lib/Image/ExifTool/NikonCustom.pm +140 -107
  121. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  122. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  123. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  124. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  125. data/bin/lib/Image/ExifTool/Olympus.pm +4 -3
  126. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  127. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  128. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  129. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  130. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  131. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  133. data/bin/lib/Image/ExifTool/PLIST.pm +12 -7
  134. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PNG.pm +9 -2
  136. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  138. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  139. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  141. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  142. data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  144. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  145. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  146. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  147. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  148. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  149. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  150. data/bin/lib/Image/ExifTool/QuickTime.pm +8 -4
  151. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +63 -15
  152. data/bin/lib/Image/ExifTool/README +2 -1
  153. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  154. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  155. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Samsung.pm +3 -1
  163. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  166. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  168. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Sony.pm +7 -7
  170. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  172. data/bin/lib/Image/ExifTool/TagInfoXML.pm +13 -8
  173. data/bin/lib/Image/ExifTool/TagLookup.pm +4599 -4505
  174. data/bin/lib/Image/ExifTool/TagNames.pod +313 -39
  175. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  177. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  178. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  179. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  180. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  181. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  182. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  183. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  184. data/bin/lib/Image/ExifTool/WriteExif.pl +14 -1
  185. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  186. data/bin/lib/Image/ExifTool/WritePDF.pl +5 -1
  187. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  188. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  189. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  190. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +30 -14
  191. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  192. data/bin/lib/Image/ExifTool/WriteXMP.pl +16 -2
  193. data/bin/lib/Image/ExifTool/Writer.pl +35 -15
  194. data/bin/lib/Image/ExifTool/XMP.pm +23 -3
  195. data/bin/lib/Image/ExifTool/XMP2.pl +20 -1
  196. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  197. data/bin/lib/Image/ExifTool/ZIP.pm +20 -8
  198. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  199. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  200. data/bin/lib/Image/ExifTool.pm +38 -16
  201. data/bin/lib/Image/ExifTool.pod +39 -38
  202. data/bin/perl-Image-ExifTool.spec +1 -1
  203. data/lib/exiftool_vendored/version.rb +1 -1
  204. metadata +3 -2
@@ -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.16';
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
  },
@@ -5053,6 +5267,7 @@ my %nikonFocalConversions = (
5053
5267
  31 => 'Nikkor Z 24-120 f/4', #28
5054
5268
  32 => 'Nikkor Z 800mm f/6.3 VR S', #28
5055
5269
  36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
5270
+ 39 => 'Nikkor Z 17-28mm f/2.8', #IB
5056
5271
  },
5057
5272
  },
5058
5273
  0x35 => { #28
@@ -8250,15 +8465,26 @@ my %nikonFocalConversions = (
8250
8465
  # account for variable location of menu settings data
8251
8466
  Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0xec4b',
8252
8467
  },
8253
- 0xec4b => {
8254
- Name => 'MenuSettingsZ9',
8255
- Format => 'undef[1646]',
8256
- Condition => '$$self{FirmwareVersion} lt "03.00"',
8257
- SubDirectory => {
8258
- TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
8468
+ 0xec4b => [
8469
+ {
8470
+ Name => 'MenuSettingsZ9',
8471
+ Condition => '$$self{FirmwareVersion} lt "03.00"',
8472
+ Format => 'undef[1646]',
8473
+ Notes => 'Firmware versions 2.11 and earlier',
8474
+ SubDirectory => {
8475
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
8476
+ },
8259
8477
  },
8260
- },
8261
- # note: DecryptLen currently set to 0xec4b + 1646
8478
+ {
8479
+ Name => 'MenuSettingsZ9',
8480
+ Notes => 'Firmware versions 3.0 and later',
8481
+ Format => 'undef[1948]',
8482
+ SubDirectory => {
8483
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9Firmware3',
8484
+ },
8485
+ },
8486
+ ],
8487
+ # note: DecryptLen currently set to 0xec4b + 2196
8262
8488
  );
8263
8489
 
8264
8490
  %Image::ExifTool::Nikon::MenuSettingsZ7II = (
@@ -8366,8 +8592,8 @@ my %nikonFocalConversions = (
8366
8592
  PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
8367
8593
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8368
8594
  },
8369
- 346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
8370
- 348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1},
8595
+ 346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
8596
+ 348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
8371
8597
  352 => {
8372
8598
  Name => 'FlashMasterControlMode', # tag name chosen for compatibility with those found in FlashInfo0102 & FlashInfo0103
8373
8599
  RawConv => '$$self{FlashGroupOptionsMasterMode} = $val',
@@ -8392,12 +8618,12 @@ my %nikonFocalConversions = (
8392
8618
  PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
8393
8619
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8394
8620
  },
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
8621
+ #360 => { Name => 'FlashGroupAControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupACompensation at 362 and FlashGroupAOutput at 368
8622
+ #368 => { Name => 'FlashGroupBControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupBCompensation at 370 and FlashGroupBOutput at 374
8623
+ #376 => { Name => 'FlashGroupCControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupCCompensation at 378 and FlashGroupCOutput at 382
8624
+ #384 => { Name => 'FlashGroupDControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupDCompensation at 386 and FlashGroupDOutput at 390
8625
+ #392 => { Name => 'FlashGroupEControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupECompensation at 394 and FlashGroupEOutput at 398
8626
+ #400 => { Name => 'FlashGroupFControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupFCompensation at 402 and FlashGroupFOutput at 406
8401
8627
  #434 => FocusMode
8402
8628
  #436 => AFAreaMode
8403
8629
  #438 => VibrationReduction
@@ -8405,8 +8631,8 @@ my %nikonFocalConversions = (
8405
8631
  #444 => BracketProgram
8406
8632
  #446 => BracketIncrement
8407
8633
  #463 => SilentPhotography
8408
- 502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1},
8409
- 504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1},
8634
+ 502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
8635
+ 504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
8410
8636
  506 => {
8411
8637
  Name => 'MovieSlowMotion',
8412
8638
  Unknown => 1,
@@ -8435,9 +8661,9 @@ my %nikonFocalConversions = (
8435
8661
  PrintConv => \%iSOAutoHiLimitZ7,
8436
8662
  },
8437
8663
  #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},
8664
+ 568 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
8665
+ 572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8666
+ 574 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8441
8667
  576 => {
8442
8668
  Name => 'MovieVignetteControlSameAsPhoto',
8443
8669
  Unknown => 1,
@@ -8453,7 +8679,7 @@ my %nikonFocalConversions = (
8453
8679
  Unknown => 1,
8454
8680
  PrintConv => \%offOn
8455
8681
  },
8456
- 584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
8682
+ 584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
8457
8683
  #586 => MovieAFAreaMode
8458
8684
  590 => {
8459
8685
  Name => 'MovieVibrationReduction',
@@ -8493,11 +8719,7 @@ my %nikonFocalConversions = (
8493
8719
  140 => {
8494
8720
  Name => 'MultipleExposureMode',
8495
8721
  RawConv => '$$self{MultipleExposureMode} = $val',
8496
- PrintConv => {
8497
- 0 => 'Off',
8498
- 1 => 'On (Series)',
8499
- 2 => 'On',
8500
- },
8722
+ PrintConv => \%multipleExposureModeZ9,
8501
8723
  },
8502
8724
  142 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0' }, #range 2-9
8503
8725
  188 => {
@@ -8533,27 +8755,11 @@ my %nikonFocalConversions = (
8533
8755
  PrintConv => \%offOn,
8534
8756
  Condition => '$$self{FocusShiftShooting} > 0',
8535
8757
  },
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
- },
8758
+ 274 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
8759
+ 276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, #single tag from both Photo & Video menus
8760
+ 308 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
8555
8761
  #310 ImageQuality
8556
- 322 => { Name => 'AutoISO', PrintConv => \%offOn, },
8762
+ 322 => { Name => 'AutoISO', PrintConv => \%offOn },
8557
8763
  324 => {
8558
8764
  Name => 'ISOAutoHiLimit',
8559
8765
  Format => 'int16u',
@@ -8575,58 +8781,7 @@ my %nikonFocalConversions = (
8575
8781
  Name => 'ISOAutoShutterTime', #shutter speed is 2 ** (-$val/24)
8576
8782
  ValueConv => '$val / 8',
8577
8783
  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
- },
8784
+ PrintConv => \%iSOAutoShutterTimeZ9,
8630
8785
  },
8631
8786
  #336 WhiteBalance
8632
8787
  #406 PictureControl
@@ -8635,8 +8790,8 @@ my %nikonFocalConversions = (
8635
8790
  #412 => { Name => 'NoiseReduction', PrintConv => \%offOn }, #Long Exposure Noise Reduction
8636
8791
  #414 HighISONoiseReduction
8637
8792
  #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
8793
+ 416 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8794
+ 418 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8640
8795
  #419 AutoDistortionControl #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8641
8796
  420 => { Name => 'FlickerReductionShooting', PrintConv => \%offOn },
8642
8797
  #422 MeteringMode
@@ -8671,94 +8826,39 @@ my %nikonFocalConversions = (
8671
8826
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8672
8827
  },
8673
8828
  #442 flash wirelss control 0=> 'Off' 1=> 'CMD'
8674
- 444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1},
8675
- 456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
8829
+ 444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
8830
+ 456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
8676
8831
  #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},
8832
+ 528 => { Name => 'AFAreaMode',PrintConv => \%aFAreaModeZ9 },
8833
+ 530 => { Name => 'VRMode', PrintConv => \%vRModeZ9 },
8691
8834
  534 => {
8692
8835
  Name => 'BracketSet',
8693
8836
  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
- },
8837
+ PrintConv => \%bracketSetZ9,
8701
8838
  },
8702
8839
  536 => {
8703
8840
  Name => 'BracketProgram',
8704
8841
  Condition => '$$self{BracketSet} < 3',
8705
8842
  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
- },
8843
+ PrintConv => \%bracketProgramZ9,
8715
8844
  },
8716
8845
  538 => {
8717
8846
  Name => 'BracketIncrement',
8718
8847
  Condition => '$$self{BracketSet} < 3',
8719
8848
  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
- },
8849
+ PrintConv => \%bracketIncrementZ9,
8728
8850
  },
8729
8851
  #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},
8852
+ 556 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
8853
+ 572 => { Name => 'DXCropAlert', PrintConv => \%offOn },
8854
+ 574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
8741
8855
  604 => {
8742
8856
  Name => 'MovieImageArea',
8743
8857
  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
- },
8858
+ Mask => 0x01, # without the mask 4 => 'FX', 5 => DX. only the 2nd Z-series field encountered with a mask
8859
+ PrintConv => \%imageAreaZ9b,
8761
8860
  },
8861
+ 614 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
8762
8862
  616 => {
8763
8863
  Name => 'MovieISOAutoHiLimit',
8764
8864
  Format => 'int16u',
@@ -8767,115 +8867,44 @@ my %nikonFocalConversions = (
8767
8867
  ValueConvInv => '8 * ($val + 104)',
8768
8868
  PrintConv => \%iSOAutoHiLimitZ7,
8769
8869
  },
8770
- 618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1},
8870
+ 618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
8771
8871
  620 => {
8772
8872
  Name => 'MovieISOAutoManualMode',
8773
8873
  Format => 'int16u',
8774
8874
  Unknown => 1,
8775
8875
  ValueConv => '($val-104)/8',
8776
- ValueConvInv => '8 * ($val + 104)',
8876
+ ValueConvInv => '8 * ($val + 104)',
8777
8877
  PrintConv => \%iSOAutoHiLimitZ7,
8778
8878
  },
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
8879
+ 696 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
8880
+ 698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8881
+ 704 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
8882
+ 706 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
8883
+ 708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
8884
+ 710 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
8885
+ 712 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
8886
+ 716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
8887
+ 718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
8888
+ 720 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, #1-20
8889
+ 722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
8806
8890
  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},
8891
+ 726 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
8892
+ 748 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
8893
+ 754 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
8894
+ 756 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
8895
+ 762 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
8896
+ 763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
8897
+ 764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
8822
8898
  799 => {
8823
8899
  Name => 'CustomSettingsZ9',
8824
8900
  Format => 'undef[608]',
8825
8901
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
8826
8902
  },
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
- },
8903
+ 1426 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
8904
+ 1428 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
8905
+ 1434 => { Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1 }, # settings: -5 to +5
8906
+ 1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
8907
+ 1552 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
8879
8908
  1565 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
8880
8909
  1572 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
8881
8910
  1573 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
@@ -8884,6 +8913,210 @@ my %nikonFocalConversions = (
8884
8913
  1636 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
8885
8914
  1645 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
8886
8915
  );
8916
+ %Image::ExifTool::Nikon::MenuSettingsZ9Firmware3 = ( #starts at Offset26 + 248
8917
+ %binaryDataAttrs,
8918
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8919
+ DATAMEMBER => [ 154, 204, 208, 248, 444, 554 ],
8920
+ IS_SUBDIR => [ 847 ],
8921
+ NOTES => 'These tags are used by the Z9 firmware 3.00.',
8922
+ 154 => {
8923
+ Name => 'MultipleExposureMode',
8924
+ RawConv => '$$self{MultipleExposureMode} = $val',
8925
+ PrintConv => \%multipleExposureModeZ9,
8926
+ },
8927
+ 156 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
8928
+ 204 => {
8929
+ Name => 'Intervals',
8930
+ Format => 'int32u',
8931
+ RawConv => '$$self{IntervalShootingIntervals} = $val',
8932
+ Condition => '$$self{IntervalShooting} > 0',
8933
+ },
8934
+ 208 => {
8935
+ Name => 'ShotsPerInterval',
8936
+ Format => 'int32u',
8937
+ RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
8938
+ Condition => '$$self{IntervalShooting} > 0',
8939
+ },
8940
+ 248 => {
8941
+ Name => 'FocusShiftNumberShots', #1-300
8942
+ RawConv => '$$self{FocusShiftNumberShots} = $val',
8943
+ Condition => '$$self{FocusShiftShooting} > 0',
8944
+ },
8945
+ 252 => {
8946
+ Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
8947
+ Condition => '$$self{FocusShiftShooting} > 0',
8948
+ },
8949
+ 256 => {
8950
+ Name => 'FocusShiftInterval',
8951
+ Condition => '$$self{FocusShiftShooting} > 0',
8952
+ PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
8953
+ },
8954
+ 260 => {
8955
+ Name => 'FocusShiftExposureLock',
8956
+ Unknown => 1,
8957
+ PrintConv => \%offOn,
8958
+ Condition => '$$self{FocusShiftShooting} > 0',
8959
+ },
8960
+ 290 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
8961
+ 292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
8962
+ 328 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
8963
+ 342 => { Name => 'AutoISO', PrintConv => \%offOn },
8964
+ 344 => {
8965
+ Name => 'ISOAutoHiLimit',
8966
+ Format => 'int16u',
8967
+ Unknown => 1,
8968
+ ValueConv => '($val-104)/8',
8969
+ ValueConvInv => '8 * ($val + 104)',
8970
+ PrintConv => \%iSOAutoHiLimitZ7,
8971
+ },
8972
+ 346 => {
8973
+ Name => 'ISOAutoFlashLimit',
8974
+ Format => 'int16u',
8975
+ Unknown => 1,
8976
+ ValueConv => '($val-104)/8',
8977
+ ValueConvInv => '8 * ($val + 104)',
8978
+ PrintConv => \%iSOAutoHiLimitZ7,
8979
+ },
8980
+ 354 => {
8981
+ Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
8982
+ ValueConv => '$val / 8',
8983
+ Format => 'int16s',
8984
+ PrintConv => \%iSOAutoShutterTimeZ9,
8985
+ },
8986
+ 436 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8987
+ 438 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8988
+ 440 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
8989
+ 444 => {
8990
+ Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
8991
+ RawConv => '$$self{FlashControlMode} = $val',
8992
+ PrintConv => \%flashControlModeZ7,
8993
+ },
8994
+ 446 => {
8995
+ Name => 'FlashMasterCompensation',
8996
+ Format => 'int8s',
8997
+ Unknown => 1,
8998
+ ValueConv => '$val/6',
8999
+ ValueConvInv => '6 * $val',
9000
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
9001
+ PrintConvInv => '$val',
9002
+ },
9003
+ 450 => {
9004
+ Name => 'FlashGNDistance',
9005
+ Condition => '$$self{FlashControlMode} == 2',
9006
+ Unknown => 1,
9007
+ ValueConv => '$val + 3',
9008
+ PrintConv => \%flashGNDistance,
9009
+ },
9010
+ 454 => {
9011
+ 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)
9012
+ Condition => '$$self{FlashControlMode} >= 3',
9013
+ Unknown => 1,
9014
+ ValueConv => '2 ** (-$val/3)',
9015
+ ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
9016
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
9017
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
9018
+ },
9019
+ #462 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
9020
+ #464 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
9021
+ #476 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
9022
+ 548 => { Name => 'AFAreaMode', PrintConv => \%aFAreaModeZ9},
9023
+ 550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
9024
+ 554 => {
9025
+ Name => 'BracketSet',
9026
+ RawConv => '$$self{BracketSet} = $val',
9027
+ PrintConv => \%bracketSetZ9,
9028
+ },
9029
+ 556 => {
9030
+ Name => 'BracketProgram',
9031
+ Condition => '$$self{BracketSet} < 3',
9032
+ Notes => 'AE and/or Flash Bracketing',
9033
+ PrintConv => \%bracketProgramZ9,
9034
+ },
9035
+ 558 => {
9036
+ Name => 'BracketIncrement',
9037
+ Condition => '$$self{BracketSet} < 3',
9038
+ Notes => 'AE and/or Flash Bracketing',
9039
+ PrintConv => \%bracketIncrementZ9,
9040
+ },
9041
+ 576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
9042
+ 592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
9043
+ 594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
9044
+ 636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
9045
+ 646 => {
9046
+ Name => 'MovieImageArea',
9047
+ Unknown => 1,
9048
+ Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
9049
+ PrintConv => \%imageAreaZ9b,
9050
+ },
9051
+ 656 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
9052
+ 658 => {
9053
+ Name => 'MovieISOAutoHiLimit',
9054
+ Format => 'int16u',
9055
+ Unknown => 1,
9056
+ ValueConv => '($val-104)/8',
9057
+ ValueConvInv => '8 * ($val + 104)',
9058
+ PrintConv => \%iSOAutoHiLimitZ7,
9059
+ },
9060
+ 660 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
9061
+ 662 => {
9062
+ Name => 'MovieISOAutoManualMode',
9063
+ Format => 'int16u',
9064
+ Unknown => 1,
9065
+ ValueConv => '($val-104)/8',
9066
+ ValueConvInv => '8 * ($val + 104)',
9067
+ PrintConv => \%iSOAutoHiLimitZ7,
9068
+ },
9069
+ 736 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
9070
+ 738 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
9071
+ 744 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
9072
+ 746 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
9073
+ 748 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
9074
+ 750 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
9075
+ 752 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
9076
+ 756 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
9077
+ 758 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
9078
+ 760 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
9079
+ 762 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
9080
+ 764 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
9081
+ 766 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
9082
+ 788 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
9083
+ 794 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
9084
+ 796 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
9085
+ 802 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
9086
+ 803 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
9087
+ 804 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
9088
+ 812 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
9089
+ 847 => {
9090
+ Name => 'CustomSettingsZ9',
9091
+ Format => 'undef[608]',
9092
+ SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
9093
+ },
9094
+ 1474 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
9095
+ 1476 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
9096
+ 1482 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
9097
+ 1504 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
9098
+ 1600 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
9099
+ 1613 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
9100
+ 1620 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
9101
+ 1621 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
9102
+ 1656 => { Name => 'EnergySavingMode', PrintConv =>\%offOn, Unknown => 1 },
9103
+ 1680 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
9104
+ 1684 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
9105
+ 1693 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
9106
+ 1754 => {
9107
+ Name => 'FocusShiftAutoReset',
9108
+ Unknown => 1,
9109
+ PrintConv => \%offOn,
9110
+ Condition => '$$self{FocusShiftShooting} > 0',
9111
+ },
9112
+ #1824 ReleaseTimingIndicatorTypeADelay CSd14-b 0 => '1/200' ... 15 => '1/6'
9113
+ #1826 VerticalISOButton CSf2
9114
+ #1828 ExposureCompensationButton CSf2
9115
+ #1830 ISOButton CSf2
9116
+ #1890 ViewModeShowEffectsOfSettings CSd9-a 0=>'Always', 1=> 'Only When Flash Not Used'
9117
+ #1892 DispButton CSf2
9118
+ #1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
9119
+ );
8887
9120
 
8888
9121
  # Flash information (ref JD)
8889
9122
  %Image::ExifTool::Nikon::FlashInfo0100 = (
@@ -9999,7 +10232,7 @@ my %nikonFocalConversions = (
9999
10232
  },
10000
10233
  12 => {
10001
10234
  Name => 'FlashFocalLength',
10002
- Notes => 'only valid if flash pattern is "Standard Illumination"',
10235
+ Notes => 'only valid if flash pattern is "Standard Illumination"', #illumination pattern no no supported starting with the SB-910
10003
10236
  RawConv => '($val and $val != 255) ? $val : undef',
10004
10237
  PrintConv => '"$val mm"',
10005
10238
  PrintConvInv => '$val=~/(\d+)/; $1 || 0',
@@ -10069,7 +10302,7 @@ my %nikonFocalConversions = (
10069
10302
  0x29 => [ #PH
10070
10303
  {
10071
10304
  Name => 'FlashGroupBOutput',
10072
- Condition => '$$self{FlashGroupBControlMode} >= 0x60',
10305
+ Condition => '$$self{FlashGroupBControlMode} >= 0x06',
10073
10306
  ValueConv => '2 ** (-$val/6)',
10074
10307
  ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10075
10308
  PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
@@ -10109,6 +10342,7 @@ my %nikonFocalConversions = (
10109
10342
  %Image::ExifTool::Nikon::FlashInfo0300 = (
10110
10343
  %binaryDataAttrs,
10111
10344
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10345
+ DATAMEMBER => [ 9.2, 17.1, 18.1, 18.2 ],
10112
10346
  0 => {
10113
10347
  Name => 'FlashInfoVersion',
10114
10348
  Format => 'string[4]',
@@ -10123,15 +10357,39 @@ my %nikonFocalConversions = (
10123
10357
  },
10124
10358
  },
10125
10359
  6 => {
10126
- Format => 'int8u[2]',
10127
10360
  Name => 'ExternalFlashFirmware',
10361
+ Format => 'int8u[2]',
10128
10362
  SeparateTable => 'FlashFirmware',
10129
10363
  PrintConv => \%flashFirmware,
10130
10364
  },
10365
+ 8 => {
10366
+ Name => 'ExternalFlashFlags',
10367
+ PrintConv => { BITMASK => {
10368
+ 0 => 'Flash Ready', #flash status is 'Not Ready' when this bit is off and FlashSource is non-zero
10369
+ # 1 - ? (observed with SB-900)
10370
+ 2 => 'Bounce Flash',
10371
+ 4 => 'Wide Flash Adapter',
10372
+ 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
10373
+ }},
10374
+ },
10375
+ 9.1 => {
10376
+ Name => 'FlashCommanderMode',
10377
+ Mask => 0x80,
10378
+ PrintConv => { 0 => 'Off', 1 => 'On' },
10379
+ },
10380
+ 9.2 => {
10381
+ Name => 'FlashControlMode',
10382
+ Mask => 0x7f,
10383
+ DataMember => 'FlashControlMode',
10384
+ RawConv => '$$self{FlashControlMode} = $val',
10385
+ PrintConv => \%flashControlMode,
10386
+ SeparateTable => 'FlashControlMode',
10387
+ },
10131
10388
  10 => {
10132
10389
  Name => 'FlashCompensation',
10133
10390
  # this is the compensation from the camera (0x0012) for "Built-in" FlashType, or
10134
10391
  # the compensation from the external unit (0x0017) for "Optional" FlashType - PH
10392
+ Condition => '$$self{FlashControlMode} == 0x01 or $$self{FlashControlMode} == 0x02', #only valid for TTL and TTL-BL modes
10135
10393
  Format => 'int8s',
10136
10394
  Priority => 0,
10137
10395
  ValueConv => '-$val/6',
@@ -10139,6 +10397,130 @@ my %nikonFocalConversions = (
10139
10397
  PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)',
10140
10398
  PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
10141
10399
  },
10400
+ 13 => {
10401
+ Name => 'RepeatingFlashRate',
10402
+ RawConv => '($val and $val != 255) ? $val : undef',
10403
+ PrintConv => '"$val Hz"',
10404
+ PrintConvInv => '$val=~/(\d+)/; $1 || 0',
10405
+ },
10406
+ 14 => {
10407
+ Name => 'RepeatingFlashCount',
10408
+ RawConv => '($val and $val != 255) ? $val : undef',
10409
+ },
10410
+ 15 => {
10411
+ Name => 'FlashGNDistance',
10412
+ SeparateTable => 1,
10413
+ PrintConv => \%flashGNDistance,
10414
+ },
10415
+ 16 => {
10416
+ Name => 'FlashColorFilter',
10417
+ SeparateTable => 1,
10418
+ PrintConv => \%flashColorFilter,
10419
+ },
10420
+ 17.1 => { #PH
10421
+ Name => 'FlashGroupAControlMode',
10422
+ Mask => 0x0f,
10423
+ Notes => 'note: group A tags may apply to the built-in flash settings for some models',
10424
+ DataMember => 'FlashGroupAControlMode',
10425
+ RawConv => '$$self{FlashGroupAControlMode} = $val',
10426
+ PrintConv => \%flashControlMode,
10427
+ SeparateTable => 'FlashControlMode',
10428
+ },
10429
+ 18.1 => { #PH
10430
+ Name => 'FlashGroupBControlMode',
10431
+ Mask => 0xf0,
10432
+ Notes => 'note: group B tags may apply to group A settings for some models',
10433
+ DataMember => 'FlashGroupBControlMode',
10434
+ RawConv => '$$self{FlashGroupBControlMode} = $val',
10435
+ PrintConv => \%flashControlMode,
10436
+ SeparateTable => 'FlashControlMode',
10437
+ },
10438
+ 18.2 => { #PH
10439
+ Name => 'FlashGroupCControlMode',
10440
+ Mask => 0x0f,
10441
+ Notes => 'note: group C tags may apply to group B settings for some models',
10442
+ DataMember => 'FlashGroupCControlMode',
10443
+ RawConv => '$$self{FlashGroupCControlMode} = $val',
10444
+ PrintConv => \%flashControlMode,
10445
+ SeparateTable => 'FlashControlMode',
10446
+ },
10447
+ 33 => {
10448
+ Name => 'FlashOutput',
10449
+ Condition => '$$self{FlashControlMode} >= 0x06', #only valid for M mode
10450
+ ValueConv => '2 ** (-$val/6)',
10451
+ ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10452
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
10453
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
10454
+ },
10455
+ 37 => {
10456
+ Name => 'FlashIlluminationPattern',
10457
+ PrintConv => {
10458
+ 0 => 'Standard',
10459
+ 1 => 'Center-weighted',
10460
+ 2 => 'Even',
10461
+ },
10462
+ },
10463
+ 38 => {
10464
+ Name => 'FlashFocalLength',
10465
+ Notes => 'only valid if flash pattern is "Standard Illumination"',
10466
+ RawConv => '($val and $val != 255) ? $val : undef',
10467
+ PrintConv => '"$val mm"',
10468
+ PrintConvInv => '$val=~/(\d+)/; $1 || 0',
10469
+ },
10470
+ 40 => [ #PH
10471
+ {
10472
+ Name => 'FlashGroupAOutput',
10473
+ Condition => '$$self{FlashGroupAControlMode} >= 0x06',
10474
+ ValueConv => '2 ** (-$val/6)',
10475
+ ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10476
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
10477
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
10478
+ },
10479
+ {
10480
+ Name => 'FlashGroupACompensation',
10481
+ Format => 'int8s',
10482
+ ValueConv => '-($val-2)/6',
10483
+ ValueConvInv => '-6 * $val + 2',
10484
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
10485
+ PrintConvInv => '$val',
10486
+ },
10487
+ ],
10488
+ 41 => [ #PH
10489
+ {
10490
+ Name => 'FlashGroupBOutput',
10491
+ Condition => '$$self{FlashGroupBControlMode} >= 0x06',
10492
+ ValueConv => '2 ** (-$val/6)',
10493
+ ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10494
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
10495
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
10496
+ },
10497
+ {
10498
+ Name => 'FlashGroupBCompensation',
10499
+ Format => 'int8s',
10500
+ ValueConv => '-($val-2)/6',
10501
+ ValueConvInv => '-6 * $val + 2',
10502
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
10503
+ PrintConvInv => '$val',
10504
+ },
10505
+ ],
10506
+ 42 => [ #PH
10507
+ {
10508
+ Name => 'FlashGroupCOutput',
10509
+ Condition => '$$self{FlashGroupCControlMode} >= 0x06',
10510
+ ValueConv => '2 ** (-$val/6)',
10511
+ ValueConvInv => '$val>0 ? -6*log($val)/log(2) : 0',
10512
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.0f%%",$val*100)',
10513
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
10514
+ },
10515
+ {
10516
+ Name => 'FlashGroupCCompensation',
10517
+ Format => 'int8s',
10518
+ ValueConv => '-($val-2)/6',
10519
+ ValueConvInv => '-6 * $val + 2',
10520
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
10521
+ PrintConvInv => '$val',
10522
+ },
10523
+ ],
10142
10524
  );
10143
10525
  # Unknown Flash information
10144
10526
  %Image::ExifTool::Nikon::FlashInfoUnknown = (
@@ -12103,7 +12485,7 @@ Nikon maker notes in EXIF information.
12103
12485
 
12104
12486
  =head1 AUTHOR
12105
12487
 
12106
- Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
12488
+ Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
12107
12489
 
12108
12490
  This library is free software; you can redistribute it and/or modify it
12109
12491
  under the same terms as Perl itself.