exiftool_vendored 12.41.0 → 12.50.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.
- checksums.yaml +4 -4
- data/bin/Changes +209 -6
- data/bin/MANIFEST +12 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +45 -44
- data/bin/config_files/acdsee.config +2 -1
- data/bin/config_files/frameCount.config +56 -0
- data/bin/config_files/tiff_version.config +1 -1
- data/bin/exiftool +115 -96
- data/bin/fmt_files/gpx.fmt +3 -0
- data/bin/fmt_files/gpx_wpt.fmt +3 -0
- data/bin/lib/Image/ExifTool/Apple.pm +16 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +23 -12
- data/bin/lib/Image/ExifTool/Canon.pm +71 -33
- data/bin/lib/Image/ExifTool/CanonRaw.pm +8 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +7 -8
- data/bin/lib/Image/ExifTool/DJI.pm +60 -1
- data/bin/lib/Image/ExifTool/DNG.pm +8 -2
- data/bin/lib/Image/ExifTool/DarwinCore.pm +13 -1
- data/bin/lib/Image/ExifTool/EXE.pm +9 -1
- data/bin/lib/Image/ExifTool/Exif.pm +26 -12
- data/bin/lib/Image/ExifTool/FLAC.pm +17 -3
- data/bin/lib/Image/ExifTool/FLIR.pm +4 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +26 -3
- data/bin/lib/Image/ExifTool/FujiFilm.pm +51 -4
- data/bin/lib/Image/ExifTool/GPS.pm +21 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +25 -5
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +12 -9
- data/bin/lib/Image/ExifTool/ICO.pm +143 -0
- data/bin/lib/Image/ExifTool/ID3.pm +11 -11
- data/bin/lib/Image/ExifTool/IPTC.pm +5 -1
- data/bin/lib/Image/ExifTool/LNK.pm +5 -2
- data/bin/lib/Image/ExifTool/M2TS.pm +98 -8
- data/bin/lib/Image/ExifTool/MIE.pm +9 -3
- data/bin/lib/Image/ExifTool/MISB.pm +494 -0
- data/bin/lib/Image/ExifTool/MakerNotes.pm +8 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +24 -16
- data/bin/lib/Image/ExifTool/Motorola.pm +8 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +293 -122
- data/bin/lib/Image/ExifTool/NikonCustom.pm +4 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +5 -3
- data/bin/lib/Image/ExifTool/Olympus.pm +22 -2
- data/bin/lib/Image/ExifTool/PDF.pm +2 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +30 -4
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +25 -5
- data/bin/lib/Image/ExifTool/Parrot.pm +96 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +8 -3
- data/bin/lib/Image/ExifTool/Photoshop.pm +35 -8
- data/bin/lib/Image/ExifTool/QuickTime.pm +163 -13
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +119 -13
- data/bin/lib/Image/ExifTool/README +13 -3
- data/bin/lib/Image/ExifTool/RIFF.pm +106 -9
- data/bin/lib/Image/ExifTool/Samsung.pm +234 -3
- data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +27 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +37 -13
- data/bin/lib/Image/ExifTool/Sony.pm +71 -43
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4752 -4516
- data/bin/lib/Image/ExifTool/TagNames.pod +1885 -1434
- data/bin/lib/Image/ExifTool/Text.pm +3 -4
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -3
- data/bin/lib/Image/ExifTool/Validate.pm +3 -3
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
- data/bin/lib/Image/ExifTool/WriteExif.pl +100 -23
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +2 -6
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +359 -0
- data/bin/lib/Image/ExifTool/Writer.pl +14 -6
- data/bin/lib/Image/ExifTool/XMP.pm +78 -59
- data/bin/lib/Image/ExifTool/XMP2.pl +19 -4
- data/bin/lib/Image/ExifTool.pm +120 -33
- data/bin/lib/Image/ExifTool.pod +83 -69
- data/bin/perl-Image-ExifTool.spec +43 -43
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +9 -4
@@ -49,6 +49,7 @@
|
|
49
49
|
# 36) Hayo Baann (forum10207)
|
50
50
|
# 37) Tom Lachecki, private communication
|
51
51
|
# 38) https://github.com/exiftool/exiftool/pull/40 (and forum10893)
|
52
|
+
# 39) Stefan Grube private communication (Z9)
|
52
53
|
# IB) Iliah Borg private communication (LibRaw)
|
53
54
|
# JD) Jens Duttke private communication
|
54
55
|
# NJ) Niels Kristian Bech Jensen private communication
|
@@ -63,7 +64,7 @@ use Image::ExifTool::Exif;
|
|
63
64
|
use Image::ExifTool::GPS;
|
64
65
|
use Image::ExifTool::XMP;
|
65
66
|
|
66
|
-
$VERSION = '4.
|
67
|
+
$VERSION = '4.13';
|
67
68
|
|
68
69
|
sub LensIDConv($$$);
|
69
70
|
sub ProcessNikonAVI($$$);
|
@@ -363,6 +364,7 @@ sub GetAFPointGrid($$;$);
|
|
363
364
|
'26 58 37 37 14 14 1C 02' => 'Sigma 24mm F1.8 EX DG Aspherical Macro',
|
364
365
|
'E1 58 37 37 14 14 1C 02' => 'Sigma 24mm F1.8 EX DG Aspherical Macro',
|
365
366
|
'02 46 37 37 25 25 02 00' => 'Sigma 24mm F2.8 Super Wide II Macro',
|
367
|
+
'7E 54 37 37 0C 0C 4B 06' => 'Sigma 24mm F1.4 DG HSM | A', #30
|
366
368
|
'26 58 3C 3C 14 14 1C 02' => 'Sigma 28mm F1.8 EX DG Aspherical Macro',
|
367
369
|
'48 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM',
|
368
370
|
'F8 54 3E 3E 0C 0C 4B 06' => 'Sigma 30mm F1.4 EX DC HSM', #JD
|
@@ -606,6 +608,7 @@ sub GetAFPointGrid($$;$);
|
|
606
608
|
'CC 44 68 98 34 41 DF 0E' => 'Tamron 100-400mm f/4.5-6.3 Di VC USD', #30
|
607
609
|
'EB 40 76 A6 38 40 DF 0E' => 'Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)',
|
608
610
|
'E3 40 76 A6 38 40 DF 4E' => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #30
|
611
|
+
'E3 40 76 A6 38 40 DF 0E' => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2 (A022)', #forum3833
|
609
612
|
'20 3C 80 98 3D 3D 1E 02' => 'Tamron AF 200-400mm f/5.6 LD IF (75D)',
|
610
613
|
'00 3E 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di LD (IF) (A08)',
|
611
614
|
'00 3F 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di (A08)',
|
@@ -667,6 +670,8 @@ sub GetAFPointGrid($$;$);
|
|
667
670
|
'00 54 55 55 0C 0C 00 00' => 'Voigtlander Nokton 58mm F1.4 SLII',
|
668
671
|
'00 40 64 64 2C 2C 00 00' => 'Voigtlander APO-Lanthar 90mm F3.5 SLII Close Focus',
|
669
672
|
'07 40 30 45 2D 35 03 02.2' => 'Voigtlander Ultragon 19-35mm F3.5-4.5 VMV', #NJ
|
673
|
+
'71 48 64 64 24 24 00 00' => 'Voigtlander APO-Skopar 90mm F2.8 SL IIs', #30
|
674
|
+
'FD 00 50 50 18 18 DF 00' => 'Voigtlander APO-Lanthar 50mm F2 Aspherical', #35
|
670
675
|
#
|
671
676
|
'00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
|
672
677
|
'00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
|
@@ -854,7 +859,7 @@ my %focusModeZ7 = (
|
|
854
859
|
|
855
860
|
my %infoZSeries = (
|
856
861
|
Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
|
857
|
-
Notes => 'Z Series cameras thru
|
862
|
+
Notes => 'Z Series cameras thru December 2021',
|
858
863
|
);
|
859
864
|
my %iSOAutoHiLimitZ7 = (
|
860
865
|
0 => 'ISO 64',
|
@@ -1123,8 +1128,6 @@ my %afPoints153 = (
|
|
1123
1128
|
|
1124
1129
|
# AF point indices for models with 81 focus points, eg. Z6/Z7/Z50 (ref 38)
|
1125
1130
|
# - 9 rows (A-I) with 9 columns (1-9), center is E5
|
1126
|
-
# NOTE: the AF points start 2 bytes into the data, so the map starts
|
1127
|
-
# at 17 instead of 1
|
1128
1131
|
#
|
1129
1132
|
# 7 6 5 4 3 2 1 0
|
1130
1133
|
# 00 : [H5][G5][F5][A5][B5][C5][D5][E5]
|
@@ -1139,23 +1142,23 @@ my %afPoints153 = (
|
|
1139
1142
|
# 09 : [H1][G1][F1][A1][B1][C1][D1][E1]
|
1140
1143
|
# 0a : [ ][ ][ ][ ][ ][ ][ ][I1]
|
1141
1144
|
my %afPoints81 = (
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1145
|
+
1 => 'E5', 18 => 'I6', 35 => 'H7', 52 => 'G8', 69 => 'F9',
|
1146
|
+
2 => 'D5', 19 => 'E4', 36 => 'I7', 53 => 'H8', 70 => 'G9',
|
1147
|
+
3 => 'C5', 20 => 'D4', 37 => 'E3', 54 => 'I8', 71 => 'H9',
|
1148
|
+
4 => 'B5', 21 => 'C4', 38 => 'D3', 55 => 'E2', 72 => 'I9',
|
1149
|
+
5 => 'A5', 22 => 'B4', 39 => 'C3', 56 => 'D2', 73 => 'E1',
|
1150
|
+
6 => 'F5', 23 => 'A4', 40 => 'B3', 57 => 'C2', 74 => 'D1',
|
1151
|
+
7 => 'G5', 24 => 'F4', 41 => 'A3', 58 => 'B2', 75 => 'C1',
|
1152
|
+
8 => 'H5', 25 => 'G4', 42 => 'F3', 59 => 'A2', 76 => 'B1',
|
1153
|
+
9 => 'I5', 26 => 'H4', 43 => 'G3', 60 => 'F2', 77 => 'A1',
|
1154
|
+
10 => 'E6', 27 => 'I4', 44 => 'H3', 61 => 'G2', 78 => 'F1',
|
1155
|
+
11 => 'D6', 28 => 'E7', 45 => 'I3', 62 => 'H2', 79 => 'G1',
|
1156
|
+
12 => 'C6', 29 => 'D7', 46 => 'E8', 63 => 'I2', 80 => 'H1',
|
1157
|
+
13 => 'B6', 30 => 'C7', 47 => 'D8', 64 => 'E9', 81 => 'I1',
|
1158
|
+
14 => 'A6', 31 => 'B7', 48 => 'C8', 65 => 'D9',
|
1159
|
+
15 => 'F6', 32 => 'A7', 49 => 'B8', 66 => 'C9',
|
1160
|
+
16 => 'G6', 33 => 'F7', 50 => 'A8', 67 => 'B9',
|
1161
|
+
17 => 'H6', 34 => 'G7', 51 => 'F8', 68 => 'A9',
|
1159
1162
|
);
|
1160
1163
|
|
1161
1164
|
my %cropHiSpeed = ( #IB
|
@@ -1596,10 +1599,14 @@ my %base64coord = (
|
|
1596
1599
|
81 => 'Auto (Electronic Front Curtain)', #JanSkoda (Z6II)
|
1597
1600
|
},
|
1598
1601
|
},
|
1599
|
-
0x0035 => { #32
|
1602
|
+
0x0035 => [{ #32
|
1600
1603
|
Name => 'HDRInfo',
|
1604
|
+
Condition => '$count != 6',
|
1601
1605
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo' },
|
1602
|
-
},
|
1606
|
+
},{
|
1607
|
+
Name => 'HDRInfo2',
|
1608
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo2' },
|
1609
|
+
}],
|
1603
1610
|
0x0037 => { #XavierJubier
|
1604
1611
|
Name => 'MechanicalShutterCount',
|
1605
1612
|
Writable => 'int32u',
|
@@ -1622,6 +1629,11 @@ my %base64coord = (
|
|
1622
1629
|
3 => 'Small',
|
1623
1630
|
},
|
1624
1631
|
},
|
1632
|
+
0x003f => { #https://github.com/darktable-org/darktable/issues/12282
|
1633
|
+
Name => 'WhiteBalanceFineTune',
|
1634
|
+
Writable => 'rational64s',
|
1635
|
+
Count => 2,
|
1636
|
+
},
|
1625
1637
|
0x0045 => { #IB
|
1626
1638
|
Name => 'CropArea',
|
1627
1639
|
Notes => 'left, top, width, height',
|
@@ -2079,7 +2091,7 @@ my %base64coord = (
|
|
2079
2091
|
TagTable => 'Image::ExifTool::Nikon::ShotInfoZ9',
|
2080
2092
|
DecryptStart => 4,
|
2081
2093
|
# TODO: eventually set the length dynamically according to actual offsets!
|
2082
|
-
DecryptLen => 0xec4b +
|
2094
|
+
DecryptLen => 0xec4b + 2105, # decoded thru end of Offset26
|
2083
2095
|
ByteOrder => 'LittleEndian',
|
2084
2096
|
},
|
2085
2097
|
},
|
@@ -2480,6 +2492,12 @@ my %base64coord = (
|
|
2480
2492
|
TagTable => 'Image::ExifTool::Nikon::MultiExposure',
|
2481
2493
|
ByteOrder => 'LittleEndian',
|
2482
2494
|
},
|
2495
|
+
},{
|
2496
|
+
Name => 'MultiExposure2',
|
2497
|
+
Condition => '$$valPt =~ /^010[23]/', # 0102 is NC (PH)
|
2498
|
+
SubDirectory => {
|
2499
|
+
TagTable => 'Image::ExifTool::Nikon::MultiExposure2',
|
2500
|
+
},
|
2483
2501
|
}],
|
2484
2502
|
0x00b1 => { #14/PH/JD (D80)
|
2485
2503
|
Name => 'HighISONoiseReduction',
|
@@ -2796,10 +2814,10 @@ my %base64coord = (
|
|
2796
2814
|
Name => 'VRMode',
|
2797
2815
|
PrintConv => {
|
2798
2816
|
0 => 'Off',
|
2799
|
-
1 => 'Sport'
|
2800
|
-
3 => 'Normal'
|
2817
|
+
1 => 'Normal', #39 (was 'Sport')
|
2818
|
+
3 => 'Sport', #39 (was 'Normal')
|
2801
2819
|
},
|
2802
|
-
%infoZSeries
|
2820
|
+
%infoZSeries,
|
2803
2821
|
},{
|
2804
2822
|
Name => 'VRMode',
|
2805
2823
|
PrintConv => {
|
@@ -2810,6 +2828,13 @@ my %base64coord = (
|
|
2810
2828
|
},
|
2811
2829
|
}],
|
2812
2830
|
# 7 - values: 0, 1
|
2831
|
+
8 => { #39
|
2832
|
+
Name => 'VRType',
|
2833
|
+
PrintConv => {
|
2834
|
+
2 => 'In-body', # (IBIS)
|
2835
|
+
3 => 'In-body + Lens', # (IBIS + VR)
|
2836
|
+
},
|
2837
|
+
},
|
2813
2838
|
);
|
2814
2839
|
|
2815
2840
|
# Face detection information - PH (S8100)
|
@@ -3342,8 +3367,10 @@ my %base64coord = (
|
|
3342
3367
|
sprintf("%s%.2d:%.2d", $sign, $h, abs($val)-60*$h);
|
3343
3368
|
},
|
3344
3369
|
PrintConvInv => q{
|
3345
|
-
$val =~ /
|
3346
|
-
return $1 . ($2 * 60 + $3);
|
3370
|
+
$val =~ /Z$/ and return 0;
|
3371
|
+
$val =~ /([-+])(\d{1,2}):?(\d{2})$/ and return $1 . ($2 * 60 + $3);
|
3372
|
+
$val =~ /^(\d{2})(\d{2})$/ and return $1 * 60 + $2;
|
3373
|
+
return undef;
|
3347
3374
|
},
|
3348
3375
|
},
|
3349
3376
|
2 => {
|
@@ -3560,7 +3587,6 @@ my %base64coord = (
|
|
3560
3587
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
3561
3588
|
DATAMEMBER => [ 0, 4, 6 ],
|
3562
3589
|
NOTES => "These tags are written by Nikon DSLR's which have the live view feature.",
|
3563
|
-
# NOTE: Must set ByteOrder in SubDirectory if any multi-byte integer tags added
|
3564
3590
|
0 => {
|
3565
3591
|
Name => 'AFInfo2Version',
|
3566
3592
|
Format => 'undef[4]',
|
@@ -3671,7 +3697,7 @@ my %base64coord = (
|
|
3671
3697
|
{ #PH/JD
|
3672
3698
|
Name => 'PrimaryAFPoint',
|
3673
3699
|
# PrimaryAFPoint may only be valid for PhaseDetect - certainly true on the D6, possibly other bodies? (ref 28)
|
3674
|
-
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version}
|
3700
|
+
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} !~ /^03/',
|
3675
3701
|
Notes => q{
|
3676
3702
|
models with 51-point AF -- 5 rows (A-E) and 11 columns (1-11): D3, D3S, D3X,
|
3677
3703
|
D4, D4S, D300, D300S, D700, D800, D800e and D810
|
@@ -3777,22 +3803,6 @@ my %base64coord = (
|
|
3777
3803
|
1 => 'E9 (Center)',
|
3778
3804
|
},
|
3779
3805
|
},
|
3780
|
-
{ #PH (Z7) (NC)
|
3781
|
-
Name => 'PrimaryAFPoint',
|
3782
|
-
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
3783
|
-
Notes => q{
|
3784
|
-
Nikon models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29), I15
|
3785
|
-
at the center
|
3786
|
-
},
|
3787
|
-
PrintConv => {
|
3788
|
-
0 => '(none)',
|
3789
|
-
246 => 'I15 (Center)',
|
3790
|
-
OTHER => sub {
|
3791
|
-
my ($val, $inv) = @_;
|
3792
|
-
return GetAFPointGrid($val, 29, $inv);
|
3793
|
-
},
|
3794
|
-
},
|
3795
|
-
},
|
3796
3806
|
{
|
3797
3807
|
Name => 'PrimaryAFPoint',
|
3798
3808
|
Condition => '$$self{AFInfo2Version} eq "0100"',
|
@@ -3806,7 +3816,7 @@ my %base64coord = (
|
|
3806
3816
|
8 => [
|
3807
3817
|
{ #JD/PH
|
3808
3818
|
Name => 'AFPointsUsed',
|
3809
|
-
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version}
|
3819
|
+
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} !~ /^03/',
|
3810
3820
|
Notes => q{
|
3811
3821
|
models with 51-point AF -- 5 rows: A1-9, B1-11, C1-11, D1-11, E1-9. Center
|
3812
3822
|
point is C6
|
@@ -3910,33 +3920,78 @@ my %base64coord = (
|
|
3910
3920
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
|
3911
3921
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
|
3912
3922
|
},
|
3913
|
-
{ #38 (Z6/Z7/Z50)
|
3914
|
-
Name => 'AFPointsUsed',
|
3915
|
-
Condition => '$$self{PhaseDetectAF} == 8 and $$self{Model} =~ /^NIKON Z/',
|
3916
|
-
Notes => q{
|
3917
|
-
models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for
|
3918
|
-
phase detect AF points. Center point is E5
|
3919
|
-
},
|
3920
|
-
Format => 'undef[13]',
|
3921
|
-
ValueConv => 'join(" ", unpack("H2"x13, $val))',
|
3922
|
-
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
3923
|
-
PrintConv => sub { PrintAFPoints(shift, \%afPoints81); },
|
3924
|
-
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints81); },
|
3925
|
-
},
|
3926
3923
|
{ #PH
|
3927
3924
|
Name => 'AFPointsUsed',
|
3928
3925
|
# version 301 uses a separate field at offset 0x0a for this tag (ref 28)
|
3929
|
-
Condition => '$$self{AFInfo2Version}
|
3926
|
+
Condition => '$$self{AFInfo2Version} !~ /^03/',
|
3930
3927
|
Format => 'undef[7]',
|
3931
3928
|
ValueConv => 'join(" ", unpack("H2"x7, $val))',
|
3932
3929
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
3933
3930
|
PrintConv => '"Unknown ($val)"',
|
3934
3931
|
PrintConvInv => '$val=~s/Unknown \\((.*)\\)/$1/; $val',
|
3935
3932
|
},
|
3933
|
+
{ #PH
|
3934
|
+
Name => 'PrimaryAFPoint',
|
3935
|
+
Condition => '$$self{PhaseDetectAF} == 1 and $$self{AFInfo2Version} =~ /^03/',
|
3936
|
+
Notes => 'newer models with 51-point AF',
|
3937
|
+
PrintConvColumns => 5,
|
3938
|
+
PrintConv => {
|
3939
|
+
0 => '(none)',
|
3940
|
+
%afPoints51,
|
3941
|
+
1 => 'C6 (Center)', # (add " (Center)" to central point)
|
3942
|
+
},
|
3943
|
+
},
|
3944
|
+
{ #PH (Z7)
|
3945
|
+
Name => 'PrimaryAFPoint',
|
3946
|
+
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
3947
|
+
PrintConv => {
|
3948
|
+
0 => '(none)',
|
3949
|
+
%afPoints81,
|
3950
|
+
1 => 'E5 (Center)', # (add " (Center)" to central point)
|
3951
|
+
},
|
3952
|
+
},
|
3953
|
+
# this was wrong, but keep the code as a comment in case it may be useful later
|
3954
|
+
#{ #PH (Z7) (NC)
|
3955
|
+
# Name => 'PrimaryAFPoint',
|
3956
|
+
# Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
3957
|
+
# Notes => q{
|
3958
|
+
# Nikon models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29), I15
|
3959
|
+
# at the center
|
3960
|
+
# },
|
3961
|
+
# PrintConv => {
|
3962
|
+
# 0 => '(none)',
|
3963
|
+
# 246 => 'I15 (Center)',
|
3964
|
+
# OTHER => sub {
|
3965
|
+
# my ($val, $inv) = @_;
|
3966
|
+
# return GetAFPointGrid($val, 29, $inv);
|
3967
|
+
# },
|
3968
|
+
# },
|
3969
|
+
#},
|
3936
3970
|
],
|
3937
|
-
0x0a => { #
|
3938
|
-
|
3939
|
-
Condition => '$$self{
|
3971
|
+
0x0a => [{ #PH (D780)
|
3972
|
+
Name => 'AFPointsUsed',
|
3973
|
+
Condition => '$$self{PhaseDetectAF} == 1 and $$self{AFInfo2Version} =~ /^03/',
|
3974
|
+
Notes => 'newer models with 51-point AF',
|
3975
|
+
Format => 'undef[7]',
|
3976
|
+
ValueConv => 'join(" ", unpack("H2"x7, $val))',
|
3977
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
3978
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints51); },
|
3979
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints51); },
|
3980
|
+
},{ #38 (Z6/Z7/Z50)
|
3981
|
+
Name => 'AFPointsUsed',
|
3982
|
+
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
3983
|
+
Notes => q{
|
3984
|
+
models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for
|
3985
|
+
phase detect AF points. Center point is E5
|
3986
|
+
},
|
3987
|
+
Format => 'undef[11]',
|
3988
|
+
ValueConv => 'join(" ", unpack("H2"x11, $val))',
|
3989
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
3990
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints81); },
|
3991
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints81); },
|
3992
|
+
},{ #28 (D6) in any of the 3 Group modes on the D6, the points specify the outer boundaries of the focus point area; otherwise the tag value is consistent with other Nikon bodies
|
3993
|
+
Name => 'AFPointsUsed',
|
3994
|
+
Condition => '$$self{PhaseDetectAF} == 9 and $$self{AFInfo2Version} =~ /^03/',
|
3940
3995
|
Notes => q{
|
3941
3996
|
models with 105-point AF -- 7 rows (A-G) and 15 columns (1-15). Center
|
3942
3997
|
point is D8
|
@@ -3946,7 +4001,7 @@ my %base64coord = (
|
|
3946
4001
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
3947
4002
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints105); },
|
3948
4003
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints105); },
|
3949
|
-
},
|
4004
|
+
}],
|
3950
4005
|
0x10 => { #PH (D90 and D5000)
|
3951
4006
|
Name => 'AFImageWidth',
|
3952
4007
|
Condition => '$$self{AFInfo2Version} eq "0100"',
|
@@ -4025,7 +4080,7 @@ my %base64coord = (
|
|
4025
4080
|
},
|
4026
4081
|
Format => 'int16u',
|
4027
4082
|
},
|
4028
|
-
0x2f => { #28 (Z7)
|
4083
|
+
0x2f => { #28 (Z7) Still photography range 1-17 for the 493 point Z7 (arranged in a 29x17 grid. Center at x=16, y=10).
|
4029
4084
|
Name => 'AFFocusPointXPosition',
|
4030
4085
|
Condition => q{
|
4031
4086
|
$$self{ContrastDetectAF} == 2 and $$self{AFInfo2Version} =~ /^03/ or
|
@@ -4173,7 +4228,7 @@ my %base64coord = (
|
|
4173
4228
|
},
|
4174
4229
|
);
|
4175
4230
|
|
4176
|
-
%Image::ExifTool::Nikon::AFInfo2V0400 = ( #V0400 related fields begin at x'3c'
|
4231
|
+
%Image::ExifTool::Nikon::AFInfo2V0400 = ( #V0400 related fields begin at x'3c' (Z9)
|
4177
4232
|
%binaryDataAttrs,
|
4178
4233
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
4179
4234
|
DATAMEMBER => [ 0 ],
|
@@ -4193,11 +4248,19 @@ my %base64coord = (
|
|
4193
4248
|
},
|
4194
4249
|
0x43 => {
|
4195
4250
|
Name => 'FocusPositionHorizontal',
|
4196
|
-
|
4251
|
+
Notes => q{
|
4252
|
+
the focus points form a 29x17 grid, but the X,Y coordinate values run from 1,1
|
4253
|
+
to 30,19. The horizontal coordinate 11R (5) and the vertical coordinates 6U
|
4254
|
+
(4) and 2D (12) are not used for some reason
|
4255
|
+
},
|
4256
|
+
# 493 focus points for Z9 fall in a 30x19 grid
|
4257
|
+
# (the 11R (5) position is not used, for a total of 29 columns, ref AlbertShan email)
|
4258
|
+
PrintConv => sub { my ($val) = @_; PrintAFPointsLeftRight($val, 29); },
|
4197
4259
|
},
|
4198
4260
|
0x45 => {
|
4199
4261
|
Name => 'FocusPositionVertical',
|
4200
|
-
|
4262
|
+
# (the 6U (4) and 2D (12) are not used, for a total of 17 rows, ref AlbertShan email)
|
4263
|
+
PrintConv => sub { my ($val) = @_; PrintAFPointsUpDown($val, 17); },
|
4201
4264
|
},
|
4202
4265
|
0x46 => {
|
4203
4266
|
Name => 'AFAreaWidth',
|
@@ -4209,9 +4272,13 @@ my %base64coord = (
|
|
4209
4272
|
Name => 'AFAreaHeight',
|
4210
4273
|
Format => 'int16u',
|
4211
4274
|
RawConv => '$val ? $val : undef',
|
4212
|
-
}
|
4213
|
-
|
4214
|
-
|
4275
|
+
},
|
4276
|
+
0x4a => {
|
4277
|
+
Name => 'FocusResult',
|
4278
|
+
# in Manual Foucs mode, reflects the state of viewfinder focus indicator.
|
4279
|
+
# In AF-C or AF-S, reflects the result of the last AF operation.
|
4280
|
+
PrintConv => { 0=> "Out of Focus", 1=>"Focus"},
|
4281
|
+
},
|
4215
4282
|
);
|
4216
4283
|
|
4217
4284
|
# Nikon AF fine-tune information (ref 28)
|
@@ -4857,7 +4924,7 @@ my %nikonFocalConversions = (
|
|
4857
4924
|
%binaryDataAttrs,
|
4858
4925
|
NOTES => 'Tags found in the encrypted LensData from cameras such as the Z6 and Z7.',
|
4859
4926
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
4860
|
-
DATAMEMBER => [ 0x03, 0x2f ],
|
4927
|
+
DATAMEMBER => [ 0x03, 0x2f, 0x35, 0x4c, 0x56 ],
|
4861
4928
|
0x00 => {
|
4862
4929
|
Name => 'LensDataVersion',
|
4863
4930
|
Format => 'string[4]',
|
@@ -4883,12 +4950,12 @@ my %nikonFocalConversions = (
|
|
4883
4950
|
%nikonApertureConversions,
|
4884
4951
|
},
|
4885
4952
|
# --> another extra byte at position 0x08 in this version of LensData (PH)
|
4886
|
-
0x09 => {
|
4887
|
-
|
4888
|
-
|
4889
|
-
|
4890
|
-
|
4891
|
-
},
|
4953
|
+
#0x09 => {
|
4954
|
+
# Name => 'FocusPosition', #28 - this appears to be copied from an older version of LensData and is no longer valid. Text with Z9 and Z7_2 with a variety of lenses
|
4955
|
+
# Condition => '$$self{OldLensData}',
|
4956
|
+
# PrintConv => 'sprintf("0x%02x", $val)',
|
4957
|
+
# PrintConvInv => '$val',
|
4958
|
+
#},
|
4892
4959
|
0x0b => {
|
4893
4960
|
Notes => 'this focus distance is approximate, and not very accurate for some lenses',
|
4894
4961
|
Name => 'FocusDistance',
|
@@ -4947,7 +5014,8 @@ my %nikonFocalConversions = (
|
|
4947
5014
|
%nikonApertureConversions,
|
4948
5015
|
},
|
4949
5016
|
#
|
4950
|
-
# ---- new LensData tags used by Nikkor Z
|
5017
|
+
# ---- new LensData tags used by Nikkor Z cameras (ref PH/28). ----
|
5018
|
+
# (some fields are strictly for Z-series lenses, others apply to legacy F-mount as well, ref 28)
|
4951
5019
|
#
|
4952
5020
|
0x2f => { # look forward to see if new lens data exists...
|
4953
5021
|
Name => 'NewLensData',
|
@@ -4955,7 +5023,7 @@ my %nikonFocalConversions = (
|
|
4955
5023
|
RawConv => '$$self{NewLensData} = 1 unless $val =~ /^.\0+$/s; undef',
|
4956
5024
|
Hidden => 1,
|
4957
5025
|
},
|
4958
|
-
0x30 => {
|
5026
|
+
0x30 => { #PH
|
4959
5027
|
Name => 'LensID',
|
4960
5028
|
Condition => '$$self{NewLensData}',
|
4961
5029
|
Notes => 'tags from here onward used for Nikkor Z lenses only',
|
@@ -4981,9 +5049,23 @@ my %nikonFocalConversions = (
|
|
4981
5049
|
27 => 'Nikkor Z MC 50mm f/2.8', #IB
|
4982
5050
|
28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
|
4983
5051
|
29 => 'Nikkor Z 28mm f/2.8', #IB
|
5052
|
+
30 => 'Nikkor Z 400mm f/2.8 TC VR S', #28
|
5053
|
+
31 => 'Nikkor Z 24-120 f/4', #28
|
5054
|
+
32 => 'Nikkor Z 800mm f/6.3 VR S', #28
|
5055
|
+
36 => 'Nikkor Z 400mm f/4.5 VR S', #IB
|
4984
5056
|
},
|
4985
5057
|
},
|
4986
|
-
|
5058
|
+
0x35 => { #28
|
5059
|
+
Name => 'LensMountType',
|
5060
|
+
RawConv => '$$self{LensMountType} = $val', # 0=> DSLR lens via FTZ style adapter; 1=> Native Z lens;
|
5061
|
+
Format => 'int8u',
|
5062
|
+
Unknown => 1,
|
5063
|
+
PrintConv => {
|
5064
|
+
0 => 'F-mount Lens',
|
5065
|
+
1 => 'Z-mount Lens',
|
5066
|
+
},
|
5067
|
+
},
|
5068
|
+
0x36 => { #PH
|
4987
5069
|
Name => 'MaxAperture',
|
4988
5070
|
Condition => '$$self{NewLensData}',
|
4989
5071
|
Format => 'int16u',
|
@@ -4993,7 +5075,7 @@ my %nikonFocalConversions = (
|
|
4993
5075
|
PrintConv => 'sprintf("%.1f",$val)',
|
4994
5076
|
PrintConvInv => '$val',
|
4995
5077
|
},
|
4996
|
-
0x38 => {
|
5078
|
+
0x38 => { #PH
|
4997
5079
|
Name => 'FNumber',
|
4998
5080
|
Condition => '$$self{NewLensData}',
|
4999
5081
|
Format => 'int16u',
|
@@ -5003,7 +5085,7 @@ my %nikonFocalConversions = (
|
|
5003
5085
|
PrintConv => 'sprintf("%.1f",$val)',
|
5004
5086
|
PrintConvInv => '$val',
|
5005
5087
|
},
|
5006
|
-
0x3c => {
|
5088
|
+
0x3c => { #PH
|
5007
5089
|
Name => 'FocalLength',
|
5008
5090
|
Condition => '$$self{NewLensData}',
|
5009
5091
|
Format => 'int16u',
|
@@ -5011,14 +5093,36 @@ my %nikonFocalConversions = (
|
|
5011
5093
|
PrintConv => '"$val mm"',
|
5012
5094
|
PrintConvInv => '$val=~s/\s*mm$//;$val',
|
5013
5095
|
},
|
5014
|
-
|
5096
|
+
0x4c => { #28
|
5097
|
+
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.
|
5098
|
+
Format => 'int8u',
|
5099
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5100
|
+
RawConv => '$$self{FocusDistanceRangeWidth} = $val',
|
5101
|
+
Unknown => 1,
|
5102
|
+
},
|
5103
|
+
0x4e => { #28
|
5015
5104
|
Name => 'FocusDistance',
|
5016
|
-
|
5017
|
-
|
5105
|
+
Format => 'int16u',
|
5106
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5107
|
+
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
|
5018
5108
|
ValueConv => '0.01 * 10**($val/40)', # in m
|
5019
5109
|
ValueConvInv => '$val>0 ? 40*log($val*100)/log(10) : 0',
|
5020
|
-
PrintConv =>
|
5021
|
-
|
5110
|
+
PrintConv => q{
|
5111
|
+
(defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) ? "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
|
5112
|
+
},
|
5113
|
+
},
|
5114
|
+
0x56 => { #28
|
5115
|
+
Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
|
5116
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5117
|
+
Format => 'int8u',
|
5118
|
+
RawConv => 'unless (defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
|
5119
|
+
Unknown => 1,
|
5120
|
+
},
|
5121
|
+
0x5a => { #28
|
5122
|
+
Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
|
5123
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
5124
|
+
Format => 'int32s',
|
5125
|
+
Unknown => 1,
|
5022
5126
|
},
|
5023
5127
|
);
|
5024
5128
|
|
@@ -5421,14 +5525,14 @@ my %nikonFocalConversions = (
|
|
5421
5525
|
},
|
5422
5526
|
0x27d => {
|
5423
5527
|
Name => 'ShutterCount',
|
5424
|
-
Condition => '$$self{FirmwareVersion} =~ /^1
|
5528
|
+
Condition => '$$self{FirmwareVersion} =~ /^1\.01/',
|
5425
5529
|
Notes => 'firmware 1.10',
|
5426
5530
|
Format => 'int32u',
|
5427
5531
|
Priority => 0,
|
5428
5532
|
},
|
5429
5533
|
0x27f => {
|
5430
5534
|
Name => 'ShutterCount',
|
5431
|
-
Condition => '$$self{FirmwareVersion} =~ /^2
|
5535
|
+
Condition => '$$self{FirmwareVersion} =~ /^2\.0/',
|
5432
5536
|
Notes => 'firmware 2.00, 2.01 and 2.02',
|
5433
5537
|
Format => 'int32u',
|
5434
5538
|
Priority => 0,
|
@@ -7322,7 +7426,7 @@ my %nikonFocalConversions = (
|
|
7322
7426
|
# (moves around too much and doesn't fit cleanly in the offset table)
|
7323
7427
|
#0x38be => {
|
7324
7428
|
# Name => 'Rotation',
|
7325
|
-
# Condition => '$$self{FirmwareVersion} =~ /^1
|
7429
|
+
# Condition => '$$self{FirmwareVersion} =~ /^1\.0/',
|
7326
7430
|
# Mask => 0x30,
|
7327
7431
|
# PrintConv => {
|
7328
7432
|
# 0 => 'Horizontal',
|
@@ -7628,7 +7732,7 @@ my %nikonFocalConversions = (
|
|
7628
7732
|
},
|
7629
7733
|
0x189d => { #PH (NC)
|
7630
7734
|
Name => 'CustomSettingsD4S',
|
7631
|
-
Condition => '$$self{FirmwareVersion} =~ /^1
|
7735
|
+
Condition => '$$self{FirmwareVersion} =~ /^1\.00/',
|
7632
7736
|
Notes => 'firmware version 1.00',
|
7633
7737
|
Format => 'undef[56]',
|
7634
7738
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
|
@@ -7636,7 +7740,7 @@ my %nikonFocalConversions = (
|
|
7636
7740
|
0x18c2 => { # CSf1-c (no idea why it is so far away from the rest of the settings)
|
7637
7741
|
Name => 'MultiSelectorLiveViewMode',
|
7638
7742
|
Groups => { 1 => 'NikonCustom' },
|
7639
|
-
Condition => '$$self{FirmwareVersion} !~ /^1
|
7743
|
+
Condition => '$$self{FirmwareVersion} !~ /^1\.00/',
|
7640
7744
|
Mask => 0xc0,
|
7641
7745
|
PrintConv => {
|
7642
7746
|
0 => 'Reset',
|
@@ -7737,7 +7841,7 @@ my %nikonFocalConversions = (
|
|
7737
7841
|
},
|
7738
7842
|
0x193d => {
|
7739
7843
|
Name => 'CustomSettingsD4S',
|
7740
|
-
Condition => '$$self{FirmwareVersion} !~ /^1
|
7844
|
+
Condition => '$$self{FirmwareVersion} !~ /^1\.00/',
|
7741
7845
|
Notes => 'firmware version 1.01',
|
7742
7846
|
Format => 'undef[56]',
|
7743
7847
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
|
@@ -7990,8 +8094,8 @@ my %nikonFocalConversions = (
|
|
7990
8094
|
WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
|
7991
8095
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
7992
8096
|
VARS => { ID_LABEL => 'Index' },
|
7993
|
-
DATAMEMBER => [ 0x04, 0x30, 0x38, 0x84, 0x8c, 0x6c6f, 0x6c98,
|
7994
|
-
0x6c9a,
|
8097
|
+
DATAMEMBER => [ 0x04, 0x30, 0x38, 0x84, 0x8c, 0x6c6f, 0x6c90, 0x6c98,
|
8098
|
+
0x6c9a, 0xeaea, 0xeb6f, 0xeb70 ],
|
7995
8099
|
IS_SUBDIR => [ 0xec4b ],
|
7996
8100
|
WRITABLE => 1,
|
7997
8101
|
FIRST_ENTRY => 0,
|
@@ -8068,6 +8172,15 @@ my %nikonFocalConversions = (
|
|
8068
8172
|
# account for variable location of Offset3 data
|
8069
8173
|
Hook => '$varSize = $$self{Offset3} - 0x6c70',
|
8070
8174
|
},
|
8175
|
+
0x6c90 => {
|
8176
|
+
Name => 'FocusShiftShooting',
|
8177
|
+
RawConv => '$$self{FocusShiftShooting} = $val',
|
8178
|
+
PrintConv => q{
|
8179
|
+
return 'Off' if $val == 0 ;
|
8180
|
+
my $i = sprintf("Frame %.0f of %.0f",$val, $$self{FocusShiftNumberShots}); # something like Frame 1 of 100"
|
8181
|
+
return "On: $i"
|
8182
|
+
},
|
8183
|
+
},
|
8071
8184
|
0x6c98 => {
|
8072
8185
|
Name => 'IntervalShooting',
|
8073
8186
|
RawConv => '$$self{IntervalShooting} = $val',
|
@@ -8087,23 +8200,6 @@ my %nikonFocalConversions = (
|
|
8087
8200
|
Format => 'int16u',
|
8088
8201
|
Hidden => 1,
|
8089
8202
|
},
|
8090
|
-
### 0x7718 - Offset5 info start (Z9 firmware 1.00)
|
8091
|
-
0x7717 => {
|
8092
|
-
Name => 'Offsset5Hook',
|
8093
|
-
Hidden => 1,
|
8094
|
-
RawConv => 'undef',
|
8095
|
-
# account for variable location of Offset5 data
|
8096
|
-
Hook => '$varSize = $$self{Offset5} - 0x7718',
|
8097
|
-
},
|
8098
|
-
0x7844 => {
|
8099
|
-
Name => 'FocusShiftShooting',
|
8100
|
-
RawConv => '$$self{FocusShiftShooting} = $val',
|
8101
|
-
PrintConv => q{
|
8102
|
-
return 'Off' if $val == 0 ;
|
8103
|
-
my $i = sprintf("Frame %.0f of %.0f",$val, $$self{FocusShiftNumberShots}); # something like Frame 1 of 100"
|
8104
|
-
return "On: $i"
|
8105
|
-
},
|
8106
|
-
},
|
8107
8203
|
### 0xeaeb - OrientationInfo start (Z9 firmware 1.00)
|
8108
8204
|
0xeaea => {
|
8109
8205
|
Name => 'OrientationHook',
|
@@ -8157,6 +8253,7 @@ my %nikonFocalConversions = (
|
|
8157
8253
|
0xec4b => {
|
8158
8254
|
Name => 'MenuSettingsZ9',
|
8159
8255
|
Format => 'undef[1646]',
|
8256
|
+
Condition => '$$self{FirmwareVersion} lt "03.00"',
|
8160
8257
|
SubDirectory => {
|
8161
8258
|
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
|
8162
8259
|
},
|
@@ -8586,6 +8683,8 @@ my %nikonFocalConversions = (
|
|
8586
8683
|
4 => 'Wide (L)',
|
8587
8684
|
5 => '3D',
|
8588
8685
|
6 => 'Auto',
|
8686
|
+
12 => 'Wide (C1)',
|
8687
|
+
13 => 'Wide (C2)',
|
8589
8688
|
},
|
8590
8689
|
},
|
8591
8690
|
530 => { Name => 'VRMode', PrintConv => \%vRModeZ9},
|
@@ -8656,6 +8755,8 @@ my %nikonFocalConversions = (
|
|
8656
8755
|
2 => 'H.265 8-bit (MOV)',
|
8657
8756
|
3 => 'H.265 10-bit (MOV)',
|
8658
8757
|
4 => 'ProRes 422 HQ 10-bit (MOV)',
|
8758
|
+
5 => 'ProRes RAW HQ 12-bit (MOV)',
|
8759
|
+
6 => 'NRAW 12-bit (NEV)'
|
8659
8760
|
},
|
8660
8761
|
},
|
8661
8762
|
616 => {
|
@@ -8739,13 +8840,18 @@ my %nikonFocalConversions = (
|
|
8739
8840
|
6 => '+08:00 (Beijing, Honk Kong, Sinapore)',
|
8740
8841
|
10 => '+05:45 (Kathmandu)',
|
8741
8842
|
11 => '+05:30 (New Dehli)',
|
8843
|
+
12 => '+05:00 (Islamabad)',
|
8844
|
+
13 => '+04:30 (Kabul)',
|
8845
|
+
14 => '+04:00 (Abu Dhabi)',
|
8846
|
+
15 => '+03:30 (Tehran)',
|
8742
8847
|
16 => '+03:00 (Moscow, Nairobi)',
|
8743
|
-
15 => '+02:00 (Athens)',
|
8744
|
-
16 => '+01:00 (Madrid, Paris, Berlin)',
|
8745
8848
|
17 => '+02:00 (Athens, Helsinki)',
|
8746
|
-
18 => '+
|
8747
|
-
19 => '+00:00
|
8849
|
+
18 => '+01:00 (Madrid, Paris, Berlin)',
|
8850
|
+
19 => '+00:00 (London)',
|
8851
|
+
20 => '-01:00 (Azores)',
|
8852
|
+
21 => '-02:00 (Fernando de Noronha)',
|
8748
8853
|
22 => '-03:00 (Buenos Aires, Sao Paulo)',
|
8854
|
+
23 => '-03:30 (Newfoundland)',
|
8749
8855
|
24 => '-04:00 (Manaus, Caracas)',
|
8750
8856
|
25 => '-05:00 (New York, Toronto, Lima)',
|
8751
8857
|
26 => '-06:00 (Chicago, Mexico City)',
|
@@ -10071,6 +10177,36 @@ my %nikonFocalConversions = (
|
|
10071
10177
|
},
|
10072
10178
|
);
|
10073
10179
|
|
10180
|
+
# Multi exposure2 / image overlay information (ref 39)
|
10181
|
+
%Image::ExifTool::Nikon::MultiExposure2 = (
|
10182
|
+
%binaryDataAttrs,
|
10183
|
+
FORMAT => 'int32u',
|
10184
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
10185
|
+
0 => {
|
10186
|
+
Name => 'MultiExposureVersion',
|
10187
|
+
Format => 'string[4]',
|
10188
|
+
Writable => 0,
|
10189
|
+
},
|
10190
|
+
1 => {
|
10191
|
+
Name => 'MultiExposureMode',
|
10192
|
+
PrintConv => {
|
10193
|
+
0 => 'Off',
|
10194
|
+
1 => 'Multiple Exposure',
|
10195
|
+
3 => 'HDR',
|
10196
|
+
},
|
10197
|
+
},
|
10198
|
+
2 => 'MultiExposureShots',
|
10199
|
+
3 => {
|
10200
|
+
Name => 'MultiExposureOverlayMode',
|
10201
|
+
PrintConv => {
|
10202
|
+
0 => 'Add',
|
10203
|
+
1 => 'Average',
|
10204
|
+
2 => 'Light',
|
10205
|
+
3 => 'Dark',
|
10206
|
+
},
|
10207
|
+
},
|
10208
|
+
);
|
10209
|
+
|
10074
10210
|
# HDR information (ref 32)
|
10075
10211
|
%Image::ExifTool::Nikon::HDRInfo = (
|
10076
10212
|
%binaryDataAttrs,
|
@@ -10079,12 +10215,13 @@ my %nikonFocalConversions = (
|
|
10079
10215
|
0 => {
|
10080
10216
|
Name => 'HDRInfoVersion',
|
10081
10217
|
Format => 'string[4]',
|
10218
|
+
Writable => 0,
|
10082
10219
|
},
|
10083
10220
|
4 => {
|
10084
10221
|
Name => 'HDR',
|
10085
10222
|
PrintConv => {
|
10086
10223
|
0 => 'Off',
|
10087
|
-
1 => 'On',
|
10224
|
+
1 => 'On (normal)',
|
10088
10225
|
48 => 'Auto', #PH (NC)
|
10089
10226
|
},
|
10090
10227
|
},
|
@@ -10122,6 +10259,35 @@ my %nikonFocalConversions = (
|
|
10122
10259
|
},
|
10123
10260
|
);
|
10124
10261
|
|
10262
|
+
# ref 39 (Z9)
|
10263
|
+
%Image::ExifTool::Nikon::HDRInfo2 = (
|
10264
|
+
%binaryDataAttrs,
|
10265
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
10266
|
+
0 => {
|
10267
|
+
Name => 'HDRInfoVersion', # 0200
|
10268
|
+
Format => 'string[4]',
|
10269
|
+
Writable => 0,
|
10270
|
+
},
|
10271
|
+
4 => {
|
10272
|
+
Name => 'HDR',
|
10273
|
+
PrintConv => {
|
10274
|
+
0 => 'Off',
|
10275
|
+
1 => 'On (normal)',
|
10276
|
+
},
|
10277
|
+
},
|
10278
|
+
5 => {
|
10279
|
+
Name => 'HDRLevel',
|
10280
|
+
PrintConv => {
|
10281
|
+
0 => 'n/a',
|
10282
|
+
1 => 'Normal',
|
10283
|
+
2 => 'Low',
|
10284
|
+
3 => 'High',
|
10285
|
+
4 => 'High+',
|
10286
|
+
5 => 'Auto',
|
10287
|
+
},
|
10288
|
+
},
|
10289
|
+
);
|
10290
|
+
|
10125
10291
|
# location information (ref PH)
|
10126
10292
|
%Image::ExifTool::Nikon::LocationInfo = (
|
10127
10293
|
%binaryDataAttrs,
|
@@ -10842,9 +11008,14 @@ my %nikonFocalConversions = (
|
|
10842
11008
|
Name => 'LocationInfo',
|
10843
11009
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::LocationInfo' },
|
10844
11010
|
},
|
11011
|
+
0x200003f => 'WhiteBalanceFineTune',
|
10845
11012
|
# 0x200003f - rational64s[2]: "0 0"
|
10846
11013
|
# 0x2000042 - undef[6]: "0100\x03\0"
|
10847
11014
|
# 0x2000043 - undef[12]: all zeros
|
11015
|
+
0x200004e => {
|
11016
|
+
Name => 'NikonSettings',
|
11017
|
+
SubDirectory => { TagTable => 'Image::ExifTool::NikonSettings::Main' },
|
11018
|
+
},
|
10848
11019
|
0x2000083 => {
|
10849
11020
|
Name => 'LensType',
|
10850
11021
|
# credit to Tom Christiansen (ref 7) for figuring this out...
|
@@ -11311,7 +11482,7 @@ sub PrintAFPointsGridInv($$$)
|
|
11311
11482
|
#------------------------------------------------------------------------------
|
11312
11483
|
# Print conversion for relative Left/Right AF points (ref 28)
|
11313
11484
|
# Inputs: 0) column, 1) number of columns
|
11314
|
-
# Returns: AF point data as a string (e.g. '2L' or 'C' or '3R')
|
11485
|
+
# Returns: AF point data as a string (e.g. '2L of Center' or 'C' or '3R of Center')
|
11315
11486
|
sub PrintAFPointsLeftRight($$)
|
11316
11487
|
{
|
11317
11488
|
my ($col, $ncol) = @_;
|
@@ -11324,7 +11495,7 @@ sub PrintAFPointsLeftRight($$)
|
|
11324
11495
|
#------------------------------------------------------------------------------
|
11325
11496
|
# Print conversion for relative Up/Down AF points (ref 28)
|
11326
11497
|
# Inputs: 0) row, 1) number of rows
|
11327
|
-
# Returns: AF point data as a string (e.g. '2U' or 'C' or '3D')
|
11498
|
+
# Returns: AF point data as a string (e.g. '2U from Center' or 'C' or '3D from Center')
|
11328
11499
|
sub PrintAFPointsUpDown($$)
|
11329
11500
|
{
|
11330
11501
|
my ($row, $nrow) = @_;
|