exiftool_vendored 12.95.0 → 12.97.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +19 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +28 -15
- data/bin/lib/Image/ExifTool/Canon.pm +1 -0
- data/bin/lib/Image/ExifTool/FujiFilm.pm +23 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +2 -2
- data/bin/lib/Image/ExifTool/InDesign.pm +17 -3
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +355 -62
- data/bin/lib/Image/ExifTool/NikonCustom.pm +421 -11
- data/bin/lib/Image/ExifTool/QuickTime.pm +20 -14
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4831 -4816
- data/bin/lib/Image/ExifTool/TagNames.pod +190 -3
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +34 -35
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -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.
|
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
|
-
{ # (
|
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,
|
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
|
-
|
5525
|
-
Name => '
|
5526
|
-
|
5527
|
-
Format => '
|
5528
|
-
|
5529
|
-
|
5530
|
-
|
5531
|
-
|
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{
|
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{
|
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
|
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
|
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{
|
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{
|
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{
|
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
|
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
|