exiftool_vendored 12.41.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.
- 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)
|