exiftool_vendored 11.84.0 → 11.86.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +24 -4
- data/bin/MANIFEST +1 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -2
- data/bin/config_files/acdsee.config +73 -0
- data/bin/exiftool +10 -2
- data/bin/fmt_files/kml.fmt +4 -4
- data/bin/lib/Image/ExifTool.pm +18 -9
- data/bin/lib/Image/ExifTool.pod +30 -30
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +8 -8
- data/bin/lib/Image/ExifTool/Canon.pm +4 -2
- data/bin/lib/Image/ExifTool/Exif.pm +64 -4
- data/bin/lib/Image/ExifTool/FlashPix.pm +28 -28
- data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +8 -5
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ru.pm +2 -2
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +8 -5
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +3 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +13 -2
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +73 -16
- data/bin/lib/Image/ExifTool/Sony.pm +4 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +9 -0
- data/bin/lib/Image/ExifTool/TagNames.pod +26 -10
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +4 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +27 -10
- data/bin/lib/Image/ExifTool/Writer.pl +2 -2
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -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.21';
|
38
38
|
|
39
39
|
sub ProcessSRF($$$);
|
40
40
|
sub ProcessSR2($$$);
|
@@ -177,6 +177,7 @@ sub PrintInvLensSpec($;$$);
|
|
177
177
|
49458 => 'Tamron 17-28mm F2.8 Di III RXD', #JR (Model A046)
|
178
178
|
49459 => 'Tamron 35mm F2.8 Di III OSD M1:2', #IB (Model F053)
|
179
179
|
49460 => 'Tamron 24mm F2.8 Di III OSD M1:2', #JR (Model F051)
|
180
|
+
49461 => 'Tamron 20mm F2.8 Di III OSD M1:2', #JR (Model F050)
|
180
181
|
|
181
182
|
49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
|
182
183
|
49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
|
@@ -205,6 +206,7 @@ sub PrintInvLensSpec($;$$);
|
|
205
206
|
50514 => 'Sigma 45mm F2.8 DG DN | C', #IB/JR (019)
|
206
207
|
50515 => 'Sigma 35mm F1.2 DG DN | A', #IB/JR (019)
|
207
208
|
50516 => 'Sigma 14-24mm F2.8 DG DN | A', #IB/JR (019)
|
209
|
+
50517 => 'Sigma 24-70mm F2.8 DG DN | A', #JR (019)
|
208
210
|
|
209
211
|
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
|
210
212
|
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
|
@@ -228,6 +230,7 @@ sub PrintInvLensSpec($;$$);
|
|
228
230
|
51507 => 'Samyang AF 35mm F1.4', #IB
|
229
231
|
51508 => 'Samyang AF 45mm F1.8',
|
230
232
|
51510 => 'Samyang AF 18mm F2.8', #JR
|
233
|
+
|
231
234
|
);
|
232
235
|
|
233
236
|
# ExposureProgram values (ref PH, mainly decoded from A200)
|
@@ -1929,7 +1929,12 @@ my %tagLookup = (
|
|
1929
1929
|
'dehaze' => { 461 => 'Dehaze', 463 => 'Dehaze' },
|
1930
1930
|
'deletedimagecount' => { 219 => 0xa6, 228 => 0x6e },
|
1931
1931
|
'deprecatedon' => { 459 => 'deprecatedOn' },
|
1932
|
+
'depthfar' => { 116 => 0xc7eb },
|
1933
|
+
'depthformat' => { 116 => 0xc7e9 },
|
1932
1934
|
'depthimage' => { 446 => 'Data' },
|
1935
|
+
'depthmeasuretype' => { 116 => 0xc7ed },
|
1936
|
+
'depthnear' => { 116 => 0xc7ea },
|
1937
|
+
'depthunits' => { 116 => 0xc7ec },
|
1933
1938
|
'derivedfrom' => { 488 => 'DerivedFrom' },
|
1934
1939
|
'derivedfromalternatepaths' => { 488 => [\'DerivedFrom','DerivedFromAlternatePaths'] },
|
1935
1940
|
'derivedfromdocumentid' => { 488 => [\'DerivedFrom','DerivedFromDocumentID'] },
|
@@ -2170,6 +2175,7 @@ my %tagLookup = (
|
|
2170
2175
|
'engineer' => { 487 => 'engineer' },
|
2171
2176
|
'enhancedarktones' => { 252 => 0x8 },
|
2172
2177
|
'enhancement' => { 109 => 0x16, 110 => 0x3016 },
|
2178
|
+
'enhanceparams' => { 116 => 0xc7ee },
|
2173
2179
|
'enhancer' => { 287 => 0x300 },
|
2174
2180
|
'enhancervalues' => { 287 => 0x301 },
|
2175
2181
|
'envelopenumber' => { 129 => 0x28 },
|
@@ -8233,6 +8239,7 @@ my %tagExists = (
|
|
8233
8239
|
'insertmode' => 1,
|
8234
8240
|
'insetnwpixelx' => 1,
|
8235
8241
|
'insetnwpixely' => 1,
|
8242
|
+
'insta360' => 1,
|
8236
8243
|
'institution' => 1,
|
8237
8244
|
'instructionset' => 1,
|
8238
8245
|
'insv' => 1,
|
@@ -8927,6 +8934,8 @@ my %tagExists = (
|
|
8927
8934
|
'moveobjects' => 1,
|
8928
8935
|
'movie' => 1,
|
8929
8936
|
'moviefragment' => 1,
|
8937
|
+
'moviefragmentheader' => 1,
|
8938
|
+
'moviefragmentsequence' => 1,
|
8930
8939
|
'movieheader' => 1,
|
8931
8940
|
'movieheaderversion' => 1,
|
8932
8941
|
'movieinfo' => 1,
|
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
12
12
|
=head1 TAG TABLES
|
13
13
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
15
|
-
They contain a total of
|
15
|
+
They contain a total of 23225 tags, with 15187 unique tag names.
|
16
16
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
@@ -148,8 +148,9 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
|
|
148
148
|
PhotoMechanic PhotoMechanic
|
149
149
|
MIE MIE
|
150
150
|
Samsung Samsung Trailer
|
151
|
-
PreviewImage yes
|
152
151
|
EmbeddedVideo no
|
152
|
+
Insta360 no
|
153
|
+
PreviewImage yes
|
153
154
|
|
154
155
|
=head3 JPEG AVI1 Tags
|
155
156
|
|
@@ -900,6 +901,12 @@ for the official EXIF 2.32 specification.
|
|
900
901
|
0xc7aa CacheVersion SubIFD2 int32u!
|
901
902
|
0xc7b5 DefaultUserCrop SubIFD rational64u[4]!
|
902
903
|
0xc7d5 NikonNEFInfo - Nikon NEFInfo
|
904
|
+
0xc7e9 DepthFormat IFD0 int16u!
|
905
|
+
0xc7ea DepthNear IFD0 rational64u!
|
906
|
+
0xc7eb DepthFar IFD0 rational64u!
|
907
|
+
0xc7ec DepthUnits IFD0 int16u!
|
908
|
+
0xc7ed DepthMeasureType IFD0 int16u!
|
909
|
+
0xc7ee EnhanceParams IFD0 string!
|
903
910
|
0xea1c Padding ExifIFD undef!
|
904
911
|
0xea1d OffsetSchema ExifIFD int32s!
|
905
912
|
0xfde8 OwnerName ExifIFD string/
|
@@ -24650,13 +24657,13 @@ language code to write the default language without deleting alternate
|
|
24650
24657
|
languages. Note that "eng" is treated as a default language when reading,
|
24651
24658
|
but not when writing.
|
24652
24659
|
|
24653
|
-
According to the specification,
|
24654
|
-
stored as UTC. Unfortunately, digital cameras often store local
|
24655
|
-
instead (presumably because they don't know the time zone). For
|
24656
|
-
reason, by default ExifTool does not assume a time zone for these
|
24657
|
-
However, if the QuickTimeUTC API option is set, then ExifTool will
|
24658
|
-
these values are properly stored as UTC, and will convert them to
|
24659
|
-
when extracting.
|
24660
|
+
According to the specification, integer-format QuickTime date/time tags
|
24661
|
+
should be stored as UTC. Unfortunately, digital cameras often store local
|
24662
|
+
time values instead (presumably because they don't know the time zone). For
|
24663
|
+
this reason, by default ExifTool does not assume a time zone for these
|
24664
|
+
values. However, if the QuickTimeUTC API option is set, then ExifTool will
|
24665
|
+
assume these values are properly stored as UTC, and will convert them to
|
24666
|
+
local time when extracting.
|
24660
24667
|
|
24661
24668
|
See
|
24662
24669
|
L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
|
@@ -24725,7 +24732,9 @@ Tags found in Pittasoft Blackvue dashcam "free" data.
|
|
24725
24732
|
=head3 QuickTime Stream Tags
|
24726
24733
|
|
24727
24734
|
Timed metadata extracted from QuickTime media data and some AVI videos when
|
24728
|
-
the ExtractEmbedded option is used.
|
24735
|
+
the ExtractEmbedded option is used. Although most of these tags are
|
24736
|
+
combined into the single table below, ExifTool currently reads 37 different
|
24737
|
+
formats of timed GPS metadata from video files.
|
24729
24738
|
|
24730
24739
|
Tag Name Writable
|
24731
24740
|
-------- --------
|
@@ -25279,8 +25288,15 @@ defined in this table.
|
|
25279
25288
|
Tag ID Tag Name Writable
|
25280
25289
|
------ -------- --------
|
25281
25290
|
'meta' Meta QuickTime Meta
|
25291
|
+
'mfhd' MovieFragmentHeader QuickTime MovieFragHdr
|
25282
25292
|
'traf' TrackFragment QuickTime TrackFragment
|
25283
25293
|
|
25294
|
+
=head3 QuickTime MovieFragHdr Tags
|
25295
|
+
|
25296
|
+
Index4 Tag Name Writable
|
25297
|
+
------ -------- --------
|
25298
|
+
1 MovieFragmentSequence no
|
25299
|
+
|
25284
25300
|
=head3 QuickTime TrackFragment Tags
|
25285
25301
|
|
25286
25302
|
Tag ID Tag Name Writable
|
@@ -138,6 +138,10 @@ sub WritePhotoshop($$$)
|
|
138
138
|
unless ($tagInfo) {
|
139
139
|
# process subdirectory anyway if writable (except EXIF to avoid recursion)
|
140
140
|
# --> this allows IPTC to be processed if found here in TIFF images
|
141
|
+
# (note that I have seen a case of XMP in PSD-EXIFInfo-IFD0, and the EXIF
|
142
|
+
# exclusion means that this won't be written unless an EXIF tag is
|
143
|
+
# specifically edited, see forum10768 -- maybe this should be changed
|
144
|
+
# if it happens again)
|
141
145
|
my $tmpInfo = $et->GetTagInfo($tagTablePtr, $tagID);
|
142
146
|
if ($tmpInfo and $$tmpInfo{SubDirectory} and
|
143
147
|
$tmpInfo->{SubDirectory}->{TagTable} ne 'Image::ExifTool::Exif::Main')
|
@@ -449,7 +449,7 @@ sub WriteKeys($$$)
|
|
449
449
|
sub WriteItemInfo($$$)
|
450
450
|
{
|
451
451
|
my ($et, $dirInfo, $outfile) = @_;
|
452
|
-
my $boxPos = $$dirInfo{BoxPos};
|
452
|
+
my $boxPos = $$dirInfo{BoxPos}; # hash of [length,position] for each box
|
453
453
|
my $raf = $$et{RAF};
|
454
454
|
my $items = $$et{ItemInfo};
|
455
455
|
my (%did, @mdatEdit, $name);
|
@@ -549,8 +549,11 @@ sub WriteItemInfo($$$)
|
|
549
549
|
my ($countNew, %add, %usedID);
|
550
550
|
foreach $name ('EXIF','XMP') {
|
551
551
|
next if $did{$name} or not $$et{ADD_DIRS}{$name};
|
552
|
-
|
553
|
-
|
552
|
+
my @missing;
|
553
|
+
$$boxPos{$_} or push @missing, $_ foreach qw(iinf iloc);
|
554
|
+
if (@missing) {
|
555
|
+
my $str = @missing > 1 ? join(' and ', @missing) . ' boxes' : "@missing box";
|
556
|
+
$et->Warn("Can't create $name. Missing expected $str");
|
554
557
|
last;
|
555
558
|
}
|
556
559
|
my $primary = $$et{PrimaryItem};
|
@@ -577,6 +580,14 @@ sub WriteItemInfo($$$)
|
|
577
580
|
my $changed = $$et{CHANGED};
|
578
581
|
my $newVal = $et->WriteDirectory(\%dirInfo, $subTable, $proc);
|
579
582
|
if (defined $newVal and $changed ne $$et{CHANGED}) {
|
583
|
+
my $irefVer;
|
584
|
+
if ($$boxPos{iref}) {
|
585
|
+
$irefVer = Get8u($outfile, $$boxPos{iref}[0] + 8);
|
586
|
+
} else {
|
587
|
+
# create iref box after end of iinf box (and save version in boxPos list)
|
588
|
+
$irefVer = ($primary > 0xffff ? 1 : 0);
|
589
|
+
$$boxPos{iref} = [ $$boxPos{iinf}[0] + $$boxPos{iinf}[1], 0, $irefVer ];
|
590
|
+
}
|
580
591
|
$newVal = $hdr . $newVal if length $hdr;
|
581
592
|
# add new infe to iinf
|
582
593
|
$add{iinf} = $add{iref} = $add{iloc} = '' unless defined $add{iinf};
|
@@ -598,7 +609,6 @@ sub WriteItemInfo($$$)
|
|
598
609
|
$add{iinf} .= pack('Na4CCCCNn', $n, 'infe', 3, 0, 0, 1, $id, 0) . $type . $mime;
|
599
610
|
}
|
600
611
|
# add new cdsc to iref
|
601
|
-
my $irefVer = Get8u($outfile, $$boxPos{iref}[0] + 8);
|
602
612
|
if ($irefVer) {
|
603
613
|
$add{iref} .= pack('Na4NnN', 18, 'cdsc', $id, 1, $primary);
|
604
614
|
} else {
|
@@ -655,15 +665,22 @@ sub WriteItemInfo($$$)
|
|
655
665
|
foreach $tag (sort { $$boxPos{$a}[0] <=> $$boxPos{$b}[0] } keys %$boxPos) {
|
656
666
|
next unless $add{$tag};
|
657
667
|
my $pos = $$boxPos{$tag}[0] + $added;
|
658
|
-
|
659
|
-
|
668
|
+
unless ($$boxPos{$tag}[1]) {
|
669
|
+
$tag eq 'iref' or $et->Error('Internal error adding iref box'), last;
|
670
|
+
# create new iref box
|
671
|
+
$add{$tag} = Set32u(12 + length $add{$tag}) . $tag .
|
672
|
+
Set8u($$boxPos{$tag}[2]) . "\0\0\0" . $add{$tag};
|
673
|
+
} else {
|
674
|
+
my $n = Get32u($outfile, $pos);
|
675
|
+
Set32u($n + length($add{$tag}), $outfile, $pos); # increase box size
|
676
|
+
}
|
660
677
|
if ($tag eq 'iinf') {
|
661
678
|
my $iinfVer = Get8u($outfile, $pos + 8);
|
662
679
|
if ($iinfVer == 0) {
|
663
|
-
$n = Get16u($outfile, $pos + 12);
|
680
|
+
my $n = Get16u($outfile, $pos + 12);
|
664
681
|
Set16u($n + $countNew, $outfile, $pos + 12); # incr count
|
665
682
|
} else {
|
666
|
-
$n = Get32u($outfile, $pos + 12);
|
683
|
+
my $n = Get32u($outfile, $pos + 12);
|
667
684
|
Set32u($n + $countNew, $outfile, $pos + 12); # incr count
|
668
685
|
}
|
669
686
|
} elsif ($tag eq 'iref') {
|
@@ -671,10 +688,10 @@ sub WriteItemInfo($$$)
|
|
671
688
|
} elsif ($tag eq 'iloc') {
|
672
689
|
my $ilocVer = Get8u($outfile, $pos + 8);
|
673
690
|
if ($ilocVer < 2) {
|
674
|
-
$n = Get16u($outfile, $pos + 14);
|
691
|
+
my $n = Get16u($outfile, $pos + 14);
|
675
692
|
Set16u($n + $countNew, $outfile, $pos + 14); # incr count
|
676
693
|
} else {
|
677
|
-
$n = Get32u($outfile, $pos + 14);
|
694
|
+
my $n = Get32u($outfile, $pos + 14);
|
678
695
|
Set32u($n + $countNew, $outfile, $pos + 14); # incr count
|
679
696
|
}
|
680
697
|
# must also update pointer locations in this box
|
@@ -135,8 +135,8 @@ my %rawType = (
|
|
135
135
|
my @delGroups = qw(
|
136
136
|
Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11
|
137
137
|
APP12 APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
|
138
|
-
FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 InteropIFD IPTC
|
139
|
-
JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD MIE MPF NikonCapture PDF
|
138
|
+
FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC
|
139
|
+
ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD MIE MPF NikonCapture PDF
|
140
140
|
PDF-update PhotoMechanic Photoshop PNG PNG-pHYs PrintIM QuickTime RMETA RSRC
|
141
141
|
SubIFD Trailer UserData XML XML-* XMP XMP-*
|
142
142
|
);
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exiftool_vendored
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 11.
|
4
|
+
version: 11.86.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew McEachen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-
|
12
|
+
date: 2020-02-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|
@@ -190,6 +190,7 @@ files:
|
|
190
190
|
- bin/arg_files/xmp2gps.args
|
191
191
|
- bin/arg_files/xmp2iptc.args
|
192
192
|
- bin/arg_files/xmp2pdf.args
|
193
|
+
- bin/config_files/acdsee.config
|
193
194
|
- bin/config_files/age.config
|
194
195
|
- bin/config_files/bibble.config
|
195
196
|
- bin/config_files/convert_regions.config
|