exiftool_vendored 13.31.0 → 13.34.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 +56 -1
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +47 -46
- data/bin/exiftool +114 -89
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
- data/bin/lib/Image/ExifTool/Canon.pm +19 -2
- data/bin/lib/Image/ExifTool/Exif.pm +9 -6
- data/bin/lib/Image/ExifTool/FlashPix.pm +4 -159
- data/bin/lib/Image/ExifTool/FujiFilm.pm +11 -3
- data/bin/lib/Image/ExifTool/Geotag.pm +5 -3
- data/bin/lib/Image/ExifTool/GoPro.pm +14 -2
- data/bin/lib/Image/ExifTool/LNK.pm +4 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/it.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +0 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +0 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +158 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +4 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +72 -37
- data/bin/lib/Image/ExifTool/NikonCustom.pm +40 -10
- data/bin/lib/Image/ExifTool/Olympus.pm +254 -34
- data/bin/lib/Image/ExifTool/Panasonic.pm +3 -3
- data/bin/lib/Image/ExifTool/Pentax.pm +340 -61
- data/bin/lib/Image/ExifTool/QuickTime.pm +11 -4
- data/bin/lib/Image/ExifTool/README +2 -1
- data/bin/lib/Image/ExifTool/Sony.pm +44 -17
- data/bin/lib/Image/ExifTool/TNEF.pm +487 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4380 -4265
- data/bin/lib/Image/ExifTool/TagNames.pod +265 -19
- data/bin/lib/Image/ExifTool/WriteExif.pl +14 -12
- data/bin/lib/Image/ExifTool/Writer.pl +19 -15
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +12 -4
- data/bin/lib/Image/ExifTool.pod +50 -44
- data/bin/perl-Image-ExifTool.spec +46 -45
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -46,6 +46,7 @@
|
|
46
46
|
# IB) Iliah Borg private communication (LibRaw)
|
47
47
|
# JD) Jens Duttke private communication
|
48
48
|
# NJ) Niels Kristian Bech Jensen private communication
|
49
|
+
# KG) Karsten Gieselmann private communication
|
49
50
|
#
|
50
51
|
# Notes: See POD documentation at the bottom of this file
|
51
52
|
#------------------------------------------------------------------------------
|
@@ -58,11 +59,14 @@ use Image::ExifTool::Exif;
|
|
58
59
|
use Image::ExifTool::GPS;
|
59
60
|
use Image::ExifTool::HP;
|
60
61
|
|
61
|
-
$VERSION = '3.
|
62
|
+
$VERSION = '3.55';
|
62
63
|
|
63
64
|
sub CryptShutterCount($$);
|
64
65
|
sub PrintFilter($$$);
|
65
66
|
sub DecodeAFPoints($$$$;$);
|
67
|
+
sub AFPointNamesK3III($$;$);
|
68
|
+
sub AFPointValuesK3III($$);
|
69
|
+
sub AFAreasK3III($$);
|
66
70
|
|
67
71
|
# pentax lens type codes (ref 4)
|
68
72
|
# The first number gives the lens series, and the 2nd gives the model number
|
@@ -747,6 +751,11 @@ my @k3iiiAF = qw(
|
|
747
751
|
C1 E1 G1 I1 K1 C3 E3 G3 I3 K3 C5 E5 G5
|
748
752
|
I5 K5 C7 E7 G7 I7 K7 C9 E9 G9 I9 K9 A5 M5 B3
|
749
753
|
L3 B5 L5 B7 L7 B1 L1 B9 L9 A3 M3 A7 M7
|
754
|
+
D1 F1 H1 J1 D3 F3 H3 J3 D5 F5 H5 J5 D7
|
755
|
+
F7 H7 J7 D9 F9 H9 J9 C2 E2 G2 I2 K2 C4
|
756
|
+
E4 G4 I4 K4 C6 E6 G6 I6 K6 C8 E8 G8 I8
|
757
|
+
K8 B2 L2 B4 L4 B6 L6 B8 L8 A1 M1 A2 M2
|
758
|
+
A4 M4 A6 M6 A8 M8 A9 M9
|
750
759
|
);
|
751
760
|
|
752
761
|
# decoding for Pentax Firmware ID tags - PH
|
@@ -1148,31 +1157,38 @@ my %binaryDataAttrs = (
|
|
1148
1157
|
Notes => 'Pentax models',
|
1149
1158
|
Writable => 'int16u',
|
1150
1159
|
PrintConvColumns => 2,
|
1160
|
+
PrintHex => 1,
|
1151
1161
|
PrintConv => { #PH
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1162
|
+
0x00 => 'Normal',
|
1163
|
+
0x01 => 'Macro',
|
1164
|
+
0x02 => 'Infinity',
|
1165
|
+
0x03 => 'Manual',
|
1166
|
+
0x04 => 'Super Macro', #JD
|
1167
|
+
0x05 => 'Pan Focus',
|
1168
|
+
0x06 => 'Auto-area', # (GR III)
|
1169
|
+
0x07 => 'Zone Select', # (GR III)
|
1170
|
+
0x08 => 'Select', # (GR III)
|
1171
|
+
0x09 => 'Pinpoint', # (GR III)
|
1172
|
+
0x0a => 'Tracking', # (GR III)
|
1173
|
+
0x0b => 'Continuous', # (GR III)
|
1174
|
+
0x0c => 'Snap', # (GR III)
|
1175
|
+
0x10 => 'AF-S (Focus-priority)', #17
|
1176
|
+
0x11 => 'AF-C (Focus-priority)', #17
|
1177
|
+
0x12 => 'AF-A (Focus-priority)', #PH (educated guess)
|
1178
|
+
0x20 => 'Contrast-detect (Focus-priority)', #PH (K-5)
|
1179
|
+
0x21 => 'Tracking Contrast-detect (Focus-priority)', #PH (K-5)
|
1169
1180
|
# bit 8 indicates release priority
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
#
|
1175
|
-
|
1181
|
+
0x110 => 'AF-S (Release-priority)', #PH (K-5,K-3)
|
1182
|
+
0x111 => 'AF-C (Release-priority)', #PH (K-5,K-3)
|
1183
|
+
0x112 => 'AF-A (Release-priority)', #PH (K-3)
|
1184
|
+
0x120 => 'Contrast-detect (Release-priority)', #PH (K-01)
|
1185
|
+
# bit 15 indicates macro mode (disabled for MF, and defaults to Select for Snap, Infinity)
|
1186
|
+
0x8006 => 'Auto-area (Macro)', # (GR III)
|
1187
|
+
0x8007 => 'Zone Select (Macro)', # (GR III)
|
1188
|
+
0x8008 => 'Select (Macro)', # (GR III)
|
1189
|
+
0x8009 => 'Pinpoint (Macro)', # (GR III)
|
1190
|
+
0x800a => 'Tracking (Macro)', # (GR III)
|
1191
|
+
0x800b => 'Continuous (Macro)', # (GR III)
|
1176
1192
|
},
|
1177
1193
|
},{
|
1178
1194
|
Name => 'FocusMode',
|
@@ -1188,7 +1204,7 @@ my %binaryDataAttrs = (
|
|
1188
1204
|
],
|
1189
1205
|
0x000e => [{ #29
|
1190
1206
|
Name => 'AFPointSelected',
|
1191
|
-
Condition => '$$self{Model} =~ /K-1\b/',
|
1207
|
+
Condition => '$$self{Model} =~ /(K-1|645Z)\b/', # (NC for 645Z)
|
1192
1208
|
Writable => 'int16u',
|
1193
1209
|
Notes => 'K-1',
|
1194
1210
|
PrintConvColumns => 2,
|
@@ -1367,16 +1383,20 @@ my %binaryDataAttrs = (
|
|
1367
1383
|
9 => 'Lower-left',
|
1368
1384
|
10 => 'Bottom',
|
1369
1385
|
11 => 'Lower-right',
|
1370
|
-
},
|
1386
|
+
},{
|
1371
1387
|
# (second number exists for K-5II(s) is usually 0, but is 1 for AF.C with
|
1372
1388
|
# AFPointMode=='Select' and extended tracking focus points are enabled in the settings)
|
1373
|
-
|
1389
|
+
# -----
|
1390
|
+
#KG: for K-70 and older models with 11 PDAF points (K-S2, K-S1, K-50, K-500, K-30, K-5II(s) )
|
1391
|
+
0 => 'Single Point', # Select AF (1-point) in both PDAF and CAF modes
|
1392
|
+
1 => 'Expanded Area', # Expanded Area AF in AF-C
|
1393
|
+
}],
|
1374
1394
|
}],
|
1375
1395
|
0x000f => [{ #PH
|
1376
1396
|
Name => 'AFPointsInFocus',
|
1377
|
-
Condition => '$$self{Model} =~ /K-3\b/',
|
1397
|
+
Condition => '$$self{Model} =~ /K-(3|S1|S2)\b/', #KG: valid also for K-S1/S2
|
1378
1398
|
Writable => 'int32u',
|
1379
|
-
Notes => 'K-3 only',
|
1399
|
+
Notes => 'K-3, K-S1 and K-S2 only',
|
1380
1400
|
PrintHex => 1,
|
1381
1401
|
PrintConv => {
|
1382
1402
|
0 => '(none)',
|
@@ -1957,6 +1977,8 @@ my %binaryDataAttrs = (
|
|
1957
1977
|
'18 3' => 'Auto Program (MTF)', #PH (NC)
|
1958
1978
|
'18 22' => 'Auto Program (Shallow DOF)', #PH (NC)
|
1959
1979
|
'20 22' => 'Blur Control', #PH (Q)
|
1980
|
+
'24 0' => 'Aperture Priority (Adv.Hyp)', #KG
|
1981
|
+
'25 0' => 'Manual Exposure (Adv.Hyp)', #KG
|
1960
1982
|
'26 0' => 'Shutter and Aperture Priority (TAv)', #PH (K-3III)
|
1961
1983
|
'249 0' => 'Movie (TAv)', #31
|
1962
1984
|
'250 0' => 'Movie (TAv, Auto Aperture)', #31
|
@@ -1978,10 +2000,13 @@ my %binaryDataAttrs = (
|
|
1978
2000
|
Count => 4,
|
1979
2001
|
PrintConv => [{
|
1980
2002
|
0 => 'Single-frame', # (also Interval Shooting for K-01 - PH)
|
1981
|
-
1 => 'Continuous',
|
1982
|
-
|
2003
|
+
1 => 'Continuous', #KG *ist D, *ist Ds, *ist DS2, K110D, K10D, K100D, K100D Super, K20D, Ricoh GR III / GR IIIx
|
2004
|
+
#KG Hi: K200D, K-x, K-7, K-r, K-5, K-01, K-5 II, K-5 IIs, K-30, K-500, K-50, K-S1, K-S2, K-70
|
2005
|
+
#KG High: K-3, K-3 II, K-1, K-1 II, KP, K-3 III, K-3 III Mono
|
2006
|
+
2 => 'Continuous (Lo)', #KG all models listed under 'Hi'
|
1983
2007
|
3 => 'Burst', #PH (K20D)
|
1984
|
-
4 => 'Continuous (Medium)', #
|
2008
|
+
4 => 'Continuous (Medium)', #KG all models listed under 'High'
|
2009
|
+
5 => 'Continuous (Low)', #KG all models listed under 'High'
|
1985
2010
|
255 => 'Video', #PH (K-x)
|
1986
2011
|
},{
|
1987
2012
|
0 => 'No Timer',
|
@@ -2169,7 +2194,7 @@ my %binaryDataAttrs = (
|
|
2169
2194
|
11 => 'Flat', #31 (K-70)
|
2170
2195
|
# the following values from GR III
|
2171
2196
|
256 => 'Standard',
|
2172
|
-
257 => 'Vivid',
|
2197
|
+
257 => 'Vivid',
|
2173
2198
|
258 => 'Monotone',
|
2174
2199
|
259 => 'Soft Monotone',
|
2175
2200
|
260 => 'Hard Monotone',
|
@@ -2989,7 +3014,7 @@ my %binaryDataAttrs = (
|
|
2989
3014
|
}],
|
2990
3015
|
0x022b => [{
|
2991
3016
|
Name => 'LevelInfoK3III',
|
2992
|
-
Condition => '$$self{Model}
|
3017
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
2993
3018
|
SubDirectory => { TagTable => 'Image::ExifTool::Pentax::LevelInfoK3III' },
|
2994
3019
|
},{ #PH (K-5)
|
2995
3020
|
Name => 'LevelInfo',
|
@@ -3097,13 +3122,20 @@ my %binaryDataAttrs = (
|
|
3097
3122
|
# 0x0406 - undef[4116] (K-5)
|
3098
3123
|
# 0x0407 - undef[3072] (Q DNG)
|
3099
3124
|
# 0x0408 - undef[1024] (Q DNG)
|
3125
|
+
0x040b => {
|
3126
|
+
Name => 'FaceInfoK3III',
|
3127
|
+
# undef[1640] (actually int32u[410], K3III)
|
3128
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Pentax::FaceInfoK3III' },
|
3129
|
+
},
|
3130
|
+
0x040c => {
|
3131
|
+
Name => 'AFInfoK3III',
|
3132
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Pentax::AFInfoK3III' },
|
3133
|
+
},
|
3100
3134
|
0x0e00 => {
|
3101
3135
|
Name => 'PrintIM',
|
3102
3136
|
Description => 'Print Image Matching',
|
3103
3137
|
Writable => 0,
|
3104
|
-
SubDirectory => {
|
3105
|
-
TagTable => 'Image::ExifTool::PrintIM::Main',
|
3106
|
-
},
|
3138
|
+
SubDirectory => { TagTable => 'Image::ExifTool::PrintIM::Main' },
|
3107
3139
|
},
|
3108
3140
|
);
|
3109
3141
|
|
@@ -5006,11 +5038,11 @@ my %binaryDataAttrs = (
|
|
5006
5038
|
# 0x0a - values: 00,05,0d,15,86,8e,a6,ae
|
5007
5039
|
0x0b => { #JD
|
5008
5040
|
Name => 'AFPointsInFocus',
|
5009
|
-
Condition => '$$self{Model} !~ /(K-(1|3|70)|KP)\b/',
|
5041
|
+
Condition => '$$self{Model} !~ /(K-(1|3|70|S1|S2)|KP)\b/', #KG: valid also for K-S1/S2
|
5010
5042
|
Notes => q{
|
5011
|
-
models other than the K-1, K-3, K-70 and
|
5012
|
-
even though a single AFPoint has been selected, in which case the
|
5013
|
-
AFPoint is the first reported
|
5043
|
+
models other than the K-1, K-3, K-70, KP and K-S1/S2. May report two points
|
5044
|
+
in focus even though a single AFPoint has been selected, in which case the
|
5045
|
+
selected AFPoint is the first reported
|
5014
5046
|
},
|
5015
5047
|
PrintConvColumns => 2,
|
5016
5048
|
PrintConv => {
|
@@ -5039,43 +5071,46 @@ my %binaryDataAttrs = (
|
|
5039
5071
|
},
|
5040
5072
|
0x14 => {
|
5041
5073
|
Name => 'AFPointValues',
|
5042
|
-
Condition => '$$self{Model}
|
5074
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
|
5043
5075
|
Format => 'int16uRev[69]',
|
5044
5076
|
Unknown => 1,
|
5045
5077
|
Notes => 'some unknown values related to each AFPoint',
|
5046
|
-
# order is the same as
|
5078
|
+
# order is the same as AFPointsSelected below, but there is an additional value for
|
5047
5079
|
# each AF point starting at offset 28 in the array (yes, the range overlaps
|
5048
5080
|
# with the 1st values)
|
5049
5081
|
# (values are int16s stored in reversed byte order)
|
5050
5082
|
ValueConv => 'my @a=split " ",$val;$_>32767 and $_-=65536 foreach @a;join " ",@a',
|
5051
|
-
PrintConv => \&
|
5083
|
+
PrintConv => \&AFPointValuesK3III,
|
5052
5084
|
},
|
5053
|
-
0x12a => {
|
5054
|
-
Name => 'AFPointsSelected',
|
5055
|
-
Condition => '$$self{Model}
|
5085
|
+
0x12a => {
|
5086
|
+
Name => 'AFPointsSelected', # (should probably be "AFPointSelected", but the bitmask allows multiple points)
|
5087
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
5056
5088
|
Notes => q{
|
5057
5089
|
K-3III only. 41 selectable AF points from a total of 101 available in a 13x9
|
5058
|
-
grid. Columns are labelled A-M and rows are 1-9. The center point is G5
|
5090
|
+
grid. Columns are labelled A-M and rows are 1-9. The center point is G5. The
|
5091
|
+
exact meaning of this tag is not fully understood, although it does seem
|
5092
|
+
related to the selected AF point
|
5059
5093
|
},
|
5060
|
-
Format => 'int8u[
|
5061
|
-
|
5094
|
+
Format => 'int8u[101]',
|
5095
|
+
# value of 1 means "selected point", and 2 means "center of selected area"
|
5096
|
+
PrintConv => \&AFPointNamesK3III,
|
5062
5097
|
},
|
5063
5098
|
#
|
5064
5099
|
# (maybe not coincidentally, there are 60 unknown bytes
|
5065
5100
|
# here, and there are also 60 non-selectable AF points)
|
5066
5101
|
#
|
5067
5102
|
0x18f => { # byte has a value of 1 if corresponding AF point is ... in focus maybe?
|
5068
|
-
# usually the same points as
|
5103
|
+
# usually the same points as AFPointsSelected above, but not always
|
5069
5104
|
Name => 'AFPointsUnknown',
|
5070
|
-
Condition => '$$self{Model}
|
5105
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
|
5071
5106
|
Unknown => 1,
|
5072
|
-
Format => 'int8u[
|
5073
|
-
PrintConv => \&
|
5107
|
+
Format => 'int8u[101]',
|
5108
|
+
PrintConv => \&AFPointNamesK3III,
|
5074
5109
|
},
|
5075
5110
|
0x1fa => {
|
5076
5111
|
Name => 'LiveView',
|
5077
5112
|
Notes => 'decoded only for the K-3 III',
|
5078
|
-
Condition => '$$self{Model}
|
5113
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/', #KG
|
5079
5114
|
PrintConv => { 0 => 'Off', 1 => 'On' },
|
5080
5115
|
},
|
5081
5116
|
0x1fd => {
|
@@ -5084,6 +5119,54 @@ my %binaryDataAttrs = (
|
|
5084
5119
|
Condition => '$$self{Model} eq "PENTAX K-3 II"',
|
5085
5120
|
PrintConv => { 0 => 'Off', 1 => 'Short', 2 => 'Medium', 3 => 'Long' },
|
5086
5121
|
},
|
5122
|
+
0x021f => { #KG
|
5123
|
+
Name => 'FirstFrameActionInAFC',
|
5124
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
5125
|
+
PrintConv => {
|
5126
|
+
'0' => 'Auto',
|
5127
|
+
'1' => 'Release Priority',
|
5128
|
+
'2' => 'Focus Priority',
|
5129
|
+
# there is at least another value '3' but I couldn't figure out the
|
5130
|
+
# meaning. However, this occurs for a few AF-S captures, so it has
|
5131
|
+
# no real practical meaning.
|
5132
|
+
},
|
5133
|
+
},
|
5134
|
+
0x0220 => { #KG
|
5135
|
+
Name => 'ActionInAFCCont',
|
5136
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
5137
|
+
PrintConv => {
|
5138
|
+
'0' => 'Auto',
|
5139
|
+
'1' => 'Focus Priority',
|
5140
|
+
'2' => 'FPS Priority',
|
5141
|
+
},
|
5142
|
+
},
|
5143
|
+
545 => { #KG
|
5144
|
+
Name => 'AFCHold',
|
5145
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
5146
|
+
Mask => 0x03,
|
5147
|
+
PrintConv => { 0 => 'Low', 1 => 'Medium', 2 => 'High', 3 => 'Off' },
|
5148
|
+
},
|
5149
|
+
545.1 => { #KG
|
5150
|
+
Name => 'AFCSensitivity',
|
5151
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
5152
|
+
Mask => 0x0c,
|
5153
|
+
PrintConv => '5 - $val',
|
5154
|
+
PrintConvInv => '5 - $val',
|
5155
|
+
},
|
5156
|
+
545.2 => { #KG
|
5157
|
+
Name => 'AFCPointTracking',
|
5158
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
5159
|
+
Mask => 0x70,
|
5160
|
+
PrintConv => { 0 => 'Type 1', 1 => 'Type 2', 2 => 'Type 3' },
|
5161
|
+
},
|
5162
|
+
0x0960 => { #KG
|
5163
|
+
Name => 'SubjectRecognition',
|
5164
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
5165
|
+
PrintConv => {
|
5166
|
+
0 => 'Off',
|
5167
|
+
1 => 'On',
|
5168
|
+
},
|
5169
|
+
},
|
5087
5170
|
);
|
5088
5171
|
|
5089
5172
|
# AF information for K-01 and later (ref Karsten Gieselmann private communication)
|
@@ -5097,7 +5180,7 @@ my %binaryDataAttrs = (
|
|
5097
5180
|
Name => 'NumCAFPoints',
|
5098
5181
|
RawConv => '$$self{NumCAFPoints} = ($val & 0x0f) * ($val >> 4); $val',
|
5099
5182
|
ValueConv => '($val >> 4) * ($val & 0x0f)',
|
5100
|
-
},
|
5183
|
+
},
|
5101
5184
|
1.1 => {
|
5102
5185
|
Name => 'CAFGridSize',
|
5103
5186
|
ValueConv => '($val >> 4) . " " . ($val & 0x0f)', # (width x height)
|
@@ -5687,6 +5770,175 @@ my %binaryDataAttrs = (
|
|
5687
5770
|
ValueConvInv => '-$val * 2',
|
5688
5771
|
},
|
5689
5772
|
);
|
5773
|
+
|
5774
|
+
%Image::ExifTool::Pentax::FaceInfoK3III = (
|
5775
|
+
%binaryDataAttrs,
|
5776
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
5777
|
+
FORMAT => 'int32u',
|
5778
|
+
DATAMEMBER => [ 6, 8 ],
|
5779
|
+
0.1 => {
|
5780
|
+
Name => 'FaceInfoK3III',
|
5781
|
+
Format => 'int32u[$size/4]',
|
5782
|
+
Notes => q{
|
5783
|
+
entire FaceInfoK3III structure. Provides access to raw numerical values and
|
5784
|
+
facilitates the writing of the whole structure
|
5785
|
+
},
|
5786
|
+
Unknown => 1,
|
5787
|
+
},
|
5788
|
+
0 => { Name => 'FaceImageSize', Format => 'int32u[2]' },
|
5789
|
+
2 => { Name => 'CAFArea', Format => 'int32u[4]', Notes => 'top, left, width, height' },
|
5790
|
+
6 => { Name => 'FacesDetectedA', RawConv => '$$self{FacesA} = $val' },
|
5791
|
+
8 => { Name => 'FacesDetectedB', RawConv => '$$self{FacesA} = $val' },
|
5792
|
+
10 => { Name => 'Face1AArea', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
|
5793
|
+
14 => { Name => 'Face1AEye1', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
|
5794
|
+
18 => { Name => 'Face1AEye2', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
|
5795
|
+
30 => { Name => 'Face2AArea', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
|
5796
|
+
34 => { Name => 'Face2AEye1', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
|
5797
|
+
38 => { Name => 'Face2AEye2', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
|
5798
|
+
50 => { Name => 'Face3AArea', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
|
5799
|
+
54 => { Name => 'Face3AEye1', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
|
5800
|
+
58 => { Name => 'Face3AEye2', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
|
5801
|
+
70 => { Name => 'Face4AArea', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
|
5802
|
+
74 => { Name => 'Face4AEye1', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
|
5803
|
+
78 => { Name => 'Face4AEye2', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
|
5804
|
+
90 => { Name => 'Face5AArea', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
|
5805
|
+
94 => { Name => 'Face5AEye1', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
|
5806
|
+
98 => { Name => 'Face5AEye2', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
|
5807
|
+
110 => { Name => 'Face6AArea', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
|
5808
|
+
114 => { Name => 'Face6AEye1', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
|
5809
|
+
118 => { Name => 'Face6AEye2', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
|
5810
|
+
130 => { Name => 'Face7AArea', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
|
5811
|
+
134 => { Name => 'Face7AEye1', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
|
5812
|
+
138 => { Name => 'Face7AEye2', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
|
5813
|
+
150 => { Name => 'Face8AArea', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
|
5814
|
+
154 => { Name => 'Face8AEye1', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
|
5815
|
+
158 => { Name => 'Face8AEye2', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
|
5816
|
+
170 => { Name => 'Face9AArea', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
|
5817
|
+
174 => { Name => 'Face9AEye1', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
|
5818
|
+
178 => { Name => 'Face9AEye2', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
|
5819
|
+
190 => { Name => 'Face10AArea',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
|
5820
|
+
194 => { Name => 'Face10AEye1',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
|
5821
|
+
198 => { Name => 'Face10AEye2',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
|
5822
|
+
210 => { Name => 'Face1BArea', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
|
5823
|
+
214 => { Name => 'Face1BEye1', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
|
5824
|
+
218 => { Name => 'Face1BEye2', Condition => '$$self{FacesA} >= 1', Format => 'int32u[4]' },
|
5825
|
+
230 => { Name => 'Face2BArea', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
|
5826
|
+
234 => { Name => 'Face2BEye1', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
|
5827
|
+
238 => { Name => 'Face2BEye2', Condition => '$$self{FacesA} >= 2', Format => 'int32u[4]' },
|
5828
|
+
250 => { Name => 'Face3BArea', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
|
5829
|
+
254 => { Name => 'Face3BEye1', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
|
5830
|
+
258 => { Name => 'Face3BEye2', Condition => '$$self{FacesA} >= 3', Format => 'int32u[4]' },
|
5831
|
+
270 => { Name => 'Face4BArea', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
|
5832
|
+
274 => { Name => 'Face4BEye1', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
|
5833
|
+
278 => { Name => 'Face4BEye2', Condition => '$$self{FacesA} >= 4', Format => 'int32u[4]' },
|
5834
|
+
290 => { Name => 'Face5BArea', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
|
5835
|
+
294 => { Name => 'Face5BEye1', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
|
5836
|
+
298 => { Name => 'Face5BEye2', Condition => '$$self{FacesA} >= 5', Format => 'int32u[4]' },
|
5837
|
+
310 => { Name => 'Face6BArea', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
|
5838
|
+
314 => { Name => 'Face6BEye1', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
|
5839
|
+
318 => { Name => 'Face6BEye2', Condition => '$$self{FacesA} >= 6', Format => 'int32u[4]' },
|
5840
|
+
330 => { Name => 'Face7BArea', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
|
5841
|
+
334 => { Name => 'Face7BEye1', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
|
5842
|
+
338 => { Name => 'Face7BEye2', Condition => '$$self{FacesA} >= 7', Format => 'int32u[4]' },
|
5843
|
+
350 => { Name => 'Face8BArea', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
|
5844
|
+
354 => { Name => 'Face8BEye1', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
|
5845
|
+
358 => { Name => 'Face8BEye2', Condition => '$$self{FacesA} >= 8', Format => 'int32u[4]' },
|
5846
|
+
370 => { Name => 'Face9BArea', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
|
5847
|
+
374 => { Name => 'Face9BEye1', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
|
5848
|
+
378 => { Name => 'Face9BEye2', Condition => '$$self{FacesA} >= 9', Format => 'int32u[4]' },
|
5849
|
+
390 => { Name => 'Face10BArea',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
|
5850
|
+
394 => { Name => 'Face10BEye1',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
|
5851
|
+
398 => { Name => 'Face10BEye2',Condition => '$$self{FacesA} >= 10', Format => 'int32u[4]' },
|
5852
|
+
);
|
5853
|
+
|
5854
|
+
%Image::ExifTool::Pentax::AFInfoK3III = (
|
5855
|
+
%binaryDataAttrs,
|
5856
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
5857
|
+
FORMAT => 'int16u',
|
5858
|
+
DATAMEMBER => [ 3 ],
|
5859
|
+
NOTES => 'AF tags written by the K-3 Mark III, GR III and GR IIIx.',
|
5860
|
+
0 => {
|
5861
|
+
Name => 'AFInfo',
|
5862
|
+
Format => 'int16u[$size/2]',
|
5863
|
+
Notes => q{
|
5864
|
+
entire AFInfoK3III structure. Provides access to raw numerical values and
|
5865
|
+
facilitates the writing of the whole structure
|
5866
|
+
},
|
5867
|
+
Unknown => 1,
|
5868
|
+
},
|
5869
|
+
0.1 => {
|
5870
|
+
Name => 'AFMode',
|
5871
|
+
PrintConv => {
|
5872
|
+
0 => 'Phase Detect',
|
5873
|
+
2 => 'Contrast Detect',
|
5874
|
+
255 => 'Manual Focus',
|
5875
|
+
},
|
5876
|
+
},
|
5877
|
+
1 => {
|
5878
|
+
Name => 'AFSelectionMode',
|
5879
|
+
PrintHex => 1,
|
5880
|
+
PrintConv => {
|
5881
|
+
0 => 'Manual Focus',
|
5882
|
+
1 => 'Spot',
|
5883
|
+
2 => 'Select (5-points)',
|
5884
|
+
3 => 'Expanded Area (S)',
|
5885
|
+
4 => 'Expanded Area (M)',
|
5886
|
+
5 => 'Expanded Area (L)',
|
5887
|
+
6 => 'Select (S)',
|
5888
|
+
7 => 'Zone Select (21-point)',
|
5889
|
+
8 => 'Select XS',
|
5890
|
+
0xff => 'Auto Area',
|
5891
|
+
# Contrast-detect modes
|
5892
|
+
0x2001 => 'Contrast-detect Auto Area',
|
5893
|
+
0x2002 => 'Contrast-detect Select', # (GR III)
|
5894
|
+
0x2003 => 'Pinpoint', # (GR III)
|
5895
|
+
0x2004 => 'Tracking',
|
5896
|
+
0x2005 => 'Continuous', # (GR III)
|
5897
|
+
0x2006 => 'Face Detection',
|
5898
|
+
0x2007 => 'Contrast-detect Select (S)',
|
5899
|
+
0x2008 => 'Contrast-detect Select (M)',
|
5900
|
+
0x2009 => 'Contrast-detect Select (L)',
|
5901
|
+
0x200a => 'Contrast-detect Zone Select', # (GR III)
|
5902
|
+
0x200b => 'Contrast-detect Spot',
|
5903
|
+
},
|
5904
|
+
},
|
5905
|
+
3 => {
|
5906
|
+
Name => 'NumAFPoints',
|
5907
|
+
RawConv => '$$self{NumAFPoints} = $val',
|
5908
|
+
},
|
5909
|
+
# the data for each AF point consists of 7 int16u values:
|
5910
|
+
# the frame width/height, the X/Y position of the focus area,
|
5911
|
+
# width/height of the focus area (0/0 for phase-detect modes),
|
5912
|
+
# followed by a flags word
|
5913
|
+
7 => { # (the same for all areas in my samples, so only extract the first)
|
5914
|
+
Name => 'AFFrameSize',
|
5915
|
+
Condition => '$$self{NumAFPoints} > 0',
|
5916
|
+
Format => 'int16u[2]',
|
5917
|
+
Writable => 0,
|
5918
|
+
PrintConv => '$val=~s/ /x/; $val',
|
5919
|
+
},
|
5920
|
+
7.1 => {
|
5921
|
+
Name => 'AFAreas',
|
5922
|
+
Format => 'int16u[7 * $val{3}]',
|
5923
|
+
Notes => q{
|
5924
|
+
X,Y position of each AF area, width, with "in-focus" for points in focus,
|
5925
|
+
"central" for the center of the selected area, or "peripheral" for points
|
5926
|
+
outside the selected area
|
5927
|
+
},
|
5928
|
+
Writable => 0,
|
5929
|
+
List => 1, # (for documentation purposes only)
|
5930
|
+
PrintConv => \&AFAreasK3III,
|
5931
|
+
},
|
5932
|
+
11 => { # (the same for all areas in my samples, so only extract the first)
|
5933
|
+
Name => 'AFAreaSize',
|
5934
|
+
Condition => '$$self{NumAFPoints} > 0 and $$valPt !~ /^\0\0\0\0/',
|
5935
|
+
Notes => 'only for contrast-detect modes',
|
5936
|
+
Format => 'int16u[2]',
|
5937
|
+
Writable => 0,
|
5938
|
+
PrintConv => '$val=~s/ /x/; $val',
|
5939
|
+
},
|
5940
|
+
);
|
5941
|
+
|
5690
5942
|
# white balance RGGB levels (ref 28)
|
5691
5943
|
%Image::ExifTool::Pentax::WBLevels = (
|
5692
5944
|
%binaryDataAttrs,
|
@@ -5750,7 +6002,7 @@ my %binaryDataAttrs = (
|
|
5750
6002
|
},
|
5751
6003
|
);
|
5752
6004
|
|
5753
|
-
# lens information for
|
6005
|
+
# lens information for Pentax Q (ref PH)
|
5754
6006
|
# (306 bytes long, I wonder if this contains vignetting information too?)
|
5755
6007
|
%Image::ExifTool::Pentax::LensInfoQ = (
|
5756
6008
|
%binaryDataAttrs,
|
@@ -5824,6 +6076,14 @@ my %binaryDataAttrs = (
|
|
5824
6076
|
K-500. It is currently not known where the corresponding temperature
|
5825
6077
|
sensors are located in the camera.
|
5826
6078
|
},
|
6079
|
+
0x0a => { #KG
|
6080
|
+
Name => 'ShotNumber',
|
6081
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
6082
|
+
# The exact same method to detect this tag with a similar set of files
|
6083
|
+
# does not reveal anything for K-1. Is this only available for K-3-III ?
|
6084
|
+
# Internal representation starts at 0 for the 1st shot
|
6085
|
+
ValueConv => '$val+1',
|
6086
|
+
},
|
5827
6087
|
# (it would be nice to know where these temperature sensors are located,
|
5828
6088
|
# but since according to the manual the Slow Shutter Speed NR Auto mode
|
5829
6089
|
# is based on "internal temperature", my guess is that there must be
|
@@ -6461,9 +6721,9 @@ sub DecodeAFPoints($$$$;$)
|
|
6461
6721
|
}
|
6462
6722
|
|
6463
6723
|
#------------------------------------------------------------------------------
|
6464
|
-
# Print AF Point names
|
6724
|
+
# Print K-3III AF Point names (ref PH)
|
6465
6725
|
# Inputs: 0) value, 1) ExifTool ref, 2) optional value to match
|
6466
|
-
sub
|
6726
|
+
sub AFPointNamesK3III($$;$)
|
6467
6727
|
{
|
6468
6728
|
my @a = split ' ', $_[0];
|
6469
6729
|
my $match = $_[2];
|
@@ -6477,10 +6737,10 @@ sub AFPointsK3iii($$;$)
|
|
6477
6737
|
}
|
6478
6738
|
|
6479
6739
|
#------------------------------------------------------------------------------
|
6480
|
-
# Print AF point values
|
6740
|
+
# Print K-3III AF point values (ref PH)
|
6481
6741
|
# Inputs: 0) value, 1) ExifTool ref
|
6482
6742
|
# Notes: this is experimental and not well understood
|
6483
|
-
sub
|
6743
|
+
sub AFPointValuesK3III($$)
|
6484
6744
|
{
|
6485
6745
|
my @a = split ' ', shift;
|
6486
6746
|
my @vals;
|
@@ -6499,6 +6759,25 @@ sub AFPointValues($$)
|
|
6499
6759
|
return @vals ? join ',', sort @vals : '(none)';
|
6500
6760
|
}
|
6501
6761
|
|
6762
|
+
#------------------------------------------------------------------------------
|
6763
|
+
# Print K-3III AF point positions from tag 0x040c (ref KG)
|
6764
|
+
# Inputs: 0) raw value, 1) ExifTool ref
|
6765
|
+
sub AFAreasK3III($$)
|
6766
|
+
{
|
6767
|
+
my ($val, $et) = @_;
|
6768
|
+
return '(none)' unless $val;
|
6769
|
+
my @vals = split ' ', $val;
|
6770
|
+
# flags bits: [mask, value, description]
|
6771
|
+
my @flags = ([0x10,0x10,'central'],[0x08,0,'peripheral'],[0x04,0x04,'in-focus']);
|
6772
|
+
my ($i, @strs);
|
6773
|
+
for ($i=0; $i+7<=@vals; $i+=7) {
|
6774
|
+
my @a;
|
6775
|
+
($vals[$i+6] & $$_[0]) == $$_[1] and push @a, $$_[2] foreach @flags;
|
6776
|
+
push @strs, $vals[$i+2] . ',' . $vals[$i+3] . (@a ? '(' . join(',',@a) . ')' : '');
|
6777
|
+
}
|
6778
|
+
return \@strs;
|
6779
|
+
}
|
6780
|
+
|
6502
6781
|
#------------------------------------------------------------------------------
|
6503
6782
|
# Convert Pentax hex-based EV (modulo 8) to real number
|
6504
6783
|
# Inputs: 0) value to convert
|
@@ -49,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
49
49
|
use Image::ExifTool::Exif;
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
|
52
|
-
$VERSION = '3.
|
52
|
+
$VERSION = '3.19';
|
53
53
|
|
54
54
|
sub ProcessMOV($$;$);
|
55
55
|
sub ProcessKeys($$$);
|
@@ -2379,7 +2379,14 @@ my %userDefined = (
|
|
2379
2379
|
# saut - 4 bytes all zero (Samsung SM-N900T)
|
2380
2380
|
# smrd - string "TRUEBLUE" (Samsung SM-C101, etc)
|
2381
2381
|
# ---- Sigma ----
|
2382
|
-
SIGM => {
|
2382
|
+
SIGM => [{
|
2383
|
+
Name => 'SigmaEXIF',
|
2384
|
+
Condition => '$$valPt =~ /^(II\x2a\0|MM\0\x2a)/',
|
2385
|
+
SubDirectory => {
|
2386
|
+
TagTable => 'Image::ExifTool::Exif::Main',
|
2387
|
+
ProcessProc => \&Image::ExifTool::ProcessTIFF, # (because ProcessMOV is default)
|
2388
|
+
},
|
2389
|
+
},{
|
2383
2390
|
Name => 'PreviewImage',
|
2384
2391
|
# 32-byte header followed by preview image. Length at offset 6 in header
|
2385
2392
|
Condition => 'length($$valPt) > 0x20 and length($$valPt) == unpack("x6V",$$valPt) + 0x20',
|
@@ -2396,7 +2403,7 @@ my %userDefined = (
|
|
2396
2403
|
}
|
2397
2404
|
return $pt;
|
2398
2405
|
},
|
2399
|
-
},
|
2406
|
+
}],
|
2400
2407
|
# ---- TomTom Bandit Action Cam ----
|
2401
2408
|
TTMD => {
|
2402
2409
|
Name => 'TomTomMetaData',
|
@@ -2937,7 +2944,7 @@ my %userDefined = (
|
|
2937
2944
|
Writable => 'int8u',
|
2938
2945
|
Protected => 1,
|
2939
2946
|
PrintConv => {
|
2940
|
-
0 => 'Horizontal (
|
2947
|
+
0 => 'Horizontal (normal)',
|
2941
2948
|
1 => 'Rotate 270 CW',
|
2942
2949
|
2 => 'Rotate 180',
|
2943
2950
|
3 => 'Rotate 90 CW',
|
@@ -802,7 +802,8 @@ numerical, and generated automatically otherwise.
|
|
802
802
|
Shift : [Writable tags only] Specifies type of shift to apply if this
|
803
803
|
value may be shifted. Set to 'Time' for shifting date/time
|
804
804
|
tags, or '0' to prevent tag from being shifted or
|
805
|
-
conditionally deleted.
|
805
|
+
conditionally deleted. May not be used for Writable Composite
|
806
|
+
tags.
|
806
807
|
|
807
808
|
Writable : Indicates this tag can be written (or not written if Writable
|
808
809
|
is set to zero), and for EXIF and QuickTime tables gives
|