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
@@ -395,7 +395,9 @@ numerical, and generated automatically otherwise.
|
|
395
395
|
be accessible.
|
396
396
|
|
397
397
|
'Hidden' - set to hide tag from the TagName documentation.
|
398
|
-
Also suppresses verbose output of a BinaryData tag.
|
398
|
+
Also suppresses verbose output of a BinaryData tag. The
|
399
|
+
RawConv of a Hidden tag should return undef so the tag value
|
400
|
+
is not seen by the user.
|
399
401
|
|
400
402
|
'IsComposite' - flag set for Composite tags
|
401
403
|
|
@@ -531,7 +533,8 @@ numerical, and generated automatically otherwise.
|
|
531
533
|
SubIFD's where the PutFirst flag is valid.
|
532
534
|
|
533
535
|
'Unknown' - this is an unknown tag (only extracted when the
|
534
|
-
Unknown option is set).
|
536
|
+
Unknown option is set). This is set to 2 for Unknown tags in
|
537
|
+
binary tables (extracted when Unknown is 2).
|
535
538
|
|
536
539
|
'WriteNothing' - flag indicating that nothing is actually
|
537
540
|
written when this tag is set. It is a fake writable tag that
|
@@ -717,7 +720,7 @@ numerical, and generated automatically otherwise.
|
|
717
720
|
condition exists, then a 'true' condition is assumed. The
|
718
721
|
expression may use $self to access the ExifTool object. The
|
719
722
|
first 128 bytes of the raw data value are accessible through
|
720
|
-
the reference $valPt for EXIF, Jpeg2000, QuickTime and
|
723
|
+
the reference $valPt for EXIF, Jpeg2000, QuickTime, FLAC and
|
721
724
|
BinaryData tags only (note that for BinaryData tags, the raw
|
722
725
|
data of $$valPt is always 'undef' type, and may not be used
|
723
726
|
when writing except for SubDirectory tags). EXIF tags (and
|
@@ -964,6 +967,10 @@ numerical, and generated automatically otherwise.
|
|
964
967
|
OtherLang : [reserved] Used internally by QuickTime module to store a list
|
965
968
|
of tag ID's for alternate-language tags based on this one.
|
966
969
|
|
970
|
+
ParentTagInfo : [reserved] Used internally to store a reference to the tag
|
971
|
+
information hash of the parent structure for flattened
|
972
|
+
structure tags.
|
973
|
+
|
967
974
|
RootTagInfo : [reserved] Used internally to store a reference to the tag
|
968
975
|
information hash of the top-level structure for flattened
|
969
976
|
structure tags.
|
@@ -975,6 +982,9 @@ numerical, and generated automatically otherwise.
|
|
975
982
|
alternate language tags (eg. 'fr'). Only used with formats
|
976
983
|
which support alternate languages (eg. XMP, MIE, etc).
|
977
984
|
|
985
|
+
AddedUnknown : [reserved] Used internally to mark Unknown tags that were
|
986
|
+
added to the table at run time.
|
987
|
+
|
978
988
|
SubDirectory { If it exists, this specifies the start of a new subdirectory.
|
979
989
|
It contains a collection of variables which specify the type
|
980
990
|
and location of the subdirectory. Note that ValueConv and
|
@@ -27,15 +27,16 @@
|
|
27
27
|
package Image::ExifTool::RIFF;
|
28
28
|
|
29
29
|
use strict;
|
30
|
-
use vars qw($VERSION);
|
30
|
+
use vars qw($VERSION $AUTOLOAD);
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
32
32
|
|
33
|
-
$VERSION = '1.
|
33
|
+
$VERSION = '1.61';
|
34
34
|
|
35
35
|
sub ConvertTimecode($);
|
36
36
|
sub ProcessSGLT($$$);
|
37
37
|
sub ProcessSLLT($$$);
|
38
38
|
sub ProcessLucas($$$);
|
39
|
+
sub WriteRIFF($$);
|
39
40
|
|
40
41
|
# recognized RIFF variants
|
41
42
|
my %riffType = (
|
@@ -340,6 +341,9 @@ my %code2charset = (
|
|
340
341
|
Large AVI videos may be a concatenation of two or more RIFF chunks. For
|
341
342
|
these files, information is extracted from subsequent RIFF chunks as
|
342
343
|
sub-documents, but the Duration is calculated for the full video.
|
344
|
+
|
345
|
+
ExifTool currently has the ability to write EXIF, XMP and ICC_Profile
|
346
|
+
metadata to WEBP images, but can't yet write to other RIFF-based formats.
|
343
347
|
},
|
344
348
|
# (not 100% sure that the concatenation technique mentioned above is valid - PH)
|
345
349
|
'fmt ' => {
|
@@ -544,7 +548,7 @@ my %code2charset = (
|
|
544
548
|
},
|
545
549
|
},{ # (WebP) - have also seen with "Exif\0\0" header - PH
|
546
550
|
Name => 'EXIF',
|
547
|
-
Condition => '$$valPt =~ /^Exif\0\0(II\x2a\0|MM\0\x2a)/',
|
551
|
+
Condition => '$$valPt =~ /^Exif\0\0(II\x2a\0|MM\0\x2a)/ and $self->Warn("Improper EXIF header",1)',
|
548
552
|
SubDirectory => {
|
549
553
|
TagTable => 'Image::ExifTool::Exif::Main',
|
550
554
|
ProcessProc => \&Image::ExifTool::ProcessTIFF,
|
@@ -636,6 +640,11 @@ my %code2charset = (
|
|
636
640
|
},
|
637
641
|
# gpsa - seen hex "01 20 00 00", same as QuickTime
|
638
642
|
# gsea - 16 bytes hex "04 08 02 00 20 02 00 00 1f 03 00 00 01 00 00 00"
|
643
|
+
|
644
|
+
acid => { # writen by Acidizer
|
645
|
+
Name => 'Acidizer',
|
646
|
+
SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Acidizer' },
|
647
|
+
},
|
639
648
|
);
|
640
649
|
|
641
650
|
# the maker notes used by some digital cameras
|
@@ -1249,6 +1258,7 @@ my %code2charset = (
|
|
1249
1258
|
Name => 'ImageWidth',
|
1250
1259
|
Format => 'int16u',
|
1251
1260
|
Mask => 0x3fff,
|
1261
|
+
Priority => 0,
|
1252
1262
|
},
|
1253
1263
|
6.1 => {
|
1254
1264
|
Name => 'HorizontalScale',
|
@@ -1259,6 +1269,7 @@ my %code2charset = (
|
|
1259
1269
|
Name => 'ImageHeight',
|
1260
1270
|
Format => 'int16u',
|
1261
1271
|
Mask => 0x3fff,
|
1272
|
+
Priority => 0,
|
1262
1273
|
},
|
1263
1274
|
8.1 => {
|
1264
1275
|
Name => 'VerticalScale',
|
@@ -1275,11 +1286,13 @@ my %code2charset = (
|
|
1275
1286
|
1 => {
|
1276
1287
|
Name => 'ImageWidth',
|
1277
1288
|
Format => 'int16u',
|
1289
|
+
Priority => 0,
|
1278
1290
|
ValueConv => '($val & 0x3fff) + 1',
|
1279
1291
|
},
|
1280
1292
|
2 => {
|
1281
1293
|
Name => 'ImageHeight',
|
1282
1294
|
Format => 'int32u',
|
1295
|
+
Priority => 0,
|
1283
1296
|
ValueConv => '(($val >> 6) & 0x3fff) + 1',
|
1284
1297
|
},
|
1285
1298
|
);
|
@@ -1290,6 +1303,19 @@ my %code2charset = (
|
|
1290
1303
|
GROUPS => { 2 => 'Image' },
|
1291
1304
|
NOTES => 'This chunk is found in extended WebP files.',
|
1292
1305
|
# 0 - bitmask: 2=ICC, 3=alpha, 4=EXIF, 5=XMP, 6=animation
|
1306
|
+
0 => {
|
1307
|
+
Name => 'WebP_Flags',
|
1308
|
+
Description => 'WebP Flags',
|
1309
|
+
Notes => 'flags used in Extended WebP images',
|
1310
|
+
Format => 'int32u',
|
1311
|
+
PrintConv => { BITMASK => {
|
1312
|
+
1 => 'Animation',
|
1313
|
+
2 => 'XMP',
|
1314
|
+
3 => 'EXIF',
|
1315
|
+
4 => 'Alpha',
|
1316
|
+
5 => 'ICC Profile',
|
1317
|
+
}},
|
1318
|
+
},
|
1293
1319
|
4 => {
|
1294
1320
|
Name => 'ImageWidth',
|
1295
1321
|
Format => 'int32u',
|
@@ -1420,6 +1446,54 @@ my %code2charset = (
|
|
1420
1446
|
},
|
1421
1447
|
);
|
1422
1448
|
|
1449
|
+
# Acidizer information (ref https://forums.cockos.com/showthread.php?t=227118)
|
1450
|
+
%Image::ExifTool::RIFF::Acidizer = (
|
1451
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
1452
|
+
GROUPS => { 2 => 'Audio' },
|
1453
|
+
0 => {
|
1454
|
+
Name => 'AcidizerFlags',
|
1455
|
+
Format => 'int32u',
|
1456
|
+
PrintConv => { BITMASK => {
|
1457
|
+
0 => 'One shot',
|
1458
|
+
1 => 'Root note set',
|
1459
|
+
2 => 'Stretch',
|
1460
|
+
3 => 'Disk-based',
|
1461
|
+
4 => 'High octave',
|
1462
|
+
}},
|
1463
|
+
},
|
1464
|
+
4 => {
|
1465
|
+
Name => 'RootNote',
|
1466
|
+
Format => 'int16u',
|
1467
|
+
PrintConv => {
|
1468
|
+
0x30 => 'C', 0x3c => 'High C',
|
1469
|
+
0x31 => 'C#', 0x3d => 'High C#',
|
1470
|
+
0x32 => 'D', 0x3e => 'High D',
|
1471
|
+
0x33 => 'D#', 0x3f => 'High D#',
|
1472
|
+
0x34 => 'E', 0x40 => 'High E',
|
1473
|
+
0x35 => 'F', 0x41 => 'High F',
|
1474
|
+
0x36 => 'F#', 0x42 => 'High F#',
|
1475
|
+
0x37 => 'G', 0x43 => 'High G',
|
1476
|
+
0x38 => 'G#', 0x44 => 'High G#',
|
1477
|
+
0x39 => 'A', 0x45 => 'High A',
|
1478
|
+
0x3a => 'A#', 0x46 => 'High A#',
|
1479
|
+
0x3b => 'B', 0x47 => 'High B',
|
1480
|
+
},
|
1481
|
+
},
|
1482
|
+
12 => {
|
1483
|
+
Name => 'Beats',
|
1484
|
+
Format => 'int32u',
|
1485
|
+
},
|
1486
|
+
16 => {
|
1487
|
+
Name => 'Meter',
|
1488
|
+
Format => 'int16u[2]',
|
1489
|
+
PrintConv => '$val =~ s/(\d+) (\d+)/$2\/$1/; $val', # denominator comes first, so swap them
|
1490
|
+
},
|
1491
|
+
20 => {
|
1492
|
+
Name => 'Tempo',
|
1493
|
+
Format => 'float',
|
1494
|
+
},
|
1495
|
+
);
|
1496
|
+
|
1423
1497
|
# RIFF composite tags
|
1424
1498
|
%Image::ExifTool::RIFF::Composite = (
|
1425
1499
|
Duration => {
|
@@ -1459,6 +1533,14 @@ my %code2charset = (
|
|
1459
1533
|
Image::ExifTool::AddCompositeTags('Image::ExifTool::RIFF');
|
1460
1534
|
|
1461
1535
|
|
1536
|
+
#------------------------------------------------------------------------------
|
1537
|
+
# AutoLoad our writer routines when necessary
|
1538
|
+
#
|
1539
|
+
sub AUTOLOAD
|
1540
|
+
{
|
1541
|
+
return Image::ExifTool::DoAutoLoad($AUTOLOAD, @_);
|
1542
|
+
}
|
1543
|
+
|
1462
1544
|
#------------------------------------------------------------------------------
|
1463
1545
|
# Convert RIFF date to EXIF format
|
1464
1546
|
my %monthNum = (
|
@@ -1642,7 +1724,7 @@ sub ProcessChunks($$$)
|
|
1642
1724
|
my $start = $$dirInfo{DirStart};
|
1643
1725
|
my $size = $$dirInfo{DirLen};
|
1644
1726
|
my $end = $start + $size;
|
1645
|
-
my $base = $$dirInfo{Base};
|
1727
|
+
my $base = $$dirInfo{Base} || 0;
|
1646
1728
|
my $verbose = $et->Options('Verbose');
|
1647
1729
|
my $unknown = $et->Options('Unknown');
|
1648
1730
|
my $charset = $et->Options('CharsetRIFF');
|
@@ -1896,6 +1978,7 @@ sub ProcessRIFF($$)
|
|
1896
1978
|
my ($buff, $buf2, $type, $mime, $err, $rf64);
|
1897
1979
|
my $verbose = $et->Options('Verbose');
|
1898
1980
|
my $unknown = $et->Options('Unknown');
|
1981
|
+
my $validate = $et->Options('Validate');
|
1899
1982
|
my $ee = $et->Options('ExtractEmbedded');
|
1900
1983
|
|
1901
1984
|
# verify this is a valid RIFF file
|
@@ -1917,6 +2000,8 @@ sub ProcessRIFF($$)
|
|
1917
2000
|
$$et{RIFFStreamType} = ''; # initialize stream type
|
1918
2001
|
$$et{RIFFStreamCodec} = []; # initialize codec array
|
1919
2002
|
SetByteOrder('II');
|
2003
|
+
my $riffEnd = Get32u(\$buff, 4) + 8;
|
2004
|
+
$riffEnd += $riffEnd & 0x01; # (account for padding)
|
1920
2005
|
my $tagTbl = GetTagTable('Image::ExifTool::RIFF::Main');
|
1921
2006
|
my $pos = 12;
|
1922
2007
|
#
|
@@ -1926,10 +2011,13 @@ sub ProcessRIFF($$)
|
|
1926
2011
|
my $num = $raf->Read($buff, 8);
|
1927
2012
|
if ($num < 8) {
|
1928
2013
|
$err = 1 if $num;
|
2014
|
+
$et->Warn('Incorrect RIFF chunk size' . " $pos vs. $riffEnd") if $validate and $pos != $riffEnd;
|
1929
2015
|
last;
|
1930
2016
|
}
|
1931
2017
|
$pos += 8;
|
1932
2018
|
my ($tag, $len) = unpack('a4V', $buff);
|
2019
|
+
# tweak WEBP type if this is an extended WebP
|
2020
|
+
$et->OverrideFileType('Extended WEBP',undef,'webp') if $tag eq 'VP8X' and $type eq 'WEBP';
|
1933
2021
|
# special case: construct new tag name from specific LIST type
|
1934
2022
|
if ($tag eq 'LIST') {
|
1935
2023
|
$raf->Read($buff, 4) == 4 or $err=1, last;
|
@@ -1949,7 +2037,6 @@ sub ProcessRIFF($$)
|
|
1949
2037
|
} else {
|
1950
2038
|
next;
|
1951
2039
|
}
|
1952
|
-
last;
|
1953
2040
|
}
|
1954
2041
|
# stop when we hit the audio data or AVI index or AVI movie data
|
1955
2042
|
# --> no more because Adobe Bridge stores XMP after this!!
|
@@ -1969,6 +2056,7 @@ sub ProcessRIFF($$)
|
|
1969
2056
|
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
1970
2057
|
}
|
1971
2058
|
my $tagInfo = $$tagTbl{$tag};
|
2059
|
+
# (in LIST_movi chunk: ##db = uncompressed DIB, ##dc = compressed DIB, ##wb = audio data)
|
1972
2060
|
if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF|\d{2}(db|dc|wb))$/)) {
|
1973
2061
|
$raf->Read($buff, $len2) == $len2 or $err=1, last;
|
1974
2062
|
my $setGroups;
|
@@ -1980,7 +2068,7 @@ sub ProcessRIFF($$)
|
|
1980
2068
|
DataPt => \$buff,
|
1981
2069
|
DataPos => 0, # (relative to Base)
|
1982
2070
|
Start => 0,
|
1983
|
-
Size => $
|
2071
|
+
Size => $len,
|
1984
2072
|
Base => $pos,
|
1985
2073
|
);
|
1986
2074
|
if ($setGroups) {
|
@@ -1989,10 +2077,14 @@ sub ProcessRIFF($$)
|
|
1989
2077
|
}
|
1990
2078
|
delete $$et{DOC_NUM} if $ee;
|
1991
2079
|
} elsif ($tag eq 'RIFF') {
|
2080
|
+
$et->Warn('Incorrect RIFF chunk size') if $validate and $pos - 8 != $riffEnd;
|
2081
|
+
$riffEnd += $len2 + 8;
|
1992
2082
|
# don't read into RIFF chunk (eg. concatenated video file)
|
1993
|
-
$raf->Read($buff, 4) == 4 or $err=1, last;
|
2083
|
+
$raf->Read($buff, 4) == 4 or $err=1, last; # (skip RIFF type word)
|
2084
|
+
$pos += 4;
|
1994
2085
|
# extract information from remaining file as an embedded file
|
1995
|
-
$$et{DOC_NUM} = ++$$et{DOC_COUNT}
|
2086
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
2087
|
+
next; # (must not increment $pos)
|
1996
2088
|
} elsif ($tag eq 'LIST_movi' and $ee) {
|
1997
2089
|
next; # parse into movi chunk
|
1998
2090
|
} else {
|
@@ -2000,7 +2092,12 @@ sub ProcessRIFF($$)
|
|
2000
2092
|
$et->Warn("Stopped parsing at large $tag chunk (LargeFileSupport not set)");
|
2001
2093
|
last;
|
2002
2094
|
}
|
2003
|
-
|
2095
|
+
if ($validate and $len2) {
|
2096
|
+
# (must actually try to read something after seeking to detect error)
|
2097
|
+
$raf->Seek($len2-1, 1) and $raf->Read($buff, 1) == 1 or $err = 1, last;
|
2098
|
+
} else {
|
2099
|
+
$raf->Seek($len2, 1) or $err=1, last;
|
2100
|
+
}
|
2004
2101
|
}
|
2005
2102
|
$pos += $len2;
|
2006
2103
|
}
|
@@ -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.53';
|
26
26
|
|
27
27
|
sub WriteSTMN($$$);
|
28
28
|
sub ProcessINFO($$$);
|
@@ -991,7 +991,7 @@ my %formatMinMax = (
|
|
991
991
|
'0x0a01' => { #forum7161
|
992
992
|
Name => 'TimeStamp',
|
993
993
|
Groups => { 2 => 'Time' },
|
994
|
-
ValueConv => 'ConvertUnixTime($val / 1e3, 1)',
|
994
|
+
ValueConv => 'ConvertUnixTime($val / 1e3, 1, 3)',
|
995
995
|
PrintConv => '$self->ConvertDateTime($val)',
|
996
996
|
},
|
997
997
|
'0x0a20-name' => 'DualCameraImageName', # ("FlipPhoto_002")
|
@@ -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.66';
|
|
118
118
|
'MakerNoteCasio',
|
119
119
|
'MakerNoteCasio2',
|
120
120
|
'MakerNoteDJI',
|
121
|
+
'MakerNoteDJIInfo',
|
121
122
|
'MakerNoteFLIR',
|
122
123
|
'MakerNoteFujiFilm',
|
123
124
|
'MakerNoteGE',
|
@@ -19,7 +19,7 @@ use strict;
|
|
19
19
|
use vars qw($VERSION %sigmaLensTypes);
|
20
20
|
use Image::ExifTool::Exif;
|
21
21
|
|
22
|
-
$VERSION = '1.
|
22
|
+
$VERSION = '1.32';
|
23
23
|
|
24
24
|
# sigma LensType lookup (ref IB)
|
25
25
|
%sigmaLensTypes = (
|
@@ -226,9 +226,35 @@ $VERSION = '1.31';
|
|
226
226
|
0x1008 => 'Sigma 50mm F2.8 Macro', #NJ (DP3 Quattro kit)
|
227
227
|
0x1009 => 'Sigma 14mm F4', #NJ (DP0 Quattro kit)
|
228
228
|
# L-mount lenses?:
|
229
|
+
0x4001 => 'Lumix S 24-105mm F4 Macro OIS (S-R24105)', #IB
|
230
|
+
0x4002 => 'Lumix S 70-200mm F4 OIS (S-R70200)', #IB
|
231
|
+
0x4003 => 'Lumix S 50mm F1.4 (S-X50)', #IB
|
232
|
+
0x4006 => 'Lumix S 24-70mm F2.8 (S-E2470)', #IB
|
233
|
+
0x4007 => 'Lumix S 16-35mm F4 (S-R1635)', #IB
|
234
|
+
0x4008 => 'Lumix S 70-200mm F2.8 OIS (S-E70200)', #IB
|
235
|
+
0x4010 => 'Lumix S 35mm F1.8 (S-S35)', #IB
|
236
|
+
0x4011 => 'LUMIX S 18mm F1.8 (S-S18)', #IB
|
237
|
+
0x400b => 'Lumix S 20-60mm F3.5-5.6 (S-R2060)', #IB
|
238
|
+
0x400c => 'Lumix S 85mm F1.8 (S-S85)', #IB
|
239
|
+
0x400d => 'Lumix S 70-300 F4.5-5.6 Macro OIS (S-R70300)', #IB
|
240
|
+
0x400f => 'Lumix S 24mm F1.8 (S-S24)', #IB
|
229
241
|
0x6001 => 'Sigma 150-600mm F5-6.3 DG OS HSM | S', #PH (NC, fp)
|
230
242
|
0x6003 => 'Sigma 45mm F2.8 DG DN | C', #PH (NC, fp)
|
243
|
+
0x6005 => 'Sigma 14-24mm F2.8 DG DN | A', #IB
|
231
244
|
0x6006 => 'Sigma 50mm F1.4 DG HSM | A', #IB (014)
|
245
|
+
0x6011 => 'Sigma 24-70mm F2.8 DG DN | A', #IB
|
246
|
+
0x6012 => 'Sigma 100-400mm F5-6.3 DG DN OS | C', #IB
|
247
|
+
0x6013 => 'Sigma 100-400mm F5-6.3 DG DN OS | C + TC-1411', #IB
|
248
|
+
0x6015 => 'Sigma 85mm F1.4 DG DN | A', #IB
|
249
|
+
0x6017 => 'Sigma 65mm F2 DG DN | C', #IB
|
250
|
+
0x6018 => 'Sigma 35mm F2 DG DN | C', #IB
|
251
|
+
0x601a => 'Sigma 28-70mm F2.8 DG DN | C', #IB
|
252
|
+
0x601b => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #IB
|
253
|
+
0x6020 => 'Sigma 35mm F1.4 DG DN | A', #IB
|
254
|
+
0x6021 => 'Sigma 90mm F2.8 DG DN | C', #IB
|
255
|
+
0x6023 => 'Sigma 20mm F2 DG DN | C', #IB
|
256
|
+
0x6025 => 'Sigma 20mm F1.4 DG DN | A', #IB
|
257
|
+
0x6026 => 'Sigma 24mm F1.4 DG DN | A', #IB
|
232
258
|
0x8005 => 'Sigma 35mm F1.4 DG HSM | A', #PH (012)
|
233
259
|
0x8009 => 'Sigma 18-35mm F1.8 DC HSM | A', #PH
|
234
260
|
0x8900 => 'Sigma 70-300mm F4-5.6 DG OS', #PH (SD15)
|