exiftool_vendored 11.49.0 → 11.50.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 +16 -1
- data/bin/MANIFEST +2 -0
- data/bin/META.json +4 -3
- data/bin/META.yml +15 -14
- data/bin/README +7 -5
- data/bin/config_files/rotate_regions.config +173 -0
- data/bin/config_files/tiff_version.config +121 -0
- data/bin/exiftool +16 -15
- data/bin/lib/Image/ExifTool.pm +26 -19
- data/bin/lib/Image/ExifTool.pod +5 -2
- data/bin/lib/Image/ExifTool/Audible.pm +2 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +25 -21
- data/bin/lib/Image/ExifTool/Canon.pm +13 -9
- data/bin/lib/Image/ExifTool/CanonVRD.pm +4 -4
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -2
- data/bin/lib/Image/ExifTool/EXE.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +44 -6
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +12 -9
- data/bin/lib/Image/ExifTool/GPS.pm +3 -3
- data/bin/lib/Image/ExifTool/GoPro.pm +4 -4
- data/bin/lib/Image/ExifTool/H264.pm +2 -2
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/MIE.pm +3 -3
- data/bin/lib/Image/ExifTool/MPF.pm +2 -2
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +58 -56
- data/bin/lib/Image/ExifTool/Nikon.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -2
- data/bin/lib/Image/ExifTool/OpenEXR.pm +2 -2
- data/bin/lib/Image/ExifTool/PDF.pm +4 -4
- data/bin/lib/Image/ExifTool/PICT.pm +3 -3
- data/bin/lib/Image/ExifTool/PNG.pm +2 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -2
- data/bin/lib/Image/ExifTool/PostScript.pm +4 -4
- data/bin/lib/Image/ExifTool/QuickTime.pm +37 -15
- data/bin/lib/Image/ExifTool/RIFF.pm +3 -2
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +4 -2
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +9 -7
- data/bin/lib/Image/ExifTool/TagNames.pod +31 -21
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +2 -2
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +11 -6
- data/bin/lib/Image/ExifTool/XMP.pm +3 -7
- data/bin/lib/Image/ExifTool/XMPStruct.pl +2 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +3 -3
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +4 -2
data/bin/exiftool
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
use strict;
|
13
13
|
require 5.004;
|
14
14
|
|
15
|
-
my $version = '11.
|
15
|
+
my $version = '11.50';
|
16
16
|
|
17
17
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
18
18
|
my $exeDir;
|
@@ -495,9 +495,7 @@ $xml = 0;
|
|
495
495
|
|
496
496
|
# define local variables used only in this command loop
|
497
497
|
my @fileOrder; # tags to use for ordering of input files
|
498
|
-
my %excludeGrp; # hash of tags excluded by group
|
499
498
|
my $addGeotime; # automatically added geotime argument
|
500
|
-
my $allInGroup; # flag to show all tags in a group
|
501
499
|
my $doGlob; # flag set to do filename wildcard expansion
|
502
500
|
my $escapeXML; # flag to escape printed values for xml
|
503
501
|
my $setTagsFile; # filename for last TagsFromFile option
|
@@ -879,6 +877,7 @@ for (;;) {
|
|
879
877
|
$showGroup = $3 || 0;
|
880
878
|
$allGroup = ($2 ? lc($2) eq 'roupnames' : $1 eq 'G');
|
881
879
|
$mt->Options(SavePath => 1) if $showGroup =~ /\b5\b/;
|
880
|
+
$mt->Options(SaveFormat => 1) if $showGroup =~ /\b6\b/;
|
882
881
|
next;
|
883
882
|
}
|
884
883
|
if ($a eq 'geotag') {
|
@@ -3136,6 +3135,7 @@ sub EscapeJSON($;$)
|
|
3136
3135
|
# escape special characters
|
3137
3136
|
$str =~ s/(["\t\n\r\\])/\\$jsonChar{$1}/sg;
|
3138
3137
|
if ($json < 2) { # JSON
|
3138
|
+
$str =~ tr/\0//d; # remove all nulls
|
3139
3139
|
# escape other control characters with \u
|
3140
3140
|
$str =~ s/([\0-\x1f])/sprintf("\\u%.4X",ord $1)/sge;
|
3141
3141
|
# JSON strings must be valid UTF8
|
@@ -4284,8 +4284,8 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
4284
4284
|
CRM r/w | GZ r | MOI r | PMP r | WAV r
|
4285
4285
|
CRW r/w | HDP r/w | MOS r/w | PNG r/w | WDP r/w
|
4286
4286
|
CS1 r/w | HDR r | MOV r/w | PPM r/w | WEBP r
|
4287
|
-
DCM r | HEIC r
|
4288
|
-
DCP r/w | HEIF r
|
4287
|
+
DCM r | HEIC r/w | MP3 r | PPT r | WEBM r
|
4288
|
+
DCP r/w | HEIF r/w | MP4 r/w | PPTX r | WMA r
|
4289
4289
|
DCR r | HTML r | MPC r | PS r/w | WMV r
|
4290
4290
|
DFONT r | ICC r/w/c | MPG r | PSB r/w | WTV r
|
4291
4291
|
DIVX r | ICS r | MPO r/w | PSD r/w | WV r
|
@@ -5119,7 +5119,7 @@ with this command:
|
|
5119
5119
|
|
5120
5120
|
produces output like this:
|
5121
5121
|
|
5122
|
-
-- Generated by ExifTool 11.
|
5122
|
+
-- Generated by ExifTool 11.50 --
|
5123
5123
|
File: a.jpg - 2003:10:31 15:44:19
|
5124
5124
|
(f/5.6, 1/60s, ISO 100)
|
5125
5125
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5448,10 +5448,11 @@ B<-o> option with an XMP extension for the output file.
|
|
5448
5448
|
=item B<-a>, B<--a> (B<-duplicates>, B<--duplicates>)
|
5449
5449
|
|
5450
5450
|
Allow (B<-a>) or suppress (B<--a>) duplicate tag names to be extracted. By
|
5451
|
-
default, duplicate tags are suppressed unless the B<-ee> or
|
5452
|
-
are used or the Duplicates option is enabled in the
|
5453
|
-
This option
|
5454
|
-
messages to be shown.
|
5451
|
+
default, duplicate tags are suppressed when reading unless the B<-ee> or
|
5452
|
+
B<-X> options are used or the Duplicates option is enabled in the
|
5453
|
+
configuration file. This option has an affect when writing only to allow
|
5454
|
+
duplicate Warning messages to be shown. Duplicate tags are always extracted
|
5455
|
+
when copying.
|
5455
5456
|
|
5456
5457
|
=item B<-e> (B<--composite>)
|
5457
5458
|
|
@@ -6146,11 +6147,11 @@ placing braces around the tag name and inserting the expression after the
|
|
6146
6147
|
name, separated by a semicolon (ie. C<${TAG;EXPR}>). The expression acts on
|
6147
6148
|
the value of the tag through the default input variable (C<$_>), and has
|
6148
6149
|
access to the full ExifTool API through the current ExifTool object
|
6149
|
-
(C<$self>). It may contain any valid Perl code,
|
6150
|
-
(C<tr///>) and substitution (C<s///>) operations, but
|
6151
|
-
within the expression must be balanced. The example below
|
6152
|
-
Make with spaces translated to underlines, and multiple
|
6153
|
-
underlines replaced by a single underline:
|
6150
|
+
(C<$self>) and the tag key (C<$tag>). It may contain any valid Perl code,
|
6151
|
+
including translation (C<tr///>) and substitution (C<s///>) operations, but
|
6152
|
+
note that braces within the expression must be balanced. The example below
|
6153
|
+
prints the camera Make with spaces translated to underlines, and multiple
|
6154
|
+
consecutive underlines replaced by a single underline:
|
6154
6155
|
|
6155
6156
|
exiftool -p '${make;tr/ /_/;s/__+/_/g}' image.jpg
|
6156
6157
|
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -27,7 +27,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
27
27
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
28
28
|
%jpegMarker %specialTags %fileTypeLookup);
|
29
29
|
|
30
|
-
$VERSION = '11.
|
30
|
+
$VERSION = '11.50';
|
31
31
|
$RELEASE = '';
|
32
32
|
@ISA = qw(Exporter);
|
33
33
|
%EXPORT_TAGS = (
|
@@ -980,7 +980,7 @@ sub DummyWriteProc { return 1; }
|
|
980
980
|
|
981
981
|
my %systemTagsNotes = (
|
982
982
|
Notes => q{
|
983
|
-
extracted only if specifically requested or the SystemTags or RequestAll API
|
983
|
+
extracted only if specifically requested or the L<SystemTags|../ExifTool.html#SystemTags> or L<RequestAll|../ExifTool.html#RequestAll> API
|
984
984
|
option is set
|
985
985
|
},
|
986
986
|
);
|
@@ -1014,7 +1014,7 @@ my %systemTagsNotes = (
|
|
1014
1014
|
Notes => q{
|
1015
1015
|
returns errors that may have occurred while reading or writing a file. Any
|
1016
1016
|
Error will prevent the file from being processed. Minor errors may be
|
1017
|
-
downgraded to warnings with the -m or IgnoreMinorErrors option
|
1017
|
+
downgraded to warnings with the -m or L<IgnoreMinorErrors|../ExifTool.html#IgnoreMinorErrors> option
|
1018
1018
|
},
|
1019
1019
|
},
|
1020
1020
|
Warning => {
|
@@ -1022,8 +1022,8 @@ my %systemTagsNotes = (
|
|
1022
1022
|
Groups => \%allGroupsExifTool,
|
1023
1023
|
Notes => q{
|
1024
1024
|
returns warnings that may have occurred while reading or writing a file.
|
1025
|
-
Use the -a or Duplicates option to see all warnings if more than one
|
1026
|
-
occurred. Minor warnings may be ignored with the -m or IgnoreMinorErrors
|
1025
|
+
Use the -a or L<Duplicates|../ExifTool.html#Duplicates> option to see all warnings if more than one
|
1026
|
+
occurred. Minor warnings may be ignored with the -m or L<IgnoreMinorErrors|../ExifTool.html#IgnoreMinorErrors>
|
1027
1027
|
option. Minor warnings with a capital "M" in the "[Minor]" designation
|
1028
1028
|
indicate that the processing is affected by ignoring the warning
|
1029
1029
|
},
|
@@ -1069,7 +1069,7 @@ my %systemTagsNotes = (
|
|
1069
1069
|
Groups => { 1 => 'System' },
|
1070
1070
|
Notes => q{
|
1071
1071
|
absolute path of source file. Not generated unless specifically requested or
|
1072
|
-
the RequestAll API option is set. Does not support Windows Unicode file
|
1072
|
+
the L<RequestAll|../ExifTool.html#RequestAll> API option is set. Does not support Windows Unicode file
|
1073
1073
|
names
|
1074
1074
|
},
|
1075
1075
|
},
|
@@ -1092,7 +1092,7 @@ my %systemTagsNotes = (
|
|
1092
1092
|
sequence number for each source file when extracting or copying information,
|
1093
1093
|
including files that fail the -if condition of the command-line application,
|
1094
1094
|
beginning at 0 for the first file. Not generated unless specifically
|
1095
|
-
requested or the RequestAll API option is set
|
1095
|
+
requested or the L<RequestAll|../ExifTool.html#RequestAll> API option is set
|
1096
1096
|
},
|
1097
1097
|
},
|
1098
1098
|
FileSize => {
|
@@ -1107,7 +1107,7 @@ my %systemTagsNotes = (
|
|
1107
1107
|
Groups => { 1 => 'System' },
|
1108
1108
|
Notes => q{
|
1109
1109
|
size of the file's resource fork if it contains data. Mac OS only. If this
|
1110
|
-
tag is generated the ExtractEmbedded option may be used to extract
|
1110
|
+
tag is generated the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option may be used to extract
|
1111
1111
|
resource-fork information as a sub-document. When writing, the resource
|
1112
1112
|
fork is preserved by default, but it may be deleted with C<-rsrc:all=> on
|
1113
1113
|
the command line
|
@@ -1163,7 +1163,7 @@ my %systemTagsNotes = (
|
|
1163
1163
|
the filesystem creation date/time. Windows/Mac only. In Windows, the file
|
1164
1164
|
creation date/time is preserved by default when writing if Win32API::File
|
1165
1165
|
and Win32::API are available. On Mac, this tag is extracted only if it or
|
1166
|
-
the MacOS group is specifically requested or the RequestAll API option is
|
1166
|
+
the MacOS group is specifically requested or the L<RequestAll|../ExifTool.html#RequestAll> API option is
|
1167
1167
|
set to 2 or higher. Requires "setfile" for writing on Mac
|
1168
1168
|
},
|
1169
1169
|
Groups => { 1 => 'System', 2 => 'Time' },
|
@@ -1230,7 +1230,7 @@ my %systemTagsNotes = (
|
|
1230
1230
|
FileAttributes => {
|
1231
1231
|
Groups => { 1 => 'System' },
|
1232
1232
|
Notes => q{
|
1233
|
-
extracted only if specifically requested or the SystemTags or RequestAll API
|
1233
|
+
extracted only if specifically requested or the L<SystemTags|../ExifTool.html#SystemTags> or L<RequestAll|../ExifTool.html#RequestAll> API
|
1234
1234
|
option is set. 2 or 3 values: 0. File type, 1. Attribute bits, 2. Windows
|
1235
1235
|
attribute bits if Win32API::File is available
|
1236
1236
|
},
|
@@ -1285,7 +1285,7 @@ my %systemTagsNotes = (
|
|
1285
1285
|
FileUserID => {
|
1286
1286
|
Groups => { 1 => 'System' },
|
1287
1287
|
Notes => q{
|
1288
|
-
extracted only if specifically requested or the SystemTags or RequestAll API
|
1288
|
+
extracted only if specifically requested or the L<SystemTags|../ExifTool.html#SystemTags> or L<RequestAll|../ExifTool.html#RequestAll> API
|
1289
1289
|
option is set. Returns user ID number with the -n option, or name
|
1290
1290
|
otherwise. May be written with either user name or number
|
1291
1291
|
},
|
@@ -1299,7 +1299,7 @@ my %systemTagsNotes = (
|
|
1299
1299
|
FileGroupID => {
|
1300
1300
|
Groups => { 1 => 'System' },
|
1301
1301
|
Notes => q{
|
1302
|
-
extracted only if specifically requested or the SystemTags or RequestAll API
|
1302
|
+
extracted only if specifically requested or the L<SystemTags|../ExifTool.html#SystemTags> or L<RequestAll|../ExifTool.html#RequestAll> API
|
1303
1303
|
option is set. Returns group ID number with the -n option, or name
|
1304
1304
|
otherwise. May be written with either group name or number
|
1305
1305
|
},
|
@@ -1526,7 +1526,7 @@ my %systemTagsNotes = (
|
|
1526
1526
|
Groups => { 0 => 'ExifTool', 1 => 'ExifTool', 2 => 'Other' },
|
1527
1527
|
Notes => q{
|
1528
1528
|
the clock time in seconds taken by ExifTool to extract information from this
|
1529
|
-
file. Not generated unless specifically requested or the RequestAll API
|
1529
|
+
file. Not generated unless specifically requested or the L<RequestAll|../ExifTool.html#RequestAll> API
|
1530
1530
|
option is set. Requires Time::HiRes
|
1531
1531
|
},
|
1532
1532
|
PrintConv => 'sprintf("%.3g s", $val)',
|
@@ -1538,7 +1538,7 @@ my %systemTagsNotes = (
|
|
1538
1538
|
sub-sampling values to generate the value of this tag. The result is
|
1539
1539
|
compared to known values in an attempt to deduce the originating software
|
1540
1540
|
based only on the JPEG image data. For performance reasons, this tag is
|
1541
|
-
generated only if specifically requested or the RequestAll API option is set
|
1541
|
+
generated only if specifically requested or the L<RequestAll|../ExifTool.html#RequestAll> API option is set
|
1542
1542
|
to 3 or higher
|
1543
1543
|
},
|
1544
1544
|
},
|
@@ -1546,14 +1546,14 @@ my %systemTagsNotes = (
|
|
1546
1546
|
Notes => q{
|
1547
1547
|
an estimate of the IJG JPEG quality setting for the image, calculated from
|
1548
1548
|
the quantization tables. For performance reasons, this tag is generated
|
1549
|
-
only if specifically requested or the RequestAll API option is set to 3 or
|
1549
|
+
only if specifically requested or the L<RequestAll|../ExifTool.html#RequestAll> API option is set to 3 or
|
1550
1550
|
higher
|
1551
1551
|
},
|
1552
1552
|
},
|
1553
1553
|
JPEGImageLength => {
|
1554
1554
|
Notes => q{
|
1555
1555
|
byte length of JPEG image without metadata. For performance reasons, this
|
1556
|
-
tag is generated only if specifically requested or the RequestAll API option
|
1556
|
+
tag is generated only if specifically requested or the L<RequestAll|../ExifTool.html#RequestAll> API option
|
1557
1557
|
is set to 3 or higher
|
1558
1558
|
},
|
1559
1559
|
},
|
@@ -1563,7 +1563,7 @@ my %systemTagsNotes = (
|
|
1563
1563
|
Notes => q{
|
1564
1564
|
the current date/time. Useful when setting the tag values, eg.
|
1565
1565
|
C<"-modifydate<now">. Not generated unless specifically requested or the
|
1566
|
-
RequestAll API option is set
|
1566
|
+
L<RequestAll|../ExifTool.html#RequestAll> API option is set
|
1567
1567
|
},
|
1568
1568
|
PrintConv => '$self->ConvertDateTime($val)',
|
1569
1569
|
},
|
@@ -1574,7 +1574,7 @@ my %systemTagsNotes = (
|
|
1574
1574
|
YYYYmmdd-HHMM-SSNN-PPPP-RRRRRRRRRRRR, where Y=year, m=month, d=day, H=hour,
|
1575
1575
|
M=minute, S=second, N=file sequence number in hex, P=process ID in hex, and
|
1576
1576
|
R=random hex number; without dashes with the -n option. Not generated
|
1577
|
-
unless specifically requested or the RequestAll API option is set
|
1577
|
+
unless specifically requested or the L<RequestAll|../ExifTool.html#RequestAll> API option is set
|
1578
1578
|
},
|
1579
1579
|
PrintConv => '$val =~ s/(.{8})(.{4})(.{4})(.{4})/$1-$2-$3-$4-/; $val',
|
1580
1580
|
},
|
@@ -2150,6 +2150,7 @@ sub ClearOptions($)
|
|
2150
2150
|
QuickTimeUTC=> undef, # assume that QuickTime date/time tags are stored as UTC
|
2151
2151
|
RequestAll => undef, # extract all tags that must be specifically requested
|
2152
2152
|
RequestTags => undef, # extra tags to request (on top of those in the tag list)
|
2153
|
+
SaveFormat => undef, # (undocumented) save family 6 tag TIFF format
|
2153
2154
|
SavePath => undef, # (undocumented) save family 5 location path
|
2154
2155
|
ScanForXMP => undef, # flag to scan for XMP information in all files
|
2155
2156
|
Sort => 'Input', # order to sort found tags (Input, File, Tag, Descr, Group#)
|
@@ -3225,6 +3226,10 @@ sub GetGroup($$;$)
|
|
3225
3226
|
$groups[1] = $$ex{G1} =~ /^\+(.*)/ ? "$groups[1]$1" : $$ex{G1} if $$ex{G1};
|
3226
3227
|
$groups[3] = 'Doc' . $$ex{G3} if $$ex{G3};
|
3227
3228
|
$groups[5] = $$ex{G5} || $groups[1] if defined $$ex{G5};
|
3229
|
+
if (defined $$ex{G6}) {
|
3230
|
+
$groups[5] = '' unless defined $groups[5]; # (can't leave a hole in the array)
|
3231
|
+
$groups[6] = $$ex{G6};
|
3232
|
+
}
|
3228
3233
|
}
|
3229
3234
|
if ($family) {
|
3230
3235
|
return $groups[$family] || '' if $family > 0;
|
@@ -7376,7 +7381,9 @@ sub GetTagInfo($$$;$$$)
|
|
7376
7381
|
next;
|
7377
7382
|
}
|
7378
7383
|
}
|
7379
|
-
if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and
|
7384
|
+
if ($$tagInfo{Unknown} and not $$self{OPTIONS}{Unknown} and
|
7385
|
+
not $$self{OPTIONS}{Verbose} and not $$self{HTML_DUMP})
|
7386
|
+
{
|
7380
7387
|
# don't return Unknown tags unless that option is set
|
7381
7388
|
return undef;
|
7382
7389
|
}
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -92,8 +92,8 @@ supported by ExifTool (r = read, w = write, c = create):
|
|
92
92
|
CRM r/w | GZ r | MOI r | PMP r | WAV r
|
93
93
|
CRW r/w | HDP r/w | MOS r/w | PNG r/w | WDP r/w
|
94
94
|
CS1 r/w | HDR r | MOV r/w | PPM r/w | WEBP r
|
95
|
-
DCM r | HEIC r
|
96
|
-
DCP r/w | HEIF r
|
95
|
+
DCM r | HEIC r/w | MP3 r | PPT r | WEBM r
|
96
|
+
DCP r/w | HEIF r/w | MP4 r/w | PPTX r | WMA r
|
97
97
|
DCR r | HTML r | MPC r | PS r/w | WMV r
|
98
98
|
DFONT r | ICC r/w/c | MPG r | PSB r/w | WTV r
|
99
99
|
DIVX r | ICS r | MPO r/w | PSD r/w | WV r
|
@@ -424,6 +424,9 @@ in the full ExifTool distribution for examples.
|
|
424
424
|
|
425
425
|
=item Option Parameters:
|
426
426
|
|
427
|
+
Note that these API options may also be used in the exiftool application via
|
428
|
+
the command-line B<-api> option.
|
429
|
+
|
427
430
|
=over 4
|
428
431
|
|
429
432
|
=item Binary
|
@@ -129,13 +129,13 @@ sub ProcessAudible_meta($$$)
|
|
129
129
|
for ($index=0; $index<$num; ++$index) {
|
130
130
|
last if $pos + 3 > $dirLen;
|
131
131
|
my $unk = Get8u($dataPt, $pos); # ? (0x80 or 0x00)
|
132
|
-
last unless $unk
|
132
|
+
last unless $unk == 0x80 or $unk == 0x00;
|
133
133
|
my $len = Get16u($dataPt, $pos + 1); # tag length
|
134
134
|
$pos += 3;
|
135
135
|
last if $pos + $len + 6 > $dirLen or not $len;
|
136
136
|
my $tag = substr($$dataPt, $pos, $len); # tag ID
|
137
137
|
my $ver = Get16u($dataPt, $pos + $len); # version?
|
138
|
-
last unless $ver
|
138
|
+
last unless $ver == 0x0001;
|
139
139
|
my $size = Get32u($dataPt, $pos + $len + 2);# data size
|
140
140
|
$pos += $len + 6;
|
141
141
|
last if $pos + $size > $dirLen;
|
@@ -176,7 +176,7 @@ tag ID. In these cases, the actual name used depends on the context in
|
|
176
176
|
which the information is found. Case is not significant for tag names. A
|
177
177
|
question mark (C<?>) after a tag name indicates that the information is
|
178
178
|
either not understood, not verified, or not very useful -- these tags are
|
179
|
-
not extracted by ExifTool unless the Unknown (-u) option is enabled. Be
|
179
|
+
not extracted by ExifTool unless the L<Unknown|../ExifTool.html#Unknown> (-u) option is enabled. Be
|
180
180
|
aware that some tag names are different than the descriptions printed out by
|
181
181
|
default when extracting information with exiftool. To see the tag names
|
182
182
|
instead of the descriptions, use C<exiftool -s>.
|
@@ -196,7 +196,7 @@ be added and deleted. A slash (C</>) indicates a tag that ExifTool will
|
|
196
196
|
I<Avoid> when writing. These will be edited but not created if another
|
197
197
|
same-named tag may be created instead. To create these tags, the group
|
198
198
|
should be specified. A tilde (C<~>) indicates a tag this is writable only
|
199
|
-
when the print conversion is disabled (by setting PrintConv to 0, using the
|
199
|
+
when the print conversion is disabled (by setting L<PrintConv|../ExifTool.html#PrintConv> to 0, using the
|
200
200
|
-n option, or suffixing the tag name with a C<#> character). An exclamation
|
201
201
|
point (C<!>) indicates a tag that is considered I<Unsafe> to write under
|
202
202
|
normal circumstances. These tags are not written unless specified
|
@@ -215,7 +215,7 @@ listed as the computer-readable and human-readable values on the left and
|
|
215
215
|
right hand side of an equals sign (C<=>) respectively. The human-readable
|
216
216
|
values are used by default when reading and writing, but the
|
217
217
|
computer-readable values may be accessed by disabling the value conversion
|
218
|
-
with the -n option on the command line, by setting the
|
218
|
+
with the -n option on the command line, by setting the L<PrintConv|../ExifTool.html#PrintConv> option to 0
|
219
219
|
in the API, or or on a per-tag basis by adding a hash (C<#>) after the tag
|
220
220
|
name.
|
221
221
|
|
@@ -273,7 +273,7 @@ Some GPS tags have values which are fixed-length strings. For these, the
|
|
273
273
|
indicated string lengths include a null terminator which is added
|
274
274
|
automatically by ExifTool. Remember that the descriptive values are used
|
275
275
|
when writing (eg. 'Above Sea Level', not '0') unless the print conversion is
|
276
|
-
disabled (with '-n' on the command line or the PrintConv option in the API,
|
276
|
+
disabled (with '-n' on the command line or the L<PrintConv|../ExifTool.html#PrintConv> option in the API,
|
277
277
|
or by suffixing the tag name with a C<#> character).
|
278
278
|
|
279
279
|
When adding GPS information to an image, it is important to set all of the
|
@@ -306,15 +306,15 @@ HH:MM:SS[.ss][+/-HH:MM]", C<boolean> is either "True" or "False", C<struct>
|
|
306
306
|
indicates a structured tag, and C<lang-alt> is a tag that supports alternate
|
307
307
|
languages.
|
308
308
|
|
309
|
-
When reading, C<struct> tags are extracted only if the Struct (-struct)
|
309
|
+
When reading, C<struct> tags are extracted only if the L<Struct|../ExifTool.html#Struct> (-struct)
|
310
310
|
option is used. Otherwise the corresponding I<Flattened> tags, indicated by
|
311
311
|
an underline (C<_>) after the B<Writable> type, are extracted. When
|
312
312
|
copying, by default both structured and flattened tags are available, but
|
313
313
|
the flattened tags are considered "unsafe" so they they aren't copied unless
|
314
|
-
specified explicitly. The Struct option may be disabled by setting Struct
|
314
|
+
specified explicitly. The L<Struct|../ExifTool.html#Struct> option may be disabled by setting Struct
|
315
315
|
to 0 via the API or with --struct on the command line to copy only flattened
|
316
316
|
tags, or enabled by setting Struct to 1 via the API or with -struct on the
|
317
|
-
command line to copy only as structures. When writing, the Struct option
|
317
|
+
command line to copy only as structures. When writing, the L<Struct|../ExifTool.html#Struct> option
|
318
318
|
has no effect, and both structured and flattened tags may be written. See
|
319
319
|
L<http://owl.phy.queensu.ca/~phil/exiftool/struct.html> for more details.
|
320
320
|
|
@@ -381,7 +381,7 @@ the B<Writable> format name. For tags where a range of lengths is allowed,
|
|
381
381
|
the minimum and maximum lengths are separated by a comma within the
|
382
382
|
brackets. When writing, ExifTool issues a minor warning and truncates the
|
383
383
|
value if it is longer than allowed by the IPTC specification. Minor errors
|
384
|
-
may be ignored with the IgnoreMinorErrors (-m) option, allowing longer
|
384
|
+
may be ignored with the L<IgnoreMinorErrors|../ExifTool.html#IgnoreMinorErrors> (-m) option, allowing longer
|
385
385
|
values to be written, but beware that values like this may cause problems
|
386
386
|
for some other IPTC readers. ExifTool will happily read IPTC values of any
|
387
387
|
length.
|
@@ -411,7 +411,7 @@ image files (most notably, MOV/MP4 videos and HEIC/CR3 images). Exiftool
|
|
411
411
|
extracts standard meta information and a variety of audio, video and image
|
412
412
|
parameters, as well as proprietary information written by many camera
|
413
413
|
models. Tags with a question mark after their name are not extracted unless
|
414
|
-
the Unknown option is set.
|
414
|
+
the L<Unknown|../ExifTool.html#Unknown> option is set.
|
415
415
|
|
416
416
|
When writing, ExifTool creates both QuickTime and XMP tags by default, but
|
417
417
|
the group may be specified to write one or the other separately. If no
|
@@ -428,20 +428,24 @@ QuickTime-based files; it extracts other track-specific and timed
|
|
428
428
|
metadata, but can not yet edit tags in these locations (with the
|
429
429
|
exception of track-level date/time tags).
|
430
430
|
|
431
|
-
Alternate language tags may be accessed for
|
431
|
+
Alternate language tags may be accessed for
|
432
|
+
L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> and
|
433
|
+
L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags> tags by adding
|
432
434
|
a 3-character ISO 639-2 language code and an optional ISO 3166-1 alpha 2
|
433
435
|
country code to the tag name (eg. "ItemList:Artist-deu" or
|
434
|
-
"ItemList::Artist-deu-DE"). Most
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
436
|
+
"ItemList::Artist-deu-DE"). Most
|
437
|
+
L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags> tags support a
|
438
|
+
language code, but without a country code. If no language code is specified
|
439
|
+
when writing, alternate languages for the tag are deleted. Use the "und"
|
440
|
+
language code to write the default language without deleting alternate
|
441
|
+
languages. Note that "eng" is treated as a default language when reading,
|
442
|
+
but not when writing.
|
439
443
|
|
440
444
|
According to the specification, many QuickTime date/time tags should be
|
441
445
|
stored as UTC. Unfortunately, digital cameras often store local time values
|
442
446
|
instead (presumably because they don't know the time zone). For this
|
443
447
|
reason, by default ExifTool does not assume a time zone for these values.
|
444
|
-
However, if the QuickTimeUTC API option is set, then ExifTool will assume
|
448
|
+
However, if the L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> API option is set, then ExifTool will assume
|
445
449
|
these values are properly stored as UTC, and will convert them to local time
|
446
450
|
when extracting.
|
447
451
|
|
@@ -457,7 +461,7 @@ a few).
|
|
457
461
|
Many Photoshop tags are marked as Unknown (indicated by a question mark
|
458
462
|
after the tag name) because the information they provide is not very useful
|
459
463
|
under normal circumstances. These unknown tags are not extracted unless the
|
460
|
-
Unknown (-u) option is used. See
|
464
|
+
L<Unknown|../ExifTool.html#Unknown> (-u) option is used. See
|
461
465
|
L<http://www.adobe.com/devnet-apps/photoshop/fileformatashtml/> for the
|
462
466
|
official specification
|
463
467
|
|
@@ -468,7 +472,7 @@ access to this information.
|
|
468
472
|
},
|
469
473
|
PrintIM => q{
|
470
474
|
The format of the PrintIM information is known, however no PrintIM tags have
|
471
|
-
been decoded. Use the Unknown (-u) option to extract PrintIM information.
|
475
|
+
been decoded. Use the L<Unknown|../ExifTool.html#Unknown> (-u) option to extract PrintIM information.
|
472
476
|
},
|
473
477
|
GeoTiff => q{
|
474
478
|
ExifTool extracts the following tags from GeoTIFF images. See
|
@@ -533,7 +537,7 @@ settings have not been decoded for all models. The tables below list the
|
|
533
537
|
custom settings for the currently supported models.
|
534
538
|
},
|
535
539
|
Unknown => q{
|
536
|
-
The following tags are decoded in unsupported maker notes. Use the Unknown
|
540
|
+
The following tags are decoded in unsupported maker notes. Use the L<Unknown|../ExifTool.html#Unknown>
|
537
541
|
(-u) option to display other unknown tags.
|
538
542
|
},
|
539
543
|
PDF => q{
|
@@ -545,7 +549,7 @@ specification.
|
|
545
549
|
|
546
550
|
ExifTool supports reading and writing PDF documents up to version 1.7
|
547
551
|
extension level 3, including support for RC4, AES-128 and AES-256
|
548
|
-
encryption. A Password option is provided to allow processing of
|
552
|
+
encryption. A L<Password|../ExifTool.html#Password> option is provided to allow processing of
|
549
553
|
password-protected PDF files.
|
550
554
|
|
551
555
|
ExifTool may be used to write native PDF and XMP metadata to PDF files. It
|
@@ -712,7 +716,7 @@ sub new
|
|
712
716
|
my $that = shift;
|
713
717
|
my $class = ref($that) || $that || 'Image::ExifTool::BuildTagLookup';
|
714
718
|
my $self = bless {}, $class;
|
715
|
-
my (%subdirs, %isShortcut
|
719
|
+
my (%subdirs, %isShortcut);
|
716
720
|
my %count = (
|
717
721
|
'unique tag names' => 0,
|
718
722
|
'total tags' => 0,
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.15';
|
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)
|
@@ -429,10 +429,13 @@ $VERSION = '4.14';
|
|
429
429
|
250.1 => 'Sigma 20mm f/1.4 DG HSM | A', #IB
|
430
430
|
250.2 => 'Sigma 20mm f/1.5 FF High-Speed Prime | 017', #IB
|
431
431
|
250.3 => 'Tokina Opera 16-28mm f/2.8 FF', #IB
|
432
|
-
251 => 'Canon EF 70-200mm f/2.8L IS II USM',
|
432
|
+
251 => 'Canon EF 70-200mm f/2.8L IS II USM',
|
433
|
+
251.1 => 'Canon EF 70-200mm f/2.8L IS III USM', #IB
|
433
434
|
252 => 'Canon EF 70-200mm f/2.8L IS II USM + 1.4x', #50 (1.4x Mk II)
|
435
|
+
252.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 1.4x', #PH (NC)
|
434
436
|
253 => 'Canon EF 70-200mm f/2.8L IS II USM + 2x', #PH (NC)
|
435
|
-
|
437
|
+
253.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 2x', #PH (NC)
|
438
|
+
# 253.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367
|
436
439
|
254 => 'Canon EF 100mm f/2.8L Macro IS USM', #42
|
437
440
|
255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Sigma Lens', #50
|
438
441
|
255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50
|
@@ -6178,7 +6181,7 @@ my %ciMaxFocal = (
|
|
6178
6181
|
# DPP shows "On" for any value except 0xffff when bit 0x08 is set
|
6179
6182
|
my ($val, $inv) = @_;
|
6180
6183
|
if ($inv) {
|
6181
|
-
$val =~ /(0x[0-9a-f]+)/i or $val =~ /(\d+)
|
6184
|
+
$val =~ /(0x[0-9a-f]+)/i or $val =~ /(\d+)/ or return undef;
|
6182
6185
|
return $1;
|
6183
6186
|
} else {
|
6184
6187
|
return sprintf("On (0x%.2x)",$val) if $val & 0x08;
|
@@ -7316,7 +7319,7 @@ my %ciMaxFocal = (
|
|
7316
7319
|
NOTES => q{
|
7317
7320
|
Camera color calibration data. For the 20D, 350D, 1DmkII and 1DSmkII the
|
7318
7321
|
order of the coefficients is A, B, C, Temperature, but for newer models it
|
7319
|
-
is B, C, A, Temperature. These tags are extracted only when the Unknown
|
7322
|
+
is B, C, A, Temperature. These tags are extracted only when the L<Unknown|../ExifTool.html#Unknown>
|
7320
7323
|
option is used.
|
7321
7324
|
},
|
7322
7325
|
0x00 => { Name => 'CameraColorCalibration01', %cameraColorCalibration },
|
@@ -8497,7 +8500,7 @@ my %filterConv = (
|
|
8497
8500
|
GROUPS => { 0 => 'MakerNotes', 1 => 'Canon', 2 => 'Image' },
|
8498
8501
|
PROCESS_PROC => \&ProcessCTMD,
|
8499
8502
|
NOTES => q{
|
8500
|
-
Canon Timed MetaData tags found in CR3 images. The ExtractEmbedded option
|
8503
|
+
Canon Timed MetaData tags found in CR3 images. The L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option
|
8501
8504
|
is automatically applied when reading CR3 files to be able to extract this
|
8502
8505
|
information.
|
8503
8506
|
},
|
@@ -8953,9 +8956,10 @@ sub PrintLensID(@)
|
|
8953
8956
|
}
|
8954
8957
|
@matches = @best if @best;
|
8955
8958
|
}
|
8959
|
+
@matches = @likely unless @matches;
|
8960
|
+
@matches = @maybe unless @matches;
|
8961
|
+
Image::ExifTool::Exif::MatchLensModel(\@matches, $lensModel);
|
8956
8962
|
return join(' or ', @matches) if @matches;
|
8957
|
-
return join(' or ', @likely) if @likely;
|
8958
|
-
return join(' or ', @maybe) if @maybe;
|
8959
8963
|
} elsif ($lensModel and $lensModel =~ /\d/) {
|
8960
8964
|
# use lens model as written by the camera
|
8961
8965
|
if ($printConv eq \%canonLensTypes) {
|
@@ -9303,7 +9307,7 @@ sub PrintAFPoints1D($)
|
|
9303
9307
|
$focusing = "$row$col" if $focus eq $focusPt;
|
9304
9308
|
push @points, "$row$col" if shift @bits;
|
9305
9309
|
}
|
9306
|
-
$focusing or $focusing = ($focus
|
9310
|
+
$focusing or $focusing = ($focus == 0xff) ? 'Auto' : sprintf('Unknown (0x%.2x)',$focus);
|
9307
9311
|
return "$focusing (" . join(',',@points) . ')';
|
9308
9312
|
}
|
9309
9313
|
|