exiftool-vendored.exe 12.96.0 → 12.97.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.37';
68
+ $VERSION = '4.38';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -955,6 +955,7 @@ my %hdrLevelZ8 = (
955
955
  my %highFrameRateZ9 = (
956
956
  0 => 'Off',
957
957
  1 => 'CH',
958
+ 2 => 'CH*', #28 (Z6III)
958
959
  3 => 'C30',
959
960
  5 => 'C60',
960
961
  4 => 'C120',
@@ -987,6 +988,39 @@ my %infoZSeries = (
987
988
  Notes => 'Z Series cameras thru October 2023',
988
989
  );
989
990
 
991
+ my %iSOAutoHiLimitZ6III = ( #28
992
+ 5 => 'ISO 200',
993
+ 6 => 'ISO 250',
994
+ 7 => 'ISO 320',
995
+ 8 => 'ISO 400',
996
+ 9 => 'ISO 500',
997
+ 10 => 'ISO 640',
998
+ 11 => 'ISO 800',
999
+ 12 => 'ISO 1000',
1000
+ 13 => 'ISO 1250',
1001
+ 14 => 'ISO 1600',
1002
+ 15 => 'ISO 2000',
1003
+ 16 => 'ISO 2500',
1004
+ 17 => 'ISO 3200',
1005
+ 18 => 'ISO 4000',
1006
+ 19 => 'ISO 5000',
1007
+ 20 => 'ISO 6400',
1008
+ 21 => 'ISO 8000',
1009
+ 22 => 'ISO 10000',
1010
+ 23 => 'ISO 12800',
1011
+ 24 => 'ISO 16000',
1012
+ 25 => 'ISO 20000',
1013
+ 26 => 'ISO 25600',
1014
+ 27 => 'ISO 32000',
1015
+ 28 => 'ISO 40000',
1016
+ 29 => 'ISO 51200',
1017
+ 30 => 'ISO 64000',
1018
+ 31 => 'ISO Hi 0.3',
1019
+ 32 => 'ISO Hi 0.7',
1020
+ 33 => 'ISO Hi 1.0',
1021
+ 35 => 'ISO Hi 1.7',
1022
+ );
1023
+
990
1024
  my %iSOAutoHiLimitZ7 = (
991
1025
  0 => 'ISO 64',
992
1026
  1 => 'ISO 80',
@@ -1112,6 +1146,18 @@ my %movieFlickerReductionZ9 = (
1112
1146
  2 => '60Hz',
1113
1147
  );
1114
1148
 
1149
+ my %movieFrameRateZ6III = ( #28
1150
+ 0 => '240p',
1151
+ 1 => '200p',
1152
+ 2 => '120p',
1153
+ 3 => '100p',
1154
+ 4 => '60p',
1155
+ 5 => '50p',
1156
+ 6 => '30p',
1157
+ 7 => '25p',
1158
+ 8 => '24p',
1159
+ );
1160
+
1115
1161
  my %movieFrameRateZ7 = (
1116
1162
  0 => '120p',
1117
1163
  1 => '100p',
@@ -1126,6 +1172,7 @@ my %movieFrameSizeZ9 = (
1126
1172
  1 => '1920x1080',
1127
1173
  2 => '3840x2160',
1128
1174
  3 => '7680x4320',
1175
+ 7 => '5376x3024', #28 (Z6III)
1129
1176
  );
1130
1177
 
1131
1178
  my %movieSlowMotion = (
@@ -1226,6 +1273,13 @@ my %secondarySlotFunctionZ9 = (
1226
1273
  3 => 'JPG Primary + JPG Secondary',
1227
1274
  );
1228
1275
 
1276
+ my %subjectDetectionAreaMZ6III = ( #28
1277
+ 0 => 'Off',
1278
+ 1 => 'All',
1279
+ 2 => 'Wide (L)',
1280
+ 3 => 'Wide (S)',
1281
+ );
1282
+
1229
1283
  my %subjectDetectionZ9 = (
1230
1284
  0 => 'Off',
1231
1285
  1 => 'Auto',
@@ -2465,7 +2519,16 @@ my %base64coord = (
2465
2519
  ByteOrder => 'BigEndian',
2466
2520
  },
2467
2521
  },
2468
- { # (Z6_2 firmware version 1.00 and Z7II firmware versions 1.00 & 1.01, ref 28)
2522
+ { # (Z6_3 firmware version 1.00, ref 28)
2523
+ Condition => '$$valPt =~ /^0809/',
2524
+ Name => 'ShotInfoZ6III',
2525
+ SubDirectory => {
2526
+ TagTable => 'Image::ExifTool::Nikon::ShotInfoZ6III',
2527
+ DecryptStart => 4,
2528
+ ByteOrder => 'LittleEndian',
2529
+ },
2530
+ },
2531
+ { # (Z6_2 firmware version 1.00 and Z7_2 firmware versions 1.00 & 1.01, ref 28)
2469
2532
  # 0800=Z6/Z7 0801=Z50 0802=Z5 0803=Z6II/Z7II 0804=Zfc 0807=Z30 0808=Zf
2470
2533
  Condition => '$$valPt =~ /^080[0123478]/',
2471
2534
  Name => 'ShotInfoZ7II',
@@ -5374,7 +5437,7 @@ my %nikonFocalConversions = (
5374
5437
  %binaryDataAttrs,
5375
5438
  NOTES => 'Tags found in the encrypted LensData from cameras such as the Z6 and Z7.',
5376
5439
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
5377
- DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56, 0x58 ],
5440
+ DATAMEMBER => [ 0x03, 0x2f, 0x30, 0x4c, 0x56, 0x58 ],
5378
5441
  0x00 => {
5379
5442
  Name => 'LensDataVersion',
5380
5443
  Format => 'string[4]',
@@ -5478,6 +5541,7 @@ my %nikonFocalConversions = (
5478
5541
  Condition => '$$self{NewLensData}',
5479
5542
  Notes => 'tags from here onward used for Nikkor Z lenses only',
5480
5543
  Format => 'int16u',
5544
+ RawConv => '$$self{LensID} = $val', #28 non-zero = > Native Z lens; 0 => DSLR lens via FTZ style adapter or non-Nikon Z-mount lens (or no lens attached)
5481
5545
  PrintConv => {
5482
5546
  1 => 'Nikkor Z 24-70mm f/4 S',
5483
5547
  2 => 'Nikkor Z 14-30mm f/4 S',
@@ -5517,19 +5581,21 @@ my %nikonFocalConversions = (
5517
5581
  45 => 'Nikkor Z 600mm f/6.3 VR S', #28
5518
5582
  46 => 'Nikkor Z 135mm f/1.8 S Plena', #28
5519
5583
  48 => 'Nikkor Z 28-400mm f/4-8 VR', #30
5584
+ 2305 => 'Laowa FFII 10mm F2.8 C&D Dreamer', #30
5520
5585
  32768 => 'Nikkor Z 400mm f/2.8 TC VR S TC-1.4x', #28
5521
5586
  32769 => 'Nikkor Z 600mm f/4 TC VR S TC-1.4x', #28
5522
5587
  },
5523
5588
  },
5524
- 0x35 => { #28
5525
- Name => 'LensMountType',
5526
- RawConv => '$$self{LensMountType} = $val', # 0=> DSLR lens via FTZ style adapter; 1=> Native Z lens;
5527
- Format => 'int8u',
5528
- #Unknown => 1,
5529
- PrintConv => {
5530
- 0 => 'F-mount Lens',
5531
- 1 => 'Z-mount Lens',
5532
- },
5589
+ 0x34 => { #28
5590
+ Name => 'LensFirmwareVersion',
5591
+ Condition => '$$self{LensID} and $$self{LensID} != 0', #only valid for Z-mount lenses
5592
+ Format => 'int16u', #4 bits each for version, release amd modification in VRM scheme.
5593
+ PrintConv => q{
5594
+ my $version = int($val / 256);
5595
+ my $release = int(($val - 256 * $version)/16);
5596
+ my $modification = $val - (256 * $version + 16 * $release);
5597
+ return sprintf("%.0f.%.0f.%.0f", $version,$release,$modification);
5598
+ },
5533
5599
  },
5534
5600
  0x36 => { #PH
5535
5601
  Name => 'MaxAperture',
@@ -5562,41 +5628,50 @@ my %nikonFocalConversions = (
5562
5628
  0x4c => { #28
5563
5629
  Name => 'FocusDistanceRangeWidth', #reflects the number of discrete absolute lens positions that are mapped to the reported FocusDistance. Will be 1 near CFD reflecting very narrow focus distance bands (i.e., quite accurate). Near Infinity will be something like 32. Note: 0 at infinity.
5564
5630
  Format => 'int8u',
5565
- Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1 and $$self{FocusMode} ne "Manual"',
5631
+ Condition => '$$self{LensID} and $$self{LensID} != 0 and $$self{FocusMode} ne "Manual"',
5566
5632
  RawConv => '$$self{FocusDistanceRangeWidth} = $val',
5567
5633
  Unknown => 1,
5568
5634
  },
5569
5635
  0x4e => { #28
5570
5636
  Name => 'FocusDistance',
5571
5637
  Format => 'int16u',
5572
- Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
5638
+ Condition => '$$self{LensID} and $$self{LensID} != 0', #only valid for Z-mount lenses
5573
5639
  RawConv => '$val = $val/256', # 1st byte is the fractional component. This byte was not previously considered in the legacy calculation (which only used the 2nd byte). When 2nd byte < 80; distance is < 1 meter
5574
5640
  ValueConv => '2**(($val-80)/12)', # in m #slighly more accurate than the legacy calcualtion of '0.01 * 10**($val/40)'. Tested at all focus positions using the 105mm,70-200mm & 600mm
5575
5641
  ValueConvInv => '$val>0 ? log(12*($val+80)/log(2) : 0', #was '$val>0 ? 40*log($val*100)/log(10) : 0'
5576
5642
  PrintConv => q{
5577
- (defined $$self{FocusStepsFromInfinity} and not $$self{FocusStepsFromInfinity}) ? "Inf" : $val < 1 ? $val < 0.35 ? sprintf("%.4f m", $val): sprintf("%.3f m", $val): sprintf("%.2f m", $val), #distances less than 35mm are quite accurate with increasingly less precision past 1m
5643
+ (defined $$self{FocusStepsFromInfinity} and $$self{FocusStepsFromInfinity} eq 0) ? "Inf" : $val < 100 ? $val < 10 ? $val < 1 ? $val < 0.35 ? sprintf("%.4f m", $val): sprintf("%.3f m", $val): sprintf("%.2f m", $val) : sprintf("%.1f m", $val) : sprintf("%.0f m", $val),
5578
5644
  },
5579
5645
  },
5580
- 0x56 => { #28 #not valif for focus mode M
5646
+ 0x56 => { #28 #not valid for focus mode M
5581
5647
  Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
5582
- Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1 and $$self{FocusMode} ne "Manual"',
5648
+ Condition => '$$self{LensID} and $$self{LensID} != 0 and $$self{FocusMode} ne "Manual"', #valid for Z-mount lenses in focus modes other than M
5583
5649
  Format => 'int8u',
5584
5650
  RawConv => 'unless (defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
5585
5651
  Unknown => 1,
5586
5652
  },
5587
5653
  0x58 => { #28
5588
5654
  Name => 'FocusStepsFromInfinity',
5589
- Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1', #valid for both AF and manual focus modes
5655
+ Condition => '$$self{LensID} and $$self{LensID} != 0', #valid for Z-mount lenses in both AF and manual focus modes
5590
5656
  Format => 'int8u',
5591
5657
  RawConv => '$$self{FocusStepsFromInfinity} = $val', # 0 at Infinity, otherwise a small positive number monotonically increasing towards CFD.
5592
5658
  Unknown => 1,
5593
5659
  },
5594
5660
  0x5a => { #28
5595
5661
  Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
5596
- Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
5662
+ Condition => '$$self{LensID} and $$self{LensID} != 0', # Only valid for Z-mount lenses.
5597
5663
  Format => 'int32s',
5598
5664
  #Unknown => 1,
5599
5665
  },
5666
+ 0x5f => { #28
5667
+ Name => 'LensMountType',
5668
+ Format => 'int8u',
5669
+ Mask => 0x01,
5670
+ PrintConv => {
5671
+ 0 => 'Z-mount',
5672
+ 1 => 'F-mount',
5673
+ },
5674
+ },
5600
5675
  );
5601
5676
 
5602
5677
  # Unknown Nikon lens data (note: data may need decrypting after byte 4)
@@ -5637,38 +5712,6 @@ my %nikonFocalConversions = (
5637
5712
  Notes => 'P6000',
5638
5713
  PrintConv => \%offOn,
5639
5714
  },
5640
- # for Nikon Z6iii JPG and RAW images (version 0809),
5641
- # the offset table starts at 0x24 and is as follows
5642
- # JPG Offset Size NEF Offset Size
5643
- # 0) 0x0000 0 0) 0x009c 21604
5644
- # 1) 0x0000 0 1) 0x5500 6008
5645
- # 2) 0x009c 2528 2) 0x6c78 2528
5646
- # 3) 0x0a7c 200 3) 0x7658 200
5647
- # 4) 0x0b44 2488 4) 0x7720 2488
5648
- # 5) 0x14fc 1468 5) 0x80d8 1468
5649
- # 6) 0x1ab8 1032 6) 0x8694 1032
5650
- # 7) 0x1ec0 256 7) 0x8a9c 256
5651
- # 8) 0x1fc0 800 8) 0x8b9c 800
5652
- # 9) 0x22e0 144 9) 0x8ebc 144
5653
- # 10) 0x2370 64 10) 0x8f4c 64
5654
- # 11) 0x0000 0 11) 0x0000 0
5655
- # 12) 0x23b0 5009 12) 0x8f8c 5009
5656
- # 13) 0x3741 1536 13) 0xa31d 1536
5657
- # 14) 0x3d41 11928 14) 0xa91d 11928
5658
- # 15) 0x6bd9 5937 15) 0xd7b5 5937
5659
- # 16) 0x830a 500 16) 0xeee6 500
5660
- # 17) 0x84fe 160 17) 0xf0da 160
5661
- # 18) 0x859e 464 18) 0xf17a 464
5662
- # 19) 0x876e 8 19) 0xf34a 8
5663
- # 20) 0x8776 64 20) 0xf352 64
5664
- # 21) 0x87b6 6 21) 0xf392 6
5665
- # 22) 0x87bc 48 22) 0xf398 48
5666
- # 23) 0x87ec 20 23) 0xf3c8 20
5667
- # 24) 0x8800 108 24) 0xf3dc 108
5668
- # 25) 0x886c 8 25) 0xf448 8
5669
- # 26) 0x8874 2420 26) 0xf450 2420
5670
- # 27) 0x0000 0 27) 0x0000 0
5671
- # 28) 0x0000 0 28) 0x0000 0
5672
5715
  0x66 => {
5673
5716
  Name => 'VR_0x66',
5674
5717
  Condition => '$$self{ShotInfoVersion} eq "0204"',
@@ -8292,6 +8335,69 @@ my %nikonFocalConversions = (
8292
8335
  },
8293
8336
  );
8294
8337
 
8338
+ # shot information for the Z6III firmware 1.00 (encrypted) - ref 28
8339
+ %Image::ExifTool::Nikon::ShotInfoZ6III = (
8340
+ PROCESS_PROC => \&ProcessNikonEncrypted,
8341
+ WRITE_PROC => \&ProcessNikonEncrypted,
8342
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
8343
+ VARS => { ID_LABEL => 'Index', NIKON_OFFSETS => 0x24 },
8344
+ DATAMEMBER => [ 0x04 ],
8345
+ IS_SUBDIR => [ 0x88, 0x90 ],
8346
+ WRITABLE => 1,
8347
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
8348
+ NOTES => 'These tags are extracted from encrypted data in images from the Z6III.',
8349
+ 0x00 => {
8350
+ Name => 'ShotInfoVersion',
8351
+ Format => 'string[4]',
8352
+ Writable => 0,
8353
+ },
8354
+ 0x04 => {
8355
+ Name => 'FirmwareVersion',
8356
+ DataMember => 'FirmwareVersion',
8357
+ Format => 'string[8]',
8358
+ Writable => 0,
8359
+ RawConv => '$$self{FirmwareVersion} = $val',
8360
+ },
8361
+ 0x0e => {
8362
+ Name => 'FirmwareVersion2',
8363
+ Format => 'string[8]',
8364
+ Writable => 0,
8365
+ Hidden => 1,
8366
+ },
8367
+ 0x18 => {
8368
+ Name => 'FirmwareVersion3',
8369
+ Format => 'string[8]',
8370
+ Writable => 0,
8371
+ Hidden => 1,
8372
+ },
8373
+ 0x24 => {
8374
+ Name => 'NumberOffsets', # number of entries in offset table. offsets are from start of ShotInfo data.
8375
+ Format => 'int32u',
8376
+ Writable => 0,
8377
+ Hidden => 1,
8378
+ },
8379
+ #0x28 Offset1 - non-zero for NEF only
8380
+ #0x2c Offset2 - non-zero for NEF only
8381
+ #0x38 Offset5 - contains SkinSoftening at 0x2d1 - mapping is %offLowNormalHighZ7
8382
+ 0x88 => {
8383
+ Name => 'OrientationOffset',
8384
+ Condition => '$$self{ShutterMode} and $$self{ShutterMode} ne 96', #not valid for C30/C60/C120
8385
+ Format => 'int32u',
8386
+ SubDirectory => {
8387
+ TagTable => 'Image::ExifTool::Nikon::OrientationInfo',
8388
+ Start => '$val',
8389
+ }
8390
+ },
8391
+ 0x90 => {
8392
+ Name => 'MenuOffset',
8393
+ Format => 'int32u',
8394
+ SubDirectory => {
8395
+ TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ6III',
8396
+ Start => '$val',
8397
+ },
8398
+ },
8399
+ );
8400
+
8295
8401
  # shot information for the Z7II firmware 1.00 (encrypted) - ref 28
8296
8402
  %Image::ExifTool::Nikon::ShotInfoZ7II = (
8297
8403
  PROCESS_PROC => \&ProcessNikonEncrypted,
@@ -8680,7 +8786,7 @@ my %nikonFocalConversions = (
8680
8786
  my $DynamicL = 2;
8681
8787
 
8682
8788
  my $start = 502; #FX, 16:9 & 1:1 formats
8683
- my $increment = 259; #FX, & 16:9 formats
8789
+ my $increment = 259; #FX & 16:9 formats
8684
8790
 
8685
8791
  $start = $start + 5 * $increment if $imageArea == $OneToOne; # need to provide additional offset for the cropped horizontal pixels in 1:1 (19 vs 29 horizontal focus positions)
8686
8792
  $start = $start - $increment if $val < 49 and ($imageArea == $FX or $imageArea == $WideScreen); #calculations for the left side of the frames are offset by 1 position from the right side
@@ -8994,6 +9100,203 @@ my %nikonFocalConversions = (
8994
9100
  },
8995
9101
  );
8996
9102
 
9103
+ %Image::ExifTool::Nikon::MenuSettingsZ6III = (
9104
+ %binaryDataAttrs,
9105
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9106
+ NOTES => 'These tags are used by the Z6III.',
9107
+ DATAMEMBER => [ 360, 444, 492, 496, 724, 748, 832, 838, 852, 880, 904, 1050 ],
9108
+ IS_SUBDIR => [ 1255 ],
9109
+ 360 => {
9110
+ Name => 'SingleFrame', #0=> Single Frame 1=> one of the continuous modes
9111
+ Hidden => 1,
9112
+ RawConv => '$$self{SingleFrame} = $val',
9113
+ },
9114
+ 364 => {
9115
+ Name => 'HighFrameRate', #CH and C30/C60/C120 but not CL
9116
+ PrintConv => \%highFrameRateZ9,
9117
+ },
9118
+ 444 => {
9119
+ Name => 'MultipleExposureMode',
9120
+ RawConv => '$$self{MultipleExposureMode} = $val',
9121
+ PrintConv => \%multipleExposureModeZ9,
9122
+ },
9123
+ 446 => {Name => 'MultiExposureShots', Condition => '$$self{MultipleExposureMode} != 0'}, #range 2-9
9124
+ 476 => {
9125
+ Name => 'IntervalDurationHours',
9126
+ Format => 'int32u',
9127
+ },
9128
+ 480 => {
9129
+ Name => 'IntervalDurationMinutes',
9130
+ Format => 'int32u',
9131
+ },
9132
+ 484 => {
9133
+ Name => 'IntervalDurationSeconds',
9134
+ Format => 'int32u',
9135
+ },
9136
+ 492 => {
9137
+ Name => 'Intervals',
9138
+ Format => 'int32u',
9139
+ RawConv => '$$self{IntervalShootingIntervals} = $val',
9140
+ },
9141
+ 496 => {
9142
+ Name => 'ShotsPerInterval',
9143
+ Format => 'int32u',
9144
+ RawConv => '$$self{IntervalShootingShotsPerInterval} = $val',
9145
+ },
9146
+ 500 => {
9147
+ Name => 'IntervalExposureSmoothing',
9148
+ Format => 'int8u',
9149
+ PrintConv => \%offOn,
9150
+ },
9151
+ 502 => {
9152
+ Name => 'IntervalPriority',
9153
+ Format => 'int8u',
9154
+ PrintConv => \%offOn,
9155
+ },
9156
+ 536 => {
9157
+ Name => 'FocusShiftNumberShots',
9158
+ },
9159
+ 540 => {
9160
+ Name => 'FocusShiftStepWidth',
9161
+ },
9162
+ 544 => {
9163
+ Name => 'FocusShiftInterval',
9164
+ PrintConv => '$val == 1? "1 Second" : sprintf("%.0f Seconds",$val)',
9165
+ },
9166
+ 548 => {
9167
+ Name => 'FocusShiftExposureLock',
9168
+ PrintConv => \%offOn,
9169
+ },
9170
+ 648 => { Name => 'AutoISO', PrintConv => \%offOn },
9171
+ 650 => {
9172
+ Name => 'ISOAutoHiLimit',
9173
+ Format => 'int16u',
9174
+ Unknown => 1,
9175
+ ValueConv => '($val-104)/8',
9176
+ ValueConvInv => '8 * ($val + 104)',
9177
+ PrintConv => \%iSOAutoHiLimitZ6III,
9178
+ },
9179
+ #652 => ISOAutoFlashLimit # only when ISOAutoFlashLimitSameAsHiLimit == 0
9180
+ #654 => ISOAutoFlashLimitSameAsHiLimit 1=> Same as ISOAutoHiLimit 0=> Separate (use ISOAutoFlashLimit)
9181
+ 718 => {
9182
+ Name => 'DiffractionCompensation',
9183
+ Format => 'int8u',
9184
+ PrintConv => \%offOn,
9185
+ },
9186
+ 719 => {
9187
+ Name => 'AutoDistortionControl',
9188
+ Format => 'int8u',
9189
+ PrintConv => \%offOn,
9190
+ },
9191
+ 720 => { Name => 'FlickerReductionShooting',PrintConv => \%offOn },
9192
+ 722 => { Name => 'NikonMeteringMode', PrintConv => \%meteringModeZ7},
9193
+ 724 => {
9194
+ Name => 'FlashControlMode',
9195
+ RawConv => '$$self{FlashControlMode} = $val',
9196
+ PrintConv => \%flashControlModeZ7,
9197
+ },
9198
+ 730 => {
9199
+ Name => 'FlashGNDistance',
9200
+ Condition => '$$self{FlashControlMode} == 2',
9201
+ Unknown => 1,
9202
+ ValueConv => '$val + 3',
9203
+ PrintConv => \%flashGNDistance,
9204
+ },
9205
+ 734 => {
9206
+ 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)
9207
+ Condition => '$$self{FlashControlMode} >= 3',
9208
+ Unknown => 1,
9209
+ ValueConv => '2 ** (-$val/3)',
9210
+ ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
9211
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
9212
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
9213
+ },
9214
+ 742 => { Name => 'FlashWirelessOption', PrintConv => \%flashWirelessOptionZ7, Unknown => 1 },
9215
+ 744 => { Name => 'FlashRemoteControl', PrintConv => \%flashRemoteControlZ7, Unknown => 1 },
9216
+ 748 => {
9217
+ Name => 'FlashMasterControlMode', # tag name chosen for compatibility with those found in FlashInfo0102 & FlashInfo0103
9218
+ RawConv => '$$self{FlashGroupOptionsMasterMode} = $val',
9219
+ PrintConv => \%flashGroupOptionsMode,
9220
+ },
9221
+ 750 => {
9222
+ Name => 'FlashMasterCompensation',
9223
+ Format => 'int8s',
9224
+ Condition => '$$self{FlashGroupOptionsMasterMode} != 3', # other than 'Off'
9225
+ Unknown => 1,
9226
+ ValueConv => '$val/6',
9227
+ ValueConvInv => '6 * $val',
9228
+ PrintConv => '$val ? sprintf("%+.1f",$val) : 0',
9229
+ PrintConvInv => '$val',
9230
+ },
9231
+ 754 => {
9232
+ Name => 'FlashMasterOutput',
9233
+ Unknown => 1,
9234
+ Condition => '$$self{FlashGroupOptionsMasterMode} == 1', # only for Mode=M
9235
+ ValueConv => '2 ** (-$val/3)',
9236
+ ValueConvInv => '$val>0 ? -3*log($val)/log(2) : 0',
9237
+ PrintConv => '$val>0.99 ? "Full" : sprintf("%.1f%%",$val*100)',
9238
+ PrintConvInv => '$val=~/(\d+)/ ? $1/100 : 1',
9239
+ },
9240
+ 832 => { Name => 'AFAreaMode', RawConv => '$$self{AFAreaMode} = $val', PrintConv => \%aFAreaModeZ9},
9241
+ 834 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
9242
+ 838 => {
9243
+ Name => 'BracketSet',
9244
+ RawConv => '$$self{BracketSet} = $val',
9245
+ PrintConv => \%bracketSetZ9,
9246
+ },
9247
+ 840 => {
9248
+ Name => 'BracketProgram',
9249
+ Condition => '$$self{BracketSet} < 3',
9250
+ Notes => 'AE and/or Flash Bracketing',
9251
+ PrintConv => \%bracketProgramZ9,
9252
+ },
9253
+ 842 => {
9254
+ Name => 'BracketIncrement',
9255
+ Condition => '$$self{BracketSet} < 3',
9256
+ Notes => 'AE and/or Flash Bracketing',
9257
+ PrintConv => \%bracketIncrementZ9,
9258
+ },
9259
+ 852 => { Name => 'HDR', RawConv => '$$self{HDR} = $val', PrintConv => \%multipleExposureModeZ9 },
9260
+ 858 => { Name => 'SecondarySlotFunction', PrintConv => \%secondarySlotFunctionZ9 },
9261
+ 864 => { Name => 'HDRLevel', Condition => '$$self{HDR} ne 0', PrintConv => \%hdrLevelZ8 },
9262
+ 868 => { Name => 'Slot2JpgSize', PrintConv => { 0 => 'Large (6048x4032)', 1 => 'Medium (4528x3024)', 2 => 'Small (3024x2016)' }, Unknown => 1},
9263
+ 878 => { Name => 'SubjectDetection', PrintConv => \%subjectDetectionZ9 },
9264
+ 880 => {
9265
+ Name => 'DynamicAFAreaSize',
9266
+ Condition => '$$self{AFAreaMode} == 2',
9267
+ RawConv => '$$self{DynamicAFAreaSize} = $val',
9268
+ PrintConv => \%dynamicAfAreaModesZ9,
9269
+ },
9270
+ 884 => { Name => 'ToneMap', PrintConv => { 0 => 'SDR', 1 => 'HLG' }, Unknown => 1 },
9271
+ 888 => { Name => 'PortraitImpressionBalance', PrintConv => \%portraitImpressionBalanceZ8 },
9272
+ 902 => { Name => 'HighFrequencyFlickerReduction', PrintConv => \%offOn, Unknown => 1 },
9273
+ 904 => { Name => 'PixelShiftShooting', RawConv => '$$self{PixelShiftShooting} = $val', PrintConv => \%multipleExposureModeZ9 }, #off/on/on (series)
9274
+ 906 => { Name => 'PixelShiftNumberShots', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => \%pixelShiftNumberShots },
9275
+ 908 => { Name => 'PixelShiftDelay', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => '$val == 0? "No Delay" : sprintf("%.0f sec",$val)' }, #seconds in set {0,1,2,3,5,10}
9276
+ 910 => { Name => 'PixelShiftInterval', Condition => '$$self{PixelShiftShooting} > 0', PrintConv => '$val == 0? "No Delay" : sprintf("%.0f sec",$val)' }, #seconds in integer range [0,30]
9277
+ 1002 => { Name => 'SubjectDetectionAreaMF', PrintConv => \%subjectDetectionAreaMZ6III }, #new tag with Z6III
9278
+ 1004 => { Name => 'LinkVRToFocusPoint', PrintConv => \%offOn, Unknown => 1 }, #new tag with Z6III
9279
+ #1044 => { Name => 'MovieFrameRateH264',PrintConv => \%movieFrameRateZ6III, Unknown => 1 }, #new tag with Z6III - only valid for H.264, frame rates for other movie types are at 1164
9280
+ 1046 => { Name => 'MovieSlowMotion', PrintConv => \%movieSlowMotion, Unknown => 1 },
9281
+ 1050 => { Name => 'MovieType', RawConv => '$$self{MovieType} = $val' , PrintConv => \%movieTypeZ9},
9282
+ 1162 => { Name => 'MovieFrameSize', PrintConv => \%movieFrameSizeZ9, Unknown => 1 },
9283
+ 1164 => { Name => 'MovieFrameRate', Condition => '$$self{MovieType} != 1', PrintConv => \%movieFrameRateZ6III, Unknown => 1 },
9284
+ 1255 => {
9285
+ Name => 'CustomSettingsZ6III',
9286
+ Format => 'undef[700]',
9287
+ SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsZ6III' },
9288
+ },
9289
+ 2300 => { Name => 'Language', PrintConv => \%languageZ9, Unknown => 1 },
9290
+ 2302 => { Name => 'TimeZone', PrintConv => \%timeZoneZ9 },
9291
+ 2308 => { Name => 'MonitorBrightness', PrintConv => \%monitorBrightnessZ9, Unknown => 1 }, # settings: -5 to +5 and Lo1, Lo2, Hi1, Hi2
9292
+ 2444 => { Name => 'EmptySlotRelease', PrintConv => { 0 => 'Disable Release', 1 => 'Enable Release' }, Unknown => 1 },
9293
+ 2450 => { Name => 'EnergySavingMode', PrintConv => \%offOn, Unknown => 1 },
9294
+ 2476 => { Name => 'USBPowerDelivery', PrintConv => \%offOn, Unknown => 1 },
9295
+ 2480 => { Name => 'SaveFocusPosition', PrintConv => \%offOn, Unknown => 1 },
9296
+ 2487 => { Name => 'SilentPhotography', PrintConv => \%offOn, Unknown => 1 },
9297
+ 2496 => { Name => 'AirplaneMode', PrintConv => \%offOn, Unknown => 1 },
9298
+ ),
9299
+
8997
9300
  %Image::ExifTool::Nikon::MenuSettingsZ7II = (
8998
9301
  %binaryDataAttrs,
8999
9302
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -9079,16 +9382,6 @@ my %nikonFocalConversions = (
9079
9382
  PrintConv => \%offOn,
9080
9383
  },
9081
9384
  #324 => {Name => 'FlickerReductionShooting',}, # redundant with tag in NikonSettings
9082
- 326 => {
9083
- Name => 'NikonMeteringMode',
9084
- Unknown => 1,
9085
- PrintConv => {
9086
- 0 => 'Matrix',
9087
- 1 => 'Center',
9088
- 2 => 'Spot',
9089
- 3 => 'Highlight'
9090
- },
9091
- },
9092
9385
  326 => { Name => 'NikonMeteringMode', PrintConv => \%meteringModeZ7},
9093
9386
  328 => {
9094
9387
  Name => 'FlashControlMode', # this and nearby tag values for flash may be set from either the Photo Shooting Menu or using the Flash unit menu