exiftool_vendored 13.34.0 → 13.37.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 +55 -1
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/Makefile.PL +1 -0
- data/bin/README +2 -2
- data/bin/build_geolocation +7 -3
- data/bin/exiftool +43 -33
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +15 -8
- data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +86 -9
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +59 -8
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +3 -2
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +91 -33
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GM.pm +1 -1
- data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- data/bin/lib/Image/ExifTool/Geolocation.pm +3 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +10 -2
- data/bin/lib/Image/ExifTool/GoPro.pm +5 -5
- data/bin/lib/Image/ExifTool/Google.pm +804 -0
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +3 -3
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/LIF.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +2 -2
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +4 -6
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
- data/bin/lib/Image/ExifTool/MakerNotes.pm +30 -7
- data/bin/lib/Image/ExifTool/Microsoft.pm +4 -4
- data/bin/lib/Image/ExifTool/Nikon.pm +6 -5
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +6 -1
- data/bin/lib/Image/ExifTool/Other.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +51 -39
- data/bin/lib/Image/ExifTool/Protobuf.pm +12 -6
- data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +30 -8
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
- data/bin/lib/Image/ExifTool/README +7 -6
- data/bin/lib/Image/ExifTool/RIFF.pm +5 -3
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +375 -91
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +8 -5
- data/bin/lib/Image/ExifTool/Sony.pm +20 -3
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +5749 -5695
- data/bin/lib/Image/ExifTool/TagNames.pod +690 -519
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
- data/bin/lib/Image/ExifTool/WPG.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +2 -1
- data/bin/lib/Image/ExifTool/XMP.pm +39 -32
- data/bin/lib/Image/ExifTool/XMP2.pl +0 -482
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +6 -4
- data/bin/lib/Image/ExifTool.pod +3 -3
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +4 -6
@@ -5,9 +5,12 @@
|
|
5
5
|
#
|
6
6
|
# Revisions: 2024-12-04 - P. Harvey Created
|
7
7
|
#
|
8
|
-
# Notes: Tag definitions for Protobuf tags support
|
9
|
-
#
|
10
|
-
#
|
8
|
+
# Notes: Tag definitions for Protobuf tags support 'signed', 'unsigned',
|
9
|
+
# and 'int64s' formats for VARINT (type 0) values, 'int64u',
|
10
|
+
# 'int64s', 'rational64u', 'rational64s' and 'double' for I64
|
11
|
+
# (type 1), 'undef', 'string' and 'rational' for LEN (type 2),
|
12
|
+
# and 'int32u', 'int32s', 'rational32u', 'rational32s',
|
13
|
+
# 'fixed32u', 'fixed32s' and 'float' for I32 (type 5) values.
|
11
14
|
#
|
12
15
|
# References: 1) https://protobuf.dev/programming-guides/encoding/
|
13
16
|
#------------------------------------------------------------------------------
|
@@ -18,7 +21,7 @@ use strict;
|
|
18
21
|
use vars qw($VERSION);
|
19
22
|
use Image::ExifTool qw(:DataAccess :Utils);
|
20
23
|
|
21
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.05';
|
22
25
|
|
23
26
|
sub ProcessProtobuf($$$;$);
|
24
27
|
|
@@ -128,6 +131,9 @@ sub ProcessProtobuf($$$;$)
|
|
128
131
|
$$et{ProtoPrefix}{$dirName} = '' unless defined $$et{ProtoPrefix}{$dirName};
|
129
132
|
SetByteOrder('II');
|
130
133
|
}
|
134
|
+
# prefix for unknown tags
|
135
|
+
my $unkPre = $$tagTbl{TAG_PREFIX} ? $$tagTbl{TAG_PREFIX} . '_' : 'Protobuf ';
|
136
|
+
|
131
137
|
# loop through protobuf records
|
132
138
|
for (;;) {
|
133
139
|
my $pos = $$dirInfo{Pos};
|
@@ -195,7 +201,7 @@ sub ProcessProtobuf($$$;$)
|
|
195
201
|
# (fall through to process known SubDirectory)
|
196
202
|
} elsif ($$tagInfo{IsProtobuf}) {
|
197
203
|
# process Unknown protobuf directories
|
198
|
-
$et->VPrint(1, "$$et{INDENT}
|
204
|
+
$et->VPrint(1, "$$et{INDENT}${unkPre}$tag (" . length($buff) . " bytes) -->\n");
|
199
205
|
my $addr = $dataPos + $$dirInfo{Pos} - length($buff);
|
200
206
|
$et->VerboseDump(\$buff, Addr => $addr, Prefix => $$et{INDENT});
|
201
207
|
my %subdir = ( DataPt => \$buff, DataPos => $addr, DirName => $dirName );
|
@@ -212,7 +218,7 @@ sub ProcessProtobuf($$$;$)
|
|
212
218
|
my $denom = VarInt(\%dir);
|
213
219
|
$rat = " (rational $num/$denom)" if $denom and $dir{Pos} == length($buff);
|
214
220
|
}
|
215
|
-
if ($buff !~ /[^\x20-\x7e]/) {
|
221
|
+
if ($buff !~ /[^\r\n\t\x20-\x7e]/) {
|
216
222
|
$val = $buff; # assume this is an ASCII string
|
217
223
|
} elsif (length($buff) % 4) {
|
218
224
|
$val = '0x' . unpack('H*', $buff);
|
@@ -28,7 +28,7 @@ my @qualcommFormat = (
|
|
28
28
|
%Image::ExifTool::Qualcomm::Main = (
|
29
29
|
PROCESS_PROC => \&ProcessQualcomm,
|
30
30
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
31
|
-
VARS => {
|
31
|
+
VARS => { ID_FMT => 'none', NO_LOOKUP => 1 }, # too long, too many, and too obscure
|
32
32
|
NOTES => q{
|
33
33
|
The tags below have been observed in the JPEG APP7 "Qualcomm Camera
|
34
34
|
Attributes" segment written by some cameras such as the HP iPAQ Voice
|
@@ -1228,7 +1228,7 @@ my @qualcommFormat = (
|
|
1228
1228
|
%Image::ExifTool::Qualcomm::DualCamera = (
|
1229
1229
|
PROCESS_PROC => \&ProcessDualCamera,
|
1230
1230
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
1231
|
-
VARS => {
|
1231
|
+
VARS => { ID_FMT => 'none', NO_LOOKUP => 1 }, # too long, too many, and too obscure
|
1232
1232
|
NOTES => q{
|
1233
1233
|
Found in JPEG APP4 "Qualcomm Dual Camera Attributes" written by some Nokia
|
1234
1234
|
phones.
|
@@ -49,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
49
49
|
use Image::ExifTool::Exif;
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
|
52
|
-
$VERSION = '3.
|
52
|
+
$VERSION = '3.21';
|
53
53
|
|
54
54
|
sub ProcessMOV($$;$);
|
55
55
|
sub ProcessKeys($$$);
|
@@ -2269,6 +2269,27 @@ my %userDefined = (
|
|
2269
2269
|
Base => '$start - 10',
|
2270
2270
|
ByteOrder => 'LittleEndian',
|
2271
2271
|
},
|
2272
|
+
},{
|
2273
|
+
Name => 'MakerNoteRicohPentax2',
|
2274
|
+
# used by cameras such as the Ricoh GR III
|
2275
|
+
Condition => '$$valPt=~/^RICOH\0II/',
|
2276
|
+
SubDirectory => {
|
2277
|
+
TagTable => 'Image::ExifTool::Pentax::Main',
|
2278
|
+
ProcessProc => \&Image::ExifTool::Exif::ProcessExif, # (because ProcessMOV is default)
|
2279
|
+
Start => 8,
|
2280
|
+
Base => '$start - 8',
|
2281
|
+
ByteOrder => 'LittleEndian',
|
2282
|
+
},
|
2283
|
+
},{
|
2284
|
+
Name => 'MakerNoteRicohPentax3',
|
2285
|
+
Condition => '$$valPt=~/^RICOH\0MM/', # (just in case)
|
2286
|
+
SubDirectory => {
|
2287
|
+
TagTable => 'Image::ExifTool::Pentax::Main',
|
2288
|
+
ProcessProc => \&Image::ExifTool::Exif::ProcessExif, # (because ProcessMOV is default)
|
2289
|
+
Start => 8,
|
2290
|
+
Base => '$start - 8',
|
2291
|
+
ByteOrder => 'BigEndian',
|
2292
|
+
},
|
2272
2293
|
},{
|
2273
2294
|
Name => 'MakerNotePentaxUnknown',
|
2274
2295
|
Binary => 1,
|
@@ -7301,6 +7322,7 @@ my %userDefined = (
|
|
7301
7322
|
},
|
7302
7323
|
{
|
7303
7324
|
Name => 'TimeToSampleTable',
|
7325
|
+
Format => 'undef',
|
7304
7326
|
Flags => ['Binary','Unknown'],
|
7305
7327
|
},
|
7306
7328
|
],
|
@@ -10063,14 +10085,14 @@ sub ProcessMOV($$;$)
|
|
10063
10085
|
ProcessKenwoodTrailer($et, { RAF => $raf }, $tbl);
|
10064
10086
|
last;
|
10065
10087
|
}
|
10066
|
-
$
|
10067
|
-
|
10088
|
+
if (not $tagInfo or $$tagInfo{Unknown}) {
|
10089
|
+
$ignore = 1;
|
10090
|
+
} elsif ($size > 0x8000000) {
|
10068
10091
|
my $t = PrintableTagID($tag,2);
|
10069
|
-
|
10070
|
-
|
10071
|
-
|
10072
|
-
|
10073
|
-
}
|
10092
|
+
$et->Warn("Skipping '${t}' atom > 128 MiB", $eeTag ? 2 : 1) and $ignore = 1;
|
10093
|
+
} elsif (not $eeTag) {
|
10094
|
+
my $t = PrintableTagID($tag,2);
|
10095
|
+
$et->Warn("Skipping '${t}' atom > 32 MiB", 2) and $ignore = 1;
|
10074
10096
|
}
|
10075
10097
|
}
|
10076
10098
|
if (defined $tagInfo and not $ignore and not ($tagInfo and $$tagInfo{DontRead})) {
|
@@ -111,7 +111,7 @@ my %insvLimit = (
|
|
111
111
|
The tags below are extracted from timed metadata in QuickTime and other
|
112
112
|
formats of video files when the ExtractEmbedded option is used. Although
|
113
113
|
most of these tags are combined into the single table below, ExifTool
|
114
|
-
currently reads
|
114
|
+
currently reads 111 different types of timed GPS metadata from video files.
|
115
115
|
},
|
116
116
|
GPSLatitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', RawConv => '$$self{FoundGPSLatitude} = 1; $val' },
|
117
117
|
GPSLongitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")' },
|
@@ -211,12 +211,13 @@ key:
|
|
211
211
|
an ID_LABEL of "Index" is assumed for tables which use
|
212
212
|
ProcessBinaryData or set the IS_BINARY flag.
|
213
213
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
to
|
218
|
-
|
219
|
-
language translations in
|
214
|
+
ID_FMT Format for tag ID's in the documentation. Setting is 'hex' to
|
215
|
+
print tag ID in hexadecimal (with 4 hex digits or more), 'dec'
|
216
|
+
to leave as decimal, 'str' to use a quoted string, or 'none'
|
217
|
+
to drop the "Tag ID" column entirely. Any setting other than
|
218
|
+
'hex' prevents hex-looking strings from being converted when
|
219
|
+
importing an XML file for language translations in
|
220
|
+
BuildLangModules().
|
220
221
|
|
221
222
|
NO_LOOKUP Do not add tags to TagLookup.pm lookup tables.
|
222
223
|
|
@@ -30,7 +30,7 @@ use strict;
|
|
30
30
|
use vars qw($VERSION $AUTOLOAD);
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
32
32
|
|
33
|
-
$VERSION = '1.
|
33
|
+
$VERSION = '1.72';
|
34
34
|
|
35
35
|
sub ConvertTimecode($);
|
36
36
|
sub ProcessSGLT($$$);
|
@@ -2031,6 +2031,7 @@ sub ProcessRIFF($$)
|
|
2031
2031
|
my $validate = $et->Options('Validate');
|
2032
2032
|
my $ee = $et->Options('ExtractEmbedded');
|
2033
2033
|
my $hash = $$et{ImageDataHash};
|
2034
|
+
my $base = 0;
|
2034
2035
|
|
2035
2036
|
# verify this is a valid RIFF file
|
2036
2037
|
return 0 unless $raf->Read($buff, 12) == 12;
|
@@ -2042,7 +2043,8 @@ sub ProcessRIFF($$)
|
|
2042
2043
|
return 0 unless $buff =~ /^(LA0[234]|OFR |LPAC|wvpk)/ and $raf->Read($buf2, 1024);
|
2043
2044
|
$type = $riffType{$1};
|
2044
2045
|
$buff .= $buf2;
|
2045
|
-
return 0 unless $buff =~ /WAVE(.{4})?fmt /sg and $raf->Seek(pos($buff) - 4, 0);
|
2046
|
+
return 0 unless $buff =~ /WAVE(.{4})?(junk|fmt )/sg and $raf->Seek(pos($buff) - 4, 0);
|
2047
|
+
$base = pos($buff) - 16;
|
2046
2048
|
}
|
2047
2049
|
$$raf{NoBuffer} = 1 if $et->Options('FastScan'); # disable buffering in FastScan mode
|
2048
2050
|
$mime = $riffMimeType{$type} if $type;
|
@@ -2159,7 +2161,7 @@ sub ProcessRIFF($$)
|
|
2159
2161
|
DataPos => 0, # (relative to Base)
|
2160
2162
|
Start => 0,
|
2161
2163
|
Size => $len,
|
2162
|
-
Base => $pos,
|
2164
|
+
Base => $pos + $base,
|
2163
2165
|
);
|
2164
2166
|
if ($setGroups) {
|
2165
2167
|
delete $$et{SET_GROUP0};
|
@@ -22,7 +22,7 @@ my $implementedRawzorVersion = 199; # (up to version 1.99)
|
|
22
22
|
# Rawzor-specific tags
|
23
23
|
%Image::ExifTool::Rawzor::Main = (
|
24
24
|
GROUPS => { 2 => 'Other' },
|
25
|
-
VARS => {
|
25
|
+
VARS => { ID_FMT => 'none' },
|
26
26
|
NOTES => q{
|
27
27
|
Rawzor files store compressed images of other formats. As well as the
|
28
28
|
information listed below, exiftool uncompresses and extracts the meta
|