exiftool_vendored 12.14.0 → 12.18.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 +52 -2
- data/bin/MANIFEST +2 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +39 -32
- data/bin/lib/Image/ExifTool.pm +30 -1
- data/bin/lib/Image/ExifTool.pod +7 -5
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -3
- data/bin/lib/Image/ExifTool/Canon.pm +21 -2
- data/bin/lib/Image/ExifTool/CanonCustom.pm +19 -1
- data/bin/lib/Image/ExifTool/DJI.pm +27 -1
- data/bin/lib/Image/ExifTool/DPX.pm +3 -3
- data/bin/lib/Image/ExifTool/Exif.pm +31 -15
- data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -1
- data/bin/lib/Image/ExifTool/GPS.pm +5 -5
- data/bin/lib/Image/ExifTool/H264.pm +20 -5
- data/bin/lib/Image/ExifTool/JPEG.pm +23 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +312 -36
- data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
- data/bin/lib/Image/ExifTool/PNG.pm +11 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +31 -19
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +22 -4
- data/bin/lib/Image/ExifTool/README +5 -4
- data/bin/lib/Image/ExifTool/RIFF.pm +8 -7
- data/bin/lib/Image/ExifTool/Sony.pm +20 -18
- data/bin/lib/Image/ExifTool/TagLookup.pm +3983 -3810
- data/bin/lib/Image/ExifTool/TagNames.pod +408 -22
- data/bin/lib/Image/ExifTool/WriteXMP.pl +9 -6
- data/bin/lib/Image/ExifTool/Writer.pl +6 -4
- data/bin/lib/Image/ExifTool/XMP.pm +28 -2
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +36 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94a7d3e31a469a8fc6a58b020168e7076b56172144d98ffeda12f7b49d65a0a0
|
4
|
+
data.tar.gz: 18000853a1b6ae5728074fa49602ff41851844abbde34022ddc8971218607cf0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1283d44ee24b5b60c13795ad8868359b616522db3b191060a81df0b8bde2f3f31d5dd57e7bebd05de9e2ac7a0ba1d4eba041d024824fbb077084930484ba49f
|
7
|
+
data.tar.gz: 79356beb3ffe088861e355a00c66439c6a4d28c6dfe7efc4591902da5d5d32649fbf110283507c5259ac77bc73f66d5504b64478b0570dfd5df3fb2eb7805221
|
data/bin/Changes
CHANGED
@@ -4,9 +4,59 @@ ExifTool Version History
|
|
4
4
|
|
5
5
|
RSS feed: https://exiftool.org/rss.xml
|
6
6
|
|
7
|
-
Note: The most recent production release is Version 12.
|
7
|
+
Note: The most recent production release is Version 12.16. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Feb. 9, 2021 - Version 12.18
|
11
|
+
|
12
|
+
- Added a new SonyModelID
|
13
|
+
- Decode a number of Sony tags for the ILCE-1 (thanks Jos Roost)
|
14
|
+
- Decode a couple of new Canon tags (thanks LibRaw)
|
15
|
+
- Patched to read differently formatted UserData:Keywords as written by iPhone
|
16
|
+
- Patched to tolerate out-of-order Nikon MakerNote IFD entries when obtaining
|
17
|
+
tags necessary for decryption
|
18
|
+
- Fixed a few possible Condition warnings for some NikonSettings tags
|
19
|
+
|
20
|
+
Feb. 3, 2021 - Version 12.17
|
21
|
+
|
22
|
+
- Added a new Canon FocusMode value
|
23
|
+
- Added a new FujiFilm FilmMode value
|
24
|
+
- Added a number of new XMP-crs tags (thanks Herb)
|
25
|
+
- Decode a new H264 MDPM tag
|
26
|
+
- Allow non-conforming lower-case XMP boolean "true" and "false" values to be
|
27
|
+
written, but only when print conversion is disabled
|
28
|
+
- Improved Validate option to warn about non-capitalized boolean XMP values
|
29
|
+
- Improved logic for setting GPSLatitude/LongitudeRef values when writing
|
30
|
+
- Changed -json and -php options so the -a option is implied even without the
|
31
|
+
-g option
|
32
|
+
- Avoid extracting audio/video data from AVI videos when -ee -u is used
|
33
|
+
- Patched decoding of Canon ContinuousShootingSpeed for newer firmware
|
34
|
+
versions of the EOS-1DXmkIII
|
35
|
+
- Re-worked LensID patch of version 12.00 (github issue #51)
|
36
|
+
- Fixed a few typos in newly-added NikonSettings tags (thanks Herb)
|
37
|
+
- Fixed problem where group could not be specified for PNG-pHYs tags when
|
38
|
+
writing
|
39
|
+
|
40
|
+
Jan. 21, 2021 - Version 12.16 (production release)
|
41
|
+
|
42
|
+
- Extract another form of video subtitle text
|
43
|
+
- Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video
|
44
|
+
stream in MP4 files
|
45
|
+
- Changed a Nikon FlashMode value
|
46
|
+
- Fixed problem that caused a failed DPX test on Strawberry Perl
|
47
|
+
- API Changes:
|
48
|
+
- Enhanced ExtractEmbedded option
|
49
|
+
|
50
|
+
Jan. 18, 2021 - Version 12.15 (production release)
|
51
|
+
|
52
|
+
- Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost)
|
53
|
+
- Added a new Nikon FlashMode value (thanks Mike)
|
54
|
+
- Decode NikonSettings (thanks Warren Hatch)
|
55
|
+
- Decode thermal information from DJI RJPEG images
|
56
|
+
- Fixed extra newline in -echo3 and -echo4 outputs added in version 12.10
|
57
|
+
- Fixed out-of-memory problem when writing some very large PNG files under
|
58
|
+
Windows
|
59
|
+
|
10
60
|
Jan. 6, 2021 - Version 12.14
|
11
61
|
|
12
62
|
- Added support for 2 more types of timed GPS in video files (that makes 49
|
@@ -202,7 +252,7 @@ July 27, 2020 - Version 12.02
|
|
202
252
|
- Improved decoding of some Canon EOS 1DXmkIII custom functions
|
203
253
|
- Allow integer QuickTime TrackNumber and DiskNumber values
|
204
254
|
- Relax validity check of QuickTime:ContentCreateDate when writing with -n
|
205
|
-
- Removed "Com" from the start of some unknown ItemList tag names
|
255
|
+
- Removed "Com" from the start of some unknown QuickTime ItemList tag names
|
206
256
|
- Patched CanonCustom decoding for bug in Canon EOS-1DX firmware
|
207
257
|
- Changed QuickTime CleanAperture tags decode as signed rationals
|
208
258
|
|
data/bin/MANIFEST
CHANGED
@@ -115,6 +115,7 @@ html/TagNames/Motorola.html
|
|
115
115
|
html/TagNames/Nikon.html
|
116
116
|
html/TagNames/NikonCapture.html
|
117
117
|
html/TagNames/NikonCustom.html
|
118
|
+
html/TagNames/NikonSettings.html
|
118
119
|
html/TagNames/Nintendo.html
|
119
120
|
html/TagNames/OOXML.html
|
120
121
|
html/TagNames/Ogg.html
|
@@ -337,6 +338,7 @@ lib/Image/ExifTool/Motorola.pm
|
|
337
338
|
lib/Image/ExifTool/Nikon.pm
|
338
339
|
lib/Image/ExifTool/NikonCapture.pm
|
339
340
|
lib/Image/ExifTool/NikonCustom.pm
|
341
|
+
lib/Image/ExifTool/NikonSettings.pm
|
340
342
|
lib/Image/ExifTool/Nintendo.pm
|
341
343
|
lib/Image/ExifTool/OOXML.pm
|
342
344
|
lib/Image/ExifTool/Ogg.pm
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -106,8 +106,8 @@ your home directory, then you would type the following commands in a
|
|
106
106
|
terminal window to extract and run ExifTool:
|
107
107
|
|
108
108
|
cd ~/Desktop
|
109
|
-
gzip -dc Image-ExifTool-12.
|
110
|
-
cd Image-ExifTool-12.
|
109
|
+
gzip -dc Image-ExifTool-12.18.tar.gz | tar -xf -
|
110
|
+
cd Image-ExifTool-12.18
|
111
111
|
./exiftool t/images/ExifTool.jpg
|
112
112
|
|
113
113
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
use strict;
|
11
11
|
require 5.004;
|
12
12
|
|
13
|
-
my $version = '12.
|
13
|
+
my $version = '12.18';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -371,12 +371,12 @@ if (grep /^-common_args$/i, @ARGV) {
|
|
371
371
|
Command: for (;;) {
|
372
372
|
|
373
373
|
if (@echo3) {
|
374
|
-
my $str = join
|
374
|
+
my $str = join("\n", @echo3) . "\n";
|
375
375
|
$str =~ s/\$\{status\}/$rtnVal/ig;
|
376
376
|
print STDOUT $str;
|
377
377
|
}
|
378
378
|
if (@echo4) {
|
379
|
-
my $str = join
|
379
|
+
my $str = join("\n", @echo4) . "\n";
|
380
380
|
$str =~ s/\$\{status\}/$rtnVal/ig;
|
381
381
|
print STDERR $str;
|
382
382
|
}
|
@@ -894,8 +894,8 @@ for (;;) {
|
|
894
894
|
$helped = 1;
|
895
895
|
next;
|
896
896
|
}
|
897
|
-
if (/^(ee|extractembedded)$/i) {
|
898
|
-
$mt->Options(ExtractEmbedded => 1);
|
897
|
+
if (/^(ee|extractembedded)(\d*)$/i) {
|
898
|
+
$mt->Options(ExtractEmbedded => $2 || 1);
|
899
899
|
$mt->Options(Duplicates => 1);
|
900
900
|
next;
|
901
901
|
}
|
@@ -1264,7 +1264,7 @@ for (;;) {
|
|
1264
1264
|
if (/^php$/i) {
|
1265
1265
|
$json = 2;
|
1266
1266
|
$html = $xml = 0;
|
1267
|
-
$mt->Options(Duplicates=>1);
|
1267
|
+
$mt->Options(Duplicates => 1);
|
1268
1268
|
next;
|
1269
1269
|
}
|
1270
1270
|
if (/^z(ip)?$/i) {
|
@@ -1505,7 +1505,6 @@ if ($xml) {
|
|
1505
1505
|
require Image::ExifTool::XMP if $json == 1; # (for EncodeBase64)
|
1506
1506
|
}
|
1507
1507
|
$mt->Options(List => 1) unless $joinLists;
|
1508
|
-
$mt->Options(Duplicates => 0) unless defined $showGroup;
|
1509
1508
|
$showTagID = 'D' if $tabFormat and not $showTagID;
|
1510
1509
|
} elsif ($structOpt) {
|
1511
1510
|
$mt->Options(List => 1);
|
@@ -2304,7 +2303,7 @@ TAG: foreach $tag (@foundTags) {
|
|
2304
2303
|
$group = $et->GetGroup($tag, $showGroup);
|
2305
2304
|
# look ahead to see if this tag may suppress a priority tag in
|
2306
2305
|
# the same group, and if so suppress this tag instead
|
2307
|
-
next if $noDups and $tag =~ /^(.*?)
|
2306
|
+
next if $noDups and $tag =~ /^(.*?) \(/ and defined $$info{$1} and
|
2308
2307
|
$group eq $et->GetGroup($1, $showGroup);
|
2309
2308
|
$group = 'Unknown' if not $group and ($xml or $json or $csv);
|
2310
2309
|
if ($fp and not ($allGroup or $csv)) {
|
@@ -2327,6 +2326,9 @@ TAG: foreach $tag (@foundTags) {
|
|
2327
2326
|
}
|
2328
2327
|
undef $group; # undefine so we don't print it below
|
2329
2328
|
}
|
2329
|
+
} elsif ($noDups) {
|
2330
|
+
# don't allow duplicates, but avoid suppressing the priority tag
|
2331
|
+
next if $tag =~ /^(.*?) \(/ and defined $$info{$1};
|
2330
2332
|
}
|
2331
2333
|
|
2332
2334
|
++$lineCount; # we are printing something meaningful
|
@@ -4573,7 +4575,7 @@ L<Processing control|/Processing control>
|
|
4573
4575
|
|
4574
4576
|
-a (-duplicates) Allow duplicate tags to be extracted
|
4575
4577
|
-e (--composite) Do not generate composite tags
|
4576
|
-
-ee
|
4578
|
+
-ee[NUM] (-extractEmbedded) Extract information from embedded files
|
4577
4579
|
-ext[+] EXT (-extension) Process files with specified extension
|
4578
4580
|
-F[OFFSET] (-fixBase) Fix the base for maker notes offsets
|
4579
4581
|
-fast[NUM] Increase speed when extracting metadata
|
@@ -4917,7 +4919,7 @@ and the value is written to all possible groups/tags. For example, the
|
|
4917
4919
|
string form must be used in the following command since the intent is to set
|
4918
4920
|
the value of all existing date/time tags from C<CreateDate>:
|
4919
4921
|
|
4920
|
-
exiftool
|
4922
|
+
exiftool '-time:all<$createdate' -wm w FILE
|
4921
4923
|
|
4922
4924
|
=item B<-x> I<TAG> (B<-exclude>)
|
4923
4925
|
|
@@ -4943,7 +4945,7 @@ between images, but allows the metadata to be altered by editing the
|
|
4943
4945
|
intermediate file (C<out.args> in this example):
|
4944
4946
|
|
4945
4947
|
exiftool -args -G1 --filename --directory src.jpg > out.args
|
4946
|
-
exiftool -@ out.args -sep
|
4948
|
+
exiftool -@ out.args -sep ', ' dst.jpg
|
4947
4949
|
|
4948
4950
|
Note: Be careful when copying information with this technique since it is
|
4949
4951
|
easy to write tags which are normally considered "unsafe". For instance,
|
@@ -5207,18 +5209,18 @@ JSON arrays unless B<-sep> is used. By default XMP structures are flattened
|
|
5207
5209
|
into individual tags in the JSON output, but the original structure may be
|
5208
5210
|
preserved with the B<-struct> option (this also causes all list-type XMP
|
5209
5211
|
tags to be output as JSON arrays, otherwise single-item lists would be
|
5210
|
-
output as simple strings). The B<-a> option is implied
|
5211
|
-
|
5212
|
-
|
5213
|
-
|
5214
|
-
|
5215
|
-
|
5216
|
-
|
5217
|
-
|
5218
|
-
|
5219
|
-
|
5220
|
-
|
5221
|
-
|
5212
|
+
output as simple strings). The B<-a> option is implied when B<-json> is
|
5213
|
+
used, but entries with identical JSON names are suppressed in the output.
|
5214
|
+
(B<-G4> may be used to ensure that all tags have unique JSON names.) Adding
|
5215
|
+
the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
|
5216
|
+
"id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the
|
5217
|
+
numerical value is different from the converted "val". The B<-b> option may
|
5218
|
+
be added to output binary data, encoded in base64 if necessary (indicated by
|
5219
|
+
ASCII "base64:" as the first 7 bytes of the value), and B<-t> may be added
|
5220
|
+
to include tag table information (see B<-t> for details). The JSON output
|
5221
|
+
is UTF-8 regardless of any B<-L> or B<-charset> option setting, but the
|
5222
|
+
UTF-8 validation is disabled if a character set other than UTF-8 is
|
5223
|
+
specified.
|
5222
5224
|
|
5223
5225
|
If I<JSONFILE> is specified, the file is imported and the tag definitions
|
5224
5226
|
from the file are used to set tag values on a per-file basis. The special
|
@@ -5367,7 +5369,7 @@ with this command:
|
|
5367
5369
|
|
5368
5370
|
produces output like this:
|
5369
5371
|
|
5370
|
-
-- Generated by ExifTool 12.
|
5372
|
+
-- Generated by ExifTool 12.18 --
|
5371
5373
|
File: a.jpg - 2003:10:31 15:44:19
|
5372
5374
|
(f/5.6, 1/60s, ISO 100)
|
5373
5375
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5527,18 +5529,18 @@ Notes:
|
|
5527
5529
|
argument like C<%d%f.txt> is written as C<%%d%%f.txt>.
|
5528
5530
|
|
5529
5531
|
2) If the argument for B<-w> does not contain a valid format code (eg. %f),
|
5530
|
-
then it is interpreted as a file extension
|
5531
|
-
|
5532
|
-
multiple source files is typically done by shell redirection, ie)
|
5532
|
+
then it is interpreted as a file extension, but there are three different
|
5533
|
+
ways to create a single output file from multiple source files:
|
5533
5534
|
|
5535
|
+
# 1. Shell redirection
|
5534
5536
|
exiftool FILE1 FILE2 ... > out.txt
|
5535
5537
|
|
5536
|
-
|
5537
|
-
be interpreted as a format string, and the same result may be obtained
|
5538
|
-
without the use of shell redirection:
|
5539
|
-
|
5538
|
+
# 2. With the -w option and a zero-width format code
|
5540
5539
|
exiftool -w+! %0fout.txt FILE1 FILE2 ...
|
5541
5540
|
|
5541
|
+
# 3. With the -W option (see the -W option below)
|
5542
|
+
exiftool -W+! out.txt FILE1 FILE2 ...
|
5543
|
+
|
5542
5544
|
Advanced features:
|
5543
5545
|
|
5544
5546
|
A substring of the original file name, directory or extension may be taken
|
@@ -5706,7 +5708,7 @@ when copying.
|
|
5706
5708
|
|
5707
5709
|
Extract existing tags only -- don't generate composite tags.
|
5708
5710
|
|
5709
|
-
=item B<-ee> (B<-extractEmbedded>)
|
5711
|
+
=item B<-ee>[I<NUM>] (B<-extractEmbedded>)
|
5710
5712
|
|
5711
5713
|
Extract information from embedded documents in EPS files, embedded EPS
|
5712
5714
|
information and JPEG and Jpeg2000 images in PDF files, embedded MPF images
|
@@ -5724,6 +5726,11 @@ document as if it were a separate input file. This allows, for example,
|
|
5724
5726
|
generation of GPS track logs from timed metadata in videos. See
|
5725
5727
|
L<https://exiftool.org/geotag.html#Inverse> for examples.
|
5726
5728
|
|
5729
|
+
Setting I<NUM> to 2 causes the H264 video stream in MP4 videos to be parsed
|
5730
|
+
until the first Supplemental Enhancement Information (SEI) message is
|
5731
|
+
decoded, or 3 to parse the entire H624 stream and decode all SEI
|
5732
|
+
information.
|
5733
|
+
|
5727
5734
|
=item B<-ext>[+] I<EXT>, B<--ext> I<EXT> (B<-extension>)
|
5728
5735
|
|
5729
5736
|
Process only files with (B<-ext>) or without (B<--ext>) a specified
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
28
28
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
|
30
30
|
|
31
|
-
$VERSION = '12.
|
31
|
+
$VERSION = '12.18';
|
32
32
|
$RELEASE = '';
|
33
33
|
@ISA = qw(Exporter);
|
34
34
|
%EXPORT_TAGS = (
|
@@ -6695,6 +6695,22 @@ sub ProcessJPEG($$)
|
|
6695
6695
|
# extract the Stim information (it is in standard TIFF format)
|
6696
6696
|
my $tagTablePtr = GetTagTable('Image::ExifTool::Stim::Main');
|
6697
6697
|
$self->ProcessTIFF(\%dirInfo, $tagTablePtr);
|
6698
|
+
} elsif ($$self{Make} eq 'DJI') {
|
6699
|
+
$dumpType = 'DJI ThermalData';
|
6700
|
+
# add this data to the combined data if it exists
|
6701
|
+
my $dataPt = $segDataPt;
|
6702
|
+
if (defined $combinedSegData) {
|
6703
|
+
$combinedSegData .= $$segDataPt;
|
6704
|
+
$dataPt = \$combinedSegData;
|
6705
|
+
}
|
6706
|
+
if ($nextMarker == $marker) {
|
6707
|
+
$combinedSegData = $$segDataPt unless defined $combinedSegData;
|
6708
|
+
} else {
|
6709
|
+
# process DJI FLIR thermal data
|
6710
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
|
6711
|
+
$self->HandleTag($tagTablePtr, 'APP3', $$dataPt);
|
6712
|
+
undef $combinedSegData;
|
6713
|
+
}
|
6698
6714
|
} elsif ($$segDataPt =~ /^\xff\xd8\xff\xdb/) {
|
6699
6715
|
$dumpType = 'PreviewImage'; # (Samsung, HP, BenQ)
|
6700
6716
|
$preview = $$segDataPt;
|
@@ -6729,6 +6745,11 @@ sub ProcessJPEG($$)
|
|
6729
6745
|
# set flag if this is the last FPXR segment
|
6730
6746
|
$dirInfo{LastFPXR} = not ($nextMarker==$marker and $$nextSegDataPt=~/^FPXR\0/),
|
6731
6747
|
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
6748
|
+
} elsif ($$self{Make} eq 'DJI' and $$segDataPt =~ /^\xaa\x55\x12\x06/) {
|
6749
|
+
$dumpType = 'DJI ThermalParams';
|
6750
|
+
DirStart(\%dirInfo, 0, 0);
|
6751
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::DJI::ThermalParams');
|
6752
|
+
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
6732
6753
|
} elsif ($preview) {
|
6733
6754
|
# continued Samsung S1060 preview from APP3
|
6734
6755
|
$dumpType = 'PreviewImage';
|
@@ -6751,6 +6772,10 @@ sub ProcessJPEG($$)
|
|
6751
6772
|
} elsif ($$segDataPt =~ /^ssuniqueid\0/) {
|
6752
6773
|
my $tagTablePtr = GetTagTable('Image::ExifTool::Samsung::APP5');
|
6753
6774
|
$self->HandleTag($tagTablePtr, 'ssuniqueid', substr($$segDataPt, 11));
|
6775
|
+
} elsif ($$self{Make} eq 'DJI') {
|
6776
|
+
$dumpType = 'DJI ThermalCal';
|
6777
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
|
6778
|
+
$self->HandleTag($tagTablePtr, 'APP5', $$segDataPt);
|
6754
6779
|
} elsif ($preview) {
|
6755
6780
|
$dumpType = 'PreviewImage';
|
6756
6781
|
$preview .= $$segDataPt;
|
@@ -6786,6 +6811,10 @@ sub ProcessJPEG($$)
|
|
6786
6811
|
my $tagTablePtr = GetTagTable('Image::ExifTool::GoPro::GPMF');
|
6787
6812
|
DirStart(\%dirInfo, 6);
|
6788
6813
|
$self->ProcessDirectory(\%dirInfo, $tagTablePtr);
|
6814
|
+
} elsif ($$segDataPt =~ /^DTAT\0\0.\{/s) {
|
6815
|
+
$dumpType = 'DJI_DTAT';
|
6816
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
|
6817
|
+
$self->HandleTag($tagTablePtr, 'APP6', $$segDataPt);
|
6789
6818
|
}
|
6790
6819
|
} elsif ($marker == 0xe7) { # APP7 (Pentax, Huawei, Qualcomm)
|
6791
6820
|
if ($$segDataPt =~ /^PENTAX \0(II|MM)/) {
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -626,7 +626,9 @@ XMP to be extracted.
|
|
626
626
|
Flag to extract information from embedded documents in EPS files, embedded
|
627
627
|
EPS information and JPEG and Jpeg2000 images in PDF files, embedded MPF
|
628
628
|
images in JPEG and MPO files, timed metadata in videos, and the resource
|
629
|
-
fork of Mac OS files.
|
629
|
+
fork of Mac OS files. A setting of 2 also causes the H264 video stream in
|
630
|
+
MP4 files to be parsed until the first SEI message is decoded, or 3 to
|
631
|
+
parse the entire stream. Default is undef.
|
630
632
|
|
631
633
|
=item FastScan
|
632
634
|
|
@@ -2298,10 +2300,10 @@ MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video,
|
|
2298
2300
|
MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS,
|
2299
2301
|
MakerNotes, MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft,
|
2300
2302
|
Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom,
|
2301
|
-
NikonScan, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF,
|
2302
|
-
PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne,
|
2303
|
-
PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD,
|
2304
|
-
ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
|
2303
|
+
NikonScan, NikonSettings, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF,
|
2304
|
+
PICT, PNG, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne,
|
2305
|
+
PhotoCD, PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD,
|
2306
|
+
PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF,
|
2305
2307
|
Radiance, Rawzor, Real, Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4,
|
2306
2308
|
Real-RA5, Real-RJMD, Reconyx, Red, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD,
|
2307
2309
|
SRF#, SVG, Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim,
|
@@ -310,9 +310,10 @@ C<integer> is a string of digits (possibly beginning with a '+' or '-'),
|
|
310
310
|
C<real> is a floating point number, C<rational> is entered as a floating
|
311
311
|
point number but stored as two C<integer> strings separated by a '/'
|
312
312
|
character, C<date> is a date/time string entered in the format "YYYY:mm:dd
|
313
|
-
HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False"
|
314
|
-
|
315
|
-
|
313
|
+
HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False" (but "true"
|
314
|
+
and "false" may be written as a ValueConv value for compatibility with
|
315
|
+
non-conforming applications), C<struct> indicates a structured tag, and
|
316
|
+
C<lang-alt> is a tag that supports alternate languages.
|
316
317
|
|
317
318
|
When reading, C<struct> tags are extracted only if the L<Struct|../ExifTool.html#Struct> (-struct)
|
318
319
|
option is used. Otherwise the corresponding I<Flattened> tags, indicated by
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.44';
|
92
92
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
@@ -2128,6 +2128,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
2128
2128
|
16 => 'Pan Focus', #PH
|
2129
2129
|
# 137 - Single?
|
2130
2130
|
256 => 'AF + MF', #PH (NC, EOS M)
|
2131
|
+
257 => 'Live View', #forum12082
|
2131
2132
|
512 => 'Movie Snap Focus', #48
|
2132
2133
|
519 => 'Movie Servo AF', #PH (NC, EOS M)
|
2133
2134
|
},
|
@@ -4538,6 +4539,16 @@ my %ciMaxFocal = (
|
|
4538
4539
|
2 => 'Rotate 270 CW',
|
4539
4540
|
},
|
4540
4541
|
},
|
4542
|
+
0x3a => { #IB
|
4543
|
+
Name => 'CameraOrientation',
|
4544
|
+
Condition => '$$self{Model} =~ /\b(1200D|REBEL T5|Kiss X70)\b/',
|
4545
|
+
Notes => '1200D only',
|
4546
|
+
PrintConv => {
|
4547
|
+
0 => 'Horizontal (normal)',
|
4548
|
+
1 => 'Rotate 90 CW',
|
4549
|
+
2 => 'Rotate 270 CW',
|
4550
|
+
},
|
4551
|
+
},
|
4541
4552
|
0x55 => {
|
4542
4553
|
Name => 'FocusDistanceUpper',
|
4543
4554
|
Condition => '$$self{Model} =~ /EOS 60D$/',
|
@@ -4678,7 +4689,7 @@ my %ciMaxFocal = (
|
|
4678
4689
|
FIRST_ENTRY => 0,
|
4679
4690
|
PRIORITY => 0,
|
4680
4691
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
4681
|
-
NOTES => 'CameraInfo tags for the EOS
|
4692
|
+
NOTES => 'CameraInfo tags for the EOS 80D.',
|
4682
4693
|
0x03 => { %ciFNumber },
|
4683
4694
|
0x04 => { %ciExposureTime },
|
4684
4695
|
0x06 => { %ciISO },
|
@@ -5254,6 +5265,14 @@ my %ciMaxFocal = (
|
|
5254
5265
|
0x06 => { %ciISO },
|
5255
5266
|
0x1b => { %ciCameraTemperature }, # (700D + 0)
|
5256
5267
|
0x23 => { %ciFocalLength }, # (700D + 0)
|
5268
|
+
0x96 => { #IB (700D + 0x19)
|
5269
|
+
Name => 'CameraOrientation',
|
5270
|
+
PrintConv => {
|
5271
|
+
0 => 'Horizontal (normal)',
|
5272
|
+
1 => 'Rotate 90 CW',
|
5273
|
+
2 => 'Rotate 270 CW',
|
5274
|
+
},
|
5275
|
+
},
|
5257
5276
|
0xa5 => { # (700D + 0x19)
|
5258
5277
|
Name => 'FocusDistanceUpper',
|
5259
5278
|
%focusDistanceByteSwap,
|