exiftool-vendored.pl 12.40.0 → 12.43.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 +71 -6
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +2 -2
- package/bin/arg_files/exif2xmp.args +5 -0
- package/bin/arg_files/xmp2exif.args +6 -0
- package/bin/exiftool +54 -22
- package/bin/lib/Image/ExifTool/Apple.pm +11 -2
- package/bin/lib/Image/ExifTool/Canon.pm +45 -22
- package/bin/lib/Image/ExifTool/DJI.pm +60 -1
- package/bin/lib/Image/ExifTool/DNG.pm +8 -2
- package/bin/lib/Image/ExifTool/DarwinCore.pm +12 -1
- package/bin/lib/Image/ExifTool/Exif.pm +11 -2
- package/bin/lib/Image/ExifTool/FlashPix.pm +14 -1
- package/bin/lib/Image/ExifTool/FujiFilm.pm +21 -2
- package/bin/lib/Image/ExifTool/Geotag.pm +24 -4
- package/bin/lib/Image/ExifTool/ICC_Profile.pm +10 -8
- package/bin/lib/Image/ExifTool/ID3.pm +5 -5
- package/bin/lib/Image/ExifTool/LNK.pm +5 -2
- package/bin/lib/Image/ExifTool/MacOS.pm +9 -9
- package/bin/lib/Image/ExifTool/MakerNotes.pm +17 -1
- package/bin/lib/Image/ExifTool/Nikon.pm +21 -6
- package/bin/lib/Image/ExifTool/NikonCustom.pm +4 -1
- package/bin/lib/Image/ExifTool/Olympus.pm +22 -2
- package/bin/lib/Image/ExifTool/PDF.pm +2 -1
- package/bin/lib/Image/ExifTool/Panasonic.pm +10 -1
- package/bin/lib/Image/ExifTool/Parrot.pm +1 -0
- package/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +6 -5
- package/bin/lib/Image/ExifTool/QuickTime.pm +1 -1
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +40 -8
- package/bin/lib/Image/ExifTool/README +5 -1
- package/bin/lib/Image/ExifTool/Samsung.pm +233 -2
- package/bin/lib/Image/ExifTool/Shortcuts.pm +3 -1
- package/bin/lib/Image/ExifTool/Sony.pm +35 -31
- package/bin/lib/Image/ExifTool/TagLookup.pm +2510 -2479
- package/bin/lib/Image/ExifTool/TagNames.pod +137 -85
- package/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +2 -2
- package/bin/lib/Image/ExifTool/Writer.pl +2 -1
- package/bin/lib/Image/ExifTool.pm +40 -16
- package/bin/lib/Image/ExifTool.pod +13 -4
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +4 -4
- package/package.json +14 -3
|
@@ -21,7 +21,7 @@ use vars qw($VERSION $AUTOLOAD $lastFetched);
|
|
|
21
21
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
22
22
|
require Exporter;
|
|
23
23
|
|
|
24
|
-
$VERSION = '1.
|
|
24
|
+
$VERSION = '1.55';
|
|
25
25
|
|
|
26
26
|
sub FetchObject($$$$);
|
|
27
27
|
sub ExtractObject($$;$$);
|
|
@@ -2276,6 +2276,7 @@ XRef:
|
|
|
2276
2276
|
# load XRef stream in hybrid file if it exists
|
|
2277
2277
|
push @xrefOffsets, $$mainDict{XRefStm}, 'XRefStm' if $$mainDict{XRefStm};
|
|
2278
2278
|
$encrypt = $$mainDict{Encrypt} if $$mainDict{Encrypt};
|
|
2279
|
+
undef $encrypt if $encrypt and $encrypt eq 'null'; # (have seen "null")
|
|
2279
2280
|
if ($$mainDict{ID} and ref $$mainDict{ID} eq 'ARRAY') {
|
|
2280
2281
|
$id = ReadPDFValue($mainDict->{ID}->[0]);
|
|
2281
2282
|
}
|
|
@@ -37,7 +37,7 @@ use vars qw($VERSION %leicaLensTypes);
|
|
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
38
38
|
use Image::ExifTool::Exif;
|
|
39
39
|
|
|
40
|
-
$VERSION = '2.
|
|
40
|
+
$VERSION = '2.17';
|
|
41
41
|
|
|
42
42
|
sub ProcessLeicaLEIC($$$);
|
|
43
43
|
sub WhiteBalanceConv($;$$);
|
|
@@ -2472,6 +2472,15 @@ my %shootingMode = (
|
|
|
2472
2472
|
Start => 12,
|
|
2473
2473
|
},
|
|
2474
2474
|
},
|
|
2475
|
+
0x200080 => { # (GH6)
|
|
2476
|
+
Name => 'ExifData',
|
|
2477
|
+
Condition => '$$valPt =~ /^\xff\xd8\xff\xe1..Exif\0\0/s',
|
|
2478
|
+
SubDirectory => {
|
|
2479
|
+
TagTable => 'Image::ExifTool::Exif::Main',
|
|
2480
|
+
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
|
2481
|
+
Start => 12,
|
|
2482
|
+
},
|
|
2483
|
+
},
|
|
2475
2484
|
);
|
|
2476
2485
|
|
|
2477
2486
|
# Panasonic Composite tags
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
# Revisions: 2019-10-23 - P. Harvey Created
|
|
7
7
|
#
|
|
8
8
|
# References: 1) https://developer.parrot.com/docs/pdraw/metadata.html
|
|
9
|
+
# --> changed to https://developer.parrot.com/docs/pdraw/video-metadata.html
|
|
9
10
|
#------------------------------------------------------------------------------
|
|
10
11
|
|
|
11
12
|
package Image::ExifTool::Parrot;
|
|
@@ -171,7 +171,7 @@ sub DecodeAFPoints($$$$;$);
|
|
|
171
171
|
'3 255.4' => 'Sigma DF EX Aspherical 28-70mm F2.8', #12
|
|
172
172
|
'3 255.5' => 'Sigma AF Tele 400mm F5.6 Multi-coated', #JD
|
|
173
173
|
'3 255.6' => 'Sigma 24-60mm F2.8 EX DG', #PH
|
|
174
|
-
'3 255.7' => 'Sigma 70-300mm F4-5.6 Macro', #JD
|
|
174
|
+
'3 255.7' => 'Sigma 70-300mm F4-5.6 Macro', #JD (also DG Macro, ref 27)
|
|
175
175
|
'3 255.8' => 'Sigma 55-200mm F4-5.6 DC', #JD
|
|
176
176
|
'3 255.9' => 'Sigma 18-50mm F2.8 EX DC', #JD (also Macro version - PH)
|
|
177
177
|
'4 1' => 'smc PENTAX-FA SOFT 28mm F2.8',
|
|
@@ -248,11 +248,12 @@ my %unicodeString = (
|
|
|
248
248
|
Protected => 1,
|
|
249
249
|
Notes => q{
|
|
250
250
|
this tag indicates provides a way for XMP-aware applications to indicate
|
|
251
|
-
that the XMP is synchronized with the IPTC.
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
251
|
+
that the XMP is synchronized with the IPTC. The MWG recommendation is to
|
|
252
|
+
ignore the XMP if IPTCDigest exists and doesn't match the CurrentIPTCDigest.
|
|
253
|
+
When writing, special values of "new" and "old" represent the digests of the
|
|
254
|
+
IPTC from the edited and original files respectively, and are undefined if
|
|
255
|
+
the IPTC does not exist in the respective file. Set this to "new" as an
|
|
256
|
+
indication that the XMP is synchronized with the IPTC
|
|
256
257
|
},
|
|
257
258
|
# also note the 'new' feature requires that the IPTC comes before this tag is written
|
|
258
259
|
ValueConv => 'unpack("H*", $val)',
|
|
@@ -2232,7 +2232,7 @@ my %eeBox2 = (
|
|
|
2232
2232
|
# 4 ? - "1e 00"
|
|
2233
2233
|
# 6 int16u - record length in bytes
|
|
2234
2234
|
# 8 ? - "23 01 00 00 00 00 00 00"
|
|
2235
|
-
# 16 - start of records (each record ends in an int64u timestamp in ns)
|
|
2235
|
+
# 16 - start of records (each record ends in an int64u timestamp "ts" in ns)
|
|
2236
2236
|
# RDTA - float[4],ts: "-0.31289672 -0.2245330 11.303817 0 775.780"
|
|
2237
2237
|
# RDTB - float[4],ts: "-0.04841613 -0.2166595 0.0724792 0 775.780"
|
|
2238
2238
|
# RDTC - float[4],ts: "27.60925 -27.10037 -13.27285 0 775.829"
|
|
@@ -80,7 +80,7 @@ my %processByMetaFormat = (
|
|
|
80
80
|
|
|
81
81
|
# data lengths for each INSV record type
|
|
82
82
|
my %insvDataLen = (
|
|
83
|
-
0x300 =>
|
|
83
|
+
0x300 => 0, # accelerometer (could be either 20 or 56 bytes)
|
|
84
84
|
0x400 => 16, # exposure (ref 6)
|
|
85
85
|
0x600 => 8, # timestamps (ref 6)
|
|
86
86
|
0x700 => 53, # GPS
|
|
@@ -1144,13 +1144,13 @@ sub ProcessSamples($)
|
|
|
1144
1144
|
}
|
|
1145
1145
|
@$size < @$start + $samplesPerChunk and $et->WarnOnce('Sample size error'), last;
|
|
1146
1146
|
my $sampleStart = $chunkStart;
|
|
1147
|
-
|
|
1147
|
+
Sample: for ($i=0; ; ) {
|
|
1148
1148
|
push @$start, $sampleStart;
|
|
1149
1149
|
if (defined $time) {
|
|
1150
1150
|
until ($timeCount) {
|
|
1151
1151
|
if (@$stts < 2) {
|
|
1152
1152
|
undef $time;
|
|
1153
|
-
last;
|
|
1153
|
+
last Sample;
|
|
1154
1154
|
}
|
|
1155
1155
|
$timeCount = shift @$stts;
|
|
1156
1156
|
$timeDelta = shift @$stts;
|
|
@@ -2621,8 +2621,33 @@ sub ProcessInsta360($;$)
|
|
|
2621
2621
|
if ($verbose) {
|
|
2622
2622
|
$et->VPrint(0, sprintf("Insta360 Record 0x%x (offset 0x%x, %d bytes):\n", $id, $fileEnd + $epos, $len));
|
|
2623
2623
|
}
|
|
2624
|
+
# there are 2 types of record 0x300:
|
|
2625
|
+
# 1. 56 byte records
|
|
2626
|
+
# 0000: 4a f7 02 00 00 00 00 00 00 00 00 00 00 1e e7 3f [J..............?]
|
|
2627
|
+
# 0010: 00 00 00 00 00 b2 ef bf 00 00 00 00 00 70 c1 bf [.............p..]
|
|
2628
|
+
# 0020: 00 00 00 e0 91 5c 8c bf 00 00 00 20 8f ff 87 bf [.....\..... ....]
|
|
2629
|
+
# 0030: 00 00 00 00 88 7f c9 bf
|
|
2630
|
+
# 2. 20 byte records
|
|
2631
|
+
# 0000: c1 d8 d9 0b 00 00 00 00 f5 83 14 80 df 7f fe 7f [................]
|
|
2632
|
+
# 0010: fe 7f 01 80
|
|
2633
|
+
if ($id == 0x300) {
|
|
2634
|
+
if ($len % 20 and not $len % 56) {
|
|
2635
|
+
$dlen = 56;
|
|
2636
|
+
} elsif ($len % 56 and not $len % 20) {
|
|
2637
|
+
$dlen = 20;
|
|
2638
|
+
} else {
|
|
2639
|
+
if ($raf->Read($buff, 20) == 20) {
|
|
2640
|
+
if (substr($buff, 16, 3) eq "\0\0\0") {
|
|
2641
|
+
$dlen = 56;
|
|
2642
|
+
} else {
|
|
2643
|
+
$dlen = 20;
|
|
2644
|
+
}
|
|
2645
|
+
}
|
|
2646
|
+
$raf->Seek($epos, 2) or last;
|
|
2647
|
+
}
|
|
2648
|
+
}
|
|
2624
2649
|
# limit the number of records we read if necessary
|
|
2625
|
-
if ($insvLimit{$id} and $len > $insvLimit{$id}[1] * $dlen and
|
|
2650
|
+
if ($dlen and $insvLimit{$id} and $len > $insvLimit{$id}[1] * $dlen and
|
|
2626
2651
|
$et->Warn("Insta360 $insvLimit{$id}[0] data is huge. Processing only the first $insvLimit{$id}[1] records",2))
|
|
2627
2652
|
{
|
|
2628
2653
|
$len = $insvLimit{$id}[1] * $dlen;
|
|
@@ -2630,11 +2655,18 @@ sub ProcessInsta360($;$)
|
|
|
2630
2655
|
$raf->Read($buff, $len) == $len or last;
|
|
2631
2656
|
$et->VerboseDump(\$buff) if $verbose > 2;
|
|
2632
2657
|
if ($dlen) {
|
|
2633
|
-
$len % $dlen
|
|
2634
|
-
|
|
2658
|
+
if ($len % $dlen) {
|
|
2659
|
+
$et->Warn(sprintf('Unexpected Insta360 record 0x%x length',$id));
|
|
2660
|
+
} elsif ($id == 0x300) {
|
|
2635
2661
|
for ($p=0; $p<$len; $p+=$dlen) {
|
|
2636
2662
|
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
|
2637
|
-
my @a
|
|
2663
|
+
my @a;
|
|
2664
|
+
if ($dlen == 56) {
|
|
2665
|
+
@a = map { GetDouble(\$buff, $p + 8 * $_) } 1..6;
|
|
2666
|
+
} else {
|
|
2667
|
+
@a = unpack("x${p}x8v6", $buff);
|
|
2668
|
+
map { $_ = ($_ - 0x8000) / 1000 } @a;
|
|
2669
|
+
}
|
|
2638
2670
|
$et->HandleTag($tagTbl, TimeCode => sprintf('%.3f', Get64u(\$buff, $p) / 1000));
|
|
2639
2671
|
$et->HandleTag($tagTbl, Accelerometer => "@a[0..2]"); # (NC)
|
|
2640
2672
|
$et->HandleTag($tagTbl, AngularVelocity => "@a[3..5]"); # (NC)
|
|
@@ -2668,7 +2700,7 @@ sub ProcessInsta360($;$)
|
|
|
2668
2700
|
$a[$_] = GetDouble(\$a[$_], 0) foreach 4,6,8,9,10;
|
|
2669
2701
|
$a[4] = -abs($a[4]) if $a[5] eq 'S'; # (abs just in case it was already signed)
|
|
2670
2702
|
$a[6] = -abs($a[6]) if $a[7] ne 'E';
|
|
2671
|
-
$et->HandleTag($tagTbl,
|
|
2703
|
+
$et->HandleTag($tagTbl, GPSDateTifme => Image::ExifTool::ConvertUnixTime($a[0]) . 'Z');
|
|
2672
2704
|
$et->HandleTag($tagTbl, GPSLatitude => $a[4]);
|
|
2673
2705
|
$et->HandleTag($tagTbl, GPSLongitude => $a[6]);
|
|
2674
2706
|
$et->HandleTag($tagTbl, GPSSpeed => $a[8] * $mpsToKph);
|
|
@@ -531,7 +531,8 @@ numerical, and generated automatically otherwise.
|
|
|
531
531
|
SubIFD's where the PutFirst flag is valid.
|
|
532
532
|
|
|
533
533
|
'Unknown' - this is an unknown tag (only extracted when the
|
|
534
|
-
Unknown option is set).
|
|
534
|
+
Unknown option is set). This is set to 2 for Unknown tags in
|
|
535
|
+
binary tables (extracted when Unknown is 2).
|
|
535
536
|
|
|
536
537
|
'WriteNothing' - flag indicating that nothing is actually
|
|
537
538
|
written when this tag is set. It is a fake writable tag that
|
|
@@ -975,6 +976,9 @@ numerical, and generated automatically otherwise.
|
|
|
975
976
|
alternate language tags (eg. 'fr'). Only used with formats
|
|
976
977
|
which support alternate languages (eg. XMP, MIE, etc).
|
|
977
978
|
|
|
979
|
+
AddedUnknown : [reserved] Used internally to mark Unknown tags that were
|
|
980
|
+
added to the table at run time.
|
|
981
|
+
|
|
978
982
|
SubDirectory { If it exists, this specifies the start of a new subdirectory.
|
|
979
983
|
It contains a collection of variables which specify the type
|
|
980
984
|
and location of the subdirectory. Note that ValueConv and
|
|
@@ -22,7 +22,7 @@ use vars qw($VERSION %samsungLensTypes);
|
|
|
22
22
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
23
23
|
use Image::ExifTool::Exif;
|
|
24
24
|
|
|
25
|
-
$VERSION = '1.
|
|
25
|
+
$VERSION = '1.52';
|
|
26
26
|
|
|
27
27
|
sub WriteSTMN($$$);
|
|
28
28
|
sub ProcessINFO($$$);
|
|
@@ -1000,7 +1000,238 @@ my %formatMinMax = (
|
|
|
1000
1000
|
'0x0a30' => { Name => 'EmbeddedVideoFile', Groups => { 2 => 'Video' }, Binary => 1 }, #forum7161
|
|
1001
1001
|
# 0x0aa1-name - seen 'MCC_Data'
|
|
1002
1002
|
# 0x0aa1 - seen '204','222','234','302','429'
|
|
1003
|
-
'0x0aa1' =>
|
|
1003
|
+
'0x0aa1' => {
|
|
1004
|
+
Name => 'MCCData',
|
|
1005
|
+
Groups => { 2 => 'Location' },
|
|
1006
|
+
PrintConv => {
|
|
1007
|
+
202 => 'Greece',
|
|
1008
|
+
204 => 'Netherlands',
|
|
1009
|
+
206 => 'Belgium',
|
|
1010
|
+
208 => 'France',
|
|
1011
|
+
212 => 'Monaco',
|
|
1012
|
+
213 => 'Andorra',
|
|
1013
|
+
214 => 'Spain',
|
|
1014
|
+
216 => 'Hungary',
|
|
1015
|
+
218 => 'Bosnia & Herzegov.',
|
|
1016
|
+
219 => 'Croatia',
|
|
1017
|
+
220 => 'Serbia',
|
|
1018
|
+
221 => 'Kosovo',
|
|
1019
|
+
222 => 'Italy',
|
|
1020
|
+
226 => 'Romania',
|
|
1021
|
+
228 => 'Switzerland',
|
|
1022
|
+
230 => 'Czech Rep.',
|
|
1023
|
+
231 => 'Slovakia',
|
|
1024
|
+
232 => 'Austria',
|
|
1025
|
+
234 => 'United Kingdom',
|
|
1026
|
+
235 => 'United Kingdom',
|
|
1027
|
+
238 => 'Denmark',
|
|
1028
|
+
240 => 'Sweden',
|
|
1029
|
+
242 => 'Norway',
|
|
1030
|
+
244 => 'Finland',
|
|
1031
|
+
246 => 'Lithuania',
|
|
1032
|
+
247 => 'Latvia',
|
|
1033
|
+
248 => 'Estonia',
|
|
1034
|
+
250 => 'Russian Federation',
|
|
1035
|
+
255 => 'Ukraine',
|
|
1036
|
+
257 => 'Belarus',
|
|
1037
|
+
259 => 'Moldova',
|
|
1038
|
+
260 => 'Poland',
|
|
1039
|
+
262 => 'Germany',
|
|
1040
|
+
266 => 'Gibraltar',
|
|
1041
|
+
268 => 'Portugal',
|
|
1042
|
+
270 => 'Luxembourg',
|
|
1043
|
+
272 => 'Ireland',
|
|
1044
|
+
274 => 'Iceland',
|
|
1045
|
+
276 => 'Albania',
|
|
1046
|
+
278 => 'Malta',
|
|
1047
|
+
280 => 'Cyprus',
|
|
1048
|
+
282 => 'Georgia',
|
|
1049
|
+
283 => 'Armenia',
|
|
1050
|
+
284 => 'Bulgaria',
|
|
1051
|
+
286 => 'Turkey',
|
|
1052
|
+
288 => 'Faroe Islands',
|
|
1053
|
+
289 => 'Abkhazia',
|
|
1054
|
+
290 => 'Greenland',
|
|
1055
|
+
292 => 'San Marino',
|
|
1056
|
+
293 => 'Slovenia',
|
|
1057
|
+
294 => 'Macedonia',
|
|
1058
|
+
295 => 'Liechtenstein',
|
|
1059
|
+
297 => 'Montenegro',
|
|
1060
|
+
302 => 'Canada',
|
|
1061
|
+
308 => 'St. Pierre & Miquelon',
|
|
1062
|
+
310 => 'United States / Guam',
|
|
1063
|
+
311 => 'United States / Guam',
|
|
1064
|
+
312 => 'United States',
|
|
1065
|
+
316 => 'United States',
|
|
1066
|
+
330 => 'Puerto Rico',
|
|
1067
|
+
334 => 'Mexico',
|
|
1068
|
+
338 => 'Jamaica',
|
|
1069
|
+
340 => 'French Guiana / Guadeloupe / Martinique',
|
|
1070
|
+
342 => 'Barbados',
|
|
1071
|
+
344 => 'Antigua and Barbuda',
|
|
1072
|
+
346 => 'Cayman Islands',
|
|
1073
|
+
348 => 'British Virgin Islands',
|
|
1074
|
+
350 => 'Bermuda',
|
|
1075
|
+
352 => 'Grenada',
|
|
1076
|
+
354 => 'Montserrat',
|
|
1077
|
+
356 => 'Saint Kitts and Nevis',
|
|
1078
|
+
358 => 'Saint Lucia',
|
|
1079
|
+
360 => 'St. Vincent & Gren.',
|
|
1080
|
+
362 => 'Bonaire, Sint Eustatius and Saba / Curacao / Netherlands Antilles',
|
|
1081
|
+
363 => 'Aruba',
|
|
1082
|
+
364 => 'Bahamas',
|
|
1083
|
+
365 => 'Anguilla',
|
|
1084
|
+
366 => 'Dominica',
|
|
1085
|
+
368 => 'Cuba',
|
|
1086
|
+
370 => 'Dominican Republic',
|
|
1087
|
+
372 => 'Haiti',
|
|
1088
|
+
374 => 'Trinidad and Tobago',
|
|
1089
|
+
376 => 'Turks and Caicos Islands / US Virgin Islands',
|
|
1090
|
+
400 => 'Azerbaijan',
|
|
1091
|
+
401 => 'Kazakhstan',
|
|
1092
|
+
402 => 'Bhutan',
|
|
1093
|
+
404 => 'India',
|
|
1094
|
+
405 => 'India',
|
|
1095
|
+
410 => 'Pakistan',
|
|
1096
|
+
412 => 'Afghanistan',
|
|
1097
|
+
413 => 'Sri Lanka',
|
|
1098
|
+
414 => 'Myanmar (Burma)',
|
|
1099
|
+
415 => 'Lebanon',
|
|
1100
|
+
416 => 'Jordan',
|
|
1101
|
+
417 => 'Syrian Arab Republic',
|
|
1102
|
+
418 => 'Iraq',
|
|
1103
|
+
419 => 'Kuwait',
|
|
1104
|
+
420 => 'Saudi Arabia',
|
|
1105
|
+
421 => 'Yemen',
|
|
1106
|
+
422 => 'Oman',
|
|
1107
|
+
424 => 'United Arab Emirates',
|
|
1108
|
+
425 => 'Israel / Palestinian Territory',
|
|
1109
|
+
426 => 'Bahrain',
|
|
1110
|
+
427 => 'Qatar',
|
|
1111
|
+
428 => 'Mongolia',
|
|
1112
|
+
429 => 'Nepal',
|
|
1113
|
+
430 => 'United Arab Emirates',
|
|
1114
|
+
431 => 'United Arab Emirates',
|
|
1115
|
+
432 => 'Iran',
|
|
1116
|
+
434 => 'Uzbekistan',
|
|
1117
|
+
436 => 'Tajikistan',
|
|
1118
|
+
437 => 'Kyrgyzstan',
|
|
1119
|
+
438 => 'Turkmenistan',
|
|
1120
|
+
440 => 'Japan',
|
|
1121
|
+
441 => 'Japan',
|
|
1122
|
+
450 => 'South Korea',
|
|
1123
|
+
452 => 'Viet Nam',
|
|
1124
|
+
454 => 'Hongkong, China',
|
|
1125
|
+
455 => 'Macao, China',
|
|
1126
|
+
456 => 'Cambodia',
|
|
1127
|
+
457 => 'Laos P.D.R.',
|
|
1128
|
+
460 => 'China',
|
|
1129
|
+
466 => 'Taiwan',
|
|
1130
|
+
467 => 'North Korea',
|
|
1131
|
+
470 => 'Bangladesh',
|
|
1132
|
+
472 => 'Maldives',
|
|
1133
|
+
502 => 'Malaysia',
|
|
1134
|
+
505 => 'Australia',
|
|
1135
|
+
510 => 'Indonesia',
|
|
1136
|
+
514 => 'Timor-Leste',
|
|
1137
|
+
515 => 'Philippines',
|
|
1138
|
+
520 => 'Thailand',
|
|
1139
|
+
525 => 'Singapore',
|
|
1140
|
+
528 => 'Brunei Darussalam',
|
|
1141
|
+
530 => 'New Zealand',
|
|
1142
|
+
537 => 'Papua New Guinea',
|
|
1143
|
+
539 => 'Tonga',
|
|
1144
|
+
540 => 'Solomon Islands',
|
|
1145
|
+
541 => 'Vanuatu',
|
|
1146
|
+
542 => 'Fiji',
|
|
1147
|
+
544 => 'American Samoa',
|
|
1148
|
+
545 => 'Kiribati',
|
|
1149
|
+
546 => 'New Caledonia',
|
|
1150
|
+
547 => 'French Polynesia',
|
|
1151
|
+
548 => 'Cook Islands',
|
|
1152
|
+
549 => 'Samoa',
|
|
1153
|
+
550 => 'Micronesia',
|
|
1154
|
+
552 => 'Palau',
|
|
1155
|
+
553 => 'Tuvalu',
|
|
1156
|
+
555 => 'Niue',
|
|
1157
|
+
602 => 'Egypt',
|
|
1158
|
+
603 => 'Algeria',
|
|
1159
|
+
604 => 'Morocco',
|
|
1160
|
+
605 => 'Tunisia',
|
|
1161
|
+
606 => 'Libya',
|
|
1162
|
+
607 => 'Gambia',
|
|
1163
|
+
608 => 'Senegal',
|
|
1164
|
+
609 => 'Mauritania',
|
|
1165
|
+
610 => 'Mali',
|
|
1166
|
+
611 => 'Guinea',
|
|
1167
|
+
612 => 'Ivory Coast',
|
|
1168
|
+
613 => 'Burkina Faso',
|
|
1169
|
+
614 => 'Niger',
|
|
1170
|
+
615 => 'Togo',
|
|
1171
|
+
616 => 'Benin',
|
|
1172
|
+
617 => 'Mauritius',
|
|
1173
|
+
618 => 'Liberia',
|
|
1174
|
+
619 => 'Sierra Leone',
|
|
1175
|
+
620 => 'Ghana',
|
|
1176
|
+
621 => 'Nigeria',
|
|
1177
|
+
622 => 'Chad',
|
|
1178
|
+
623 => 'Central African Rep.',
|
|
1179
|
+
624 => 'Cameroon',
|
|
1180
|
+
625 => 'Cape Verde',
|
|
1181
|
+
626 => 'Sao Tome & Principe',
|
|
1182
|
+
627 => 'Equatorial Guinea',
|
|
1183
|
+
628 => 'Gabon',
|
|
1184
|
+
629 => 'Congo, Republic',
|
|
1185
|
+
630 => 'Congo, Dem. Rep.',
|
|
1186
|
+
631 => 'Angola',
|
|
1187
|
+
632 => 'Guinea-Bissau',
|
|
1188
|
+
633 => 'Seychelles',
|
|
1189
|
+
634 => 'Sudan',
|
|
1190
|
+
635 => 'Rwanda',
|
|
1191
|
+
636 => 'Ethiopia',
|
|
1192
|
+
637 => 'Somalia',
|
|
1193
|
+
638 => 'Djibouti',
|
|
1194
|
+
639 => 'Kenya',
|
|
1195
|
+
640 => 'Tanzania',
|
|
1196
|
+
641 => 'Uganda',
|
|
1197
|
+
642 => 'Burundi',
|
|
1198
|
+
643 => 'Mozambique',
|
|
1199
|
+
645 => 'Zambia',
|
|
1200
|
+
646 => 'Madagascar',
|
|
1201
|
+
647 => 'Reunion',
|
|
1202
|
+
648 => 'Zimbabwe',
|
|
1203
|
+
649 => 'Namibia',
|
|
1204
|
+
650 => 'Malawi',
|
|
1205
|
+
651 => 'Lesotho',
|
|
1206
|
+
652 => 'Botswana',
|
|
1207
|
+
653 => 'Swaziland',
|
|
1208
|
+
654 => 'Comoros',
|
|
1209
|
+
655 => 'South Africa',
|
|
1210
|
+
657 => 'Eritrea',
|
|
1211
|
+
659 => 'South Sudan',
|
|
1212
|
+
702 => 'Belize',
|
|
1213
|
+
704 => 'Guatemala',
|
|
1214
|
+
706 => 'El Salvador',
|
|
1215
|
+
708 => 'Honduras',
|
|
1216
|
+
710 => 'Nicaragua',
|
|
1217
|
+
712 => 'Costa Rica',
|
|
1218
|
+
714 => 'Panama',
|
|
1219
|
+
716 => 'Peru',
|
|
1220
|
+
722 => 'Argentina Republic',
|
|
1221
|
+
724 => 'Brazil',
|
|
1222
|
+
730 => 'Chile',
|
|
1223
|
+
732 => 'Colombia',
|
|
1224
|
+
734 => 'Venezuela',
|
|
1225
|
+
736 => 'Bolivia',
|
|
1226
|
+
738 => 'Guyana',
|
|
1227
|
+
740 => 'Ecuador',
|
|
1228
|
+
744 => 'Paraguay',
|
|
1229
|
+
746 => 'Suriname',
|
|
1230
|
+
748 => 'Uruguay',
|
|
1231
|
+
750 => 'Falkland Islands (Malvinas)',
|
|
1232
|
+
901 => 'International Networks / Satellite Networks',
|
|
1233
|
+
},
|
|
1234
|
+
},
|
|
1004
1235
|
# 0x0ab0-name - seen 'DualShot_Meta_Info'
|
|
1005
1236
|
'0x0ab1-name' => {
|
|
1006
1237
|
Name => 'DepthMapName',
|
|
@@ -19,7 +19,7 @@ package Image::ExifTool::Shortcuts;
|
|
|
19
19
|
use strict;
|
|
20
20
|
use vars qw($VERSION);
|
|
21
21
|
|
|
22
|
-
$VERSION = '1.
|
|
22
|
+
$VERSION = '1.67';
|
|
23
23
|
|
|
24
24
|
# this is a special table used to define command-line shortcuts
|
|
25
25
|
# (documentation Notes may be added for these via %shortcutNotes in BuildTagLookup.pm)
|
|
@@ -118,6 +118,7 @@ $VERSION = '1.65';
|
|
|
118
118
|
'MakerNoteCasio',
|
|
119
119
|
'MakerNoteCasio2',
|
|
120
120
|
'MakerNoteDJI',
|
|
121
|
+
'MakerNoteDJIInfo',
|
|
121
122
|
'MakerNoteFLIR',
|
|
122
123
|
'MakerNoteFujiFilm',
|
|
123
124
|
'MakerNoteGE',
|
|
@@ -158,6 +159,7 @@ $VERSION = '1.65';
|
|
|
158
159
|
'MakerNoteNintendo',
|
|
159
160
|
'MakerNoteOlympus',
|
|
160
161
|
'MakerNoteOlympus2',
|
|
162
|
+
'MakerNoteOlympus3',
|
|
161
163
|
'MakerNoteLeica',
|
|
162
164
|
'MakerNoteLeica2',
|
|
163
165
|
'MakerNoteLeica3',
|
|
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
34
34
|
use Image::ExifTool::Exif;
|
|
35
35
|
use Image::ExifTool::Minolta;
|
|
36
36
|
|
|
37
|
-
$VERSION = '3.
|
|
37
|
+
$VERSION = '3.50';
|
|
38
38
|
|
|
39
39
|
sub ProcessSRF($$$);
|
|
40
40
|
sub ProcessSR2($$$);
|
|
@@ -244,7 +244,8 @@ sub PrintInvLensSpec($;$$);
|
|
|
244
244
|
50529 => 'Sigma 90mm F2.8 DG DN | C', #JR (021)
|
|
245
245
|
50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
|
|
246
246
|
50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
|
|
247
|
-
|
|
247
|
+
50532 => 'Sigma 20mm F2 DG DN | C', #JR (022)
|
|
248
|
+
|
|
248
249
|
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
|
|
249
250
|
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
|
|
250
251
|
50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
|
|
@@ -278,6 +279,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
278
279
|
51515 => 'Samyang AF 12mm F2.0', #JR
|
|
279
280
|
51516 => 'Samyang AF 24-70mm F2.8', #JR
|
|
280
281
|
51517 => 'Samyang AF 50mm F1.4 II', #JR
|
|
282
|
+
51518 => 'Samyang AF 135mm F1.8', #JR
|
|
281
283
|
);
|
|
282
284
|
|
|
283
285
|
# ExposureProgram values (ref PH, mainly decoded from A200)
|
|
@@ -1790,7 +1792,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
1790
1792
|
# 15 0 35 2 2 ILCA-68/77M2, ILCE-5000/5100/6000/7/7R/7S/7M2/QX1, DSC-HX60V/HX350/HX400V/QX30/RX10/RX100M3/WX220/WX350
|
|
1791
1793
|
# 16 0 85 2 2 DSC-HX80/HX90V/WX500
|
|
1792
1794
|
# 17 0 232 1 2 DSC-RX0/RX0M2/RX1RM2/RX10M2/RX10M3/RX10M4/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/HX99, ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, ILCA-99M2, ZV-1
|
|
1793
|
-
# 18 0 20 0 164 ILCE-7SM3
|
|
1795
|
+
# 18 0 20 0 164 ILCE-7SM3
|
|
1794
1796
|
# other values for Panorama images and several other models
|
|
1795
1797
|
0x9404 => [{
|
|
1796
1798
|
Name => 'Tag9404a',
|
|
@@ -8386,7 +8388,7 @@ my %isoSetting2010 = (
|
|
|
8386
8388
|
DATAMEMBER => [ 0x04 ],
|
|
8387
8389
|
0x04 => {
|
|
8388
8390
|
# seen values 0,2,3,18,19,32,49,50,83,130,132,148,213,229,255
|
|
8389
|
-
# CameraTemperature is valid for all values above except ==0 and >=130
|
|
8391
|
+
# CameraTemperature is valid for all values above except ==0 and >=130
|
|
8390
8392
|
Name => 'TempTest2',
|
|
8391
8393
|
DataMember => 'TempTest2',
|
|
8392
8394
|
Hidden => 1,
|
|
@@ -9935,20 +9937,22 @@ my %isoSetting2010 = (
|
|
|
9935
9937
|
WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
|
|
9936
9938
|
CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
|
|
9937
9939
|
GROUPS => { 0 => 'MakerNotes', 1 => 'SR2SubIFD', 2 => 'Camera' },
|
|
9940
|
+
WRITE_GROUP => 'SR2SubIFD',
|
|
9941
|
+
PERMANENT => 1,
|
|
9938
9942
|
SET_GROUP1 => 1, # set group1 name to directory name for all tags in table
|
|
9939
9943
|
NOTES => 'Tags in the encrypted SR2SubIFD',
|
|
9940
|
-
0x7300 => 'BlackLevel',
|
|
9941
|
-
0x7302 => 'WB_GRBGLevelsAuto', #IB (R1)
|
|
9942
|
-
0x7303 => 'WB_GRBGLevels', #1 (R1 "as shot", ref IB)
|
|
9943
|
-
0x7310 => 'BlackLevel', #IB (divide by 4)
|
|
9944
|
-
0x7312 => 'WB_RGGBLevelsAuto', #IB
|
|
9945
|
-
0x7313 => 'WB_RGGBLevels', #6
|
|
9946
|
-
0x7480 => 'WB_RGBLevelsDaylight', #IB (R1)
|
|
9947
|
-
0x7481 => 'WB_RGBLevelsCloudy', #IB (R1)
|
|
9948
|
-
0x7482 => 'WB_RGBLevelsTungsten', #IB (R1)
|
|
9949
|
-
0x7483 => 'WB_RGBLevelsFlash', #IB (R1)
|
|
9950
|
-
0x7484 => 'WB_RGBLevels4500K', #IB (R1)
|
|
9951
|
-
0x7486 => 'WB_RGBLevelsFluorescent', #IB (R1)
|
|
9944
|
+
0x7300 => { Name => 'BlackLevel', Writable => 'int16u', Count => 4, Protected => 1 },
|
|
9945
|
+
0x7302 => { Name => 'WB_GRBGLevelsAuto', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
|
9946
|
+
0x7303 => { Name => 'WB_GRBGLevels', Writable => 'int16s', Count => 4, Protected => 1 }, #1 (R1 "as shot", ref IB)
|
|
9947
|
+
0x7310 => { Name => 'BlackLevel', Writable => 'int16u', Count => 4, Protected => 1 }, #IB (divide by 4)
|
|
9948
|
+
0x7312 => { Name => 'WB_RGGBLevelsAuto', Writable => 'int16s', Count => 4, Protected => 1 }, #IB
|
|
9949
|
+
0x7313 => { Name => 'WB_RGGBLevels', Writable => 'int16s', Count => 4, Protected => 1 }, #6
|
|
9950
|
+
0x7480 => { Name => 'WB_RGBLevelsDaylight', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
|
9951
|
+
0x7481 => { Name => 'WB_RGBLevelsCloudy', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
|
9952
|
+
0x7482 => { Name => 'WB_RGBLevelsTungsten', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
|
9953
|
+
0x7483 => { Name => 'WB_RGBLevelsFlash', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
|
9954
|
+
0x7484 => { Name => 'WB_RGBLevels4500K', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
|
9955
|
+
0x7486 => { Name => 'WB_RGBLevelsFluorescent', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
|
9952
9956
|
0x74a0 => 'MaxApertureAtMaxFocal', #PH
|
|
9953
9957
|
0x74a1 => 'MaxApertureAtMinFocal', #PH
|
|
9954
9958
|
0x74a2 => { #IB (R1)
|
|
@@ -9970,21 +9974,21 @@ my %isoSetting2010 = (
|
|
|
9970
9974
|
},
|
|
9971
9975
|
},
|
|
9972
9976
|
0x7800 => 'ColorMatrix', #IB (divide by 1024)
|
|
9973
|
-
0x7820 => 'WB_RGBLevelsDaylight', #6 (or 5300K, ref IB)
|
|
9974
|
-
0x7821 => 'WB_RGBLevelsCloudy', #6 (or 6100K, ref IB)
|
|
9975
|
-
0x7822 => 'WB_RGBLevelsTungsten', #6
|
|
9976
|
-
0x7823 => 'WB_RGBLevelsFlash', #IB
|
|
9977
|
-
0x7824 => 'WB_RGBLevels4500K', #IB
|
|
9978
|
-
0x7825 => 'WB_RGBLevelsShade', #6 (or 7500K, ref IB)
|
|
9979
|
-
0x7826 => 'WB_RGBLevelsFluorescent', #6 (~4000K)
|
|
9980
|
-
0x7827 => 'WB_RGBLevelsFluorescentP1', #IB (~5000K)
|
|
9981
|
-
0x7828 => 'WB_RGBLevelsFluorescentP2', #IB (~6500K) (was Flash, ref 6)
|
|
9982
|
-
0x7829 => 'WB_RGBLevelsFluorescentM1', #IB (~3500K)
|
|
9983
|
-
0x782a => 'WB_RGBLevels8500K', #IB
|
|
9984
|
-
0x782b => 'WB_RGBLevels6000K', #IB
|
|
9985
|
-
0x782c => 'WB_RGBLevels3200K', #IB
|
|
9986
|
-
0x782d => 'WB_RGBLevels2500K', #IB
|
|
9987
|
-
0x787f => 'WhiteLevel', #IB (divide by 4)
|
|
9977
|
+
0x7820 => { Name => 'WB_RGBLevelsDaylight', Writable => 'int16s', Count => 3, Protected => 1 }, #6 (or 5300K, ref IB)
|
|
9978
|
+
0x7821 => { Name => 'WB_RGBLevelsCloudy', Writable => 'int16s', Count => 3, Protected => 1 }, #6 (or 6100K, ref IB)
|
|
9979
|
+
0x7822 => { Name => 'WB_RGBLevelsTungsten', Writable => 'int16s', Count => 3, Protected => 1 }, #6
|
|
9980
|
+
0x7823 => { Name => 'WB_RGBLevelsFlash', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
|
9981
|
+
0x7824 => { Name => 'WB_RGBLevels4500K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
|
9982
|
+
0x7825 => { Name => 'WB_RGBLevelsShade', Writable => 'int16s', Count => 3, Protected => 1 }, #6 (or 7500K, ref IB)
|
|
9983
|
+
0x7826 => { Name => 'WB_RGBLevelsFluorescent', Writable => 'int16s', Count => 3, Protected => 1 }, #6 (~4000K)
|
|
9984
|
+
0x7827 => { Name => 'WB_RGBLevelsFluorescentP1', Writable => 'int16s', Count => 3, Protected => 1 }, #IB (~5000K)
|
|
9985
|
+
0x7828 => { Name => 'WB_RGBLevelsFluorescentP2', Writable => 'int16s', Count => 3, Protected => 1 }, #IB (~6500K) (was Flash, ref 6)
|
|
9986
|
+
0x7829 => { Name => 'WB_RGBLevelsFluorescentM1', Writable => 'int16s', Count => 3, Protected => 1 }, #IB (~3500K)
|
|
9987
|
+
0x782a => { Name => 'WB_RGBLevels8500K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
|
9988
|
+
0x782b => { Name => 'WB_RGBLevels6000K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
|
9989
|
+
0x782c => { Name => 'WB_RGBLevels3200K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
|
9990
|
+
0x782d => { Name => 'WB_RGBLevels2500K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
|
9991
|
+
0x787f => { Name => 'WhiteLevel', Writable => 'int16u', Count => 3, Protected => 1 }, #IB (divide by 4)
|
|
9988
9992
|
0x797d => 'VignettingCorrParams', #forum7640
|
|
9989
9993
|
0x7980 => 'ChromaticAberrationCorrParams', #forum6509 (Sony A7 ARW)
|
|
9990
9994
|
0x7982 => 'DistortionCorrParams', #forum6509 (Sony A7 ARW)
|