exiftool-vendored.pl 12.49.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.
- package/bin/Changes +38 -3
- package/bin/MANIFEST +3 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/exiftool +29 -23
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -4
- package/bin/lib/Image/ExifTool/Canon.pm +13 -8
- package/bin/lib/Image/ExifTool/Exif.pm +6 -5
- package/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- package/bin/lib/Image/ExifTool/ICO.pm +2 -0
- package/bin/lib/Image/ExifTool/IPTC.pm +5 -1
- package/bin/lib/Image/ExifTool/M2TS.pm +44 -1
- package/bin/lib/Image/ExifTool/MISB.pm +1 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +193 -85
- package/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- package/bin/lib/Image/ExifTool/Pentax.pm +7 -2
- package/bin/lib/Image/ExifTool/QuickTime.pm +45 -6
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +35 -2
- package/bin/lib/Image/ExifTool/README +4 -0
- package/bin/lib/Image/ExifTool/Sony.pm +29 -14
- package/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -1
- package/bin/lib/Image/ExifTool/TagLookup.pm +4562 -4552
- package/bin/lib/Image/ExifTool/TagNames.pod +46 -9
- package/bin/lib/Image/ExifTool/XMP.pm +3 -2
- package/bin/lib/Image/ExifTool/XMP2.pl +9 -1
- package/bin/lib/Image/ExifTool.pm +8 -5
- package/bin/lib/Image/ExifTool.pod +9 -8
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +4 -4
- package/package.json +1 -1
|
@@ -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($$$);
|
|
@@ -858,7 +859,7 @@ my %focusModeZ7 = (
|
|
|
858
859
|
|
|
859
860
|
my %infoZSeries = (
|
|
860
861
|
Condition => '$$self{Model} =~ /^NIKON Z (5|50|6|6_2|7|7_2|fc|9)\b/i',
|
|
861
|
-
Notes => 'Z Series cameras thru
|
|
862
|
+
Notes => 'Z Series cameras thru December 2021',
|
|
862
863
|
);
|
|
863
864
|
my %iSOAutoHiLimitZ7 = (
|
|
864
865
|
0 => 'ISO 64',
|
|
@@ -1127,8 +1128,6 @@ my %afPoints153 = (
|
|
|
1127
1128
|
|
|
1128
1129
|
# AF point indices for models with 81 focus points, eg. Z6/Z7/Z50 (ref 38)
|
|
1129
1130
|
# - 9 rows (A-I) with 9 columns (1-9), center is E5
|
|
1130
|
-
# NOTE: the AF points start 2 bytes into the data, so the map starts
|
|
1131
|
-
# at 17 instead of 1
|
|
1132
1131
|
#
|
|
1133
1132
|
# 7 6 5 4 3 2 1 0
|
|
1134
1133
|
# 00 : [H5][G5][F5][A5][B5][C5][D5][E5]
|
|
@@ -1143,23 +1142,23 @@ my %afPoints153 = (
|
|
|
1143
1142
|
# 09 : [H1][G1][F1][A1][B1][C1][D1][E1]
|
|
1144
1143
|
# 0a : [ ][ ][ ][ ][ ][ ][ ][I1]
|
|
1145
1144
|
my %afPoints81 = (
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
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',
|
|
1163
1162
|
);
|
|
1164
1163
|
|
|
1165
1164
|
my %cropHiSpeed = ( #IB
|
|
@@ -1600,10 +1599,14 @@ my %base64coord = (
|
|
|
1600
1599
|
81 => 'Auto (Electronic Front Curtain)', #JanSkoda (Z6II)
|
|
1601
1600
|
},
|
|
1602
1601
|
},
|
|
1603
|
-
0x0035 => { #32
|
|
1602
|
+
0x0035 => [{ #32
|
|
1604
1603
|
Name => 'HDRInfo',
|
|
1604
|
+
Condition => '$count != 6',
|
|
1605
1605
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo' },
|
|
1606
|
-
},
|
|
1606
|
+
},{
|
|
1607
|
+
Name => 'HDRInfo2',
|
|
1608
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::HDRInfo2' },
|
|
1609
|
+
}],
|
|
1607
1610
|
0x0037 => { #XavierJubier
|
|
1608
1611
|
Name => 'MechanicalShutterCount',
|
|
1609
1612
|
Writable => 'int32u',
|
|
@@ -2088,7 +2091,7 @@ my %base64coord = (
|
|
|
2088
2091
|
TagTable => 'Image::ExifTool::Nikon::ShotInfoZ9',
|
|
2089
2092
|
DecryptStart => 4,
|
|
2090
2093
|
# TODO: eventually set the length dynamically according to actual offsets!
|
|
2091
|
-
DecryptLen => 0xec4b + 2105, # decoded thru end of Offset26
|
|
2094
|
+
DecryptLen => 0xec4b + 2105, # decoded thru end of Offset26
|
|
2092
2095
|
ByteOrder => 'LittleEndian',
|
|
2093
2096
|
},
|
|
2094
2097
|
},
|
|
@@ -2489,6 +2492,12 @@ my %base64coord = (
|
|
|
2489
2492
|
TagTable => 'Image::ExifTool::Nikon::MultiExposure',
|
|
2490
2493
|
ByteOrder => 'LittleEndian',
|
|
2491
2494
|
},
|
|
2495
|
+
},{
|
|
2496
|
+
Name => 'MultiExposure2',
|
|
2497
|
+
Condition => '$$valPt =~ /^010[23]/', # 0102 is NC (PH)
|
|
2498
|
+
SubDirectory => {
|
|
2499
|
+
TagTable => 'Image::ExifTool::Nikon::MultiExposure2',
|
|
2500
|
+
},
|
|
2492
2501
|
}],
|
|
2493
2502
|
0x00b1 => { #14/PH/JD (D80)
|
|
2494
2503
|
Name => 'HighISONoiseReduction',
|
|
@@ -2805,10 +2814,10 @@ my %base64coord = (
|
|
|
2805
2814
|
Name => 'VRMode',
|
|
2806
2815
|
PrintConv => {
|
|
2807
2816
|
0 => 'Off',
|
|
2808
|
-
1 => 'Sport'
|
|
2809
|
-
3 => 'Normal'
|
|
2817
|
+
1 => 'Normal', #39 (was 'Sport')
|
|
2818
|
+
3 => 'Sport', #39 (was 'Normal')
|
|
2810
2819
|
},
|
|
2811
|
-
%infoZSeries
|
|
2820
|
+
%infoZSeries,
|
|
2812
2821
|
},{
|
|
2813
2822
|
Name => 'VRMode',
|
|
2814
2823
|
PrintConv => {
|
|
@@ -2819,6 +2828,13 @@ my %base64coord = (
|
|
|
2819
2828
|
},
|
|
2820
2829
|
}],
|
|
2821
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
|
+
},
|
|
2822
2838
|
);
|
|
2823
2839
|
|
|
2824
2840
|
# Face detection information - PH (S8100)
|
|
@@ -3351,8 +3367,10 @@ my %base64coord = (
|
|
|
3351
3367
|
sprintf("%s%.2d:%.2d", $sign, $h, abs($val)-60*$h);
|
|
3352
3368
|
},
|
|
3353
3369
|
PrintConvInv => q{
|
|
3354
|
-
$val =~ /
|
|
3355
|
-
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;
|
|
3356
3374
|
},
|
|
3357
3375
|
},
|
|
3358
3376
|
2 => {
|
|
@@ -3569,7 +3587,6 @@ my %base64coord = (
|
|
|
3569
3587
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
3570
3588
|
DATAMEMBER => [ 0, 4, 6 ],
|
|
3571
3589
|
NOTES => "These tags are written by Nikon DSLR's which have the live view feature.",
|
|
3572
|
-
# NOTE: Must set ByteOrder in SubDirectory if any multi-byte integer tags added
|
|
3573
3590
|
0 => {
|
|
3574
3591
|
Name => 'AFInfo2Version',
|
|
3575
3592
|
Format => 'undef[4]',
|
|
@@ -3680,7 +3697,7 @@ my %base64coord = (
|
|
|
3680
3697
|
{ #PH/JD
|
|
3681
3698
|
Name => 'PrimaryAFPoint',
|
|
3682
3699
|
# PrimaryAFPoint may only be valid for PhaseDetect - certainly true on the D6, possibly other bodies? (ref 28)
|
|
3683
|
-
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version}
|
|
3700
|
+
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} !~ /^03/',
|
|
3684
3701
|
Notes => q{
|
|
3685
3702
|
models with 51-point AF -- 5 rows (A-E) and 11 columns (1-11): D3, D3S, D3X,
|
|
3686
3703
|
D4, D4S, D300, D300S, D700, D800, D800e and D810
|
|
@@ -3786,22 +3803,6 @@ my %base64coord = (
|
|
|
3786
3803
|
1 => 'E9 (Center)',
|
|
3787
3804
|
},
|
|
3788
3805
|
},
|
|
3789
|
-
{ #PH (Z7) (NC)
|
|
3790
|
-
Name => 'PrimaryAFPoint',
|
|
3791
|
-
Condition => '$$self{PhaseDetectAF} == 8 and $$self{AFInfo2Version} =~ /^03/',
|
|
3792
|
-
Notes => q{
|
|
3793
|
-
Nikon models with 493-point AF -- 17 rows (A-Q) and 29 columns (1-29), I15
|
|
3794
|
-
at the center
|
|
3795
|
-
},
|
|
3796
|
-
PrintConv => {
|
|
3797
|
-
0 => '(none)',
|
|
3798
|
-
246 => 'I15 (Center)',
|
|
3799
|
-
OTHER => sub {
|
|
3800
|
-
my ($val, $inv) = @_;
|
|
3801
|
-
return GetAFPointGrid($val, 29, $inv);
|
|
3802
|
-
},
|
|
3803
|
-
},
|
|
3804
|
-
},
|
|
3805
3806
|
{
|
|
3806
3807
|
Name => 'PrimaryAFPoint',
|
|
3807
3808
|
Condition => '$$self{AFInfo2Version} eq "0100"',
|
|
@@ -3815,7 +3816,7 @@ my %base64coord = (
|
|
|
3815
3816
|
8 => [
|
|
3816
3817
|
{ #JD/PH
|
|
3817
3818
|
Name => 'AFPointsUsed',
|
|
3818
|
-
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version}
|
|
3819
|
+
Condition => '$$self{PhaseDetectAF} < 2 and $$self{AFInfo2Version} !~ /^03/',
|
|
3819
3820
|
Notes => q{
|
|
3820
3821
|
models with 51-point AF -- 5 rows: A1-9, B1-11, C1-11, D1-11, E1-9. Center
|
|
3821
3822
|
point is C6
|
|
@@ -3919,33 +3920,78 @@ my %base64coord = (
|
|
|
3919
3920
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
|
|
3920
3921
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
|
|
3921
3922
|
},
|
|
3922
|
-
{ #38 (Z6/Z7/Z50)
|
|
3923
|
-
Name => 'AFPointsUsed',
|
|
3924
|
-
Condition => '$$self{PhaseDetectAF} == 8 and $$self{Model} =~ /^NIKON Z/',
|
|
3925
|
-
Notes => q{
|
|
3926
|
-
models with 81-selectable point AF -- 9 rows (A-I) and 9 columns (1-9) for
|
|
3927
|
-
phase detect AF points. Center point is E5
|
|
3928
|
-
},
|
|
3929
|
-
Format => 'undef[13]',
|
|
3930
|
-
ValueConv => 'join(" ", unpack("H2"x13, $val))',
|
|
3931
|
-
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
3932
|
-
PrintConv => sub { PrintAFPoints(shift, \%afPoints81); },
|
|
3933
|
-
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints81); },
|
|
3934
|
-
},
|
|
3935
3923
|
{ #PH
|
|
3936
3924
|
Name => 'AFPointsUsed',
|
|
3937
3925
|
# version 301 uses a separate field at offset 0x0a for this tag (ref 28)
|
|
3938
|
-
Condition => '$$self{AFInfo2Version}
|
|
3926
|
+
Condition => '$$self{AFInfo2Version} !~ /^03/',
|
|
3939
3927
|
Format => 'undef[7]',
|
|
3940
3928
|
ValueConv => 'join(" ", unpack("H2"x7, $val))',
|
|
3941
3929
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
3942
3930
|
PrintConv => '"Unknown ($val)"',
|
|
3943
3931
|
PrintConvInv => '$val=~s/Unknown \\((.*)\\)/$1/; $val',
|
|
3944
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
|
+
#},
|
|
3945
3970
|
],
|
|
3946
|
-
0x0a => { #
|
|
3947
|
-
|
|
3948
|
-
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/',
|
|
3949
3995
|
Notes => q{
|
|
3950
3996
|
models with 105-point AF -- 7 rows (A-G) and 15 columns (1-15). Center
|
|
3951
3997
|
point is D8
|
|
@@ -3955,7 +4001,7 @@ my %base64coord = (
|
|
|
3955
4001
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
|
3956
4002
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints105); },
|
|
3957
4003
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints105); },
|
|
3958
|
-
},
|
|
4004
|
+
}],
|
|
3959
4005
|
0x10 => { #PH (D90 and D5000)
|
|
3960
4006
|
Name => 'AFImageWidth',
|
|
3961
4007
|
Condition => '$$self{AFInfo2Version} eq "0100"',
|
|
@@ -5003,9 +5049,10 @@ my %nikonFocalConversions = (
|
|
|
5003
5049
|
27 => 'Nikkor Z MC 50mm f/2.8', #IB
|
|
5004
5050
|
28 => 'Nikkor Z 100-400mm f/4.5-5.6 VR S', #28
|
|
5005
5051
|
29 => 'Nikkor Z 28mm f/2.8', #IB
|
|
5006
|
-
30 => 'Nikkor Z 400mm f/2.8 TC VR S',
|
|
5007
|
-
31 => 'Nikkor Z 24-120 f/4',
|
|
5008
|
-
32 => 'Nikkor Z 800mm f/6.3 VR S',
|
|
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
|
|
5009
5056
|
},
|
|
5010
5057
|
},
|
|
5011
5058
|
0x35 => { #28
|
|
@@ -5049,31 +5096,31 @@ my %nikonFocalConversions = (
|
|
|
5049
5096
|
0x4c => { #28
|
|
5050
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.
|
|
5051
5098
|
Format => 'int8u',
|
|
5052
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5099
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5053
5100
|
RawConv => '$$self{FocusDistanceRangeWidth} = $val',
|
|
5054
5101
|
Unknown => 1,
|
|
5055
5102
|
},
|
|
5056
5103
|
0x4e => { #28
|
|
5057
|
-
Name => 'FocusDistance',
|
|
5104
|
+
Name => 'FocusDistance',
|
|
5058
5105
|
Format => 'int16u',
|
|
5059
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5106
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5060
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
|
|
5061
5108
|
ValueConv => '0.01 * 10**($val/40)', # in m
|
|
5062
5109
|
ValueConvInv => '$val>0 ? 40*log($val*100)/log(10) : 0',
|
|
5063
5110
|
PrintConv => q{
|
|
5064
|
-
(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
|
|
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
|
|
5065
5112
|
},
|
|
5066
5113
|
},
|
|
5067
5114
|
0x56 => { #28
|
|
5068
5115
|
Name => 'LensDriveEnd', # byte contains: 1 at CFD/MOD; 2 at Infinity; 0 otherwise
|
|
5069
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5116
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5070
5117
|
Format => 'int8u',
|
|
5071
5118
|
RawConv => 'unless (defined $$self{FocusDistanceRangeWidth} and not $$self{FocusDistanceRangeWidth}) { if ($val == 0 ) {$$self{LensDriveEnd} = "No"} else { $$self{LensDriveEnd} = "CFD"}; } else{ $$self{LensDriveEnd} = "Inf"}',
|
|
5072
5119
|
Unknown => 1,
|
|
5073
5120
|
},
|
|
5074
5121
|
0x5a => { #28
|
|
5075
5122
|
Name => 'LensPositionAbsolute', # <=0 at infinity. Typical value at CFD might be 58000. Only valid for Z-mount lenses.
|
|
5076
|
-
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5123
|
+
Condition => '$$self{NewLensData} and $$self{LensMountType} and $$self{LensMountType} == 1',
|
|
5077
5124
|
Format => 'int32s',
|
|
5078
5125
|
Unknown => 1,
|
|
5079
5126
|
},
|
|
@@ -5478,14 +5525,14 @@ my %nikonFocalConversions = (
|
|
|
5478
5525
|
},
|
|
5479
5526
|
0x27d => {
|
|
5480
5527
|
Name => 'ShutterCount',
|
|
5481
|
-
Condition => '$$self{FirmwareVersion} =~ /^1
|
|
5528
|
+
Condition => '$$self{FirmwareVersion} =~ /^1\.01/',
|
|
5482
5529
|
Notes => 'firmware 1.10',
|
|
5483
5530
|
Format => 'int32u',
|
|
5484
5531
|
Priority => 0,
|
|
5485
5532
|
},
|
|
5486
5533
|
0x27f => {
|
|
5487
5534
|
Name => 'ShutterCount',
|
|
5488
|
-
Condition => '$$self{FirmwareVersion} =~ /^2
|
|
5535
|
+
Condition => '$$self{FirmwareVersion} =~ /^2\.0/',
|
|
5489
5536
|
Notes => 'firmware 2.00, 2.01 and 2.02',
|
|
5490
5537
|
Format => 'int32u',
|
|
5491
5538
|
Priority => 0,
|
|
@@ -7379,7 +7426,7 @@ my %nikonFocalConversions = (
|
|
|
7379
7426
|
# (moves around too much and doesn't fit cleanly in the offset table)
|
|
7380
7427
|
#0x38be => {
|
|
7381
7428
|
# Name => 'Rotation',
|
|
7382
|
-
# Condition => '$$self{FirmwareVersion} =~ /^1
|
|
7429
|
+
# Condition => '$$self{FirmwareVersion} =~ /^1\.0/',
|
|
7383
7430
|
# Mask => 0x30,
|
|
7384
7431
|
# PrintConv => {
|
|
7385
7432
|
# 0 => 'Horizontal',
|
|
@@ -7685,7 +7732,7 @@ my %nikonFocalConversions = (
|
|
|
7685
7732
|
},
|
|
7686
7733
|
0x189d => { #PH (NC)
|
|
7687
7734
|
Name => 'CustomSettingsD4S',
|
|
7688
|
-
Condition => '$$self{FirmwareVersion} =~ /^1
|
|
7735
|
+
Condition => '$$self{FirmwareVersion} =~ /^1\.00/',
|
|
7689
7736
|
Notes => 'firmware version 1.00',
|
|
7690
7737
|
Format => 'undef[56]',
|
|
7691
7738
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
|
|
@@ -7693,7 +7740,7 @@ my %nikonFocalConversions = (
|
|
|
7693
7740
|
0x18c2 => { # CSf1-c (no idea why it is so far away from the rest of the settings)
|
|
7694
7741
|
Name => 'MultiSelectorLiveViewMode',
|
|
7695
7742
|
Groups => { 1 => 'NikonCustom' },
|
|
7696
|
-
Condition => '$$self{FirmwareVersion} !~ /^1
|
|
7743
|
+
Condition => '$$self{FirmwareVersion} !~ /^1\.00/',
|
|
7697
7744
|
Mask => 0xc0,
|
|
7698
7745
|
PrintConv => {
|
|
7699
7746
|
0 => 'Reset',
|
|
@@ -7794,7 +7841,7 @@ my %nikonFocalConversions = (
|
|
|
7794
7841
|
},
|
|
7795
7842
|
0x193d => {
|
|
7796
7843
|
Name => 'CustomSettingsD4S',
|
|
7797
|
-
Condition => '$$self{FirmwareVersion} !~ /^1
|
|
7844
|
+
Condition => '$$self{FirmwareVersion} !~ /^1\.00/',
|
|
7798
7845
|
Notes => 'firmware version 1.01',
|
|
7799
7846
|
Format => 'undef[56]',
|
|
7800
7847
|
SubDirectory => { TagTable => 'Image::ExifTool::NikonCustom::SettingsD4' },
|
|
@@ -8206,6 +8253,7 @@ my %nikonFocalConversions = (
|
|
|
8206
8253
|
0xec4b => {
|
|
8207
8254
|
Name => 'MenuSettingsZ9',
|
|
8208
8255
|
Format => 'undef[1646]',
|
|
8256
|
+
Condition => '$$self{FirmwareVersion} lt "03.00"',
|
|
8209
8257
|
SubDirectory => {
|
|
8210
8258
|
TagTable => 'Image::ExifTool::Nikon::MenuSettingsZ9',
|
|
8211
8259
|
},
|
|
@@ -8799,9 +8847,9 @@ my %nikonFocalConversions = (
|
|
|
8799
8847
|
16 => '+03:00 (Moscow, Nairobi)',
|
|
8800
8848
|
17 => '+02:00 (Athens, Helsinki)',
|
|
8801
8849
|
18 => '+01:00 (Madrid, Paris, Berlin)',
|
|
8802
|
-
19 => '+00:00 (London)',
|
|
8803
|
-
20 => '-01:00 (Azores)',
|
|
8804
|
-
21 => '-02:00 (Fernando de Noronha)',
|
|
8850
|
+
19 => '+00:00 (London)',
|
|
8851
|
+
20 => '-01:00 (Azores)',
|
|
8852
|
+
21 => '-02:00 (Fernando de Noronha)',
|
|
8805
8853
|
22 => '-03:00 (Buenos Aires, Sao Paulo)',
|
|
8806
8854
|
23 => '-03:30 (Newfoundland)',
|
|
8807
8855
|
24 => '-04:00 (Manaus, Caracas)',
|
|
@@ -10129,6 +10177,36 @@ my %nikonFocalConversions = (
|
|
|
10129
10177
|
},
|
|
10130
10178
|
);
|
|
10131
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
|
+
|
|
10132
10210
|
# HDR information (ref 32)
|
|
10133
10211
|
%Image::ExifTool::Nikon::HDRInfo = (
|
|
10134
10212
|
%binaryDataAttrs,
|
|
@@ -10137,12 +10215,13 @@ my %nikonFocalConversions = (
|
|
|
10137
10215
|
0 => {
|
|
10138
10216
|
Name => 'HDRInfoVersion',
|
|
10139
10217
|
Format => 'string[4]',
|
|
10218
|
+
Writable => 0,
|
|
10140
10219
|
},
|
|
10141
10220
|
4 => {
|
|
10142
10221
|
Name => 'HDR',
|
|
10143
10222
|
PrintConv => {
|
|
10144
10223
|
0 => 'Off',
|
|
10145
|
-
1 => 'On',
|
|
10224
|
+
1 => 'On (normal)',
|
|
10146
10225
|
48 => 'Auto', #PH (NC)
|
|
10147
10226
|
},
|
|
10148
10227
|
},
|
|
@@ -10180,6 +10259,35 @@ my %nikonFocalConversions = (
|
|
|
10180
10259
|
},
|
|
10181
10260
|
);
|
|
10182
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
|
+
|
|
10183
10291
|
# location information (ref PH)
|
|
10184
10292
|
%Image::ExifTool::Nikon::LocationInfo = (
|
|
10185
10293
|
%binaryDataAttrs,
|
|
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
40
40
|
use Image::ExifTool::Exif;
|
|
41
41
|
use Image::ExifTool::APP12;
|
|
42
42
|
|
|
43
|
-
$VERSION = '2.
|
|
43
|
+
$VERSION = '2.79';
|
|
44
44
|
|
|
45
45
|
sub PrintLensInfo($$$);
|
|
46
46
|
|
|
@@ -433,6 +433,7 @@ my %olympusCameraTypes = (
|
|
|
433
433
|
S0092 => 'E-M1MarkIII', #IB
|
|
434
434
|
S0093 => 'E-P7', #IB
|
|
435
435
|
S0095 => 'OM-1', #IB
|
|
436
|
+
S0101 => 'OM-5', #IB
|
|
436
437
|
SR45 => 'D220',
|
|
437
438
|
SR55 => 'D320L',
|
|
438
439
|
SR83 => 'D340L',
|
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
|
58
58
|
use Image::ExifTool::GPS;
|
|
59
59
|
use Image::ExifTool::HP;
|
|
60
60
|
|
|
61
|
-
$VERSION = '3.
|
|
61
|
+
$VERSION = '3.41';
|
|
62
62
|
|
|
63
63
|
sub CryptShutterCount($$);
|
|
64
64
|
sub PrintFilter($$$);
|
|
@@ -365,10 +365,15 @@ sub DecodeAFPoints($$$$;$);
|
|
|
365
365
|
'8 255.4' => 'Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye', #PH
|
|
366
366
|
'8 255.5' => 'Sigma 50-200mm F4-5.6 DC OS', #26
|
|
367
367
|
'8 255.6' => 'Sigma 24-70mm F2.8 EX DG HSM', #29
|
|
368
|
+
|
|
369
|
+
'9 0' => '645 Manual Lens', #PH (NC)
|
|
370
|
+
'9 3' => 'HD PENTAX-FA 43mm F1.9 Limited', #IB
|
|
371
|
+
'9 24' => 'HD PENTAX-FA 77mm F1.8 Limited', #IB
|
|
372
|
+
'9 39' => 'HD PENTAX-FA 31mm F1.8 AL Limited', #IB
|
|
373
|
+
'9 247' => 'HD PENTAX-DA FISH-EYE 10-17mm F3.5-4.5 ED [IF]', #IB
|
|
368
374
|
#
|
|
369
375
|
# 645 lenses
|
|
370
376
|
#
|
|
371
|
-
'9 0' => '645 Manual Lens', #PH (NC)
|
|
372
377
|
'10 0' => '645 A Series Lens', #PH
|
|
373
378
|
'11 1' => 'smc PENTAX-FA 645 75mm F2.8', #PH
|
|
374
379
|
'11 2' => 'smc PENTAX-FA 645 45mm F2.8', #PH
|