exiftool_vendored 12.32.0 → 12.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|