exiftool-vendored.exe 12.91.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.36';
68
+ $VERSION = '4.38';
69
69
 
70
70
  sub LensIDConv($$$);
71
71
  sub ProcessNikonAVI($$$);
@@ -367,6 +367,7 @@ sub GetAFPointGrid($$;$);
367
367
  '02 46 37 37 25 25 02 00' => 'Sigma 24mm F2.8 Super Wide II Macro',
368
368
  '7E 54 37 37 0C 0C 4B 06' => 'Sigma 24mm F1.4 DG HSM | A', #30
369
369
  '26 58 3C 3C 14 14 1C 02' => 'Sigma 28mm F1.8 EX DG Aspherical Macro',
370
+ 'BC 54 3C 3C 0C 0C 4B 46' => 'Sigma 28mm F1.4 DG HSM | A', #30
370
371
  '48 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM',
371
372
  'F8 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM', #JD
372
373
  '91 54 44 44 0C 0C 4B 06' => 'Sigma 35mm F1.4 DG HSM', #30
@@ -954,6 +955,7 @@ my %hdrLevelZ8 = (
954
955
  my %highFrameRateZ9 = (
955
956
  0 => 'Off',
956
957
  1 => 'CH',
958
+ 2 => 'CH*', #28 (Z6III)
957
959
  3 => 'C30',
958
960
  5 => 'C60',
959
961
  4 => 'C120',
@@ -986,6 +988,39 @@ my %infoZSeries = (
986
988
  Notes => 'Z Series cameras thru October 2023',
987
989
  );
988
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
+
989
1024
  my %iSOAutoHiLimitZ7 = (
990
1025
  0 => 'ISO 64',
991
1026
  1 => 'ISO 80',
@@ -1111,6 +1146,18 @@ my %movieFlickerReductionZ9 = (
1111
1146
  2 => '60Hz',
1112
1147
  );
1113
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
+
1114
1161
  my %movieFrameRateZ7 = (
1115
1162
  0 => '120p',
1116
1163
  1 => '100p',
@@ -1125,6 +1172,7 @@ my %movieFrameSizeZ9 = (
1125
1172
  1 => '1920x1080',
1126
1173
  2 => '3840x2160',
1127
1174
  3 => '7680x4320',
1175
+ 7 => '5376x3024', #28 (Z6III)
1128
1176
  );
1129
1177
 
1130
1178
  my %movieSlowMotion = (
@@ -1225,6 +1273,13 @@ my %secondarySlotFunctionZ9 = (
1225
1273
  3 => 'JPG Primary + JPG Secondary',
1226
1274
  );
1227
1275
 
1276
+ my %subjectDetectionAreaMZ6III = ( #28
1277
+ 0 => 'Off',
1278
+ 1 => 'All',
1279
+ 2 => 'Wide (L)',
1280
+ 3 => 'Wide (S)',
1281
+ );
1282
+
1228
1283
  my %subjectDetectionZ9 = (
1229
1284
  0 => 'Off',
1230
1285
  1 => 'Auto',
@@ -2464,7 +2519,16 @@ my %base64coord = (
2464
2519
  ByteOrder => 'BigEndian',
2465
2520
  },
2466
2521
  },
2467
- { # (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)
2468
2532
  # 0800=Z6/Z7 0801=Z50 0802=Z5 0803=Z6II/Z7II 0804=Zfc 0807=Z30 0808=Zf
2469
2533
  Condition => '$$valPt =~ /^080[0123478]/',
2470
2534
  Name => 'ShotInfoZ7II',
@@ -5373,7 +5437,7 @@ my %nikonFocalConversions = (
5373
5437
  %binaryDataAttrs,
5374
5438
  NOTES => 'Tags found in the encrypted LensData from cameras such as the Z6 and Z7.',
5375
5439
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
5376
- DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56, 0x58 ],
5440
+ DATAMEMBER => [ 0x03, 0x2f, 0x30, 0x4c, 0x56, 0x58 ],
5377
5441
  0x00 => {
5378
5442
  Name => 'LensDataVersion',
5379
5443
  Format => 'string[4]',
@@ -5477,6 +5541,7 @@ my %nikonFocalConversions = (
5477
5541
  Condition => '$$self{NewLensData}',
5478
5542
  Notes => 'tags from here onward used for Nikkor Z lenses only',
5479
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)
5480
5545
  PrintConv => {
5481
5546
  1 => 'Nikkor Z 24-70mm f/4 S',
5482
5547
  2 => 'Nikkor Z 14-30mm f/4 S',
@@ -5516,19 +5581,21 @@ my %nikonFocalConversions = (
5516
5581
  45 => 'Nikkor Z 600mm f/6.3 VR S', #28
5517
5582
  46 => 'Nikkor Z 135mm f/1.8 S Plena', #28
5518
5583
  48 => 'Nikkor Z 28-400mm f/4-8 VR', #30
5584
+ 2305 => 'Laowa FFII 10mm F2.8 C&D Dreamer', #30
5519
5585
  32768 => 'Nikkor Z 400mm f/2.8 TC VR S TC-1.4x', #28
5520
5586
  32769 => 'Nikkor Z 600mm f/4 TC VR S TC-1.4x', #28
5521
5587
  },
5522
5588
  },
5523
- 0x35 => { #28
5524
- Name => 'LensMountType',
5525
- RawConv => '$$self{LensMountType} = $val', # 0=> DSLR lens via FTZ style adapter; 1=> Native Z lens;
5526
- Format => 'int8u',
5527
- #Unknown => 1,
5528
- PrintConv => {
5529
- 0 => 'F-mount Lens',
5530
- 1 => 'Z-mount Lens',
5531
- },
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
+ },
5532
5599
  },
5533
5600
  0x36 => { #PH
5534
5601
  Name => 'MaxAperture',
@@ -5561,41 +5628,50 @@ my %nikonFocalConversions = (
5561
5628
  0x4c => { #28
5562
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.
5563
5630
  Format => 'int8u',
5564
- 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"',
5565
5632
  RawConv => '$$self{FocusDistanceRangeWidth} = $val',
5566
5633
  Unknown => 1,
5567
5634
  },
5568
5635
  0x4e => { #28
5569
5636
  Name => 'FocusDistance',
5570
5637
  Format => 'int16u',
5571
- Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
5638
+ Condition => '$$self{LensID} and $$self{LensID} != 0', #only valid for Z-mount lenses
5572
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
5573
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
5574
5641
  ValueConvInv => '$val>0 ? log(12*($val+80)/log(2) : 0', #was '$val>0 ? 40*log($val*100)/log(10) : 0'
5575
5642
  PrintConv => q{
5576
- (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),
5577
5644
  },
5578
5645
  },
5579
- 0x56 => { #28 #not valif for focus mode M
5646
+ 0x56 => { #28 #not valid for focus mode M
5580
5647
  Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
5581
- 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
5582
5649
  Format => 'int8u',
5583
5650
  RawConv => 'unless (defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
5584
5651
  Unknown => 1,
5585
5652
  },
5586
5653
  0x58 => { #28
5587
5654
  Name => 'FocusStepsFromInfinity',
5588
- 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
5589
5656
  Format => 'int8u',
5590
5657
  RawConv => '$$self{FocusStepsFromInfinity} = $val', # 0 at Infinity, otherwise a small positive number monotonically increasing towards CFD.
5591
5658
  Unknown => 1,
5592
5659
  },
5593
5660
  0x5a => { #28
5594
5661
  Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
5595
- Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
5662
+ Condition => '$$self{LensID} and $$self{LensID} != 0', # Only valid for Z-mount lenses.
5596
5663
  Format => 'int32s',
5597
5664
  #Unknown => 1,
5598
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
+ },
5599
5675
  );
5600
5676
 
5601
5677
  # Unknown Nikon lens data (note: data may need decrypting after byte 4)
@@ -5636,38 +5712,6 @@ my %nikonFocalConversions = (
5636
5712
  Notes => 'P6000',
5637
5713
  PrintConv => \%offOn,
5638
5714
  },
5639
- # for Nikon Z6iii JPG and RAW images (version 0809),
5640
- # the offset table starts at 0x24 and is as follows
5641
- # JPG Offset Size NEF Offset Size
5642
- # 0) 0x0000 0 0) 0x009c 21604
5643
- # 1) 0x0000 0 1) 0x5500 6008
5644
- # 2) 0x009c 2528 2) 0x6c78 2528
5645
- # 3) 0x0a7c 200 3) 0x7658 200
5646
- # 4) 0x0b44 2488 4) 0x7720 2488
5647
- # 5) 0x14fc 1468 5) 0x80d8 1468
5648
- # 6) 0x1ab8 1032 6) 0x8694 1032
5649
- # 7) 0x1ec0 256 7) 0x8a9c 256
5650
- # 8) 0x1fc0 800 8) 0x8b9c 800
5651
- # 9) 0x22e0 144 9) 0x8ebc 144
5652
- # 10) 0x2370 64 10) 0x8f4c 64
5653
- # 11) 0x0000 0 11) 0x0000 0
5654
- # 12) 0x23b0 5009 12) 0x8f8c 5009
5655
- # 13) 0x3741 1536 13) 0xa31d 1536
5656
- # 14) 0x3d41 11928 14) 0xa91d 11928
5657
- # 15) 0x6bd9 5937 15) 0xd7b5 5937
5658
- # 16) 0x830a 500 16) 0xeee6 500
5659
- # 17) 0x84fe 160 17) 0xf0da 160
5660
- # 18) 0x859e 464 18) 0xf17a 464
5661
- # 19) 0x876e 8 19) 0xf34a 8
5662
- # 20) 0x8776 64 20) 0xf352 64
5663
- # 21) 0x87b6 6 21) 0xf392 6
5664
- # 22) 0x87bc 48 22) 0xf398 48
5665
- # 23) 0x87ec 20 23) 0xf3c8 20
5666
- # 24) 0x8800 108 24) 0xf3dc 108
5667
- # 25) 0x886c 8 25) 0xf448 8
5668
- # 26) 0x8874 2420 26) 0xf450 2420
5669
- # 27) 0x0000 0 27) 0x0000 0
5670
- # 28) 0x0000 0 28) 0x0000 0
5671
5715
  0x66 => {
5672
5716
  Name => 'VR_0x66',
5673
5717
  Condition => '$$self{ShotInfoVersion} eq "0204"',
@@ -8291,6 +8335,69 @@ my %nikonFocalConversions = (
8291
8335
  },
8292
8336
  );
8293
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
+
8294
8401
  # shot information for the Z7II firmware 1.00 (encrypted) - ref 28
8295
8402
  %Image::ExifTool::Nikon::ShotInfoZ7II = (
8296
8403
  PROCESS_PROC => \&ProcessNikonEncrypted,
@@ -8679,7 +8786,7 @@ my %nikonFocalConversions = (
8679
8786
  my $DynamicL = 2;
8680
8787
 
8681
8788
  my $start = 502; #FX, 16:9 & 1:1 formats
8682
- my $increment = 259; #FX, & 16:9 formats
8789
+ my $increment = 259; #FX & 16:9 formats
8683
8790
 
8684
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)
8685
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
@@ -8993,6 +9100,203 @@ my %nikonFocalConversions = (
8993
9100
  },
8994
9101
  );
8995
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
+
8996
9300
  %Image::ExifTool::Nikon::MenuSettingsZ7II = (
8997
9301
  %binaryDataAttrs,
8998
9302
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
@@ -9078,16 +9382,6 @@ my %nikonFocalConversions = (
9078
9382
  PrintConv => \%offOn,
9079
9383
  },
9080
9384
  #324 => {Name => 'FlickerReductionShooting',}, # redundant with tag in NikonSettings
9081
- 326 => {
9082
- Name => 'NikonMeteringMode',
9083
- Unknown => 1,
9084
- PrintConv => {
9085
- 0 => 'Matrix',
9086
- 1 => 'Center',
9087
- 2 => 'Spot',
9088
- 3 => 'Highlight'
9089
- },
9090
- },
9091
9385
  326 => { Name => 'NikonMeteringMode', PrintConv => \%meteringModeZ7},
9092
9386
  328 => {
9093
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