exiftool-vendored.exe 12.28.0 → 12.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.
- package/bin/exiftool_files/Changes +108 -5
- package/bin/exiftool_files/README +2 -2
- package/bin/exiftool_files/arg_files/xmp2exif.args +2 -1
- package/bin/exiftool_files/config_files/example.config +1 -1
- package/bin/exiftool_files/exiftool.pl +40 -26
- package/bin/exiftool_files/fmt_files/gpx.fmt +1 -1
- package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +1 -1
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +16 -3
- package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +331 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +35 -5
- package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +2 -0
- package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +13 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +98 -4
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +1 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -2
- package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +16 -1
- package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +96 -4
- package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +15 -3
- package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +7 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +60 -26
- package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +60 -59
- package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +81 -14
- package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +12 -3
- package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +10 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +8 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +93 -0
- package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +11 -12
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +7 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +2 -1
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +67 -9
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +133 -119
- package/bin/exiftool_files/lib/Image/ExifTool/README +9 -2
- package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +6 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +47 -10
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +80 -32
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +139 -4
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +224 -30
- package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -0
- package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +2 -0
- package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +17 -3
- package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +43 -0
- package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +21 -8
- package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +4 -1
- package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool.pm +8892 -8839
- package/bin/exiftool_files/lib/Image/ExifTool.pod +24 -15
- package/package.json +3 -3
|
@@ -36,7 +36,7 @@ use strict;
|
|
|
36
36
|
use vars qw($VERSION $AUTOLOAD %stdCase);
|
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
38
38
|
|
|
39
|
-
$VERSION = '1.
|
|
39
|
+
$VERSION = '1.59';
|
|
40
40
|
|
|
41
41
|
sub ProcessPNG_tEXt($$$);
|
|
42
42
|
sub ProcessPNG_iTXt($$$);
|
|
@@ -89,7 +89,7 @@ $Image::ExifTool::PNG::colorType = -1;
|
|
|
89
89
|
|
|
90
90
|
# data and text chunk types
|
|
91
91
|
my %isDatChunk = ( IDAT => 1, JDAT => 1, JDAA => 1 );
|
|
92
|
-
my %isTxtChunk = ( tEXt => 1, zTXt => 1, iTXt => 1 );
|
|
92
|
+
my %isTxtChunk = ( tEXt => 1, zTXt => 1, iTXt => 1, eXIf => 1 );
|
|
93
93
|
|
|
94
94
|
# chunks that we shouldn't move other chunks across (ref 3)
|
|
95
95
|
my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND => 1,
|
|
@@ -478,6 +478,8 @@ my %unreg = ( Notes => 'unregistered' );
|
|
|
478
478
|
if the L<Compress|../ExifTool.html#Compress> option is used and Compress::Zlib is available. Raw profile
|
|
479
479
|
information is always created as compressed zTXt if Compress::Zlib is
|
|
480
480
|
available, or tEXt otherwise. Standard XMP is written as uncompressed iTXt.
|
|
481
|
+
User-defined tags may set an 'iTXt' flag in the tag definition to be written
|
|
482
|
+
only as iTXt.
|
|
481
483
|
|
|
482
484
|
Alternate languages are accessed by suffixing the tag name with a '-',
|
|
483
485
|
followed by an RFC 3066 language code (eg. "PNG:Comment-fr", or
|
|
@@ -1382,9 +1384,8 @@ sub ProcessPNG($$)
|
|
|
1382
1384
|
# to add it as a text profile chunk if this isn't successful
|
|
1383
1385
|
# (ie. if Compress::Zlib wasn't available)
|
|
1384
1386
|
Add_iCCP($et, $outfile);
|
|
1385
|
-
AddChunks($et, $outfile) or $err = 1;
|
|
1386
|
-
|
|
1387
|
-
AddChunks($et, $outfile, 'IFD0') if $chunk eq $endChunk;
|
|
1387
|
+
AddChunks($et, $outfile) or $err = 1; # add all text chunks
|
|
1388
|
+
AddChunks($et, $outfile, 'IFD0') or $err = 1; # and eXIf chunk
|
|
1388
1389
|
} elsif ($chunk eq 'PLTE') {
|
|
1389
1390
|
# iCCP chunk must come before PLTE (and IDAT, handled above)
|
|
1390
1391
|
# (ignore errors -- will add later as text profile if this fails)
|
|
@@ -1444,7 +1445,7 @@ sub ProcessPNG($$)
|
|
|
1444
1445
|
} else {
|
|
1445
1446
|
$msg = 'fixed';
|
|
1446
1447
|
}
|
|
1447
|
-
$et->WarnOnce("Text chunk(s) found after $$et{FileType} $wasDat ($msg)", 1);
|
|
1448
|
+
$et->WarnOnce("Text/EXIF chunk(s) found after $$et{FileType} $wasDat ($msg)", 1);
|
|
1448
1449
|
}
|
|
1449
1450
|
# read chunk data and CRC
|
|
1450
1451
|
unless ($raf->Read($dbuf,$len)==$len and $raf->Read($cbuf, 4)==4) {
|
|
@@ -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.16';
|
|
41
41
|
|
|
42
42
|
sub ProcessLeicaLEIC($$$);
|
|
43
43
|
sub WhiteBalanceConv($;$$);
|
|
@@ -449,7 +449,7 @@ my %shootingMode = (
|
|
|
449
449
|
same as the number printed on the camera body
|
|
450
450
|
},
|
|
451
451
|
PrintConv => q{
|
|
452
|
-
return $val unless $val=~/^([A-Z]
|
|
452
|
+
return $val unless $val=~/^([A-Z][0-9A-Z]{2})(\d{2})(\d{2})(\d{2})(\d{4})/;
|
|
453
453
|
my $yr = $2 + ($2 < 70 ? 2000 : 1900);
|
|
454
454
|
return "($1) $yr:$3:$4 no. $5";
|
|
455
455
|
},
|
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
|
58
58
|
use Image::ExifTool::GPS;
|
|
59
59
|
use Image::ExifTool::HP;
|
|
60
60
|
|
|
61
|
-
$VERSION = '3.
|
|
61
|
+
$VERSION = '3.39';
|
|
62
62
|
|
|
63
63
|
sub CryptShutterCount($$);
|
|
64
64
|
sub PrintFilter($$$);
|
|
@@ -340,6 +340,7 @@ sub DecodeAFPoints($$$$;$);
|
|
|
340
340
|
'8 64' => 'HD PENTAX-D FA* 50mm F1.4 SDM AW', #27
|
|
341
341
|
'8 65' => 'HD PENTAX-D FA 70-210mm F4 ED SDM WR', #PH
|
|
342
342
|
'8 66' => 'HD PENTAX-D FA 85mm F1.4 ED SDM AW', #James O'Neill
|
|
343
|
+
'8 195' => 'HD PENTAX DA* 16-50mm F2.8 ED PLM AW', #27
|
|
343
344
|
'8 196' => 'HD PENTAX-DA* 11-18mm F2.8 ED DC AW', #29
|
|
344
345
|
'8 197' => 'HD PENTAX-DA 55-300mm F4.5-6.3 ED PLM WR RE', #29
|
|
345
346
|
'8 198' => 'smc PENTAX-DA L 18-50mm F4-5.6 DC WR RE', #29
|
|
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
47
47
|
use Image::ExifTool::Exif;
|
|
48
48
|
use Image::ExifTool::GPS;
|
|
49
49
|
|
|
50
|
-
$VERSION = '2.
|
|
50
|
+
$VERSION = '2.71';
|
|
51
51
|
|
|
52
52
|
sub ProcessMOV($$;$);
|
|
53
53
|
sub ProcessKeys($$$);
|
|
@@ -558,6 +558,7 @@ my %eeBox2 = (
|
|
|
558
558
|
# *** this is where ExifTool writes XMP in MP4 videos (as per XMP spec) ***
|
|
559
559
|
Condition => '$$valPt=~/^\xbe\x7a\xcf\xcb\x97\xa9\x42\xe8\x9c\x71\x99\x94\x91\xe3\xaf\xac/',
|
|
560
560
|
WriteGroup => 'XMP', # (write main XMP tags here)
|
|
561
|
+
PreservePadding => 1,
|
|
561
562
|
SubDirectory => {
|
|
562
563
|
TagTable => 'Image::ExifTool::XMP::Main',
|
|
563
564
|
Start => 16,
|
|
@@ -607,6 +608,7 @@ my %eeBox2 = (
|
|
|
607
608
|
Name => 'PreviewImage',
|
|
608
609
|
Condition => '$$valPt=~/^\xea\xf4\x2b\x5e\x1c\x98\x4b\x88\xb9\xfb\xb7\xdc\x40\x6e\x4d\x16/',
|
|
609
610
|
Groups => { 2 => 'Preview' },
|
|
611
|
+
PreservePadding => 1,
|
|
610
612
|
# 0x00 - undef[16]: UUID
|
|
611
613
|
# 0x10 - int32u[2]: "0 1" (version and/or item count?)
|
|
612
614
|
# 0x18 - int32u: PRVW atom size
|
|
@@ -734,6 +736,11 @@ my %eeBox2 = (
|
|
|
734
736
|
Unknown => 1,
|
|
735
737
|
Binary => 1,
|
|
736
738
|
},
|
|
739
|
+
sefd => {
|
|
740
|
+
Name => 'SamsungTrailer',
|
|
741
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Samsung::Trailer' },
|
|
742
|
+
},
|
|
743
|
+
# 'samn'? - seen in Vantrue N2S sample video
|
|
737
744
|
);
|
|
738
745
|
|
|
739
746
|
# MPEG-4 'ftyp' atom
|
|
@@ -2264,6 +2271,12 @@ my %eeBox2 = (
|
|
|
2264
2271
|
# opax - 164 bytes unknown (center and affine arrays? ref 26)
|
|
2265
2272
|
# opai - 32 bytes (maybe contains a serial number starting at byte 16? - PH) (rgb gains, degamma, gamma? ref 26)
|
|
2266
2273
|
# intv - 16 bytes all zero
|
|
2274
|
+
# ---- Xaiomi ----
|
|
2275
|
+
mcvr => {
|
|
2276
|
+
Name => 'PreviewImage',
|
|
2277
|
+
Groups => { 2 => 'Preview' },
|
|
2278
|
+
Binary => 1,
|
|
2279
|
+
},
|
|
2267
2280
|
# ---- Unknown ----
|
|
2268
2281
|
# CDET - 128 bytes (unknown origin)
|
|
2269
2282
|
# mtyp - 4 bytes all zero (some drone video)
|
|
@@ -2701,6 +2714,7 @@ my %eeBox2 = (
|
|
|
2701
2714
|
colr => [{
|
|
2702
2715
|
Name => 'ICC_Profile',
|
|
2703
2716
|
Condition => '$$valPt =~ /^(prof|rICC)/',
|
|
2717
|
+
Permanent => 0, # (in QuickTime, this writes a zero-length box instead of deleting)
|
|
2704
2718
|
SubDirectory => {
|
|
2705
2719
|
TagTable => 'Image::ExifTool::ICC_Profile::Main',
|
|
2706
2720
|
Start => 4,
|
|
@@ -6439,10 +6453,11 @@ my %eeBox2 = (
|
|
|
6439
6453
|
# iTunes info ('----') atoms
|
|
6440
6454
|
%Image::ExifTool::QuickTime::iTunesInfo = (
|
|
6441
6455
|
PROCESS_PROC => \&ProcessMOV,
|
|
6442
|
-
GROUPS => { 2 => 'Audio' },
|
|
6456
|
+
GROUPS => { 1 => 'iTunes', 2 => 'Audio' },
|
|
6443
6457
|
NOTES => q{
|
|
6444
6458
|
ExifTool will extract any iTunesInfo tags that exist, even if they are not
|
|
6445
|
-
defined in this table.
|
|
6459
|
+
defined in this table. These tags belong to the family 1 "iTunes" group,
|
|
6460
|
+
and are not currently writable.
|
|
6446
6461
|
},
|
|
6447
6462
|
# 'mean'/'name'/'data' atoms form a triplet, but unfortunately
|
|
6448
6463
|
# I haven't been able to find any documentation on this.
|
|
@@ -6503,9 +6518,45 @@ my %eeBox2 = (
|
|
|
6503
6518
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::EncodingParams' },
|
|
6504
6519
|
},
|
|
6505
6520
|
# also heard about 'iTunPGAP', but I haven't seen a sample
|
|
6506
|
-
|
|
6507
|
-
|
|
6508
|
-
|
|
6521
|
+
# all tags below were added based on samples I have seen - PH
|
|
6522
|
+
DISCNUMBER => 'DiscNumber',
|
|
6523
|
+
TRACKNUMBER => 'TrackNumber',
|
|
6524
|
+
ARTISTS => 'Artists',
|
|
6525
|
+
CATALOGNUMBER => 'CatalogNumber',
|
|
6526
|
+
RATING => 'Rating',
|
|
6527
|
+
MEDIA => 'Media',
|
|
6528
|
+
SCRIPT => 'Script', # character set? (seen 'Latn')
|
|
6529
|
+
BARCODE => 'Barcode',
|
|
6530
|
+
LABEL => 'Label',
|
|
6531
|
+
MOOD => 'Mood',
|
|
6532
|
+
popularimeter => 'Popularimeter',
|
|
6533
|
+
'Dynamic Range (DR)'=> 'DynamicRange',
|
|
6534
|
+
initialkey => 'InitialKey',
|
|
6535
|
+
originalyear => 'OriginalYear',
|
|
6536
|
+
originaldate => 'OriginalDate',
|
|
6537
|
+
'~length' => 'Length', # play length? (ie. duration?)
|
|
6538
|
+
replaygain_track_gain=>'ReplayTrackGain',
|
|
6539
|
+
replaygain_track_peak=>'ReplayTrackPeak',
|
|
6540
|
+
'Volume Level (ReplayGain)'=> 'ReplayVolumeLevel',
|
|
6541
|
+
'Dynamic Range (R128)'=> 'DynamicRangeR128',
|
|
6542
|
+
'Volume Level (R128)' => 'VolumeLevelR128',
|
|
6543
|
+
'Peak Level (Sample)' => 'PeakLevelSample',
|
|
6544
|
+
'Peak Level (R128)' => 'PeakLevelR128',
|
|
6545
|
+
# also seen (many from forum12777):
|
|
6546
|
+
# 'MusicBrainz Album Release Country'
|
|
6547
|
+
# 'MusicBrainz Album Type'
|
|
6548
|
+
# 'MusicBrainz Album Status'
|
|
6549
|
+
# 'MusicBrainz Track Id'
|
|
6550
|
+
# 'MusicBrainz Release Track Id'
|
|
6551
|
+
# 'MusicBrainz Album Id'
|
|
6552
|
+
# 'MusicBrainz Album Artist Id'
|
|
6553
|
+
# 'MusicBrainz Artist Id'
|
|
6554
|
+
# 'Acoustid Id' (sic)
|
|
6555
|
+
# 'Tool Version'
|
|
6556
|
+
# 'Tool Name'
|
|
6557
|
+
# 'ISRC'
|
|
6558
|
+
# 'HDCD'
|
|
6559
|
+
# 'Waveform'
|
|
6509
6560
|
);
|
|
6510
6561
|
|
|
6511
6562
|
# iTunes audio encoding parameters
|
|
@@ -9064,6 +9115,12 @@ sub ProcessMOV($$;$)
|
|
|
9064
9115
|
} else {
|
|
9065
9116
|
my $t = PrintableTagID($tag,2);
|
|
9066
9117
|
$et->VPrint(0,"$$et{INDENT}Tag '${t}' extends to end of file");
|
|
9118
|
+
if ($$tagTablePtr{"$tag-size"}) {
|
|
9119
|
+
my $pos = $raf->Tell();
|
|
9120
|
+
$raf->Seek(0, 2);
|
|
9121
|
+
$et->HandleTag($tagTablePtr, "$tag-size", $raf->Tell() - $pos);
|
|
9122
|
+
$et->HandleTag($tagTablePtr, "$tag-offset", $pos) if $$tagTablePtr{"$tag-offset"};
|
|
9123
|
+
}
|
|
9067
9124
|
}
|
|
9068
9125
|
last;
|
|
9069
9126
|
}
|
|
@@ -9290,6 +9347,7 @@ ItemID: foreach $id (keys %$items) {
|
|
|
9290
9347
|
Name => $name,
|
|
9291
9348
|
Description => $desc,
|
|
9292
9349
|
};
|
|
9350
|
+
$et->VPrint(0, $$et{INDENT}, "[adding QuickTime:$name]\n");
|
|
9293
9351
|
AddTagToTable($tagTablePtr, $tag, $tagInfo);
|
|
9294
9352
|
}
|
|
9295
9353
|
# ignore 8-byte header
|
|
@@ -9301,9 +9359,9 @@ ItemID: foreach $id (keys %$items) {
|
|
|
9301
9359
|
$val = \$buff;
|
|
9302
9360
|
}
|
|
9303
9361
|
}
|
|
9304
|
-
|
|
9362
|
+
$$tagInfo{List} = 1; # (allow any of these tags to have multiple data elements)
|
|
9363
|
+
$et->VerboseInfo($tag, $tagInfo, Value => $val) if $verbose;
|
|
9305
9364
|
} else {
|
|
9306
|
-
undef %triplet if $tag eq 'mean';
|
|
9307
9365
|
$triplet{$tag} = substr($val,4) if length($val) > 4;
|
|
9308
9366
|
undef $tagInfo; # don't store this tag
|
|
9309
9367
|
}
|
|
@@ -9369,7 +9427,7 @@ ItemID: foreach $id (keys %$items) {
|
|
|
9369
9427
|
for (;;) {
|
|
9370
9428
|
last if $pos + 16 > $size;
|
|
9371
9429
|
my ($len, $type, $flags, $ctry, $lang) = unpack("x${pos}Na4Nnn", $val);
|
|
9372
|
-
last if $pos + $len > $size;
|
|
9430
|
+
last if $pos + $len > $size or not $len;
|
|
9373
9431
|
my ($value, $langInfo, $oldDir);
|
|
9374
9432
|
my $format = $$tagInfo{Format};
|
|
9375
9433
|
if ($type eq 'data' and $len >= 16) {
|