exiftool_vendored 12.50.0 → 12.52.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.
@@ -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.15';
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)
@@ -829,6 +831,53 @@ my %activeDLightingZ7 = (
829
831
  5 => 'Extra High',
830
832
  );
831
833
 
834
+ my %aFAreaModeZ9 = (
835
+ 0 => 'Pinpoint',
836
+ 1 => 'Single',
837
+ 2 => 'Dynamic',
838
+ 3 => 'Wide (S)',
839
+ 4 => 'Wide (L)',
840
+ 5 => '3D',
841
+ 6 => 'Auto',
842
+ 11 => 'Subject Tracking',
843
+ 12 => 'Wide (C1)',
844
+ 13 => 'Wide (C2)',
845
+ );
846
+
847
+ my %banksZ9 = (
848
+ 0 => 'A',
849
+ 1 => 'B',
850
+ 2 => 'C',
851
+ 3 => 'D',
852
+ );
853
+
854
+ my %bracketIncrementZ9 = (
855
+ 0 => '0.3',
856
+ #1 => '0.5',
857
+ 2 => '0.7',
858
+ 3 => '1.0',
859
+ 4 => '2.0',
860
+ 5 => '3.0',
861
+ );
862
+
863
+ my %bracketSetZ9 = (
864
+ 0 => 'AE/Flash',
865
+ 1 => 'AE',
866
+ 2 => 'Flash',
867
+ 3 => 'White Balance',
868
+ 4 => 'Active-D Lighting',
869
+ );
870
+
871
+ my %bracketProgramZ9 = (
872
+ 0 => 'Disabled',
873
+ 2 => '2F',
874
+ 3 => '3F',
875
+ 4 => '4F',
876
+ 5 => '5F',
877
+ 7 => '7F',
878
+ 9 => '9F',
879
+ );
880
+
832
881
  my %flashControlModeZ7 = (
833
882
  0 => 'TTL',
834
883
  1 => 'Auto External Flash',
@@ -857,6 +906,29 @@ my %focusModeZ7 = (
857
906
  4 => 'AF-F', # full frame
858
907
  );
859
908
 
909
+ my %hDMIOutputResolutionZ9 = (
910
+ 0 => 'Auto',
911
+ 1 => '4320p',
912
+ 2 => '2160p',
913
+ 3 => '1080p',
914
+ #4 => '1080i',
915
+ 5 => '720p',
916
+ #6 => '576p',
917
+ #7 => '480p',
918
+ );
919
+
920
+ my %imageAreaZ9 = (
921
+ 0 => 'FX',
922
+ 1 => 'DX',
923
+ 4 => '16:9',
924
+ 8 => '1:1',
925
+ );
926
+
927
+ my %imageAreaZ9b = (
928
+ 0 => 'FX',
929
+ 1 => 'DX',
930
+ );
931
+
860
932
  my %infoZSeries = (
861
933
  Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
862
934
  Notes => 'Z Series cameras thru December 2021',
@@ -895,6 +967,66 @@ my %iSOAutoHiLimitZ7 = (
895
967
  32 => 'ISO Hi 2.0',
896
968
  );
897
969
 
970
+ my %iSOAutoShutterTimeZ9 = (
971
+ -15 => 'Auto', #z9 firmware 1.00 maps both 'Auto' and '30 s' to -15
972
+ -12 => '15 s',
973
+ -9 => '8 s',
974
+ -6 => '4 s',
975
+ -3 => '2 s',
976
+ 0 => '1 s',
977
+ 1 => '1/1.3 s',
978
+ 2 => '1/1.6 s',
979
+ 3 => '1/2 s',
980
+ 4 => '1/2.5 s',
981
+ 5 => '1/3 s',
982
+ 6 => '1/4 s',
983
+ 7 => '1/5 s',
984
+ 8 => '1/6 s',
985
+ 9 => '1/8 s',
986
+ 10 => '1/10 s',
987
+ 11 => '1/13 s',
988
+ 12 => '1/15 s',
989
+ 13 => '1/20 s',
990
+ 14 => '1/25 s',
991
+ 15 => '1/30 s',
992
+ 16 => '1/40 s',
993
+ 17 => '1/50 s',
994
+ 18 => '1/60 s',
995
+ 19 => '1/80 s',
996
+ 20 => '1/100 s',
997
+ 21 => '1/120 s',
998
+ 22 => '1/160 s',
999
+ 23 => '1/200 s',
1000
+ 24 => '1/250 s',
1001
+ 25 => '1/320 s',
1002
+ 26 => '1/400 s',
1003
+ 27 => '1/500 s',
1004
+ 28 => '1/640 s',
1005
+ 29 => '1/800 s',
1006
+ 30 => '1/1000 s',
1007
+ 31 => '1/1250 s',
1008
+ 32 => '1/1600 s',
1009
+ 33 => '1/2000 s',
1010
+ 34 => '1/2500 s',
1011
+ 35 => '1/3200 s',
1012
+ 36 => '1/4000 s',
1013
+ 37 => '1/5000 s',
1014
+ 37.5 => '1/6000 s',
1015
+ 38 => '1/6400 s',
1016
+ 39 => '1/8000 s',
1017
+ 40 => '1/10000 s',
1018
+ 40.5 => '1/12000 s',
1019
+ 41 => '1/13000 s',
1020
+ 42 => '1/16000 s',
1021
+ );
1022
+
1023
+ my %languageZ9 = (
1024
+ 4 => 'English',
1025
+ 5 => 'Spanish',
1026
+ 7 => 'French',
1027
+ 15 => 'Portuguese'
1028
+ );
1029
+
898
1030
  my %meteringModeZ7 = (
899
1031
  0 => 'Matrix',
900
1032
  1 => 'Center',
@@ -902,6 +1034,30 @@ my %meteringModeZ7 = (
902
1034
  3 => 'Highlight'
903
1035
  );
904
1036
 
1037
+ my %monitorBrightnessZ9 = (
1038
+ 0 => '-5',
1039
+ 1 => '-4',
1040
+ 2 => '-3',
1041
+ 3 => '-2',
1042
+ 4 => '-1',
1043
+ 5 => '0',
1044
+ 6 => '1',
1045
+ 7 => '2',
1046
+ 8 => '3',
1047
+ 9 => '4',
1048
+ 10 => '5',
1049
+ 14 => 'Hi1',
1050
+ 15 => 'Hi2',
1051
+ 16 => 'Lo2',
1052
+ 17 => 'Lo1',
1053
+ );
1054
+
1055
+ my %movieFlickerReductionZ9 = (
1056
+ 0 => 'Auto',
1057
+ 1 => '50Hz',
1058
+ 2 => '60Hz',
1059
+ );
1060
+
905
1061
  my %movieFrameRateZ7 = (
906
1062
  0 => '120p',
907
1063
  1 => '100p',
@@ -912,6 +1068,33 @@ my %movieFrameRateZ7 = (
912
1068
  6 => '24p',
913
1069
  );
914
1070
 
1071
+ my %movieFrameSizeZ9 = (
1072
+ 1 => '1920x1080',
1073
+ 2 => '3840x2160',
1074
+ 3 => '7680x4320',
1075
+ );
1076
+
1077
+ my %movieToneMapZ9 = (
1078
+ 0 => 'SDR',
1079
+ 1 => 'HLG',
1080
+ 2 => 'N-Log',
1081
+ );
1082
+
1083
+ my %movieTypeZ9 = (
1084
+ 1 => 'H.265 8-bit (MP4)',
1085
+ 2 => 'H.265 8-bit (MOV)',
1086
+ 3 => 'H.265 10-bit (MOV)',
1087
+ 4 => 'ProRes 422 HQ 10-bit (MOV)',
1088
+ 5 => 'ProRes RAW HQ 12-bit (MOV)',
1089
+ 6 => 'NRAW 12-bit (NEV)'
1090
+ );
1091
+
1092
+ my %multipleExposureModeZ9 = (
1093
+ 0 => 'Off',
1094
+ 1 => 'On',
1095
+ 2 => 'On (Series)',
1096
+ );
1097
+
915
1098
  my %offLowNormalHighZ7 = (
916
1099
  0 => 'Off',
917
1100
  1 => 'Low',
@@ -919,10 +1102,11 @@ my %offLowNormalHighZ7 = (
919
1102
  3 => 'High',
920
1103
  );
921
1104
 
922
- my %movieFrameSizeZ9 = (
923
- 1 => '1920x1080',
924
- 2 => '3840x2160',
925
- 3 => '7680x4320',
1105
+ my %secondarySlotFunctionZ9 = (
1106
+ 0 => 'Overflow',
1107
+ 1 => 'Backup',
1108
+ 2 => 'NEF Primary + JPG Secondary',
1109
+ 3 => 'JPG Primary + JPG Secondary',
926
1110
  );
927
1111
 
928
1112
  my %subjectDetectionZ9 = (
@@ -933,6 +1117,34 @@ my %subjectDetectionZ9 = (
933
1117
  4 => 'Vehicles',
934
1118
  );
935
1119
 
1120
+ my %timeZoneZ9 = (
1121
+ 3 => '+10:00 (Sydney)',
1122
+ 5 => '+09:00 (Tokyo)',
1123
+ 6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
1124
+ 10 => '+05:45 (Kathmandu)',
1125
+ 11 => '+05:30 (New Dehli)',
1126
+ 12 => '+05:00 (Islamabad)',
1127
+ 13 => '+04:30 (Kabul)',
1128
+ 14 => '+04:00 (Abu Dhabi)',
1129
+ 15 => '+03:30 (Tehran)',
1130
+ 16 => '+03:00 (Moscow, Nairobi)',
1131
+ 17 => '+02:00 (Athens, Helsinki)',
1132
+ 18 => '+01:00 (Madrid, Paris, Berlin)',
1133
+ 19 => '+00:00 (London)',
1134
+ 20 => '-01:00 (Azores)',
1135
+ 21 => '-02:00 (Fernando de Noronha)',
1136
+ 22 => '-03:00 (Buenos Aires, Sao Paulo)',
1137
+ 23 => '-03:30 (Newfoundland)',
1138
+ 24 => '-04:00 (Manaus, Caracas)',
1139
+ 25 => '-05:00 (New York, Toronto, Lima)',
1140
+ 26 => '-06:00 (Chicago, Mexico City)',
1141
+ 27 => '-07:00 (Denver)',
1142
+ 28 => '-08:00 (Los Angeles, Vancouver)',
1143
+ 29 => '-09:00 (Anchorage)',
1144
+ 30 => '-10:00 (Hawaii)',
1145
+ );
1146
+
1147
+
936
1148
  my %vRModeZ9 = (
937
1149
  0 => 'Off',
938
1150
  1 => 'Normal',
@@ -2091,7 +2303,7 @@ my %base64coord = (
2091
2303
  TagTable => 'Image::ExifTool::Nikon::ShotInfoZ9',
2092
2304
  DecryptStart => 4,
2093
2305
  # TODO: eventually set the length dynamically according to actual offsets!
2094
- DecryptLen => 0xec4b + 2105, # decoded thru end of Offset26
2306
+ DecryptLen => 0xec4b + 2196, # decoded thru end of Offset26
2095
2307
  ByteOrder => 'LittleEndian',
2096
2308
  },
2097
2309
  },
@@ -5053,6 +5265,7 @@ my %nikonFocalConversions = (
5053
5265
  31 => 'Nikkor Z 24-120 f/4', #28
5054
5266
  32 => 'Nikkor Z 800mm f/6.3 VR S', #28
5055
5267
  36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
5268
+ 39 => 'Nikkor Z 17-28mm f/2.8', #IB
5056
5269
  },
5057
5270
  },
5058
5271
  0x35 => { #28
@@ -8250,15 +8463,26 @@ my %nikonFocalConversions = (
8250
8463
  # account for variable location of menu settings data
8251
8464
  Hook => '$varSize = $$self{MenuSettingsZ9Offset} - 0xec4b',
8252
8465
  },
8253
- 0xec4b => {
8254
- Name => 'MenuSettingsZ9',
8255
- Format => 'undef[1646]',
8256
- Condition => '$$self{FirmwareVersion} lt "03.00"',
8257
- SubDirectory => {
8258
- TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
8466
+ 0xec4b => [
8467
+ {
8468
+ Name => 'MenuSettingsZ9',
8469
+ Condition => '$$self{FirmwareVersion} lt "03.00"',
8470
+ Format => 'undef[1646]',
8471
+ Notes => 'Firmware versions 2.11 and earlier',
8472
+ SubDirectory => {
8473
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
8474
+ },
8259
8475
  },
8260
- },
8261
- # note: DecryptLen currently set to 0xec4b + 1646
8476
+ {
8477
+ Name => 'MenuSettingsZ9',
8478
+ Notes => 'Firmware versions 3.0 and later',
8479
+ Format => 'undef[1948]',
8480
+ SubDirectory => {
8481
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9Firmware3',
8482
+ },
8483
+ },
8484
+ ],
8485
+ # note: DecryptLen currently set to 0xec4b + 2196
8262
8486
  );
8263
8487
 
8264
8488
  %Image::ExifTool::Nikon::MenuSettingsZ7II = (
@@ -8366,8 +8590,8 @@ my %nikonFocalConversions = (
8366
8590
  PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
8367
8591
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8368
8592
  },
8369
- 346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
8370
- 348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1},
8593
+ 346 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
8594
+ 348 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
8371
8595
  352 => {
8372
8596
  Name => 'FlashMasterControlMode', # tag name chosen for compatibility with those found in FlashInfo0102 & FlashInfo0103
8373
8597
  RawConv => '$$self{FlashGroupOptionsMasterMode} = $val',
@@ -8392,12 +8616,12 @@ my %nikonFocalConversions = (
8392
8616
  PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
8393
8617
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8394
8618
  },
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
8619
+ #360 => { Name => 'FlashGroupAControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupACompensation at 362 and FlashGroupAOutput at 368
8620
+ #368 => { Name => 'FlashGroupBControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupBCompensation at 370 and FlashGroupBOutput at 374
8621
+ #376 => { Name => 'FlashGroupCControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupCCompensation at 378 and FlashGroupCOutput at 382
8622
+ #384 => { Name => 'FlashGroupDControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupDCompensation at 386 and FlashGroupDOutput at 390
8623
+ #392 => { Name => 'FlashGroupEControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupECompensation at 394 and FlashGroupEOutput at 398
8624
+ #400 => { Name => 'FlashGroupFControlMode' }, # commented out to reduce output volume - mapping follows FlashMasterControlMode with FlashGroupFCompensation at 402 and FlashGroupFOutput at 406
8401
8625
  #434 => FocusMode
8402
8626
  #436 => AFAreaMode
8403
8627
  #438 => VibrationReduction
@@ -8405,8 +8629,8 @@ my %nikonFocalConversions = (
8405
8629
  #444 => BracketProgram
8406
8630
  #446 => BracketIncrement
8407
8631
  #463 => SilentPhotography
8408
- 502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1},
8409
- 504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1},
8632
+ 502 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
8633
+ 504 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
8410
8634
  506 => {
8411
8635
  Name => 'MovieSlowMotion',
8412
8636
  Unknown => 1,
@@ -8435,9 +8659,9 @@ my %nikonFocalConversions = (
8435
8659
  PrintConv => \%iSOAutoHiLimitZ7,
8436
8660
  },
8437
8661
  #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},
8662
+ 568 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
8663
+ 572 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8664
+ 574 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8441
8665
  576 => {
8442
8666
  Name => 'MovieVignetteControlSameAsPhoto',
8443
8667
  Unknown => 1,
@@ -8453,7 +8677,7 @@ my %nikonFocalConversions = (
8453
8677
  Unknown => 1,
8454
8678
  PrintConv => \%offOn
8455
8679
  },
8456
- 584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1},
8680
+ 584 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
8457
8681
  #586 => MovieAFAreaMode
8458
8682
  590 => {
8459
8683
  Name => 'MovieVibrationReduction',
@@ -8493,11 +8717,7 @@ my %nikonFocalConversions = (
8493
8717
  140 => {
8494
8718
  Name => 'MultipleExposureMode',
8495
8719
  RawConv => '$$self{MultipleExposureMode} = $val',
8496
- PrintConv => {
8497
- 0 => 'Off',
8498
- 1 => 'On (Series)',
8499
- 2 => 'On',
8500
- },
8720
+ PrintConv => \%multipleExposureModeZ9,
8501
8721
  },
8502
8722
  142 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0' }, #range 2-9
8503
8723
  188 => {
@@ -8533,27 +8753,11 @@ my %nikonFocalConversions = (
8533
8753
  PrintConv => \%offOn,
8534
8754
  Condition => '$$self{FocusShiftShooting} > 0',
8535
8755
  },
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
- },
8756
+ 274 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
8757
+ 276 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, #single tag from both Photo & Video menus
8758
+ 308 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
8555
8759
  #310 ImageQuality
8556
- 322 => { Name => 'AutoISO', PrintConv => \%offOn, },
8760
+ 322 => { Name => 'AutoISO', PrintConv => \%offOn },
8557
8761
  324 => {
8558
8762
  Name => 'ISOAutoHiLimit',
8559
8763
  Format => 'int16u',
@@ -8575,58 +8779,7 @@ my %nikonFocalConversions = (
8575
8779
  Name => 'ISOAutoShutterTime', #shutter speed is 2 ** (-$val/24)
8576
8780
  ValueConv => '$val / 8',
8577
8781
  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
- },
8782
+ PrintConv => \%iSOAutoShutterTimeZ9,
8630
8783
  },
8631
8784
  #336 WhiteBalance
8632
8785
  #406 PictureControl
@@ -8635,8 +8788,8 @@ my %nikonFocalConversions = (
8635
8788
  #412 => { Name => 'NoiseReduction', PrintConv => \%offOn }, #Long Exposure Noise Reduction
8636
8789
  #414 HighISONoiseReduction
8637
8790
  #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
8791
+ 416 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8792
+ 418 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8640
8793
  #419 AutoDistortionControl #value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8641
8794
  420 => { Name => 'FlickerReductionShooting', PrintConv => \%offOn },
8642
8795
  #422 MeteringMode
@@ -8671,94 +8824,39 @@ my %nikonFocalConversions = (
8671
8824
  PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
8672
8825
  },
8673
8826
  #442 flash wirelss control 0=> 'Off' 1=> 'CMD'
8674
- 444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1},
8675
- 456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1},
8827
+ 444 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
8828
+ 456 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
8676
8829
  #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},
8830
+ 528 => { Name => 'AFAreaMode',PrintConv => \%aFAreaModeZ9 },
8831
+ 530 => { Name => 'VRMode', PrintConv => \%vRModeZ9 },
8691
8832
  534 => {
8692
8833
  Name => 'BracketSet',
8693
8834
  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
- },
8835
+ PrintConv => \%bracketSetZ9,
8701
8836
  },
8702
8837
  536 => {
8703
8838
  Name => 'BracketProgram',
8704
8839
  Condition => '$$self{BracketSet} < 3',
8705
8840
  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
- },
8841
+ PrintConv => \%bracketProgramZ9,
8715
8842
  },
8716
8843
  538 => {
8717
8844
  Name => 'BracketIncrement',
8718
8845
  Condition => '$$self{BracketSet} < 3',
8719
8846
  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
- },
8847
+ PrintConv => \%bracketIncrementZ9,
8728
8848
  },
8729
8849
  #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},
8850
+ 556 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
8851
+ 572 => { Name => 'DXCropAlert', PrintConv => \%offOn },
8852
+ 574 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
8741
8853
  604 => {
8742
8854
  Name => 'MovieImageArea',
8743
8855
  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
- },
8856
+ Mask => 0x01, # without the mask 4 => 'FX', 5 => DX. only the 2nd Z-series field encountered with a mask
8857
+ PrintConv => \%imageAreaZ9b,
8761
8858
  },
8859
+ 614 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
8762
8860
  616 => {
8763
8861
  Name => 'MovieISOAutoHiLimit',
8764
8862
  Format => 'int16u',
@@ -8767,115 +8865,44 @@ my %nikonFocalConversions = (
8767
8865
  ValueConvInv => '8 * ($val + 104)',
8768
8866
  PrintConv => \%iSOAutoHiLimitZ7,
8769
8867
  },
8770
- 618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1},
8868
+ 618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
8771
8869
  620 => {
8772
8870
  Name => 'MovieISOAutoManualMode',
8773
8871
  Format => 'int16u',
8774
8872
  Unknown => 1,
8775
8873
  ValueConv => '($val-104)/8',
8776
- ValueConvInv => '8 * ($val + 104)',
8874
+ ValueConvInv => '8 * ($val + 104)',
8777
8875
  PrintConv => \%iSOAutoHiLimitZ7,
8778
8876
  },
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
8877
+ 696 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
8878
+ 698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8879
+ 704 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
8880
+ 706 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
8881
+ 708 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
8882
+ 710 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
8883
+ 712 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
8884
+ 716 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
8885
+ 718 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
8886
+ 720 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, #1-20
8887
+ 722 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, #distinct from MoveieVRMode
8806
8888
  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},
8889
+ 726 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
8890
+ 748 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
8891
+ 754 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
8892
+ 756 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
8893
+ 762 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
8894
+ 763 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
8895
+ 764 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
8822
8896
  799 => {
8823
8897
  Name => 'CustomSettingsZ9',
8824
8898
  Format => 'undef[608]',
8825
8899
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
8826
8900
  },
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
- },
8901
+ 1426 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
8902
+ 1428 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
8903
+ 1434 => { Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1 }, # settings: -5 to +5
8904
+ 1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
8905
+ 1552 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
8879
8906
  1565 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
8880
8907
  1572 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
8881
8908
  1573 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
@@ -8884,6 +8911,177 @@ my %nikonFocalConversions = (
8884
8911
  1636 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
8885
8912
  1645 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
8886
8913
  );
8914
+ %Image::ExifTool::Nikon::MenuSettingsZ9Firmware3 = ( #starts at Offset26 + 248
8915
+ %binaryDataAttrs,
8916
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8917
+ DATAMEMBER => [ 154, 204, 208, 248, 554 ],
8918
+ IS_SUBDIR => [ 847 ],
8919
+ NOTES => 'These tags are used by the Z9 firmware 3.00.',
8920
+ 154 => {
8921
+ Name => 'MultipleExposureMode',
8922
+ RawConv => '$$self{MultipleExposureMode} = $val',
8923
+ PrintConv => \%multipleExposureModeZ9,
8924
+ },
8925
+ 156 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
8926
+ 204 => {
8927
+ Name => 'Intervals',
8928
+ Format => 'int32u',
8929
+ RawConv => '$$self{IntervalShootingIntervals} = $val',
8930
+ Condition => '$$self{IntervalShooting} > 0',
8931
+ },
8932
+ 208 => {
8933
+ Name => 'ShotsPerInterval',
8934
+ Format => 'int32u',
8935
+ RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
8936
+ Condition => '$$self{IntervalShooting} > 0',
8937
+ },
8938
+ 248 => {
8939
+ Name => 'FocusShiftNumberShots', #1-300
8940
+ RawConv => '$$self{FocusShiftNumberShots} = $val',
8941
+ Condition => '$$self{FocusShiftShooting} > 0',
8942
+ },
8943
+ 252 => {
8944
+ Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
8945
+ Condition => '$$self{FocusShiftShooting} > 0',
8946
+ },
8947
+ 256 => {
8948
+ Name => 'FocusShiftInterval',
8949
+ Condition => '$$self{FocusShiftShooting} > 0',
8950
+ PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
8951
+ },
8952
+ 260 => {
8953
+ Name => 'FocusShiftExposureLock',
8954
+ Unknown => 1,
8955
+ PrintConv => \%offOn,
8956
+ Condition => '$$self{FocusShiftShooting} > 0',
8957
+ },
8958
+ 290 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
8959
+ 292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
8960
+ 328 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
8961
+ 342 => { Name => 'AutoISO', PrintConv => \%offOn },
8962
+ 344 => {
8963
+ Name => 'ISOAutoHiLimit',
8964
+ Format => 'int16u',
8965
+ Unknown => 1,
8966
+ ValueConv => '($val-104)/8',
8967
+ ValueConvInv => '8 * ($val + 104)',
8968
+ PrintConv => \%iSOAutoHiLimitZ7,
8969
+ },
8970
+ 346 => {
8971
+ Name => 'ISOAutoFlashLimit',
8972
+ Format => 'int16u',
8973
+ Unknown => 1,
8974
+ ValueConv => '($val-104)/8',
8975
+ ValueConvInv => '8 * ($val + 104)',
8976
+ PrintConv => \%iSOAutoHiLimitZ7,
8977
+ },
8978
+ 354 => {
8979
+ Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
8980
+ ValueConv => '$val / 8',
8981
+ Format => 'int16s',
8982
+ PrintConv => \%iSOAutoShutterTimeZ9,
8983
+ },
8984
+ 436 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
8985
+ 438 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
8986
+ 440 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
8987
+ 548 => { Name => 'AFAreaMode', PrintConv => \%aFAreaModeZ9},
8988
+ 550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
8989
+ 554 => {
8990
+ Name => 'BracketSet',
8991
+ RawConv => '$$self{BracketSet} = $val',
8992
+ PrintConv => \%bracketSetZ9,
8993
+ },
8994
+ 556 => {
8995
+ Name => 'BracketProgram',
8996
+ Condition => '$$self{BracketSet} < 3',
8997
+ Notes => 'AE and/or Flash Bracketing',
8998
+ PrintConv => \%bracketProgramZ9,
8999
+ },
9000
+ 558 => {
9001
+ Name => 'BracketIncrement',
9002
+ Condition => '$$self{BracketSet} < 3',
9003
+ Notes => 'AE and/or Flash Bracketing',
9004
+ PrintConv => \%bracketIncrementZ9,
9005
+ },
9006
+ 576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
9007
+ 592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
9008
+ 594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
9009
+ 636 => { Name => 'HighFrequencyFlickerReductionShooting', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
9010
+ 646 => {
9011
+ Name => 'MovieImageArea',
9012
+ Unknown => 1,
9013
+ Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
9014
+ PrintConv => \%imageAreaZ9b,
9015
+ },
9016
+ 656 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
9017
+ 658 => {
9018
+ Name => 'MovieISOAutoHiLimit',
9019
+ Format => 'int16u',
9020
+ Unknown => 1,
9021
+ ValueConv => '($val-104)/8',
9022
+ ValueConvInv => '8 * ($val + 104)',
9023
+ PrintConv => \%iSOAutoHiLimitZ7,
9024
+ },
9025
+ 660 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
9026
+ 662 => {
9027
+ Name => 'MovieISOAutoManualMode',
9028
+ Format => 'int16u',
9029
+ Unknown => 1,
9030
+ ValueConv => '($val-104)/8',
9031
+ ValueConvInv => '8 * ($val + 104)',
9032
+ PrintConv => \%iSOAutoHiLimitZ7,
9033
+ },
9034
+ 736 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
9035
+ 738 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
9036
+ 744 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
9037
+ 746 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
9038
+ 748 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
9039
+ 750 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
9040
+ 752 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
9041
+ 756 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
9042
+ 758 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
9043
+ 760 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
9044
+ 762 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
9045
+ 764 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
9046
+ 766 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
9047
+ 788 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
9048
+ 794 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
9049
+ 796 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
9050
+ 802 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
9051
+ 803 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
9052
+ 804 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
9053
+ 812 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
9054
+ 847 => {
9055
+ Name => 'CustomSettingsZ9',
9056
+ Format => 'undef[608]',
9057
+ SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
9058
+ },
9059
+ 1474 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
9060
+ 1476 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
9061
+ 1482 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
9062
+ 1504 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
9063
+ 1600 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
9064
+ 1613 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
9065
+ 1620 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
9066
+ 1621 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
9067
+ 1656 => { Name => 'EnergySavingMode', PrintConv =>\%offOn, Unknown => 1 },
9068
+ 1680 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
9069
+ 1684 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
9070
+ 1693 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
9071
+ 1754 => {
9072
+ Name => 'FocusShiftAutoReset',
9073
+ Unknown => 1,
9074
+ PrintConv => \%offOn,
9075
+ Condition => '$$self{FocusShiftShooting} > 0',
9076
+ },
9077
+ #1824 ReleaseTimingIndicatorTypeADelay CSd14-b 0 => '1/200' ... 15 => '1/6'
9078
+ #1826 VerticalISOButton CSf2
9079
+ #1828 ExposureCompensationButton CSf2
9080
+ #1830 ISOButton CSf2
9081
+ #1890 ViewModeShowEffectsOfSettings CSd9-a 0=>'Always', 1=> 'Only When Flash Not Used'
9082
+ #1892 DispButton CSf2
9083
+ #1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
9084
+ );
8887
9085
 
8888
9086
  # Flash information (ref JD)
8889
9087
  %Image::ExifTool::Nikon::FlashInfo0100 = (