exiftool-vendored.pl 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.
- package/bin/Changes +13 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/exiftool +28 -15
- package/bin/lib/Image/ExifTool/Canon.pm +1 -0
- package/bin/lib/Image/ExifTool/FujiFilm.pm +23 -1
- package/bin/lib/Image/ExifTool/InDesign.pm +17 -3
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +355 -62
- package/bin/lib/Image/ExifTool/NikonCustom.pm +421 -11
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -0
- package/bin/lib/Image/ExifTool/TagLookup.pm +4831 -4816
- package/bin/lib/Image/ExifTool/TagNames.pod +190 -3
- package/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- package/bin/lib/Image/ExifTool.pm +1 -1
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/windows_exiftool.txt +2836 -0
- package/package.json +1 -1
|
@@ -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
|