exiftool_vendored 12.41.0 → 12.50.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 +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) = @_;
|