exiftool_vendored 12.32.0 → 12.33.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +21 -3
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +14 -14
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +1 -1
- data/bin/lib/Image/ExifTool/CBOR.pm +85 -31
- data/bin/lib/Image/ExifTool/Canon.pm +15 -3
- data/bin/lib/Image/ExifTool/Exif.pm +97 -3
- data/bin/lib/Image/ExifTool/JSON.pm +4 -2
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +3 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
- data/bin/lib/Image/ExifTool/Olympus.pm +5 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +7 -1
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
- data/bin/lib/Image/ExifTool/README +2 -2
- data/bin/lib/Image/ExifTool/Sony.pm +3 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +21 -2
- data/bin/lib/Image/ExifTool/TagNames.pod +32 -4
- data/bin/lib/Image/ExifTool/XMP.pm +7 -2
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -0
- data/bin/lib/Image/ExifTool.pm +13 -12
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2579a96159a6bebe1550982f10cbb416ee1760ac092cb135c725e8704a66ed8
|
4
|
+
data.tar.gz: 22a1963fc56a05e435fada1b55e74df2fcbd1782bd84a902595950ebe25ac923
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bab490d296c90b99ed805c0a4b80b48f5d08282657f17f97ca856af36e6e4b32799c9162be40e3f0e4996d892530edebe582f37961df6ebb9717a892e935f3a2
|
7
|
+
data.tar.gz: 8ac18abe9d185ce0b4fcf43909554caba45c904b73b10a8ae6e93c4011e120fd299b1d05f4dd404d7d1ab9c255a48b96c57d31057286f42e5a41717429ba2864
|
data/bin/Changes
CHANGED
@@ -7,6 +7,24 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 12.30. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Oct. 16, 2021 - Version 12.33
|
11
|
+
|
12
|
+
- Added support for DNG version 1.6.0.0
|
13
|
+
- Added two new Sony LensType values (thanks Jos Roost and LibRaw)
|
14
|
+
- Added some new elements to the XMP-crs:Look structure (thanks Herb)
|
15
|
+
- Added a few new IPTC XMP tags (thanks Michael Steidl)
|
16
|
+
- Added a new Canon RF lens (thanks Norbert Wasser)
|
17
|
+
- Decode Canon ShutterMode (thanks John Moyer)
|
18
|
+
- Extract LensModel from some Olympus MOV videos
|
19
|
+
- Generate MediaDataOffset/Size for MOV videos with zero-sized MDAT chunk
|
20
|
+
- Improvements to CBOR reader, including hex dump with -v3 option
|
21
|
+
- Recognize Final Cut Pro XML files
|
22
|
+
- Allow binary data of Protected tags to be extracted with the -X -j and -php
|
23
|
+
options with -b by setting the API RequestAll option to 3
|
24
|
+
- Changed name of "Canon EF 80-200mm f/4.5-5.6" lens with LensType 38 to add
|
25
|
+
"II" to the name (Exiv2 issue 1906)
|
26
|
+
- Fixed runtime warning when processing files with a .DIR extension
|
27
|
+
|
10
28
|
Sept. 30, 2021 - Version 12.32
|
11
29
|
|
12
30
|
- Added support for CBOR-format metadata in JUMBF (note that JUMBF support is
|
@@ -1484,8 +1502,8 @@ Oct. 9, 2018 - Version 11.13
|
|
1484
1502
|
- Added a new Canon LensType (thanks LibRaw)
|
1485
1503
|
- Minor improvements to verbose dump of streaming GPS metadata
|
1486
1504
|
- Reverted change of version 10.71 which resulted in Windows not recognizing
|
1487
|
-
PNG CreationTime as written by ExifTool (added this feature to the
|
1488
|
-
StrictDate
|
1505
|
+
PNG CreationTime as written by ExifTool (added this feature to the API
|
1506
|
+
StrictDate option instead)
|
1489
1507
|
- Improved decoding of Nikon CropHiSpeed (thanks LibRaw)
|
1490
1508
|
- Improved -fast option to reduce memory usage when reading JPG, PNG,
|
1491
1509
|
QuickTime-based and RIFF-based files via a sequential stream
|
@@ -1599,7 +1617,7 @@ June 21, 2018 - Version 11.03
|
|
1599
1617
|
June 13, 2018 - Version 11.02
|
1600
1618
|
|
1601
1619
|
- Added support for a different format of Apple iWorks files
|
1602
|
-
- Added undocumented FixCorruptedMOV
|
1620
|
+
- Added undocumented API FixCorruptedMOV option to allow fixing MOV videos
|
1603
1621
|
with multiple 'mdat' atoms which were corrupted by ExifTool
|
1604
1622
|
- Decode more QuickTime tags
|
1605
1623
|
- Decode more PanasonicRaw tags (thanks Klaus Homeister)
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -107,8 +107,8 @@ your home directory, then you would type the following commands in a
|
|
107
107
|
terminal window to extract and run ExifTool:
|
108
108
|
|
109
109
|
cd ~/Desktop
|
110
|
-
gzip -dc Image-ExifTool-12.
|
111
|
-
cd Image-ExifTool-12.
|
110
|
+
gzip -dc Image-ExifTool-12.33.tar.gz | tar -xf -
|
111
|
+
cd Image-ExifTool-12.33
|
112
112
|
./exiftool t/images/ExifTool.jpg
|
113
113
|
|
114
114
|
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.33';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -1619,7 +1619,7 @@ if (@newValues) {
|
|
1619
1619
|
next;
|
1620
1620
|
}
|
1621
1621
|
my %opts = ( Shift => 0 ); # shift values if possible instead of adding/deleting
|
1622
|
-
# allow writing of '
|
1622
|
+
# allow writing of 'Unsafe' tags unless specified by wildcard
|
1623
1623
|
$opts{Protected} = 1 unless $tag =~ /[?*]/;
|
1624
1624
|
|
1625
1625
|
if ($tag =~ s/<// and defined $newVal) {
|
@@ -2285,7 +2285,7 @@ TAG: foreach $tag (@foundTags) {
|
|
2285
2285
|
# avoid extracting Protected binary tags (eg. data blocks) [insider information]
|
2286
2286
|
my $lcTag = lc $tag;
|
2287
2287
|
$lcTag =~ s/ .*//;
|
2288
|
-
next unless $$et{REQ_TAG_LOOKUP}{$lcTag};
|
2288
|
+
next unless $$et{REQ_TAG_LOOKUP}{$lcTag} or ($$et{OPTIONS}{RequestAll} || 0) > 2;
|
2289
2289
|
}
|
2290
2290
|
$val = ConvertBinary($val); # convert SCALAR references
|
2291
2291
|
next unless defined $val;
|
@@ -4732,11 +4732,11 @@ I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
|
|
4732
4732
|
prefixed by optional family numbers, and separated colons. If no group name
|
4733
4733
|
is specified, the tag is created in the preferred group, and updated in any
|
4734
4734
|
other location where a same-named tag already exists. The preferred group
|
4735
|
-
is the first group in the following list
|
4736
|
-
IPTC, 3) XMP.
|
4735
|
+
in JPEG and TIFF-format images is the first group in the following list
|
4736
|
+
where I<TAG> is valid: 1) EXIF, 2) IPTC, 3) XMP.
|
4737
4737
|
|
4738
4738
|
The wildcards C<*> and C<?> may be used in tag names to assign the same
|
4739
|
-
value to multiple tags. When specified with wildcards, "
|
4739
|
+
value to multiple tags. When specified with wildcards, "Unsafe" tags are
|
4740
4740
|
not written. A tag name of C<All> is equivalent to C<*> (except that it
|
4741
4741
|
doesn't require quoting, while arguments with wildcards do on systems with
|
4742
4742
|
shell globbing), and is often used when deleting all metadata (ie. C<-All=>)
|
@@ -4882,10 +4882,10 @@ See L</COPYING EXAMPLES> for examples using B<-tagsFromFile>.
|
|
4882
4882
|
Notes:
|
4883
4883
|
|
4884
4884
|
1) Some tags (generally tags which may affect the appearance of the image)
|
4885
|
-
are considered "
|
4885
|
+
are considered "Unsafe" to write, and are only copied if specified
|
4886
4886
|
explicitly (ie. no wildcards). See the
|
4887
4887
|
L<tag name documentation|Image::ExifTool::TagNames> for more details about
|
4888
|
-
"
|
4888
|
+
"Unsafe" tags.
|
4889
4889
|
|
4890
4890
|
2) Be aware of the difference between excluding a tag from being copied
|
4891
4891
|
(--I<TAG>), and deleting a tag (-I<TAG>=). Excluding a tag prevents it from
|
@@ -4983,7 +4983,7 @@ intermediate file (C<out.args> in this example):
|
|
4983
4983
|
exiftool -@ out.args -sep ', ' dst.jpg
|
4984
4984
|
|
4985
4985
|
Note: Be careful when copying information with this technique since it is
|
4986
|
-
easy to write tags which are normally considered "
|
4986
|
+
easy to write tags which are normally considered "Unsafe". For instance,
|
4987
4987
|
the FileName and Directory tags are excluded in the example above to avoid
|
4988
4988
|
renaming and moving the destination file. Also note that the second command
|
4989
4989
|
above will produce warning messages for any tags which are not writable.
|
@@ -5003,8 +5003,8 @@ are in the default output. By default, list items are separated by a
|
|
5003
5003
|
newline when extracted with the B<-b> option, but this may be changed (see
|
5004
5004
|
the B<-sep> option for details). May be combined with B<-j>, B<-php> or
|
5005
5005
|
B<-X> to extract binary data in JSON, PHP or XML format, but note that
|
5006
|
-
"
|
5007
|
-
|
5006
|
+
"Unsafe" tags are not extracted as binary unless they are specified explicitly or
|
5007
|
+
the API RequestAll option is set to 3 or higher.
|
5008
5008
|
|
5009
5009
|
With a leading double dash (B<--b> or B<--binary>), tags which contain
|
5010
5010
|
binary data are suppressed in the output when reading.
|
@@ -5205,7 +5205,7 @@ By default the resulting group name is simplified by removing any leading
|
|
5205
5205
|
C<Main:> and collapsing adjacent identical group names, but this can be
|
5206
5206
|
avoided by placing a colon before the first family number (eg. B<-g:3:1>).
|
5207
5207
|
Use the B<-listg> option to list group names for a specified family. The
|
5208
|
-
SavePath and SaveFormat
|
5208
|
+
API SavePath and SaveFormat options are automatically enabled if the
|
5209
5209
|
respective family 5 or 6 group names are requested. See the
|
5210
5210
|
L<API GetGroup documentation|Image::ExifTool/GetGroup> for more information.
|
5211
5211
|
|
@@ -5408,7 +5408,7 @@ with this command:
|
|
5408
5408
|
|
5409
5409
|
produces output like this:
|
5410
5410
|
|
5411
|
-
-- Generated by ExifTool 12.
|
5411
|
+
-- Generated by ExifTool 12.33 --
|
5412
5412
|
File: a.jpg - 2003:10:31 15:44:19
|
5413
5413
|
(f/5.6, 1/60s, ISO 100)
|
5414
5414
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -5425,7 +5425,7 @@ are effectively processed as separate input files.
|
|
5425
5425
|
If a specified tag does not exist, a minor warning is issued and the line
|
5426
5426
|
with the missing tag is not printed. However, the B<-f> option may be used
|
5427
5427
|
to set the value of missing tags to '-' (but this may be configured via the
|
5428
|
-
MissingTagValue
|
5428
|
+
API MissingTagValue option), or the B<-m> option may be used to ignore minor
|
5429
5429
|
warnings and leave the missing values empty. Alternatively, B<-q -q> may be
|
5430
5430
|
used to simply suppress the warning messages.
|
5431
5431
|
|
@@ -460,7 +460,7 @@ According to the specification, integer-format QuickTime date/time tags
|
|
460
460
|
should be stored as UTC. Unfortunately, digital cameras often store local
|
461
461
|
time values instead (presumably because they don't know the time zone). For
|
462
462
|
this reason, by default ExifTool does not assume a time zone for these
|
463
|
-
values. However, if the L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC>
|
463
|
+
values. However, if the API L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> option is set, then ExifTool will
|
464
464
|
assume these values are properly stored as UTC, and will convert them to
|
465
465
|
local time when extracting.
|
466
466
|
|
@@ -15,12 +15,12 @@ use vars qw($VERSION);
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
use Image::ExifTool::JSON;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.01';
|
19
19
|
|
20
20
|
sub ProcessCBOR($$$);
|
21
21
|
sub ReadCBORValue($$$$);
|
22
22
|
|
23
|
-
# optional CBOR type
|
23
|
+
# optional CBOR type code
|
24
24
|
my %cborType6 = (
|
25
25
|
0 => 'date/time string',
|
26
26
|
1 => 'epoch-based date/time',
|
@@ -78,6 +78,7 @@ sub ReadCBORValue($$$$)
|
|
78
78
|
return(undef, 'Truncated CBOR data', $pos) if $pos >= $end;
|
79
79
|
my $verbose = $$et{OPTIONS}{Verbose};
|
80
80
|
my $indent = $$et{INDENT};
|
81
|
+
my $dumpStart = $pos;
|
81
82
|
my $fmt = Get8u($dataPt, $pos++);
|
82
83
|
my $dat = $fmt & 0x1f;
|
83
84
|
my ($num, $val, $err, $size);
|
@@ -95,28 +96,22 @@ sub ReadCBORValue($$$$)
|
|
95
96
|
$num = ReadValue($dataPt, $pos, $format, 1, $size);
|
96
97
|
$pos += $size;
|
97
98
|
}
|
98
|
-
my
|
99
|
-
if (
|
100
|
-
|
101
|
-
|
102
|
-
delete $$et{cbor_pre};
|
103
|
-
}
|
104
|
-
if (defined $$et{cbor_opt}) {
|
105
|
-
$opt = ", $$et{cbor_opt}:";
|
106
|
-
delete $$et{cbor_opt};
|
107
|
-
}
|
99
|
+
my $pre = '';
|
100
|
+
if (defined $$et{cbor_pre} and $fmt != 6) {
|
101
|
+
$pre = $$et{cbor_pre};
|
102
|
+
delete $$et{cbor_pre};
|
108
103
|
}
|
109
104
|
if ($fmt == 0) { # positive integer
|
110
105
|
$val = $num;
|
111
|
-
$et->VPrint(1, "$$et{INDENT} ${pre}int
|
106
|
+
$et->VPrint(1, "$$et{INDENT} ${pre}int+: $val\n");
|
112
107
|
} elsif ($fmt == 1) { # negative integer
|
113
108
|
$val = -1 * $num;
|
114
|
-
$et->VPrint(1, "$$et{INDENT} ${pre}int
|
109
|
+
$et->VPrint(1, "$$et{INDENT} ${pre}int-: $val\n");
|
115
110
|
} elsif ($fmt == 2 or $fmt == 3) { # byte/UTF8 string
|
116
111
|
return(undef, 'Truncated CBOR string value', $pos) if $pos + $num > $end;
|
117
112
|
if ($num < 0) { # (should not happen in C2PA)
|
118
113
|
my $string = '';
|
119
|
-
$$et{INDENT} .= '
|
114
|
+
$$et{INDENT} .= ' ';
|
120
115
|
for (;;) {
|
121
116
|
($val, $err, $pos) = ReadCBORValue($et, $dataPt, $pos, $end);
|
122
117
|
return(undef, $err, $pos) if $err;
|
@@ -125,26 +120,34 @@ sub ReadCBORValue($$$$)
|
|
125
120
|
$string .= $val;
|
126
121
|
}
|
127
122
|
$$et{INDENT} = $indent;
|
128
|
-
return($string, undef, $pos); # return concatenated
|
123
|
+
return($string, undef, $pos); # return concatenated byte/text string
|
129
124
|
} else {
|
130
125
|
$val = substr($$dataPt, $pos, $num);
|
131
126
|
}
|
132
127
|
$pos += $num;
|
133
|
-
if ($fmt == 2) {
|
134
|
-
$et->VPrint(1, "$$et{INDENT} ${pre}byte
|
135
|
-
|
128
|
+
if ($fmt == 2) { # (byte string)
|
129
|
+
$et->VPrint(1, "$$et{INDENT} ${pre}byte: <binary data ".length($val)." bytes>\n");
|
130
|
+
my $dat = $val;
|
131
|
+
$val = \$dat; # use scalar reference for binary data
|
132
|
+
} else { # (text string)
|
133
|
+
$val = $et->Decode($val, 'UTF8');
|
134
|
+
$et->VPrint(1, "$$et{INDENT} ${pre}text: '${val}'\n");
|
136
135
|
}
|
137
|
-
$et->VPrint(1, "$$et{INDENT} ${pre}text$opt '${val}'\n");
|
138
136
|
} elsif ($fmt == 4 or $fmt == 5) { # list/hash
|
139
137
|
if ($fmt == 4) {
|
140
|
-
$et->VPrint(1, "$$et{INDENT} ${pre}list
|
138
|
+
$et->VPrint(1, "$$et{INDENT} ${pre}list: <$num elements>\n");
|
141
139
|
} else {
|
142
|
-
$et->VPrint(1, "$$et{INDENT} ${pre}hash
|
140
|
+
$et->VPrint(1, "$$et{INDENT} ${pre}hash: <$num pairs>\n");
|
143
141
|
$num *= 2;
|
144
142
|
}
|
145
|
-
$$et{INDENT} .= '
|
143
|
+
$$et{INDENT} .= ' ';
|
146
144
|
my $i = 0;
|
147
145
|
my @list;
|
146
|
+
Image::ExifTool::HexDump($dataPt, $pos - $dumpStart,
|
147
|
+
Start => $dumpStart,
|
148
|
+
DataPos => $$et{cbor_datapos},
|
149
|
+
Prefix => $$et{INDENT},
|
150
|
+
) if $verbose > 2;
|
148
151
|
while ($num) {
|
149
152
|
$$et{cbor_pre} = "$i) ";
|
150
153
|
if ($fmt == 4) {
|
@@ -162,6 +165,7 @@ sub ReadCBORValue($$$$)
|
|
162
165
|
push @list, $val;
|
163
166
|
--$num;
|
164
167
|
}
|
168
|
+
$dumpStart = $pos;
|
165
169
|
$$et{INDENT} = $indent;
|
166
170
|
if ($fmt == 5) {
|
167
171
|
my ($i, @keys);
|
@@ -174,9 +178,40 @@ sub ReadCBORValue($$$$)
|
|
174
178
|
} else {
|
175
179
|
$val = \@list;
|
176
180
|
}
|
177
|
-
} elsif ($fmt == 6) { # optional
|
178
|
-
|
181
|
+
} elsif ($fmt == 6) { # optional tag
|
182
|
+
if ($verbose) {
|
183
|
+
my $str = "$num (" . ($cborType6{$num} || 'unknown') . ')';
|
184
|
+
my $spc = $$et{cbor_pre} ? (' ' x length $$et{cbor_pre}) : '';
|
185
|
+
$et->VPrint(1, "$$et{INDENT} $spc<CBOR optional type $str>\n");
|
186
|
+
Image::ExifTool::HexDump($dataPt, $pos - $dumpStart,
|
187
|
+
Start => $dumpStart,
|
188
|
+
DataPos => $$et{cbor_datapos},
|
189
|
+
Prefix => $$et{INDENT} . ' ',
|
190
|
+
) if $verbose > 2;
|
191
|
+
}
|
192
|
+
# read next value (note: in the case of multiple tags,
|
193
|
+
# this nesting will apply the tags in the correct order)
|
179
194
|
($val, $err, $pos) = ReadCBORValue($et, $dataPt, $pos, $end);
|
195
|
+
$dumpStart = $pos;
|
196
|
+
# convert some values according to the optional tag number (untested)
|
197
|
+
if ($num == 0 and not ref $val) { # date/time string
|
198
|
+
require Image::ExifTool::XMP;
|
199
|
+
$val = Image::ExifTool::XMP::ConvertXMPDate($val);
|
200
|
+
} elsif ($num == 1 and not ref $val) { # epoch-based date/time
|
201
|
+
if (Image::ExifTool::IsFloat($val)) {
|
202
|
+
my $dec = ($val == int($val)) ? undef : 6;
|
203
|
+
$val = Image::ExifTool::ConvertUnixTime($val, 1, $dec);
|
204
|
+
}
|
205
|
+
} elsif (($num == 2 or $num == 3) and ref($val) eq 'SCALAR') { # pos/neg bignum
|
206
|
+
my $big = 0;
|
207
|
+
$big = 256 * $big + Get8u($val,$_) foreach 0..(length($$val) - 1);
|
208
|
+
$val = $num==2 ? $big : -$big;
|
209
|
+
} elsif (($num == 4 or $num == 5) and # decimal fraction or bigfloat
|
210
|
+
ref($val) eq 'ARRAY' and @$val == 2 and
|
211
|
+
Image::ExifTool::IsInt($$val[0]) and Image::ExifTool::IsInt($$val[1]))
|
212
|
+
{
|
213
|
+
$val = $$val[1] * ($num == 4 ? 10 : 2) ** $$val[0];
|
214
|
+
}
|
180
215
|
} elsif ($fmt == 7) {
|
181
216
|
if ($dat == 31) {
|
182
217
|
undef $val; # "break" = end of indefinite array/hash (not used in C2PA)
|
@@ -202,10 +237,16 @@ sub ReadCBORValue($$$$)
|
|
202
237
|
} else {
|
203
238
|
return(undef, "Invalid CBOR type 7 variant $num", $pos);
|
204
239
|
}
|
205
|
-
$et->VPrint(1, "$$et{INDENT} ${pre}typ7
|
240
|
+
$et->VPrint(1, "$$et{INDENT} ${pre}typ7: ".(defined $val ? $val : '<break>')."\n");
|
206
241
|
} else {
|
207
242
|
return(undef, "Unknown CBOR format $fmt", $pos);
|
208
243
|
}
|
244
|
+
Image::ExifTool::HexDump($dataPt, $pos - $dumpStart,
|
245
|
+
Start => $dumpStart,
|
246
|
+
DataPos => $$et{cbor_datapos},
|
247
|
+
Prefix => $$et{INDENT} . ' ',
|
248
|
+
MaxLen => $verbose < 5 ? ($verbose == 3 ? 96 : 2048) : undef,
|
249
|
+
) if $verbose > 2;
|
209
250
|
return($val, $err, $pos);
|
210
251
|
}
|
211
252
|
|
@@ -219,15 +260,28 @@ sub ProcessCBOR($$$)
|
|
219
260
|
my $dataPt = $$dirInfo{DataPt};
|
220
261
|
my $pos = $$dirInfo{DirStart};
|
221
262
|
my $end = $pos + $$dirInfo{DirLen};
|
263
|
+
my ($val, $err, $tag, $i);
|
264
|
+
|
222
265
|
$et->VerboseDir('CBOR', undef, $$dirInfo{DirLen});
|
223
|
-
|
224
|
-
|
266
|
+
|
267
|
+
$$et{cbor_datapos} = $$dirInfo{DataPos} + $$dirInfo{Base};
|
268
|
+
|
225
269
|
while ($pos < $end) {
|
226
270
|
($val, $err, $pos) = ReadCBORValue($et, $dataPt, $pos, $end);
|
227
271
|
$err and $et->Warn($err), last;
|
228
|
-
ref $val eq 'HASH'
|
229
|
-
|
230
|
-
|
272
|
+
if (ref $val eq 'HASH') {
|
273
|
+
foreach $tag (@{$$val{_ordered_keys_}}) {
|
274
|
+
Image::ExifTool::JSON::ProcessTag($et, $tagTablePtr, $tag, $$val{$tag});
|
275
|
+
}
|
276
|
+
} elsif (ref $val eq 'ARRAY') {
|
277
|
+
for ($i=0; $i<@$val; ++$i) {
|
278
|
+
Image::ExifTool::JSON::ProcessTag($et, $tagTablePtr, "Item$i", $$val[$i]);
|
279
|
+
}
|
280
|
+
} elsif ($val eq '0') {
|
281
|
+
$et->VPrint(1, "$$et{INDENT} <CBOR end>\n");
|
282
|
+
last; # (treat as padding)
|
283
|
+
} else {
|
284
|
+
$et->VPrint(1, "$$et{INDENT} Unknown value: $val\n");
|
231
285
|
}
|
232
286
|
}
|
233
287
|
return 1;
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.52';
|
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)
|
@@ -187,7 +187,7 @@ $VERSION = '4.51';
|
|
187
187
|
37.2 => 'Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical [IF] Macro (A20)', #38
|
188
188
|
37.3 => 'Tamron SP AF 17-50mm f/2.8 XR Di II VC LD Aspherical [IF]', #34
|
189
189
|
37.4 => 'Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical [IF] Macro', #forum2937
|
190
|
-
38 => 'Canon EF 80-200mm f/4.5-5.6', #32
|
190
|
+
38 => 'Canon EF 80-200mm f/4.5-5.6 II', #32 (II added ref https://github.com/Exiv2/exiv2/issues/1906)
|
191
191
|
39 => 'Canon EF 75-300mm f/4-5.6',
|
192
192
|
40 => 'Canon EF 28-80mm f/3.5-5.6',
|
193
193
|
41 => 'Canon EF 28-90mm f/4-5.6', #32
|
@@ -595,6 +595,7 @@ $VERSION = '4.51';
|
|
595
595
|
'61182.21' => 'Canon RF 70-200mm F4L IS USM', #42
|
596
596
|
'61182.22' => 'Canon RF 50mm F1.8 STM', #42
|
597
597
|
'61182.23' => 'Canon RF 14-35mm F4L IS USM', #IB
|
598
|
+
'61182.24' => 'Canon RF 16mm F2.8 STM', #42
|
598
599
|
#'61182.xx' => 'Canon RF 100mm F2.8L MACRO IS USM',
|
599
600
|
65535 => 'n/a',
|
600
601
|
);
|
@@ -6731,7 +6732,17 @@ my %ciMaxFocal = (
|
|
6731
6732
|
PrintConvInv => '$val =~ s/ ?m$//; IsFloat($val) ? $val : 655.35',
|
6732
6733
|
},
|
6733
6734
|
# 22 - values: 0, 1
|
6734
|
-
|
6735
|
+
23 => { #JohnMoyer (forum12925)
|
6736
|
+
Name => 'ShutterMode',
|
6737
|
+
PrintConv => {
|
6738
|
+
0 => 'Mechanical',
|
6739
|
+
1 => 'Electronic First Curtain',
|
6740
|
+
2 => 'Electronic',
|
6741
|
+
# 3 => ?
|
6742
|
+
# 21 => ?
|
6743
|
+
# 22 => ?
|
6744
|
+
},
|
6745
|
+
},
|
6735
6746
|
25 => { #PH
|
6736
6747
|
Name => 'FlashExposureLock',
|
6737
6748
|
PrintConv => \%offOn,
|
@@ -6765,6 +6776,7 @@ my %ciMaxFocal = (
|
|
6765
6776
|
278 => 'Canon RF 70-200mm F4L IS USM', #42
|
6766
6777
|
280 => 'Canon RF 50mm F1.8 STM', #42
|
6767
6778
|
281 => 'Canon RF 14-35mm F4L IS USM', #42/IB
|
6779
|
+
288 => 'Canon RF 16mm F2.8 STM', #42
|
6768
6780
|
#xxx => 'Canon RF 100mm F2.8L MACRO IS USM',
|
6769
6781
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
6770
6782
|
},
|
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
56
56
|
use Image::ExifTool qw(:DataAccess :Utils);
|
57
57
|
use Image::ExifTool::MakerNotes;
|
58
58
|
|
59
|
-
$VERSION = '4.
|
59
|
+
$VERSION = '4.37';
|
60
60
|
|
61
61
|
sub ProcessExif($$$);
|
62
62
|
sub WriteExif($$$);
|
@@ -265,6 +265,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
|
|
265
265
|
32892 => 'Sequential Color Filter', #JR (Sony ARQ)
|
266
266
|
34892 => 'Linear Raw', #2
|
267
267
|
51177 => 'Depth Map', # (DNG 1.5)
|
268
|
+
52527 => 'Semantic Mask', # (DNG 1.6)
|
268
269
|
);
|
269
270
|
|
270
271
|
%orientation = (
|
@@ -291,6 +292,7 @@ sub BINARY_DATA_LIMIT { return 10 * 1024 * 1024; }
|
|
291
292
|
9 => 'Depth map of reduced-resolution image', # (DNG 1.5)
|
292
293
|
16 => 'Enhanced image data', # (DNG 1.5)
|
293
294
|
0x10001 => 'Alternate reduced-resolution image', # (DNG 1.2)
|
295
|
+
0x10004 => 'Semantic Mask', # (DNG 1.6)
|
294
296
|
0xffffffff => 'invalid', #(found in E5700 NEF's)
|
295
297
|
BITMASK => {
|
296
298
|
0 => 'Reduced resolution',
|
@@ -366,6 +368,7 @@ my %opcodeInfo = (
|
|
366
368
|
11 => 'DeltaPerColumn',
|
367
369
|
12 => 'ScalePerRow',
|
368
370
|
13 => 'ScalePerColumn',
|
371
|
+
14 => 'WarpRectilinear2', # (DNG 1.6)
|
369
372
|
},
|
370
373
|
PrintConvInv => undef, # (so the inverse conversion is not performed)
|
371
374
|
);
|
@@ -3038,12 +3041,12 @@ my %opcodeInfo = (
|
|
3038
3041
|
},
|
3039
3042
|
},
|
3040
3043
|
#
|
3041
|
-
# DNG tags 0xc6XX and
|
3044
|
+
# DNG tags 0xc6XX, 0xc7XX and 0xcdXX (ref 2 unless otherwise stated)
|
3042
3045
|
#
|
3043
3046
|
0xc612 => {
|
3044
3047
|
Name => 'DNGVersion',
|
3045
3048
|
Notes => q{
|
3046
|
-
tags 0xc612-
|
3049
|
+
tags 0xc612-0xcd3b are defined by the DNG specification unless otherwise
|
3047
3050
|
noted. See L<https://helpx.adobe.com/photoshop/digital-negative.html> for
|
3048
3051
|
the specification
|
3049
3052
|
},
|
@@ -4041,6 +4044,97 @@ my %opcodeInfo = (
|
|
4041
4044
|
Protected => 1,
|
4042
4045
|
WriteGroup => 'IFD0',
|
4043
4046
|
},
|
4047
|
+
0xcd2d => { # DNG 1.6
|
4048
|
+
Name => 'ProfileGainTableMap',
|
4049
|
+
Writable => 'undef',
|
4050
|
+
WriteGroup => 'SubIFD',
|
4051
|
+
Protected => 1,
|
4052
|
+
Binary => 1,
|
4053
|
+
},
|
4054
|
+
0xcd2e => { # DNG 1.6
|
4055
|
+
Name => 'SemanticName',
|
4056
|
+
# Writable => 'string',
|
4057
|
+
WriteGroup => 'SubIFD' #? (NC) Semantic Mask IFD (only for Validate)
|
4058
|
+
},
|
4059
|
+
0xcd30 => { # DNG 1.6
|
4060
|
+
Name => 'SemanticInstanceIFD',
|
4061
|
+
# Writable => 'string',
|
4062
|
+
WriteGroup => 'SubIFD' #? (NC) Semantic Mask IFD (only for Validate)
|
4063
|
+
},
|
4064
|
+
0xcd31 => { # DNG 1.6
|
4065
|
+
Name => 'CalibrationIlluminant3',
|
4066
|
+
Writable => 'int16u',
|
4067
|
+
WriteGroup => 'IFD0',
|
4068
|
+
Protected => 1,
|
4069
|
+
SeparateTable => 'LightSource',
|
4070
|
+
PrintConv => \%lightSource,
|
4071
|
+
},
|
4072
|
+
0xcd32 => { # DNG 1.6
|
4073
|
+
Name => 'CameraCalibration3',
|
4074
|
+
Writable => 'rational64s',
|
4075
|
+
WriteGroup => 'IFD0',
|
4076
|
+
Count => -1,
|
4077
|
+
Protected => 1,
|
4078
|
+
},
|
4079
|
+
0xcd33 => { # DNG 1.6
|
4080
|
+
Name => 'ColorMatrix3',
|
4081
|
+
Writable => 'rational64s',
|
4082
|
+
WriteGroup => 'IFD0',
|
4083
|
+
Count => -1,
|
4084
|
+
Protected => 1,
|
4085
|
+
},
|
4086
|
+
0xcd34 => { # DNG 1.6
|
4087
|
+
Name => 'ForwardMatrix3',
|
4088
|
+
Writable => 'rational64s',
|
4089
|
+
WriteGroup => 'IFD0',
|
4090
|
+
Count => -1,
|
4091
|
+
Protected => 1,
|
4092
|
+
},
|
4093
|
+
0xcd35 => { # DNG 1.6
|
4094
|
+
Name => 'IlluminantData1',
|
4095
|
+
Writable => 'undef',
|
4096
|
+
WriteGroup => 'IFD0',
|
4097
|
+
Protected => 1,
|
4098
|
+
},
|
4099
|
+
0xcd36 => { # DNG 1.6
|
4100
|
+
Name => 'IlluminantData2',
|
4101
|
+
Writable => 'undef',
|
4102
|
+
WriteGroup => 'IFD0',
|
4103
|
+
Protected => 1,
|
4104
|
+
},
|
4105
|
+
0xcd37 => { # DNG 1.6
|
4106
|
+
Name => 'IlluminantData3',
|
4107
|
+
Writable => 'undef',
|
4108
|
+
WriteGroup => 'IFD0',
|
4109
|
+
Protected => 1,
|
4110
|
+
},
|
4111
|
+
0xcd38 => { # DNG 1.6
|
4112
|
+
Name => 'MaskSubArea',
|
4113
|
+
# Writable => 'int32u',
|
4114
|
+
WriteGroup => 'SubIFD', #? (NC) Semantic Mask IFD (only for Validate)
|
4115
|
+
Count => 4,
|
4116
|
+
},
|
4117
|
+
0xcd39 => { # DNG 1.6
|
4118
|
+
Name => 'ProfileHueSatMapData3',
|
4119
|
+
%longBin,
|
4120
|
+
Writable => 'float',
|
4121
|
+
WriteGroup => 'IFD0',
|
4122
|
+
Count => -1,
|
4123
|
+
Protected => 1,
|
4124
|
+
},
|
4125
|
+
0xcd3a => { # DNG 1.6
|
4126
|
+
Name => 'ReductionMatrix3',
|
4127
|
+
Writable => 'rational64s',
|
4128
|
+
WriteGroup => 'IFD0',
|
4129
|
+
Count => -1,
|
4130
|
+
Protected => 1,
|
4131
|
+
},
|
4132
|
+
0xcd3b => { # DNG 1.6
|
4133
|
+
Name => 'RGBTables',
|
4134
|
+
Writable => 'undef',
|
4135
|
+
WriteGroup => 'IFD0',
|
4136
|
+
Protected => 1,
|
4137
|
+
},
|
4044
4138
|
0xea1c => { #13
|
4045
4139
|
Name => 'Padding',
|
4046
4140
|
Binary => 1,
|
@@ -14,7 +14,7 @@ use vars qw($VERSION);
|
|
14
14
|
use Image::ExifTool qw(:DataAccess :Utils);
|
15
15
|
use Image::ExifTool::Import;
|
16
16
|
|
17
|
-
$VERSION = '1.
|
17
|
+
$VERSION = '1.05';
|
18
18
|
|
19
19
|
sub ProcessJSON($$);
|
20
20
|
sub ProcessTag($$$$%);
|
@@ -86,7 +86,9 @@ sub ProcessTag($$$$%)
|
|
86
86
|
# support hashes with ordered keys
|
87
87
|
my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
|
88
88
|
foreach (@keys) {
|
89
|
-
|
89
|
+
my $tg = $tag . ((/^\d/ and $tag =~ /\d$/) ? '_' : '') . ucfirst;
|
90
|
+
$tg =~ s/([^a-zA-Z])([a-z])/$1\U$2/g;
|
91
|
+
ProcessTag($et, $tagTablePtr, $tg, $$val{$_}, %flags, Flat => 1);
|
90
92
|
}
|
91
93
|
} elsif (ref $val eq 'ARRAY') {
|
92
94
|
foreach (@$val) {
|
@@ -340,12 +340,14 @@ my %j2cMarker = (
|
|
340
340
|
},
|
341
341
|
{
|
342
342
|
Name => 'UUID-Signature', # (seen in JUMB data of JPEG images)
|
343
|
+
# (may be able to remove this when JUMBF specification is finalized)
|
343
344
|
Condition => '$$valPt=~/^casg\x00\x11\x00\x10\x80\x00\x00\xaa\x00\x38\x9b\x71/',
|
344
345
|
Format => 'undef',
|
345
346
|
ValueConv => 'substr($val,16)',
|
346
347
|
},
|
347
348
|
{
|
348
|
-
Name => 'UUID-C2PAClaimSignature', # (seen in JUMB data of JPEG images)
|
349
|
+
Name => 'UUID-C2PAClaimSignature', # (seen in incorrectly-formatted JUMB data of JPEG images)
|
350
|
+
# (may be able to remove this when JUMBF specification is finalized)
|
349
351
|
Condition => '$$valPt=~/^c2cs\x00\x11\x00\x10\x80\x00\x00\xaa\x00\x38\x9b\x71/',
|
350
352
|
SubDirectory => {
|
351
353
|
TagTable => 'Image::ExifTool::CBOR::Main',
|
@@ -52,7 +52,7 @@ my %mdDateInfo = (
|
|
52
52
|
NOTES => q{
|
53
53
|
MDItem tags are extracted using the "mdls" utility. They are extracted if
|
54
54
|
any "MDItem*" tag or the MacOS group is specifically requested, or by
|
55
|
-
setting the L<MDItemTags|../ExifTool.html#MDItemTags>
|
55
|
+
setting the API L<MDItemTags|../ExifTool.html#MDItemTags> option to 1 or the API L<RequestAll|../ExifTool.html#RequestAll> option to 2 or
|
56
56
|
higher. Note that these tags do not necessarily reflect the current
|
57
57
|
metadata of a file -- it may take some time for the MacOS mdworker daemon to
|
58
58
|
index the file after a metadata change.
|
@@ -244,7 +244,7 @@ my %mdDateInfo = (
|
|
244
244
|
NOTES => q{
|
245
245
|
XAttr tags are extracted using the "xattr" utility. They are extracted if
|
246
246
|
any "XAttr*" tag or the MacOS group is specifically requested, or by setting
|
247
|
-
the L<XAttrTags|../ExifTool.html#XAttrTags>
|
247
|
+
the API L<XAttrTags|../ExifTool.html#XAttrTags> option to 1 or the API L<RequestAll|../ExifTool.html#RequestAll> option to 2 or higher.
|
248
248
|
And they are extracted by default from MacOS "._" files when reading
|
249
249
|
these files directly.
|
250
250
|
},
|
@@ -40,7 +40,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
40
40
|
use Image::ExifTool::Exif;
|
41
41
|
use Image::ExifTool::APP12;
|
42
42
|
|
43
|
-
$VERSION = '2.
|
43
|
+
$VERSION = '2.75';
|
44
44
|
|
45
45
|
sub PrintLensInfo($$$);
|
46
46
|
|
@@ -3609,6 +3609,10 @@ my %indexInfo = (
|
|
3609
3609
|
Format => 'string[24]',
|
3610
3610
|
Groups => { 2 => 'Time' },
|
3611
3611
|
},
|
3612
|
+
0x17f => {
|
3613
|
+
Name => 'LensModel',
|
3614
|
+
Format => 'string[32]'
|
3615
|
+
},
|
3612
3616
|
);
|
3613
3617
|
|
3614
3618
|
# yet a different "thmb" atom format (PH, E-M5)
|
@@ -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.70';
|
51
51
|
|
52
52
|
sub ProcessMOV($$;$);
|
53
53
|
sub ProcessKeys($$$);
|
@@ -9113,6 +9113,12 @@ sub ProcessMOV($$;$)
|
|
9113
9113
|
} else {
|
9114
9114
|
my $t = PrintableTagID($tag,2);
|
9115
9115
|
$et->VPrint(0,"$$et{INDENT}Tag '${t}' extends to end of file");
|
9116
|
+
if ($$tagTablePtr{"$tag-size"}) {
|
9117
|
+
my $pos = $raf->Tell();
|
9118
|
+
$raf->Seek(0, 2);
|
9119
|
+
$et->HandleTag($tagTablePtr, "$tag-size", $raf->Tell() - $pos);
|
9120
|
+
$et->HandleTag($tagTablePtr, "$tag-offset", $pos) if $$tagTablePtr{"$tag-offset"};
|
9121
|
+
}
|
9116
9122
|
}
|
9117
9123
|
last;
|
9118
9124
|
}
|
@@ -107,7 +107,7 @@ my %insvLimit = (
|
|
107
107
|
GPSAltitude => { PrintConv => '(sprintf("%.4f", $val) + 0) . " m"' }, # round to 4 decimals
|
108
108
|
GPSSpeed => { PrintConv => 'sprintf("%.4f", $val) + 0', Notes => 'in km/h unless GPSSpeedRef says otherwise' },
|
109
109
|
GPSSpeedRef => { PrintConv => { K => 'km/h', M => 'mph', N => 'knots' } },
|
110
|
-
GPSTrack => { PrintConv => 'sprintf("%.4f", $val) + 0', Notes => 'true north unless GPSTrackRef says otherwise' },
|
110
|
+
GPSTrack => { PrintConv => 'sprintf("%.4f", $val) + 0', Notes => 'relative to true north unless GPSTrackRef says otherwise' },
|
111
111
|
GPSTrackRef => { PrintConv => { M => 'Magnetic North', T => 'True North' } },
|
112
112
|
GPSDateTime => {
|
113
113
|
Groups => { 2 => 'Time' },
|
@@ -474,9 +474,9 @@ numerical, and generated automatically otherwise.
|
|
474
474
|
tags in IFD1 of JPEG images which default to priority 0.
|
475
475
|
|
476
476
|
'Protected' - bit mask to protect tags from writing:
|
477
|
-
Bit 0x01 indicates an '
|
477
|
+
Bit 0x01 indicates an 'Unsafe' tag, which is not set via
|
478
478
|
SetNewValuesFromFile() unless specified explicitly.
|
479
|
-
Bit 0x02 indicates a '
|
479
|
+
Bit 0x02 indicates a 'Protected' tag, which should not be set
|
480
480
|
directly by the user.
|
481
481
|
|
482
482
|
'PutFirst' - [EXIF only] flag to place this value before IFD0
|
@@ -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.46';
|
38
38
|
|
39
39
|
sub ProcessSRF($$$);
|
40
40
|
sub ProcessSR2($$$);
|
@@ -154,6 +154,7 @@ sub PrintInvLensSpec($;$$);
|
|
154
154
|
32866 => 'Sony FE 24mm F2.8 G', #IB
|
155
155
|
32867 => 'Sony FE 40mm F2.5 G', #IB
|
156
156
|
32868 => 'Sony FE 50mm F2.5 G', #IB
|
157
|
+
32874 => 'Sony FE 70-200mm F2.8 GM OSS II', #IB
|
157
158
|
|
158
159
|
# (comment this out so LensID will report the LensModel, which is more useful)
|
159
160
|
# 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
|
@@ -196,6 +197,7 @@ sub PrintInvLensSpec($;$$);
|
|
196
197
|
49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
|
197
198
|
49466 => 'Tamron 150-500mm F5-6.7 Di III VC VXD', #JR (Model A057)
|
198
199
|
49467 => 'Tamron 11-20mm F2.8 Di III-A RXD', #JR (Model B060)
|
200
|
+
49468 => 'Tamron 18-300mm F3.5-6.3 Di III-A VC VXD', #JR (Model B061)
|
199
201
|
|
200
202
|
49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
|
201
203
|
49473.1 => 'Viltrox 23mm F1.4 E', #JR
|
@@ -892,6 +892,7 @@ my %tagLookup = (
|
|
892
892
|
'alternatetitletext' => { 484 => [\'alternateTitle','alternateTitleText'] },
|
893
893
|
'altitude' => { 192 => 0x6 },
|
894
894
|
'alttapename' => { 494 => 'altTapeName' },
|
895
|
+
'alttextaccessibility' => { 479 => 'AltTextAccessibility' },
|
895
896
|
'alttimecode' => { 494 => 'altTimecode' },
|
896
897
|
'alttimecodetimeformat' => { 494 => [\'altTimecode','altTimecodeTimeFormat'] },
|
897
898
|
'alttimecodetimevalue' => { 494 => [\'altTimecode','altTimecodeTimeValue'] },
|
@@ -1180,6 +1181,7 @@ my %tagLookup = (
|
|
1180
1181
|
'calibrationhistory' => { 135 => 0x9c9 },
|
1181
1182
|
'calibrationilluminant1' => { 117 => 0xc65a },
|
1182
1183
|
'calibrationilluminant2' => { 117 => 0xc65b },
|
1184
|
+
'calibrationilluminant3' => { 117 => 0xcd31 },
|
1183
1185
|
'calibrationversion' => { 135 => 0x9c6 },
|
1184
1186
|
'callforimage' => { 458 => 'CallForImage' },
|
1185
1187
|
'camera' => { 448 => [\'Cameras','CamerasCamera'] },
|
@@ -1192,6 +1194,7 @@ my %tagLookup = (
|
|
1192
1194
|
'cameracalibration' => { 388 => 0x11f },
|
1193
1195
|
'cameracalibration1' => { 117 => 0xc623 },
|
1194
1196
|
'cameracalibration2' => { 117 => 0xc624 },
|
1197
|
+
'cameracalibration3' => { 117 => 0xcd32 },
|
1195
1198
|
'cameracalibrationsig' => { 117 => 0xc6f3 },
|
1196
1199
|
'cameracolorcalibration01' => { 36 => 0x0, 37 => 0x0 },
|
1197
1200
|
'cameracolorcalibration02' => { 36 => 0x4, 37 => 0x5 },
|
@@ -1542,6 +1545,7 @@ my %tagLookup = (
|
|
1542
1545
|
'colormatrix' => { 292 => 0x200, 293 => 0x1011, 385 => 0xa030 },
|
1543
1546
|
'colormatrix1' => { 117 => 0xc621, 355 => 0x106 },
|
1544
1547
|
'colormatrix2' => { 117 => 0xc622, 296 => 0x200, 355 => 0x226 },
|
1548
|
+
'colormatrix3' => { 117 => 0xcd33 },
|
1545
1549
|
'colormatrixa' => { 346 => 0x203 },
|
1546
1550
|
'colormatrixa2' => { 346 => 0x21c },
|
1547
1551
|
'colormatrixadobergb' => { 385 => 0xa032 },
|
@@ -2341,7 +2345,7 @@ my %tagLookup = (
|
|
2341
2345
|
'eventfieldnotes' => { 116 => [\'Event','EventFieldNotes'] },
|
2342
2346
|
'eventfieldnumber' => { 116 => [\'Event','EventFieldNumber'] },
|
2343
2347
|
'eventhabitat' => { 116 => [\'Event','EventHabitat'] },
|
2344
|
-
'eventid' => { 116 => [\'Event','EventEventID'] },
|
2348
|
+
'eventid' => { 116 => [\'Event','EventEventID'], 480 => 'EventID' },
|
2345
2349
|
'eventlatestdate' => { 116 => [\'Event','EventLatestDate'] },
|
2346
2350
|
'eventmonth' => { 116 => [\'Event','EventMonth'] },
|
2347
2351
|
'eventnumber' => { 372 => 0x9, 373 => 0x37, 374 => 0x3a },
|
@@ -2416,6 +2420,7 @@ my %tagLookup = (
|
|
2416
2420
|
'exposurewarning' => { 125 => 0x1302 },
|
2417
2421
|
'exrauto' => { 125 => 0x1033 },
|
2418
2422
|
'exrmode' => { 125 => 0x1034 },
|
2423
|
+
'extdescraccessibility' => { 479 => 'ExtDescrAccessibility' },
|
2419
2424
|
'extendedwbdetect' => { 288 => 0x902 },
|
2420
2425
|
'extender' => { 289 => 0x301 },
|
2421
2426
|
'extenderfirmwareversion' => { 289 => 0x304 },
|
@@ -2788,6 +2793,7 @@ my %tagLookup = (
|
|
2788
2793
|
'forwardlock' => { 489 => 'forwardlock' },
|
2789
2794
|
'forwardmatrix1' => { 117 => 0xc714 },
|
2790
2795
|
'forwardmatrix2' => { 117 => 0xc715 },
|
2796
|
+
'forwardmatrix3' => { 117 => 0xcd34 },
|
2791
2797
|
'fossilspecimen' => { 116 => 'FossilSpecimen' },
|
2792
2798
|
'fossilspecimenmaterialsampleid' => { 116 => [\'FossilSpecimen','FossilSpecimenMaterialSampleID'] },
|
2793
2799
|
'framecount' => { 65 => [0x2,0x4] },
|
@@ -3140,6 +3146,9 @@ my %tagLookup = (
|
|
3140
3146
|
'identifiedby' => { 116 => [\'Identification','IdentificationIdentifiedBy'] },
|
3141
3147
|
'identifier' => { 471 => 'identifier', 492 => 'Identifier' },
|
3142
3148
|
'ifcameramodel' => { 135 => 0x9c8 },
|
3149
|
+
'illuminantdata1' => { 117 => 0xcd35 },
|
3150
|
+
'illuminantdata2' => { 117 => 0xcd36 },
|
3151
|
+
'illuminantdata3' => { 117 => 0xcd37 },
|
3143
3152
|
'illumination' => { 282 => '0.5', 373 => 0x48 },
|
3144
3153
|
'imageabsolutex' => { 135 => 0x3fe },
|
3145
3154
|
'imageabsolutey' => { 135 => 0x3ff },
|
@@ -3681,6 +3690,9 @@ my %tagLookup = (
|
|
3681
3690
|
'lookparameterslooktable' => { 468 => [\'Look','LookParametersLookTable'], 470 => [\'Look','LookParametersLookTable'] },
|
3682
3691
|
'lookparametersprocessversion' => { 468 => [\'Look','LookParametersProcessVersion'], 470 => [\'Look','LookParametersProcessVersion'] },
|
3683
3692
|
'lookparameterstonecurvepv2012' => { 468 => [\'Look','LookParametersToneCurvePV2012'], 470 => [\'Look','LookParametersToneCurvePV2012'] },
|
3693
|
+
'lookparameterstonecurvepv2012blue' => { 468 => [\'Look','LookParametersToneCurvePV2012Blue'], 470 => [\'Look','LookParametersToneCurvePV2012Blue'] },
|
3694
|
+
'lookparameterstonecurvepv2012green' => { 468 => [\'Look','LookParametersToneCurvePV2012Green'], 470 => [\'Look','LookParametersToneCurvePV2012Green'] },
|
3695
|
+
'lookparameterstonecurvepv2012red' => { 468 => [\'Look','LookParametersToneCurvePV2012Red'], 470 => [\'Look','LookParametersToneCurvePV2012Red'] },
|
3684
3696
|
'lookparametersversion' => { 468 => [\'Look','LookParametersVersion'], 470 => [\'Look','LookParametersVersion'] },
|
3685
3697
|
'looksupportsamount' => { 468 => [\'Look','LookSupportsAmount'], 470 => [\'Look','LookSupportsAmount'] },
|
3686
3698
|
'looksupportsmonochrome' => { 468 => [\'Look','LookSupportsMonochrome'], 470 => [\'Look','LookSupportsMonochrome'] },
|
@@ -4825,8 +4837,10 @@ my %tagLookup = (
|
|
4825
4837
|
'profilecameraindices' => { 448 => [\'Profiles','ProfilesProfileCameraIndices'] },
|
4826
4838
|
'profilecopyright' => { 117 => 0xc6fe },
|
4827
4839
|
'profileembedpolicy' => { 117 => 0xc6fd },
|
4840
|
+
'profilegaintablemap' => { 117 => 0xcd2d },
|
4828
4841
|
'profilehuesatmapdata1' => { 117 => 0xc6fa },
|
4829
4842
|
'profilehuesatmapdata2' => { 117 => 0xc6fb },
|
4843
|
+
'profilehuesatmapdata3' => { 117 => 0xcd39 },
|
4830
4844
|
'profilehuesatmapdims' => { 117 => 0xc6f9 },
|
4831
4845
|
'profilehuesatmapencoding' => { 117 => 0xc7a3 },
|
4832
4846
|
'profilelooktabledata' => { 117 => 0xc726 },
|
@@ -5018,6 +5032,7 @@ my %tagLookup = (
|
|
5018
5032
|
'redsaturation' => { 468 => 'RedSaturation', 470 => 'RedSaturation' },
|
5019
5033
|
'reductionmatrix1' => { 117 => 0xc625 },
|
5020
5034
|
'reductionmatrix2' => { 117 => 0xc626 },
|
5035
|
+
'reductionmatrix3' => { 117 => 0xcd3a },
|
5021
5036
|
'reelname' => { 117 => 0xc789, 371 => 'reel' },
|
5022
5037
|
'reference1' => { 478 => [\'TagStructure','TagStructureReference'] },
|
5023
5038
|
'reference2' => { 478 => [\'TagStructure','TagStructureSubLabelsReference'] },
|
@@ -5197,6 +5212,7 @@ my %tagLookup = (
|
|
5197
5212
|
'rflenstype' => { 56 => 0x3d },
|
5198
5213
|
'rgbcurvelimits' => { 106 => 0x238 },
|
5199
5214
|
'rgbcurvepoints' => { 105 => 0x7, 106 => 0x20e },
|
5215
|
+
'rgbtables' => { 117 => 0xcd3b },
|
5200
5216
|
'richtextcomment' => { 477 => 'RichTextComment' },
|
5201
5217
|
'ricohdate' => { 377 => 0x6 },
|
5202
5218
|
'ricohimageheight' => { 377 => 0x2 },
|
@@ -5430,7 +5446,7 @@ my %tagLookup = (
|
|
5430
5446
|
'shuttercount2' => { 429 => 0x4c, 430 => [0x50,0x52,0x58], 431 => 0x50 },
|
5431
5447
|
'shuttercount3' => { 429 => [0x1a0,0x1aa,0x1bd], 430 => [0x19f,0x1cb,0x1cd] },
|
5432
5448
|
'shuttercurtainsync' => { 80 => 0xf, 81 => 0xf, 82 => 0x305, 83 => 0xe, 84 => 0xf, 85 => 0x8, 86 => 0x8, 87 => 0xf, 88 => 0x8 },
|
5433
|
-
'shuttermode' => { 137 => 0x1b, 222 => 0x34 },
|
5449
|
+
'shuttermode' => { 56 => 0x17, 137 => 0x1b, 222 => 0x34 },
|
5434
5450
|
'shutterreleasebuttonae-l' => { 271 => '17.7', 272 => '18.4', 274 => '78.4', 275 => '78.4', 276 => '16.1', 277 => '17.1', 278 => '17.1', 279 => '17.1', 280 => '7.1', 281 => '17.5', 284 => '18.4', 285 => '78.4', 286 => '18.2' },
|
5435
5451
|
'shutterreleasemethod' => { 95 => 0x1010 },
|
5436
5452
|
'shutterreleasenocfcard' => { 80 => 0x2, 81 => 0x2, 88 => 0xf },
|
@@ -9053,6 +9069,7 @@ my %tagExists = (
|
|
9053
9069
|
'markerid' => 1,
|
9054
9070
|
'markinfo' => 1,
|
9055
9071
|
'marl' => 1,
|
9072
|
+
'masksubarea' => 1,
|
9056
9073
|
'mastergainadjustment' => 1,
|
9057
9074
|
'matrixworldtocamera' => 1,
|
9058
9075
|
'matrixworldtoscreen' => 1,
|
@@ -10440,6 +10457,8 @@ my %tagExists = (
|
|
10440
10457
|
'selobjname' => 1,
|
10441
10458
|
'selobjtype' => 1,
|
10442
10459
|
'selobjversion' => 1,
|
10460
|
+
'semanticinstanceifd' => 1,
|
10461
|
+
'semanticname' => 1,
|
10443
10462
|
'sendduration' => 1,
|
10444
10463
|
'senderaddress' => 1,
|
10445
10464
|
'sendername' => 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 24363 tags, with 15798 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
|
@@ -925,6 +925,20 @@ for the official EXIF 2.32 specification.
|
|
925
925
|
0xc7ec DepthUnits IFD0 int16u!
|
926
926
|
0xc7ed DepthMeasureType IFD0 int16u!
|
927
927
|
0xc7ee EnhanceParams IFD0 string!
|
928
|
+
0xcd2d ProfileGainTableMap SubIFD undef!
|
929
|
+
0xcd2e SemanticName SubIFD no
|
930
|
+
0xcd30 SemanticInstanceIFD SubIFD no
|
931
|
+
0xcd31 CalibrationIlluminant3 IFD0 int16u!
|
932
|
+
0xcd32 CameraCalibration3 IFD0 rational64s[n]!
|
933
|
+
0xcd33 ColorMatrix3 IFD0 rational64s[n]!
|
934
|
+
0xcd34 ForwardMatrix3 IFD0 rational64s[n]!
|
935
|
+
0xcd35 IlluminantData1 IFD0 undef!
|
936
|
+
0xcd36 IlluminantData2 IFD0 undef!
|
937
|
+
0xcd37 IlluminantData3 IFD0 undef!
|
938
|
+
0xcd38 MaskSubArea SubIFD no
|
939
|
+
0xcd39 ProfileHueSatMapData3 IFD0 float[n]!
|
940
|
+
0xcd3a ReductionMatrix3 IFD0 rational64s[n]!
|
941
|
+
0xcd3b RGBTables IFD0 undef!
|
928
942
|
0xea1c Padding ExifIFD undef!
|
929
943
|
0xea1d OffsetSchema ExifIFD int32s!
|
930
944
|
0xfde8 OwnerName ExifIFD string/
|
@@ -1730,6 +1744,9 @@ These tags belong to the ExifTool XMP-crd family 1 group.
|
|
1730
1744
|
LookParametersLookTable string/_
|
1731
1745
|
LookParametersProcessVersion string/_
|
1732
1746
|
LookParametersToneCurvePV2012 string/_+
|
1747
|
+
LookParametersToneCurvePV2012Blue string/_+
|
1748
|
+
LookParametersToneCurvePV2012Green string/_+
|
1749
|
+
LookParametersToneCurvePV2012Red string/_+
|
1733
1750
|
LookParametersVersion string/_
|
1734
1751
|
LookSupportsAmount string/_
|
1735
1752
|
LookSupportsMonochrome string/_
|
@@ -2059,6 +2076,9 @@ These tags belong to the ExifTool XMP-crd family 1 group.
|
|
2059
2076
|
LookTable string
|
2060
2077
|
ProcessVersion string
|
2061
2078
|
ToneCurvePV2012 string+
|
2079
|
+
ToneCurvePV2012Blue string+
|
2080
|
+
ToneCurvePV2012Green string+
|
2081
|
+
ToneCurvePV2012Red string+
|
2062
2082
|
Version string
|
2063
2083
|
|
2064
2084
|
=head3 XMP RetouchArea Struct
|
@@ -2394,6 +2414,9 @@ These tags belong to the ExifTool XMP-crs family 1 group.
|
|
2394
2414
|
LookParametersLookTable string_
|
2395
2415
|
LookParametersProcessVersion string_
|
2396
2416
|
LookParametersToneCurvePV2012 string_+
|
2417
|
+
LookParametersToneCurvePV2012Blue string_+
|
2418
|
+
LookParametersToneCurvePV2012Green string_+
|
2419
|
+
LookParametersToneCurvePV2012Red string_+
|
2397
2420
|
LookParametersVersion string_
|
2398
2421
|
LookSupportsAmount string_
|
2399
2422
|
LookSupportsMonochrome string_
|
@@ -3487,6 +3510,7 @@ These tags belong to the ExifTool XMP-iptcCore family 1 group.
|
|
3487
3510
|
|
3488
3511
|
Tag Name Writable
|
3489
3512
|
-------- --------
|
3513
|
+
AltTextAccessibility lang-alt
|
3490
3514
|
CountryCode string
|
3491
3515
|
CreatorContactInfo ContactInfo Struct
|
3492
3516
|
CreatorCity string_
|
@@ -3497,6 +3521,7 @@ These tags belong to the ExifTool XMP-iptcCore family 1 group.
|
|
3497
3521
|
CreatorWorkEmail string_
|
3498
3522
|
CreatorWorkTelephone string_
|
3499
3523
|
CreatorWorkURL string_
|
3524
|
+
ExtDescrAccessibility lang-alt
|
3500
3525
|
IntellectualGenre string
|
3501
3526
|
Location string
|
3502
3527
|
Scene string+
|
@@ -3596,6 +3621,7 @@ These tags belong to the ExifTool XMP-iptcExt family 1 group.
|
|
3596
3621
|
ShownEvent Entity Struct+
|
3597
3622
|
ShownEventIdentifier string_+
|
3598
3623
|
ShownEventName lang-alt_+
|
3624
|
+
EventID string+
|
3599
3625
|
ExternalMetadataLink string+
|
3600
3626
|
FeedIdentifier string
|
3601
3627
|
Genre CVTermDetails Struct+
|
@@ -7359,6 +7385,7 @@ WB tags for the Canon G9.
|
|
7359
7385
|
19 LiveViewShooting int16s
|
7360
7386
|
20 FocusDistanceUpper int16u
|
7361
7387
|
21 FocusDistanceLower int16u
|
7388
|
+
23 ShutterMode int16s
|
7362
7389
|
25 FlashExposureLock int16s
|
7363
7390
|
61 RFLensType int16u
|
7364
7391
|
|
@@ -15412,6 +15439,7 @@ such as the OM E-M5.
|
|
15412
15439
|
44 Model no
|
15413
15440
|
131 DateTime1 no
|
15414
15441
|
157 DateTime2 no
|
15442
|
+
383 LensModel no
|
15415
15443
|
|
15416
15444
|
=head3 Olympus scrn2 Tags
|
15417
15445
|
|
@@ -26042,7 +26070,7 @@ According to the specification, integer-format QuickTime date/time tags
|
|
26042
26070
|
should be stored as UTC. Unfortunately, digital cameras often store local
|
26043
26071
|
time values instead (presumably because they don't know the time zone). For
|
26044
26072
|
this reason, by default ExifTool does not assume a time zone for these
|
26045
|
-
values. However, if the QuickTimeUTC
|
26073
|
+
values. However, if the API QuickTimeUTC option is set, then ExifTool will
|
26046
26074
|
assume these values are properly stored as UTC, and will convert them to
|
26047
26075
|
local time when extracting.
|
26048
26076
|
|
@@ -35190,7 +35218,7 @@ options, but these files are not writable directly.
|
|
35190
35218
|
|
35191
35219
|
XAttr tags are extracted using the "xattr" utility. They are extracted if
|
35192
35220
|
any "XAttr*" tag or the MacOS group is specifically requested, or by setting
|
35193
|
-
the XAttrTags
|
35221
|
+
the API XAttrTags option to 1 or the API RequestAll option to 2 or higher.
|
35194
35222
|
And they are extracted by default from MacOS "._" files when reading
|
35195
35223
|
these files directly.
|
35196
35224
|
|
@@ -35212,7 +35240,7 @@ these files directly.
|
|
35212
35240
|
|
35213
35241
|
MDItem tags are extracted using the "mdls" utility. They are extracted if
|
35214
35242
|
any "MDItem*" tag or the MacOS group is specifically requested, or by
|
35215
|
-
setting the MDItemTags
|
35243
|
+
setting the API MDItemTags option to 1 or the API RequestAll option to 2 or
|
35216
35244
|
higher. Note that these tags do not necessarily reflect the current
|
35217
35245
|
metadata of a file -- it may take some time for the MacOS mdworker daemon to
|
35218
35246
|
index the file after a metadata change.
|
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
|
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
require Exporter;
|
52
52
|
|
53
|
-
$VERSION = '3.
|
53
|
+
$VERSION = '3.46';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -1533,6 +1533,9 @@ my %sPantryItem = (
|
|
1533
1533
|
CameraProfile => { },
|
1534
1534
|
LookTable => { },
|
1535
1535
|
ToneCurvePV2012 => { List => 'Seq' },
|
1536
|
+
ToneCurvePV2012Red => { List => 'Seq' },
|
1537
|
+
ToneCurvePV2012Green => { List => 'Seq' },
|
1538
|
+
ToneCurvePV2012Blue => { List => 'Seq' },
|
1536
1539
|
},
|
1537
1540
|
},
|
1538
1541
|
}
|
@@ -2346,6 +2349,8 @@ my %sPantryItem = (
|
|
2346
2349
|
Scene => { Groups => { 2 => 'Other' }, List => 'Bag' },
|
2347
2350
|
SubjectCode => { Groups => { 2 => 'Other' }, List => 'Bag' },
|
2348
2351
|
# Copyright - have seen this in a sample (Jan 2021), but I think it is non-standard
|
2352
|
+
AltTextAccessibility =>{ Groups => { 2 => 'Other' }, Writable => 'lang-alt' }, # added 2021-10-13
|
2353
|
+
ExtDescrAccessibility=>{ Groups => { 2 => 'Other' }, Writable => 'lang-alt' }, # added 2021-10-13
|
2349
2354
|
);
|
2350
2355
|
|
2351
2356
|
# Adobe Lightroom namespace properties (lr) (ref PH)
|
@@ -3960,7 +3965,7 @@ sub ProcessXMP($$;$)
|
|
3960
3965
|
} elsif ($1 eq 'REDXIF') {
|
3961
3966
|
$type = 'RMD';
|
3962
3967
|
$mime = 'application/xml';
|
3963
|
-
}
|
3968
|
+
} elsif ($1 ne 'fcpxml') { # Final Cut Pro XML
|
3964
3969
|
return 0;
|
3965
3970
|
}
|
3966
3971
|
} elsif ($buf2 =~ /<svg[\s>]/) {
|
@@ -797,6 +797,7 @@ my %sImageRegion = ( # new in 1.5
|
|
797
797
|
audioBitsPerSample => { Groups => { 2 => 'Audio' }, Writable => 'integer' },
|
798
798
|
# new IPTC Extension schema 1.5 property
|
799
799
|
ImageRegion => { Groups => { 2 => 'Image' }, List => 'Bag', Struct => \%sImageRegion },
|
800
|
+
EventID => { List => 'Bag' }, # added 2021-10-13
|
800
801
|
);
|
801
802
|
|
802
803
|
#------------------------------------------------------------------------------
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exePath
|
30
30
|
%static_vars);
|
31
31
|
|
32
|
-
$VERSION = '12.
|
32
|
+
$VERSION = '12.33';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -808,6 +808,7 @@ my %moduleName = (
|
|
808
808
|
DEX => 0,
|
809
809
|
DOCX => 'OOXML',
|
810
810
|
DCX => 0,
|
811
|
+
DIR => 0,
|
811
812
|
DR4 => 'CanonVRD',
|
812
813
|
DSS => 'Olympus',
|
813
814
|
DWF => 0,
|
@@ -1155,14 +1156,14 @@ my %systemTagsNotes = (
|
|
1155
1156
|
Groups => { 1 => 'System', 2 => 'Other' },
|
1156
1157
|
Notes => q{
|
1157
1158
|
file name without extension. Not generated unless specifically requested or
|
1158
|
-
the L<RequestAll|../ExifTool.html#RequestAll>
|
1159
|
+
the API L<RequestAll|../ExifTool.html#RequestAll> option is set
|
1159
1160
|
},
|
1160
1161
|
},
|
1161
1162
|
FilePath => {
|
1162
1163
|
Groups => { 1 => 'System', 2 => 'Other' },
|
1163
1164
|
Notes => q{
|
1164
1165
|
absolute path of source file. Not generated unless specifically requested or
|
1165
|
-
the L<RequestAll|../ExifTool.html#RequestAll>
|
1166
|
+
the API L<RequestAll|../ExifTool.html#RequestAll> option is set. Does not support Windows Unicode file
|
1166
1167
|
names
|
1167
1168
|
},
|
1168
1169
|
},
|
@@ -1185,7 +1186,7 @@ my %systemTagsNotes = (
|
|
1185
1186
|
sequence number for each source file when extracting or copying information,
|
1186
1187
|
including files that fail the -if condition of the command-line application,
|
1187
1188
|
beginning at 0 for the first file. Not generated unless specifically
|
1188
|
-
requested or the L<RequestAll|../ExifTool.html#RequestAll>
|
1189
|
+
requested or the API L<RequestAll|../ExifTool.html#RequestAll> option is set
|
1189
1190
|
},
|
1190
1191
|
},
|
1191
1192
|
FileSize => {
|
@@ -1258,7 +1259,7 @@ my %systemTagsNotes = (
|
|
1258
1259
|
the filesystem creation date/time. Windows/Mac only. In Windows, the file
|
1259
1260
|
creation date/time is preserved by default when writing if Win32API::File
|
1260
1261
|
and Win32::API are available. On Mac, this tag is extracted only if it or
|
1261
|
-
the MacOS group is specifically requested or the L<RequestAll|../ExifTool.html#RequestAll>
|
1262
|
+
the MacOS group is specifically requested or the API L<RequestAll|../ExifTool.html#RequestAll> option is
|
1262
1263
|
set to 2 or higher. Requires "setfile" for writing on Mac, which may be
|
1263
1264
|
installed by typing C<xcode-select --install> in the Terminal
|
1264
1265
|
},
|
@@ -1649,7 +1650,7 @@ my %systemTagsNotes = (
|
|
1649
1650
|
sub-sampling values to generate the value of this tag. The result is
|
1650
1651
|
compared to known values in an attempt to deduce the originating software
|
1651
1652
|
based only on the JPEG image data. For performance reasons, this tag is
|
1652
|
-
generated only if specifically requested or the L<RequestAll|../ExifTool.html#RequestAll>
|
1653
|
+
generated only if specifically requested or the API L<RequestAll|../ExifTool.html#RequestAll> option is set
|
1653
1654
|
to 3 or higher
|
1654
1655
|
},
|
1655
1656
|
},
|
@@ -1657,14 +1658,14 @@ my %systemTagsNotes = (
|
|
1657
1658
|
Notes => q{
|
1658
1659
|
an estimate of the IJG JPEG quality setting for the image, calculated from
|
1659
1660
|
the quantization tables. For performance reasons, this tag is generated
|
1660
|
-
only if specifically requested or the L<RequestAll|../ExifTool.html#RequestAll>
|
1661
|
+
only if specifically requested or the API L<RequestAll|../ExifTool.html#RequestAll> option is set to 3 or
|
1661
1662
|
higher
|
1662
1663
|
},
|
1663
1664
|
},
|
1664
1665
|
JPEGImageLength => {
|
1665
1666
|
Notes => q{
|
1666
1667
|
byte length of JPEG image without metadata. For performance reasons, this
|
1667
|
-
tag is generated only if specifically requested or the L<RequestAll|../ExifTool.html#RequestAll>
|
1668
|
+
tag is generated only if specifically requested or the API L<RequestAll|../ExifTool.html#RequestAll> option
|
1668
1669
|
is set to 3 or higher
|
1669
1670
|
},
|
1670
1671
|
},
|
@@ -1674,7 +1675,7 @@ my %systemTagsNotes = (
|
|
1674
1675
|
Notes => q{
|
1675
1676
|
the current date/time. Useful when setting the tag values, eg.
|
1676
1677
|
C<"-modifydate<now">. Not generated unless specifically requested or the
|
1677
|
-
L<RequestAll|../ExifTool.html#RequestAll>
|
1678
|
+
API L<RequestAll|../ExifTool.html#RequestAll> option is set
|
1678
1679
|
},
|
1679
1680
|
PrintConv => '$self->ConvertDateTime($val)',
|
1680
1681
|
},
|
@@ -1685,7 +1686,7 @@ my %systemTagsNotes = (
|
|
1685
1686
|
YYYYmmdd-HHMM-SSNN-PPPP-RRRRRRRRRRRR, where Y=year, m=month, d=day, H=hour,
|
1686
1687
|
M=minute, S=second, N=file sequence number in hex, P=process ID in hex, and
|
1687
1688
|
R=random hex number; without dashes with the -n option. Not generated
|
1688
|
-
unless specifically requested or the L<RequestAll|../ExifTool.html#RequestAll>
|
1689
|
+
unless specifically requested or the API L<RequestAll|../ExifTool.html#RequestAll> option is set
|
1689
1690
|
},
|
1690
1691
|
PrintConv => '$val =~ s/(.{8})(.{4})(.{4})(.{4})/$1-$2-$3-$4-/; $val',
|
1691
1692
|
},
|
@@ -1778,7 +1779,7 @@ my %systemTagsNotes = (
|
|
1778
1779
|
Groups => { 0 => 'Trailer' },
|
1779
1780
|
Notes => q{
|
1780
1781
|
the full JPEG trailer data block. Extracted only if specifically requested
|
1781
|
-
or the RequestAll
|
1782
|
+
or the API RequestAll option is set to 3 or higher
|
1782
1783
|
},
|
1783
1784
|
Writable => 1,
|
1784
1785
|
Protected => 1,
|
@@ -6469,7 +6470,7 @@ sub ProcessJPEG($$)
|
|
6469
6470
|
next;
|
6470
6471
|
} elsif ($marker == 0xdb and length($$segDataPt) and # DQT
|
6471
6472
|
# save the DQT data only if JPEGDigest has been requested
|
6472
|
-
# (Note: since we aren't checking the RequestAll
|
6473
|
+
# (Note: since we aren't checking the API RequestAll option here, the application
|
6473
6474
|
# must use the RequestTags option to generate these tags if they have not been
|
6474
6475
|
# specifically requested. The reason is that there is too much overhead involved
|
6475
6476
|
# in the calculation of this tag to make this worth the CPU time.)
|
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: 12.
|
4
|
+
version: 12.33.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: 2021-10-
|
12
|
+
date: 2021-10-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|