exiftool_vendored 13.22.0 → 13.24.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.
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
65
65
  use Image::ExifTool::GPS;
66
66
  use Image::ExifTool::XMP;
67
67
 
68
- $VERSION = '4.44';
68
+ $VERSION = '4.45';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -1095,38 +1095,31 @@ my %iSOAutoHiLimitZ6III = ( #28
1095
1095
  35 => 'ISO Hi 1.7',
1096
1096
  );
1097
1097
 
1098
- my %iSOAutoHiLimitZ7 = (
1099
- 0 => 'ISO 64',
1100
- 1 => 'ISO 80',
1101
- 2 => 'ISO 100',
1102
- 3 => 'ISO 125',
1103
- 4 => 'ISO 160',
1104
- 5 => 'ISO 200',
1105
- 6 => 'ISO 250',
1106
- 7 => 'ISO 320',
1107
- 8 => 'ISO 400',
1108
- 9 => 'ISO 500',
1109
- 10 => 'ISO 640',
1110
- 11 => 'ISO 800',
1111
- 12 => 'ISO 1000',
1112
- 13 => 'ISO 1250',
1113
- 14 => 'ISO 1600',
1114
- 15 => 'ISO 2000',
1115
- 16 => 'ISO 2500',
1116
- 17 => 'ISO 3200',
1117
- 18 => 'ISO 4000',
1118
- 19 => 'ISO 5000',
1119
- 20 => 'ISO 6400',
1120
- 21 => 'ISO 8000',
1121
- 22 => 'ISO 10000',
1122
- 23 => 'ISO 12800',
1123
- 24 => 'ISO 16000',
1124
- 25 => 'ISO 20000',
1125
- 26 => 'ISO 25600',
1126
- 27 => 'ISO Hi 0.3',
1127
- 28 => 'ISO Hi 0.7',
1128
- 29 => 'ISO Hi 1.0',
1129
- 32 => 'ISO Hi 2.0',
1098
+ my %isoAutoHiLimitZ7 = (
1099
+ Format => 'int16u',
1100
+ Unknown => 1,
1101
+ ValueConv => '($val-104)/8',
1102
+ ValueConvInv => '8 * ($val + 104)',
1103
+ SeparateTable => 'ISOAutoHiLimitZ7',
1104
+ PrintConv => {
1105
+ 0 => 'ISO 64', 17 => 'ISO 3200',
1106
+ 1 => 'ISO 80', 18 => 'ISO 4000',
1107
+ 2 => 'ISO 100', 19 => 'ISO 5000',
1108
+ 3 => 'ISO 125', 20 => 'ISO 6400',
1109
+ 4 => 'ISO 160', 21 => 'ISO 8000',
1110
+ 5 => 'ISO 200', 22 => 'ISO 10000',
1111
+ 6 => 'ISO 250', 23 => 'ISO 12800',
1112
+ 7 => 'ISO 320', 24 => 'ISO 16000',
1113
+ 8 => 'ISO 400', 25 => 'ISO 20000',
1114
+ 9 => 'ISO 500', 26 => 'ISO 25600',
1115
+ 10 => 'ISO 640', 27 => 'ISO Hi 0.3',
1116
+ 11 => 'ISO 800', 28 => 'ISO Hi 0.7',
1117
+ 12 => 'ISO 1000', 29 => 'ISO Hi 1.0',
1118
+ 13 => 'ISO 1250', 32 => 'ISO Hi 2.0',
1119
+ 14 => 'ISO 1600',
1120
+ 15 => 'ISO 2000',
1121
+ 16 => 'ISO 2500',
1122
+ },
1130
1123
  );
1131
1124
 
1132
1125
  my %iSOAutoShutterTimeZ9 = (
@@ -1277,29 +1270,23 @@ my %multipleExposureModeZ9 = (
1277
1270
  );
1278
1271
 
1279
1272
  my %nonCPULensApertureZ8 = ( # 2**(val/6) rounded - non-CPU aperture interface, values and storage differ from the Z8
1280
- 12 => 'f/1.2',
1281
- 24 => 'f/1.4',
1282
- 40 => 'f/1.8',
1283
- 48 => 'f/2.0',
1284
- 64 => 'f/2.5',
1285
- 72 => 'f/2.8',
1286
- 84 => 'f/3.3',
1287
- 88 => 'f/3.5',
1288
- 96 => 'f/4.0',
1289
- 104 => 'f/4.5',
1290
- 112 => 'f/5.0',
1291
- 120 => 'f/5.6',
1292
- 128 => 'f/6.3',
1293
- 136 => 'f/7.1',
1294
- 144 => 'f/8',
1295
- 156 => 'f/9.5',
1296
- 168 => 'f/11',
1297
- 180 => 'f/13',
1298
- 188 => 'f/15',
1299
- 192 => 'f/16',
1300
- 204 => 'f/19',
1301
- 216 => 'f/22',
1302
- 313 => 'N/A', #camera menu shows "--" indicating value has not been set for the lens
1273
+ Format => 'int16u',
1274
+ Unknown => 1,
1275
+ SeparateTable => 'NonCPULensApertureZ8',
1276
+ PrintConv => {
1277
+ 12 => 'f/1.2', 128 => 'f/6.3',
1278
+ 24 => 'f/1.4', 136 => 'f/7.1',
1279
+ 40 => 'f/1.8', 144 => 'f/8',
1280
+ 48 => 'f/2.0', 156 => 'f/9.5',
1281
+ 64 => 'f/2.5', 168 => 'f/11',
1282
+ 72 => 'f/2.8', 180 => 'f/13',
1283
+ 84 => 'f/3.3', 188 => 'f/15',
1284
+ 88 => 'f/3.5', 192 => 'f/16',
1285
+ 96 => 'f/4.0', 204 => 'f/19',
1286
+ 104 => 'f/4.5', 216 => 'f/22',
1287
+ 112 => 'f/5.0', 313 => 'N/A', #camera menu shows "--" indicating value has not been set for the lens,
1288
+ 120 => 'f/5.6',
1289
+ },
1303
1290
  );
1304
1291
 
1305
1292
  my %offLowNormalHighZ7 = (
@@ -1347,7 +1334,7 @@ my %secondarySlotFunctionZ9 = (
1347
1334
  3 => 'JPG Primary + JPG Secondary',
1348
1335
  );
1349
1336
 
1350
- my %subjectDetectionAreaMZ6III = ( #28
1337
+ my %subjectDetectionAreaMZ6III = ( #28
1351
1338
  0 => 'Off',
1352
1339
  1 => 'All',
1353
1340
  2 => 'Wide (L)',
@@ -9179,19 +9166,19 @@ my %nikonFocalConversions = (
9179
9166
  # 0x00 - int32u size of this directory
9180
9167
  0x10 => [
9181
9168
  {
9182
- Name => 'MenuSettingsOffsetZ8',
9169
+ Name => 'MenuSettingsOffsetZ8v1',
9183
9170
  Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "02.00"',
9184
9171
  Format => 'int32u',
9185
- Notes => 'Firmware versions 1.0.0 and 1.1.0',
9172
+ Notes => 'Firmware versions 1.00 and 1.10',
9186
9173
  SubDirectory => {
9187
- TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8',
9174
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8v1',
9188
9175
  Start => '$dirStart + $val',
9189
9176
  },
9190
9177
  },
9191
9178
  {
9192
9179
  Name => 'MenuSettingsOffsetZ8v2',
9193
9180
  Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.00"',
9194
- Notes => 'Firmware version 2.0',
9181
+ Notes => 'Firmware version 2.00 and 2.10',
9195
9182
  Format => 'int32u',
9196
9183
  SubDirectory => {
9197
9184
  TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8v2',
@@ -9220,7 +9207,7 @@ my %nikonFocalConversions = (
9220
9207
  {
9221
9208
  Name => 'MenuSettingsOffsetZ9v3',
9222
9209
  Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "04.00"',
9223
- Notes => 'Firmware versions 3.0 and v3.10',
9210
+ Notes => 'Firmware versions 3.00 and v3.10',
9224
9211
  Format => 'int32u',
9225
9212
  SubDirectory => {
9226
9213
  TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9v3',
@@ -9229,23 +9216,13 @@ my %nikonFocalConversions = (
9229
9216
  },
9230
9217
  {
9231
9218
  Name => 'MenuSettingsOffsetZ9v4',
9232
- Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} lt "05.01"',
9233
- Notes => 'Firmware versions 4.x and 5.0',
9219
+ Notes => 'Firmware versions 4.00 and higher',
9234
9220
  Format => 'int32u',
9235
9221
  SubDirectory => {
9236
9222
  TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9v4',
9237
9223
  Start => '$dirStart + $val',
9238
9224
  },
9239
9225
  },
9240
- {
9241
- Name => 'MenuSettingsOffsetZ9v4',
9242
- Notes => 'Firmware versions 4.x and 5.0',
9243
- Format => 'int32u',
9244
- SubDirectory => {
9245
- TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9v5',
9246
- Start => '$dirStart + $val',
9247
- },
9248
- },
9249
9226
  ],
9250
9227
  );
9251
9228
 
@@ -9399,7 +9376,7 @@ my %nikonFocalConversions = (
9399
9376
  },
9400
9377
  );
9401
9378
 
9402
- %Image::ExifTool::Nikon::MenuSettingsZ6III = (
9379
+ %Image::ExifTool::Nikon::MenuSettingsZ6III = (
9403
9380
  %binaryDataAttrs,
9404
9381
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9405
9382
  NOTES => 'These tags are used by the Z6III.',
@@ -9586,7 +9563,7 @@ my %nikonFocalConversions = (
9586
9563
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ6III' },
9587
9564
  },
9588
9565
  2300 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
9589
- 2302 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
9566
+ 2302 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9, SeparateTable => 'TimeZone' },
9590
9567
  2308 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5 and Lo1, Lo2, Hi1, Hi2
9591
9568
  2444 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
9592
9569
  2450 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
@@ -9596,7 +9573,7 @@ my %nikonFocalConversions = (
9596
9573
  2496 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
9597
9574
  ),
9598
9575
 
9599
- %Image::ExifTool::Nikon::MenuSettingsZ7II = (
9576
+ %Image::ExifTool::Nikon::MenuSettingsZ7II = (
9600
9577
  %binaryDataAttrs,
9601
9578
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9602
9579
  DATAMEMBER => [ 90, 176, 180, 328, 352, 858 ],
@@ -9681,7 +9658,7 @@ my %nikonFocalConversions = (
9681
9658
  PrintConv => \%offOn,
9682
9659
  },
9683
9660
  #324 => {Name => 'FlickerReductionShooting',}, # redundant with tag in NikonSettings
9684
- 326 => { Name => 'NikonMeteringMode', PrintConv => \%meteringModeZ7},
9661
+ 326 => { Name => 'NikonMeteringMode', PrintConv => \%meteringModeZ7 },
9685
9662
  328 => {
9686
9663
  Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
9687
9664
  RawConv => '$$self{FlashControlMode} = $val',
@@ -9757,11 +9734,7 @@ my %nikonFocalConversions = (
9757
9734
  516 => {
9758
9735
  Name => 'MovieISOAutoManualMode',
9759
9736
  Condition => '$$self{Model} =~ /^NIKON 7/', #ISO ranges vary by model. These mappings are for the Z7 and Z7II
9760
- Format => 'int16u',
9761
- Unknown => 1,
9762
- ValueConv => '($val-104)/8',
9763
- ValueConvInv => '8 * ($val + 104)',
9764
- PrintConv => \%iSOAutoHiLimitZ7,
9737
+ %isoAutoHiLimitZ7,
9765
9738
  },
9766
9739
  #520 => MovieWhiteBalanceSameAsPhoto
9767
9740
  568 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
@@ -9812,16 +9785,19 @@ my %nikonFocalConversions = (
9812
9785
  #859 => HDMIViewAssist
9813
9786
  );
9814
9787
 
9815
- %Image::ExifTool::Nikon::MenuSettingsZ8 = (
9788
+ %Image::ExifTool::Nikon::MenuSettingsZ8 = (
9816
9789
  %binaryDataAttrs,
9817
9790
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9818
- DATAMEMBER => [ 152, 200, 204, 244, 440, 548, 554, 570, 596 ],
9819
- IS_SUBDIR => [ 943 ],
9820
- NOTES => 'These tags are used by the Z8 firmware 1.00.',
9791
+ DATAMEMBER => [ 72, 152, 200, 204, 244, 440, 548, 554, 570, 596 ],
9792
+ NOTES => 'These tags are common to all Z8 firmware versions.',
9821
9793
  72 => {
9822
9794
  Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
9823
9795
  PrintConv => \%highFrameRateZ9,
9796
+ Hook => '$varSize += 4 if $$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.10"',
9824
9797
  },
9798
+ #
9799
+ # firmware 2.10 adds 4 bytes somewhere in the range 105-107 (hence the Hook above)
9800
+ #
9825
9801
  152 => {
9826
9802
  Name => 'MultipleExposureMode',
9827
9803
  RawConv => '$$self{MultipleExposureMode} = $val',
@@ -9890,23 +9866,9 @@ my %nikonFocalConversions = (
9890
9866
  286 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
9891
9867
  288 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
9892
9868
  324 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
9893
- 338 => { Name => 'AutoISO', PrintConv => \%offOn },
9894
- 340 => {
9895
- Name => 'ISOAutoHiLimit',
9896
- Format => 'int16u',
9897
- Unknown => 1,
9898
- ValueConv => '($val-104)/8',
9899
- ValueConvInv => '8 * ($val + 104)',
9900
- PrintConv => \%iSOAutoHiLimitZ7,
9901
- },
9902
- 342 => {
9903
- Name => 'ISOAutoFlashLimit',
9904
- Format => 'int16u',
9905
- Unknown => 1,
9906
- ValueConv => '($val-104)/8',
9907
- ValueConvInv => '8 * ($val + 104)',
9908
- PrintConv => \%iSOAutoHiLimitZ7,
9909
- },
9869
+ 338 => { Name => 'AutoISO', PrintConv => \%offOn },
9870
+ 340 => { Name => 'ISOAutoHiLimit', %isoAutoHiLimitZ7 },
9871
+ 342 => { Name => 'ISOAutoFlashLimit', %isoAutoHiLimitZ7 },
9910
9872
  350 => {
9911
9873
  Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
9912
9874
  ValueConv => '$val / 8',
@@ -9962,24 +9924,10 @@ my %nikonFocalConversions = (
9962
9924
  Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
9963
9925
  PrintConv => \%imageAreaZ9b,
9964
9926
  },
9965
- 740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
9966
- 742 => {
9967
- Name => 'MovieISOAutoHiLimit',
9968
- Format => 'int16u',
9969
- Unknown => 1,
9970
- ValueConv => '($val-104)/8',
9971
- ValueConvInv => '8 * ($val + 104)',
9972
- PrintConv => \%iSOAutoHiLimitZ7,
9973
- },
9927
+ 740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
9928
+ 742 => { Name => 'MovieISOAutoHiLimit', %isoAutoHiLimitZ7 },
9974
9929
  744 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
9975
- 746 => {
9976
- Name => 'MovieISOAutoManualMode',
9977
- Format => 'int16u',
9978
- Unknown => 1,
9979
- ValueConv => '($val-104)/8',
9980
- ValueConvInv => '8 * ($val + 104)',
9981
- PrintConv => \%iSOAutoHiLimitZ7,
9982
- },
9930
+ 746 => { Name => 'MovieISOAutoManualMode', %isoAutoHiLimitZ7 },
9983
9931
  820 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
9984
9932
  822 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
9985
9933
  828 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
@@ -9999,14 +9947,26 @@ my %nikonFocalConversions = (
9999
9947
  887 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
10000
9948
  888 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
10001
9949
  896 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
9950
+ );
9951
+
9952
+ %Image::ExifTool::Nikon::MenuSettingsZ8v1 = (
9953
+ %binaryDataAttrs,
9954
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9955
+ NOTES => 'These tags are used by the Z8 firmware 1.00 and 1.10.',
9956
+ IS_SUBDIR => [ 0, 943 ],
9957
+ 0 => {
9958
+ Name => 'MenuSettingsZ8',
9959
+ Format => 'undef[943]',
9960
+ SubDirectory => { TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8' },
9961
+ },
10002
9962
  943 => {
10003
9963
  Name => 'CustomSettingsZ8',
10004
9964
  Format => 'undef[730]',
10005
9965
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
10006
9966
  },
10007
- 1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
10008
- 1684 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
9967
+ 1684 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9, SeparateTable => 'TimeZone' },
10009
9968
  1690 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
9969
+ 1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
10010
9970
  1712 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
10011
9971
  1716 => { Name => 'NonCPULens1FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
10012
9972
  1718 => { Name => 'NonCPULens2FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
@@ -10028,26 +9988,26 @@ my %nikonFocalConversions = (
10028
9988
  1750 => { Name => 'NonCPULens18FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
10029
9989
  1752 => { Name => 'NonCPULens19FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
10030
9990
  1754 => { Name => 'NonCPULens20FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
10031
- 1756 => { Name => 'NonCPULens1MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10032
- 1758 => { Name => 'NonCPULens2MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10033
- 1760 => { Name => 'NonCPULens3MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10034
- 1762 => { Name => 'NonCPULens4MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10035
- 1764 => { Name => 'NonCPULens5MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10036
- 1766 => { Name => 'NonCPULens6MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10037
- 1768 => { Name => 'NonCPULens7MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10038
- 1770 => { Name => 'NonCPULens8MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10039
- 1772 => { Name => 'NonCPULens9MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10040
- 1774 => { Name => 'NonCPULens10MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10041
- 1776 => { Name => 'NonCPULens11MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10042
- 1778 => { Name => 'NonCPULens12MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10043
- 1780 => { Name => 'NonCPULens13MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10044
- 1782 => { Name => 'NonCPULens14MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10045
- 1784 => { Name => 'NonCPULens15MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10046
- 1786 => { Name => 'NonCPULens16MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10047
- 1788 => { Name => 'NonCPULens17MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10048
- 1790 => { Name => 'NonCPULens18MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10049
- 1792 => { Name => 'NonCPULens19MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
10050
- 1794 => { Name => 'NonCPULens20MaxAperture', Format => 'int16u', PrintConv => \%nonCPULensApertureZ8, Unknown => 1},
9991
+ 1756 => { Name => 'NonCPULens1MaxAperture', %nonCPULensApertureZ8 },
9992
+ 1758 => { Name => 'NonCPULens2MaxAperture', %nonCPULensApertureZ8},
9993
+ 1760 => { Name => 'NonCPULens3MaxAperture', %nonCPULensApertureZ8},
9994
+ 1762 => { Name => 'NonCPULens4MaxAperture', %nonCPULensApertureZ8},
9995
+ 1764 => { Name => 'NonCPULens5MaxAperture', %nonCPULensApertureZ8},
9996
+ 1766 => { Name => 'NonCPULens6MaxAperture', %nonCPULensApertureZ8},
9997
+ 1768 => { Name => 'NonCPULens7MaxAperture', %nonCPULensApertureZ8},
9998
+ 1770 => { Name => 'NonCPULens8MaxAperture', %nonCPULensApertureZ8},
9999
+ 1772 => { Name => 'NonCPULens9MaxAperture', %nonCPULensApertureZ8},
10000
+ 1774 => { Name => 'NonCPULens10MaxAperture', %nonCPULensApertureZ8},
10001
+ 1776 => { Name => 'NonCPULens11MaxAperture', %nonCPULensApertureZ8},
10002
+ 1778 => { Name => 'NonCPULens12MaxAperture', %nonCPULensApertureZ8},
10003
+ 1780 => { Name => 'NonCPULens13MaxAperture', %nonCPULensApertureZ8},
10004
+ 1782 => { Name => 'NonCPULens14MaxAperture', %nonCPULensApertureZ8},
10005
+ 1784 => { Name => 'NonCPULens15MaxAperture', %nonCPULensApertureZ8},
10006
+ 1786 => { Name => 'NonCPULens16MaxAperture', %nonCPULensApertureZ8},
10007
+ 1788 => { Name => 'NonCPULens17MaxAperture', %nonCPULensApertureZ8},
10008
+ 1790 => { Name => 'NonCPULens18MaxAperture', %nonCPULensApertureZ8},
10009
+ 1792 => { Name => 'NonCPULens19MaxAperture', %nonCPULensApertureZ8},
10010
+ 1794 => { Name => 'NonCPULens20MaxAperture', %nonCPULensApertureZ8},
10051
10011
  1808 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
10052
10012
  1826 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
10053
10013
  1827 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
@@ -10055,201 +10015,26 @@ my %nikonFocalConversions = (
10055
10015
  1890 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
10056
10016
  1899 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
10057
10017
  );
10058
- %Image::ExifTool::Nikon::MenuSettingsZ8v2 = (
10018
+
10019
+ %Image::ExifTool::Nikon::MenuSettingsZ8v2 = (
10059
10020
  %binaryDataAttrs,
10060
10021
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10061
- DATAMEMBER => [ 152, 200, 204, 244, 440, 548, 554, 570, 596, 2046 ],
10062
- IS_SUBDIR => [ 943 ],
10063
- NOTES => 'These tags are used by the Z8 firmware 1.00.',
10064
- 72 => {
10065
- Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
10066
- PrintConv => \%highFrameRateZ9,
10067
- },
10068
- 152 => {
10069
- Name => 'MultipleExposureMode',
10070
- RawConv => '$$self{MultipleExposureMode} = $val',
10071
- PrintConv => \%multipleExposureModeZ9,
10072
- },
10073
- 154 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
10074
- 184 => {
10075
- Name => 'IntervalDurationHours',
10076
- Format => 'int32u',
10077
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
10078
- },
10079
- 188 => {
10080
- Name => 'IntervalDurationMinutes',
10081
- Format => 'int32u',
10082
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
10083
- },
10084
- 192 => {
10085
- Name => 'IntervalDurationSeconds',
10086
- Format => 'int32u',
10087
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
10088
- },
10089
- 200 => {
10090
- Name => 'Intervals',
10091
- Format => 'int32u',
10092
- RawConv => '$$self{IntervalShootingIntervals} = $val',
10093
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
10094
- },
10095
- 204 => {
10096
- Name => 'ShotsPerInterval',
10097
- Format => 'int32u',
10098
- RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
10099
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
10100
- },
10101
- 208 => {
10102
- Name => 'IntervalExposureSmoothing',
10103
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
10104
- Format => 'int8u',
10105
- PrintConv => \%offOn,
10106
- },
10107
- 210 => {
10108
- Name => 'IntervalPriority',
10109
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0',
10110
- Format => 'int8u',
10111
- PrintConv => \%offOn,
10112
- },
10113
- 244 => {
10114
- Name => 'FocusShiftNumberShots', #1-300
10115
- RawConv => '$$self{FocusShiftNumberShots} = $val',
10116
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
10117
- },
10118
- 248 => {
10119
- Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
10120
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
10121
- },
10122
- 252 => {
10123
- Name => 'FocusShiftInterval',
10124
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
10125
- PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
10126
- },
10127
- 256 => {
10128
- Name => 'FocusShiftExposureLock',
10129
- Unknown => 1,
10130
- PrintConv => \%offOn,
10131
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
10132
- },
10133
- 286 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
10134
- 288 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
10135
- 324 => { Name => 'PhotoShootingMenuBankImageArea', PrintConv => \%imageAreaZ9 },
10136
- 338 => { Name => 'AutoISO', PrintConv => \%offOn },
10137
- 340 => {
10138
- Name => 'ISOAutoHiLimit',
10139
- Format => 'int16u',
10140
- Unknown => 1,
10141
- ValueConv => '($val-104)/8',
10142
- ValueConvInv => '8 * ($val + 104)',
10143
- PrintConv => \%iSOAutoHiLimitZ7,
10144
- },
10145
- 342 => {
10146
- Name => 'ISOAutoFlashLimit',
10147
- Format => 'int16u',
10148
- Unknown => 1,
10149
- ValueConv => '($val-104)/8',
10150
- ValueConvInv => '8 * ($val + 104)',
10151
- PrintConv => \%iSOAutoHiLimitZ7,
10152
- },
10153
- 350 => {
10154
- Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
10155
- ValueConv => '$val / 8',
10156
- Format => 'int16s',
10157
- PrintConv => \%iSOAutoShutterTimeZ9,
10158
- },
10159
- 432 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
10160
- 434 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
10161
- 436 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
10162
- 440 => {
10163
- Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
10164
- RawConv => '$$self{FlashControlMode} = $val',
10165
- PrintConv => \%flashControlModeZ7,
10166
- },
10167
- 548 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
10168
- 550 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
10169
- 554 => {
10170
- Name => 'BracketSet',
10171
- RawConv => '$$self{BracketSet} = $val',
10172
- PrintConv => \%bracketSetZ9,
10173
- },
10174
- 556 => {
10175
- Name => 'BracketProgram',
10176
- Condition => '$$self{BracketSet} < 3',
10177
- Notes => 'AE and/or Flash Bracketing',
10178
- PrintConv => \%bracketProgramZ9,
10179
- },
10180
- 558 => {
10181
- Name => 'BracketIncrement',
10182
- Condition => '$$self{BracketSet} < 3',
10183
- Notes => 'AE and/or Flash Bracketing',
10184
- PrintConv => \%bracketIncrementZ9,
10185
- },
10186
- 570 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
10187
- #572 HDRSaveRaw 0=> No; 1=> Yes
10188
- 576 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
10189
- 582 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
10190
- 586 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
10191
- 592 => { Name => 'DXCropAlert', PrintConv => \%offOn },
10192
- 594 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
10193
- 596 => {
10194
- Name => 'DynamicAFAreaSize',
10195
- Condition => '$$self{AFAreaMode} == 2',
10196
- RawConv => '$$self{DynamicAFAreaSize} = $val',
10197
- PrintConv => \%dynamicAfAreaModesZ9,
10198
- },
10199
- 618 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
10200
- 622 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
10201
- 636 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
10202
- 730 => {
10203
- Name => 'MovieImageArea',
10204
- Unknown => 1,
10205
- Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
10206
- PrintConv => \%imageAreaZ9b,
10207
- },
10208
- #736 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 }, #only valid for MovieType H.264 8-bit
10209
- 740 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
10210
- 742 => {
10211
- Name => 'MovieISOAutoHiLimit',
10212
- Format => 'int16u',
10213
- Unknown => 1,
10214
- ValueConv => '($val-104)/8',
10215
- ValueConvInv => '8 * ($val + 104)',
10216
- PrintConv => \%iSOAutoHiLimitZ7,
10217
- },
10218
- 744 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
10219
- 746 => {
10220
- Name => 'MovieISOAutoManualMode',
10221
- Format => 'int16u',
10222
- Unknown => 1,
10223
- ValueConv => '($val-104)/8',
10224
- ValueConvInv => '8 * ($val + 104)',
10225
- PrintConv => \%iSOAutoHiLimitZ7,
10022
+ DATAMEMBER => [ 0, 2046 ],
10023
+ IS_SUBDIR => [ 0, 943 ],
10024
+ NOTES => 'These tags are used by the Z8 firmware 2.00 and 2.10.',
10025
+ 0 => {
10026
+ Name => 'MenuSettingsZ8',
10027
+ Format => 'undef[943]',
10028
+ SubDirectory => { TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ8' },
10029
+ Hook => '$varSize += 4 if $$self{FirmwareVersion} and $$self{FirmwareVersion} ge "02.10"',
10226
10030
  },
10227
- 820 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
10228
- 822 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
10229
- 828 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
10230
- 830 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
10231
- 832 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
10232
- 834 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
10233
- 836 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
10234
- 840 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
10235
- 842 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
10236
- 844 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
10237
- 846 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
10238
- 848 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
10239
- 850 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
10240
- 878 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
10241
- 880 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
10242
- 886 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
10243
- 887 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
10244
- 888 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
10245
- 896 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
10246
10031
  943 => {
10247
10032
  Name => 'CustomSettingsZ8',
10248
10033
  Format => 'undef[755]',
10249
10034
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ8' },
10250
10035
  },
10251
10036
  1698 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
10252
- 1700 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
10037
+ 1700 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9, SeparateTable => 'TimeZone' },
10253
10038
  1706 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
10254
10039
  1728 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
10255
10040
  1732 => { Name => 'NonCPULens1FocalLength', Format => 'int16u', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
@@ -10309,7 +10094,8 @@ my %nikonFocalConversions = (
10309
10094
  2062 => { Name => 'PlaybackButtonPlaybackMode', %buttonsZ9}, #CSf2
10310
10095
  2064 => { Name => 'BracketButtonPlaybackMode', %buttonsZ9}, #CSf2
10311
10096
  );
10312
- %Image::ExifTool::Nikon::MenuSettingsZ9 = (
10097
+
10098
+ %Image::ExifTool::Nikon::MenuSettingsZ9 = (
10313
10099
  %binaryDataAttrs,
10314
10100
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10315
10101
  DATAMEMBER => [ 140, 188, 192, 232, 308, 424, 528, 534, 576 ],
@@ -10360,22 +10146,8 @@ my %nikonFocalConversions = (
10360
10146
  308 => { Name => 'PhotoShootingMenuBankImageArea', RawConv => '$$self{ImageArea} = $val', PrintConv => \%imageAreaZ9 },
10361
10147
  #310 ImageQuality
10362
10148
  322 => { Name => 'AutoISO', PrintConv => \%offOn },
10363
- 324 => {
10364
- Name => 'ISOAutoHiLimit',
10365
- Format => 'int16u',
10366
- Unknown => 1,
10367
- ValueConv => '($val-104)/8',
10368
- ValueConvInv => '8 * ($val + 104)',
10369
- PrintConv => \%iSOAutoHiLimitZ7,
10370
- },
10371
- 326 => {
10372
- Name => 'ISOAutoFlashLimit',
10373
- Format => 'int16u',
10374
- Unknown => 1,
10375
- ValueConv => '($val-104)/8',
10376
- ValueConvInv => '8 * ($val + 104)',
10377
- PrintConv => \%iSOAutoHiLimitZ7,
10378
- },
10149
+ 324 => { Name => 'ISOAutoHiLimit', %isoAutoHiLimitZ7 },
10150
+ 326 => { Name => 'ISOAutoFlashLimit', %isoAutoHiLimitZ7 },
10379
10151
  #332 ISOAutoShutterTime - Auto setting 0=> 'Auto (Slowest)', 1 => 'Auto (Slower)', 2=> 'Auto', 3=> 'Auto (Faster)', 4=> 'Auto (Fastest)'
10380
10152
  334 => {
10381
10153
  Name => 'ISOAutoShutterTime', #shutter speed is 2 ** (-$val/24)
@@ -10465,23 +10237,9 @@ my %nikonFocalConversions = (
10465
10237
  PrintConv => \%imageAreaZ9b,
10466
10238
  },
10467
10239
  614 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
10468
- 616 => {
10469
- Name => 'MovieISOAutoHiLimit',
10470
- Format => 'int16u',
10471
- Unknown => 1,
10472
- ValueConv => '($val-104)/8',
10473
- ValueConvInv => '8 * ($val + 104)',
10474
- PrintConv => \%iSOAutoHiLimitZ7,
10475
- },
10240
+ 616 => { Name => 'MovieISOAutoHiLimit', %isoAutoHiLimitZ7 },
10476
10241
  618 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
10477
- 620 => {
10478
- Name => 'MovieISOAutoManualMode',
10479
- Format => 'int16u',
10480
- Unknown => 1,
10481
- ValueConv => '($val-104)/8',
10482
- ValueConvInv => '8 * ($val + 104)',
10483
- PrintConv => \%iSOAutoHiLimitZ7,
10484
- },
10242
+ 620 => { Name => 'MovieISOAutoManualMode', %isoAutoHiLimitZ7 },
10485
10243
  696 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
10486
10244
  698 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
10487
10245
  704 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
@@ -10507,7 +10265,7 @@ my %nikonFocalConversions = (
10507
10265
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
10508
10266
  },
10509
10267
  1426 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
10510
- 1428 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
10268
+ 1428 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9, SeparateTable => 'TimeZone' },
10511
10269
  1434 => { Name => 'MonitorBrightness', ValueConv => '$val - 5', Unknown => 1 }, # settings: -5 to +5
10512
10270
  1456 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
10513
10271
  1552 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
@@ -10520,7 +10278,7 @@ my %nikonFocalConversions = (
10520
10278
  1645 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
10521
10279
  );
10522
10280
 
10523
- %Image::ExifTool::Nikon::MenuSettingsZ9v3 = (
10281
+ %Image::ExifTool::Nikon::MenuSettingsZ9v3 = (
10524
10282
  %binaryDataAttrs,
10525
10283
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10526
10284
  DATAMEMBER => [ 154, 204, 208, 248, 328, 444, 548, 554, 596 ],
@@ -10572,22 +10330,8 @@ my %nikonFocalConversions = (
10572
10330
  292 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
10573
10331
  328 => { Name => 'PhotoShootingMenuBankImageArea', RawConv => '$$self{ImageArea} = $val', PrintConv => \%imageAreaZ9 },
10574
10332
  342 => { Name => 'AutoISO', PrintConv => \%offOn },
10575
- 344 => {
10576
- Name => 'ISOAutoHiLimit',
10577
- Format => 'int16u',
10578
- Unknown => 1,
10579
- ValueConv => '($val-104)/8',
10580
- ValueConvInv => '8 * ($val + 104)',
10581
- PrintConv => \%iSOAutoHiLimitZ7,
10582
- },
10583
- 346 => {
10584
- Name => 'ISOAutoFlashLimit',
10585
- Format => 'int16u',
10586
- Unknown => 1,
10587
- ValueConv => '($val-104)/8',
10588
- ValueConvInv => '8 * ($val + 104)',
10589
- PrintConv => \%iSOAutoHiLimitZ7,
10590
- },
10333
+ 344 => { Name => 'ISOAutoHiLimit', %isoAutoHiLimitZ7 },
10334
+ 346 => { Name => 'ISOAutoFlashLimit', %isoAutoHiLimitZ7 },
10591
10335
  354 => {
10592
10336
  Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
10593
10337
  ValueConv => '$val / 8',
@@ -10666,23 +10410,9 @@ my %nikonFocalConversions = (
10666
10410
  PrintConv => \%imageAreaZ9b,
10667
10411
  },
10668
10412
  656 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
10669
- 658 => {
10670
- Name => 'MovieISOAutoHiLimit',
10671
- Format => 'int16u',
10672
- Unknown => 1,
10673
- ValueConv => '($val-104)/8',
10674
- ValueConvInv => '8 * ($val + 104)',
10675
- PrintConv => \%iSOAutoHiLimitZ7,
10676
- },
10413
+ 658 => { Name => 'MovieISOAutoHiLimit', %isoAutoHiLimitZ7 },
10677
10414
  660 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
10678
- 662 => {
10679
- Name => 'MovieISOAutoManualMode',
10680
- Format => 'int16u',
10681
- Unknown => 1,
10682
- ValueConv => '($val-104)/8',
10683
- ValueConvInv => '8 * ($val + 104)',
10684
- PrintConv => \%iSOAutoHiLimitZ7,
10685
- },
10415
+ 662 => { Name => 'MovieISOAutoManualMode', %isoAutoHiLimitZ7 },
10686
10416
  736 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
10687
10417
  738 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
10688
10418
  744 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
@@ -10709,7 +10439,7 @@ my %nikonFocalConversions = (
10709
10439
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9' },
10710
10440
  },
10711
10441
  1474 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
10712
- 1476 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
10442
+ 1476 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9, SeparateTable => 'TimeZone' },
10713
10443
  1482 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
10714
10444
  1504 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
10715
10445
  1600 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
@@ -10753,17 +10483,21 @@ my %nikonFocalConversions = (
10753
10483
  #1936 FocusPointDisplayOption3DTrackingColor CSa11-d 0=> 'White', 1= => 'Red'
10754
10484
  );
10755
10485
 
10756
- # firmware version 4.x menu settings (ref 28)
10757
- %Image::ExifTool::Nikon::MenuSettingsZ9v4 = (
10486
+ # firmware version 4.x/5.x menu settings (ref 28)
10487
+ %Image::ExifTool::Nikon::MenuSettingsZ9v4 = (
10758
10488
  %binaryDataAttrs,
10759
10489
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
10760
- DATAMEMBER => [ 154, 204, 208, 248, 328, 444, 548, 554, 570, 596 ],
10490
+ DATAMEMBER => [ 72, 154, 204, 208, 248, 328, 444, 548, 554, 570, 596 ],
10761
10491
  IS_SUBDIR => [ 847 ],
10762
- NOTES => 'These tags are used by the Z9 firmware 4.0.0 and 4.1.0.',
10492
+ NOTES => 'These tags are used by the Z9 firmware 4.00, 4.10, 5.00 and 5.10.',
10763
10493
  72 => {
10764
10494
  Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
10765
10495
  PrintConv => \%highFrameRateZ9,
10496
+ Hook => '$varSize += 4 if $$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.10"',
10766
10497
  },
10498
+ #
10499
+ # Note: Offsets after this are shifted by +4 for firmware 5.1 (see Hook above)
10500
+ #
10767
10501
  154 => {
10768
10502
  Name => 'MultipleExposureMode',
10769
10503
  RawConv => '$$self{MultipleExposureMode} = $val',
@@ -10807,22 +10541,8 @@ my %nikonFocalConversions = (
10807
10541
  328 => { Name => 'PhotoShootingMenuBankImageArea', RawConv => '$$self{ImageArea} = $val', PrintConv => \%imageAreaZ9 },
10808
10542
  #334 JPGCompression 0 => 'Size Priority', 1 => 'Optimal Quality',
10809
10543
  342 => { Name => 'AutoISO', PrintConv => \%offOn },
10810
- 344 => {
10811
- Name => 'ISOAutoHiLimit',
10812
- Format => 'int16u',
10813
- Unknown => 1,
10814
- ValueConv => '($val-104)/8',
10815
- ValueConvInv => '8 * ($val + 104)',
10816
- PrintConv => \%iSOAutoHiLimitZ7,
10817
- },
10818
- 346 => {
10819
- Name => 'ISOAutoFlashLimit',
10820
- Format => 'int16u',
10821
- Unknown => 1,
10822
- ValueConv => '($val-104)/8',
10823
- ValueConvInv => '8 * ($val + 104)',
10824
- PrintConv => \%iSOAutoHiLimitZ7,
10825
- },
10544
+ 344 => { Name => 'ISOAutoHiLimit', %isoAutoHiLimitZ7 },
10545
+ 346 => { Name => 'ISOAutoFlashLimit', %isoAutoHiLimitZ7 },
10826
10546
  354 => {
10827
10547
  Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
10828
10548
  ValueConv => '$val / 8',
@@ -10904,23 +10624,9 @@ my %nikonFocalConversions = (
10904
10624
  PrintConv => \%imageAreaZ9b,
10905
10625
  },
10906
10626
  656 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
10907
- 658 => {
10908
- Name => 'MovieISOAutoHiLimit',
10909
- Format => 'int16u',
10910
- Unknown => 1,
10911
- ValueConv => '($val-104)/8',
10912
- ValueConvInv => '8 * ($val + 104)',
10913
- PrintConv => \%iSOAutoHiLimitZ7,
10914
- },
10627
+ 658 => { Name => 'MovieISOAutoHiLimit', %isoAutoHiLimitZ7 },
10915
10628
  660 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
10916
- 662 => {
10917
- Name => 'MovieISOAutoManualMode',
10918
- Format => 'int16u',
10919
- Unknown => 1,
10920
- ValueConv => '($val-104)/8',
10921
- ValueConvInv => '8 * ($val + 104)',
10922
- PrintConv => \%iSOAutoHiLimitZ7,
10923
- },
10629
+ 662 => { Name => 'MovieISOAutoManualMode', %isoAutoHiLimitZ7 },
10924
10630
  736 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
10925
10631
  738 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
10926
10632
  744 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
@@ -10947,7 +10653,7 @@ my %nikonFocalConversions = (
10947
10653
  SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9v4' },
10948
10654
  },
10949
10655
  1498 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
10950
- 1500 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
10656
+ 1500 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9, SeparateTable => 'TimeZone' },
10951
10657
  1506 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
10952
10658
  1528 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
10953
10659
  1532 => { Name => 'NonCPULens1FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
@@ -11065,318 +10771,6 @@ my %nikonFocalConversions = (
11065
10771
  2072 => { Name => 'FlashModeButtonPlaybackMode', %buttonsZ9}, #CSf2
11066
10772
  );
11067
10773
 
11068
- # menu settings for the Z9 with firmware version 5.1 (ref 28)
11069
- %Image::ExifTool::Nikon::MenuSettingsZ9v5 = (
11070
- %binaryDataAttrs,
11071
- GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
11072
- DATAMEMBER => [ 158, 208, 212, 252, 332, 448, 552, 558, 574, 600 ],
11073
- IS_SUBDIR => [ 851 ],
11074
- NOTES => 'These tags are used by the Z9 firmware 5.1.',
11075
- 72 => {
11076
- Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
11077
- PrintConv => \%highFrameRateZ9,
11078
- },
11079
- 158 => {
11080
- Name => 'MultipleExposureMode',
11081
- RawConv => '$$self{MultipleExposureMode} = $val',
11082
- PrintConv => \%multipleExposureModeZ9,
11083
- },
11084
- 160 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
11085
- 208 => {
11086
- Name => 'Intervals',
11087
- Format => 'int32u',
11088
- RawConv => '$$self{IntervalShootingIntervals} = $val',
11089
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
11090
- },
11091
- 212 => {
11092
- Name => 'ShotsPerInterval',
11093
- Format => 'int32u',
11094
- RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
11095
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{IntervalShooting} > 0', #not valid for C30/C60/C120
11096
- },
11097
- 252 => {
11098
- Name => 'FocusShiftNumberShots', #1-300
11099
- RawConv => '$$self{FocusShiftNumberShots} = $val',
11100
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
11101
- },
11102
- 256 => {
11103
- Name => 'FocusShiftStepWidth', #1(Narrow) to 10 (Wide)
11104
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
11105
- },
11106
- 260 => {
11107
- Name => 'FocusShiftInterval',
11108
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
11109
- PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
11110
- },
11111
- 264 => {
11112
- Name => 'FocusShiftExposureLock',
11113
- Unknown => 1,
11114
- PrintConv => \%offOn,
11115
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
11116
- },
11117
- 294 => { Name => 'PhotoShootingMenuBank', PrintConv => \%banksZ9 },
11118
- 296 => { Name => 'ExtendedMenuBanks', PrintConv => \%offOn }, # single tag from both Photo & Video menus
11119
- 332 => { Name => 'PhotoShootingMenuBankImageArea', RawConv => '$$self{ImageArea} = $val', PrintConv => \%imageAreaZ9 },
11120
- #338 JPGCompression 0 => 'Size Priority', 1 => 'Optimal Quality',
11121
- 346 => { Name => 'AutoISO', PrintConv => \%offOn },
11122
- 348 => {
11123
- Name => 'ISOAutoHiLimit',
11124
- Format => 'int16u',
11125
- Unknown => 1,
11126
- ValueConv => '($val-104)/8',
11127
- ValueConvInv => '8 * ($val + 104)',
11128
- PrintConv => \%iSOAutoHiLimitZ7,
11129
- },
11130
- 350 => {
11131
- Name => 'ISOAutoFlashLimit',
11132
- Format => 'int16u',
11133
- Unknown => 1,
11134
- ValueConv => '($val-104)/8',
11135
- ValueConvInv => '8 * ($val + 104)',
11136
- PrintConv => \%iSOAutoHiLimitZ7,
11137
- },
11138
- 358 => {
11139
- Name => 'ISOAutoShutterTime', # shutter speed is 2 ** (-$val/24)
11140
- ValueConv => '$val / 8',
11141
- Format => 'int16s',
11142
- PrintConv => \%iSOAutoShutterTimeZ9,
11143
- },
11144
- 440 => { Name => 'MovieVignetteControl', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
11145
- 442 => { Name => 'DiffractionCompensation', PrintConv => \%offOn }, # value can be set from both the Photo Shoot Menu and the Video Shooting Menu
11146
- 444 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
11147
- 448 => {
11148
- Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu
11149
- RawConv => '$$self{FlashControlMode} = $val',
11150
- PrintConv => \%flashControlModeZ7,
11151
- },
11152
- 450 => {
11153
- Name => 'FlashMasterCompensation',
11154
- Format => 'int8s',
11155
- Unknown => 1,
11156
- ValueConv => '$val/6',
11157
- ValueConvInv => '6 * $val',
11158
- PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
11159
- PrintConvInv => '$val',
11160
- },
11161
- 454 => {
11162
- Name => 'FlashGNDistance',
11163
- Condition => '$$self{FlashControlMode} == 2',
11164
- Unknown => 1,
11165
- ValueConv => '$val + 3',
11166
- PrintConv => \%flashGNDistance,
11167
- },
11168
- 458 => {
11169
- 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)
11170
- Condition => '$$self{FlashControlMode} >= 3',
11171
- Unknown => 1,
11172
- ValueConv => '2 ** (-$val/3)',
11173
- ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
11174
- PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
11175
- PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
11176
- },
11177
- #466 flash wireless control 0=> 'Off' 1=> 'Optical AWL'
11178
- #468 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
11179
- #480 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
11180
- 552 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
11181
- 554 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
11182
- 558 => {
11183
- Name => 'BracketSet',
11184
- RawConv => '$$self{BracketSet} = $val',
11185
- PrintConv => \%bracketSetZ9,
11186
- },
11187
- 560 => {
11188
- Name => 'BracketProgram',
11189
- Condition => '$$self{BracketSet} < 3',
11190
- Notes => 'AE and/or Flash Bracketing',
11191
- PrintConv => \%bracketProgramZ9,
11192
- },
11193
- 562 => {
11194
- Name => 'BracketIncrement',
11195
- Condition => '$$self{BracketSet} < 3',
11196
- Notes => 'AE and/or Flash Bracketing',
11197
- PrintConv => \%bracketIncrementZ9,
11198
- },
11199
- 574 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
11200
- 580 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
11201
- 586 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
11202
- 590 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (8256x5504)', 1 => 'Medium (6192x4128)', 2 => 'Small (4128x2752)' }, Unknown => 1},
11203
- 596 => { Name => 'DXCropAlert', PrintConv => \%offOn },
11204
- 598 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
11205
- 600 => {
11206
- Name => 'DynamicAFAreaSize',
11207
- Condition => '$$self{AFAreaMode} == 2',
11208
- RawConv => '$$self{DynamicAFAreaSize} = $val',
11209
- PrintConv => \%dynamicAfAreaModesZ9,
11210
- },
11211
- 640 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 }, # new with firmware 3.0
11212
- 650 => {
11213
- Name => 'MovieImageArea',
11214
- Unknown => 1,
11215
- Mask => 0x01, # without the mask 4 => 'FX' 5 => DX only the 2nd Z-series field encountered with a mask.
11216
- PrintConv => \%imageAreaZ9b,
11217
- },
11218
- 660 => { Name => 'MovieType', PrintConv => \%movieTypeZ9, Unknown => 1 },
11219
- 662 => {
11220
- Name => 'MovieISOAutoHiLimit',
11221
- Format => 'int16u',
11222
- Unknown => 1,
11223
- ValueConv => '($val-104)/8',
11224
- ValueConvInv => '8 * ($val + 104)',
11225
- PrintConv => \%iSOAutoHiLimitZ7,
11226
- },
11227
- 664 => { Name => 'MovieISOAutoControlManualMode', PrintConv => \%offOn, Unknown => 1 },
11228
- 666 => {
11229
- Name => 'MovieISOAutoManualMode',
11230
- Format => 'int16u',
11231
- Unknown => 1,
11232
- ValueConv => '($val-104)/8',
11233
- ValueConvInv => '8 * ($val + 104)',
11234
- PrintConv => \%iSOAutoHiLimitZ7,
11235
- },
11236
- 740 => { Name => 'MovieActiveD-Lighting', PrintConv => \%activeDLightingZ7, Unknown => 1 },
11237
- 742 => { Name => 'MovieHighISONoiseReduction', PrintConv => \%offLowNormalHighZ7, Unknown => 1 },
11238
- 748 => { Name => 'MovieFlickerReduction', PrintConv => \%movieFlickerReductionZ9 },
11239
- 750 => { Name => 'MovieMeteringMode', PrintConv => \%meteringModeZ7, Unknown => 1 },
11240
- 752 => { Name => 'MovieFocusMode', PrintConv => \%focusModeZ7, Unknown => 1 },
11241
- 754 => { Name => 'MovieAFAreaMode', PrintConv => \%aFAreaModeZ9 },
11242
- 756 => { Name => 'MovieVRMode', PrintConv => \%vRModeZ9, Unknown => 1 },
11243
- 760 => { Name => 'MovieElectronicVR', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
11244
- 762 => { Name => 'MovieSoundRecording', PrintConv => { 0 => 'Off', 1 => 'Auto', 2 => 'Manual' }, Unknown => 1 },
11245
- 764 => { Name => 'MicrophoneSensitivity', Unknown => 1 }, # 1-20
11246
- 766 => { Name => 'MicrophoneAttenuator', PrintConv => \%offOn, Unknown => 1 }, # distinct from MoveieVRMode
11247
- 768 => { Name => 'MicrophoneFrequencyResponse',PrintConv => { 0 => 'Wide Range', 1 => 'Vocal Range' }, Unknown => 1 },
11248
- 770 => { Name => 'WindNoiseReduction', PrintConv => \%offOn, Unknown => 1 },
11249
- 792 => { Name => 'MovieToneMap', PrintConv => \%movieToneMapZ9, Unknown => 1 },
11250
- 798 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
11251
- 800 => { Name => 'MovieFrameRate', PrintConv => \%movieFrameRateZ7, Unknown => 1 },
11252
- 806 => { Name => 'MicrophoneJackPower', PrintConv => \%offOn, Unknown => 1 },
11253
- 807 => { Name => 'MovieDXCropAlert', PrintConv => \%offOn, Unknown => 1 },
11254
- 808 => { Name => 'MovieSubjectDetection', PrintConv => \%subjectDetectionZ9, Unknown => 1 },
11255
- 816 => { Name => 'MovieHighResZoom', PrintConv => \%offOn, Unknown => 1 },
11256
- 851 => {
11257
- Name => 'CustomSettingsZ9v4',
11258
- Format => 'undef[632]',
11259
- SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ9v4' },
11260
- },
11261
- 1502 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
11262
- 1504 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
11263
- 1510 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5. Added with firmware 3.0: Lo1, Lo2, Hi1, Hi2
11264
- 1532 => { Name => 'AFFineTune', PrintConv => \%offOn, Unknown => 1 },
11265
- 1536 => { Name => 'NonCPULens1FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1}, #should probably hide altogther if $val is 0
11266
- 1540 => { Name => 'NonCPULens2FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11267
- 1542 => { Name => 'NonCPULens3FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11268
- 1548 => { Name => 'NonCPULens4FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11269
- 1552 => { Name => 'NonCPULens5FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11270
- 1556 => { Name => 'NonCPULens6FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11271
- 1560 => { Name => 'NonCPULens7FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11272
- 1564 => { Name => 'NonCPULens8FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11273
- 1568 => { Name => 'NonCPULens9FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11274
- 1572 => { Name => 'NonCPULens10FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11275
- 1576 => { Name => 'NonCPULens11FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11276
- 1580 => { Name => 'NonCPULens12FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11277
- 1584 => { Name => 'NonCPULens13FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11278
- 1588 => { Name => 'NonCPULens14FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11279
- 1592 => { Name => 'NonCPULens15FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11280
- 1596 => { Name => 'NonCPULens16FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11281
- 1600 => { Name => 'NonCPULens17FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11282
- 1604 => { Name => 'NonCPULens18FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11283
- 1608 => { Name => 'NonCPULens19FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11284
- 1612 => { Name => 'NonCPULens20FocalLength', Format => 'int16s', PrintConv => 'sprintf("%.1fmm",$val/10)', Unknown => 1},
11285
- 1616 => { Name => 'NonCPULens1MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1}, #non-CPU aperture interface, values and storage differ from the Z8
11286
- 1620 => { Name => 'NonCPULens2MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11287
- 1624 => { Name => 'NonCPULens3MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11288
- 1628 => { Name => 'NonCPULens4MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11289
- 1632 => { Name => 'NonCPULens5MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11290
- 1636 => { Name => 'NonCPULens6MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11291
- 1640 => { Name => 'NonCPULens7MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11292
- 1644 => { Name => 'NonCPULens8MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11293
- 1648 => { Name => 'NonCPULens9MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11294
- 1652 => { Name => 'NonCPULens10MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11295
- 1656 => { Name => 'NonCPULens11MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11296
- 1660 => { Name => 'NonCPULens12MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11297
- 1664 => { Name => 'NonCPULens13MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11298
- 1668 => { Name => 'NonCPULens14MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11299
- 1672 => { Name => 'NonCPULens15MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11300
- 1676 => { Name => 'NonCPULens16MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11301
- 1680 => { Name => 'NonCPULens17MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11302
- 1684 => { Name => 'NonCPULens18MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11303
- 1688 => { Name => 'NonCPULens19MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11304
- 1692 => { Name => 'NonCPULens20MaxAperture', Format => 'int16s', PrintConv => 'sprintf("f/%.1f",$val/100)', Unknown => 1},
11305
- 1708 => { Name => 'HDMIOutputResolution', PrintConv => \%hDMIOutputResolutionZ9 },
11306
- 1721 => { Name => 'SetClockFromLocationData', PrintConv => \%offOn, Unknown => 1 },
11307
- 1728 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
11308
- 1729 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
11309
- 1764 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
11310
- 1788 => { Name => 'RecordLocationData', PrintConv => \%offOn, Unknown => 1 },
11311
- 1792 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
11312
- 1801 => { Name => 'SensorShield', PrintConv => { 0 => 'Stays Open', 1 => 'Closes' }, Unknown => 1 },
11313
- 1866 => {
11314
- Name => 'AutoCapturePreset',
11315
- PrintConv => {
11316
- 0 => '1',
11317
- 1 => '2',
11318
- 2 => '3',
11319
- 3 => '4',
11320
- 4 => '5',
11321
- },
11322
- },
11323
- 1868 => {
11324
- Name => 'FocusShiftAutoReset',
11325
- Unknown => 1,
11326
- PrintConv => \%offOn,
11327
- Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96 and $$self{FocusShiftShooting} > 0', #not valid for C30/C60/C120
11328
- },
11329
- 1926 => { #CSd4-a
11330
- Name => 'PreReleaseBurstLength',
11331
- PrintConv => {
11332
- 0 => 'None',
11333
- 1 => '0.3 Sec',
11334
- 2 => '0.5 Sec',
11335
- 3 => '1 Sec',
11336
- },
11337
- },
11338
- 1928 => { #CSd4-b
11339
- Name => 'PostReleaseBurstLength',
11340
- PrintConv => {
11341
- 0 => '1 Sec',
11342
- 1 => '2 Sec',
11343
- 2 => '3 Sec',
11344
- 3 => 'Max',
11345
- },
11346
- },
11347
- 1942 => { Name => 'VerticalISOButton', %buttonsZ9}, #CSf2
11348
- 1944 => { Name => 'ExposureCompensationButton', %buttonsZ9}, #CSf2
11349
- 1946 => { Name => 'ISOButton', %buttonsZ9}, #CSf2
11350
- 2006 => { Name => 'ViewModeShowEffectsOfSettings', PrintConv => { 0=>'Always', 1=> 'Only When Flash Not Used'}, Unknown => 1 }, #CSd9-a
11351
- 2008 => { Name => 'DispButton', %buttonsZ9}, #CSf2
11352
- 2052 => { #CSd6
11353
- Name => 'ExposureDelay',
11354
- Format => 'fixed32u',
11355
- PrintConv => '$val ? sprintf("%.1f sec",$val/1000) : "Off"',
11356
- },
11357
- 2056 => { #CSf2-m3
11358
- Name => 'CommandDialFrameAdvanceZoom',
11359
- Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
11360
- PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
11361
- Unknown => 1
11362
- },
11363
- 2058 => { #CSf2-n3
11364
- Name => 'SubCommandDialFrameAdvanceZoom',
11365
- Condition => '$$self{FirmwareVersion} and $$self{FirmwareVersion} ge "05.00"',
11366
- PrintConv => \%dialsFrameAdvanceZoomPositionZ9,
11367
- Unknown => 1
11368
- },
11369
- 2060 => { Name => 'PlaybackButton', %buttonsZ9}, #CSf2
11370
- 2062 => { Name => 'WBButton', %buttonsZ9}, #CSf2
11371
- 2064 => { Name => 'BracketButton', %buttonsZ9}, #CSf2
11372
- 2066 => { Name => 'FlashModeButton', %buttonsZ9}, #CSf2
11373
- 2068 => { Name => 'LensFunc1ButtonPlaybackMode', %buttonsZ9}, #CSf2
11374
- 2070 => { Name => 'LensFunc2ButtonPlaybackMode', %buttonsZ9}, #CSf2
11375
- 2072 => { Name => 'PlaybackButtonPlaybackMode', %buttonsZ9}, #CSf2
11376
- 2074 => { Name => 'BracketButtonPlaybackMode', %buttonsZ9}, #CSf2
11377
- 2076 => { Name => 'FlashModeButtonPlaybackMode', %buttonsZ9}, #CSf2
11378
- );
11379
-
11380
10774
  # Flash information (ref JD)
11381
10775
  %Image::ExifTool::Nikon::FlashInfo0100 = (
11382
10776
  %binaryDataAttrs,
@@ -12647,6 +12041,7 @@ my %nikonFocalConversions = (
12647
12041
  Name => 'FirmwareVersion51',
12648
12042
  Format => 'string[8]',
12649
12043
  Writable => 0,
12044
+ ValueConv => 'join ".", $val =~ /../g',
12650
12045
  },
12651
12046
  10 => {
12652
12047
  Name => 'NEFCompression',
@@ -12661,9 +12056,10 @@ my %nikonFocalConversions = (
12661
12056
  %binaryDataAttrs,
12662
12057
  GROUPS => { 0 => 'MakerNotes' },
12663
12058
  0 => {
12664
- Name => 'FirmwareVersion',
12059
+ Name => 'FirmwareVersion56',
12665
12060
  Format => 'string[4]',
12666
12061
  Writable => 0,
12062
+ ValueConv => '$val =~ s/(\d{2})/$1./; $val',
12667
12063
  },
12668
12064
  4 => {
12669
12065
  Name => 'BurstGroupID', #all frames shot within a burst (using CL/CH/C30/C60/C120) will share the same BurstGroupID. Value will be > 0 for all images shot in continuous modes (or via Pixel Shift). 0 for single-frame.