exiftool_vendored 12.13.0 → 12.17.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +61 -4
- data/bin/MANIFEST +3 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/exiftool +63 -43
- data/bin/lib/File/RandomAccess.pm +1 -1
- data/bin/lib/File/RandomAccess.pod +2 -2
- data/bin/lib/Image/ExifTool.pm +36 -3
- data/bin/lib/Image/ExifTool.pod +9 -7
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/APE.pm +1 -1
- data/bin/lib/Image/ExifTool/APP12.pm +1 -1
- data/bin/lib/Image/ExifTool/ASF.pm +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +1 -1
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BPG.pm +1 -1
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +9 -7
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/CanonCustom.pm +20 -2
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +1 -1
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +28 -2
- data/bin/lib/Image/ExifTool/DNG.pm +1 -1
- data/bin/lib/Image/ExifTool/DPX.pm +4 -4
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +45 -16
- data/bin/lib/Image/ExifTool/FITS.pm +1 -1
- data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/Font.pm +1 -1
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -2
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- data/bin/lib/Image/ExifTool/GPS.pm +6 -6
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- data/bin/lib/Image/ExifTool/H264.pm +21 -6
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +1 -1
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
- data/bin/lib/Image/ExifTool/ISO.pm +1 -1
- data/bin/lib/Image/ExifTool/ITC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +1 -1
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +24 -2
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/JVC.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +9 -4
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
- data/bin/lib/Image/ExifTool/MIE.pm +1 -1
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/MNG.pm +1 -1
- data/bin/lib/Image/ExifTool/MOI.pm +1 -1
- data/bin/lib/Image/ExifTool/MPC.pm +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MPF.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 +1 -1
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +312 -34
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
- data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- 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 +1 -1
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +1 -1
- data/bin/lib/Image/ExifTool/PDF.pm +10 -2
- data/bin/lib/Image/ExifTool/PGF.pm +1 -1
- data/bin/lib/Image/ExifTool/PICT.pm +1 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +12 -4
- data/bin/lib/Image/ExifTool/PPM.pm +1 -1
- data/bin/lib/Image/ExifTool/PSP.pm +1 -1
- data/bin/lib/Image/ExifTool/Palm.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
- data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +12 -6
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +46 -7
- data/bin/lib/Image/ExifTool/README +5 -4
- data/bin/lib/Image/ExifTool/RIFF.pm +85 -7
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +1 -1
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- data/bin/lib/Image/ExifTool/Red.pm +1 -1
- data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +4 -2
- data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- data/bin/lib/Image/ExifTool/Stim.pm +1 -1
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +3985 -3811
- data/bin/lib/Image/ExifTool/TagNames.pod +422 -21
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +1 -1
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +10 -7
- data/bin/lib/Image/ExifTool/Writer.pl +17 -7
- data/bin/lib/Image/ExifTool/XMP.pm +44 -9
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +36 -3
@@ -107,7 +107,7 @@ interpret Nintendo maker notes EXIF meta information.
|
|
107
107
|
|
108
108
|
=head1 AUTHOR
|
109
109
|
|
110
|
-
Copyright 2003-
|
110
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
111
111
|
|
112
112
|
This library is free software; you can redistribute it and/or modify it
|
113
113
|
under the same terms as Perl itself.
|
@@ -395,7 +395,7 @@ archives of XML files.
|
|
395
395
|
|
396
396
|
=head1 AUTHOR
|
397
397
|
|
398
|
-
Copyright 2003-
|
398
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
399
399
|
|
400
400
|
This library is free software; you can redistribute it and/or modify it
|
401
401
|
under the same terms as Perl itself.
|
@@ -214,7 +214,7 @@ information from Ogg bitstream container files.
|
|
214
214
|
|
215
215
|
=head1 AUTHOR
|
216
216
|
|
217
|
-
Copyright 2003-
|
217
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
218
218
|
|
219
219
|
This library is free software; you can redistribute it and/or modify it
|
220
220
|
under the same terms as Perl itself.
|
@@ -4064,7 +4064,7 @@ Olympus or Epson maker notes in EXIF information.
|
|
4064
4064
|
|
4065
4065
|
=head1 AUTHOR
|
4066
4066
|
|
4067
|
-
Copyright 2003-
|
4067
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
4068
4068
|
|
4069
4069
|
This library is free software; you can redistribute it and/or modify it
|
4070
4070
|
under the same terms as Perl itself.
|
@@ -302,7 +302,7 @@ information from OpenEXR images.
|
|
302
302
|
|
303
303
|
=head1 AUTHOR
|
304
304
|
|
305
|
-
Copyright 2003-
|
305
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
306
306
|
|
307
307
|
This library is free software; you can redistribute it and/or modify it
|
308
308
|
under the same terms as Perl itself.
|
@@ -69,7 +69,7 @@ information from Ogg Opus audio files.
|
|
69
69
|
|
70
70
|
=head1 AUTHOR
|
71
71
|
|
72
|
-
Copyright 2003-
|
72
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
73
73
|
|
74
74
|
This library is free software; you can redistribute it and/or modify it
|
75
75
|
under the same terms as Perl itself.
|
@@ -114,7 +114,7 @@ information from PC Paintbrush (PCX) files.
|
|
114
114
|
|
115
115
|
=head1 AUTHOR
|
116
116
|
|
117
|
-
Copyright 2003-
|
117
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
118
118
|
|
119
119
|
This library is free software; you can redistribute it and/or modify it
|
120
120
|
under the same terms as Perl itself.
|
@@ -21,7 +21,7 @@ use vars qw($VERSION $AUTOLOAD $lastFetched);
|
|
21
21
|
use Image::ExifTool qw(:DataAccess :Utils);
|
22
22
|
require Exporter;
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.51';
|
25
25
|
|
26
26
|
sub FetchObject($$$$);
|
27
27
|
sub ExtractObject($$;$$);
|
@@ -2164,6 +2164,7 @@ sub ReadPDF($$)
|
|
2164
2164
|
# set input record separator
|
2165
2165
|
local $/ = $ws =~ /(\x0d\x0a|\x0d|\x0a)/ ? $1 : "\x0a";
|
2166
2166
|
my (%xref, @mainDicts, %loaded, $mainFree);
|
2167
|
+
my ($xrefSize, $mainDictSize) = (0, 0);
|
2167
2168
|
# initialize variables to capture when rewriting
|
2168
2169
|
if ($capture) {
|
2169
2170
|
$capture->{startxref} = $xr;
|
@@ -2206,6 +2207,7 @@ XRef:
|
|
2206
2207
|
$raf->Read($buff, 20) == 20 or return -6;
|
2207
2208
|
$buff =~ /^\s*(\d{10}) (\d{5}) (f|n)/s or return -4;
|
2208
2209
|
my $num = $start + $i;
|
2210
|
+
$xrefSize = $num if $num > $xrefSize;
|
2209
2211
|
# locate object to generate entry from stream if necessary
|
2210
2212
|
# (must do this before we test $xref{$num})
|
2211
2213
|
LocateAnyObject(\%xref, $num) if $xref{dicts};
|
@@ -2242,6 +2244,8 @@ XRef:
|
|
2242
2244
|
$et->Warn('Error loading secondary dictionary');
|
2243
2245
|
next;
|
2244
2246
|
}
|
2247
|
+
# keep track of total trailer dictionary Size
|
2248
|
+
$mainDictSize = $$mainDict{Size} if $$mainDict{Size} and $$mainDict{Size} > $mainDictSize;
|
2245
2249
|
if ($loadXRefStream) {
|
2246
2250
|
# decode and save our XRef stream from PDF-1.5 file
|
2247
2251
|
# (but parse it later as required to save time)
|
@@ -2280,6 +2284,10 @@ XRef:
|
|
2280
2284
|
# load previous xref table if it exists
|
2281
2285
|
push @xrefOffsets, $$mainDict{Prev}, 'Prev' if $$mainDict{Prev};
|
2282
2286
|
}
|
2287
|
+
if ($xrefSize > $mainDictSize) {
|
2288
|
+
my $str = "Objects in xref table ($xrefSize) exceed trailer dictionary Size ($mainDictSize)";
|
2289
|
+
$capture ? $et->Error($str) : $et->Warn($str);
|
2290
|
+
}
|
2283
2291
|
#
|
2284
2292
|
# extract encryption information if necessary
|
2285
2293
|
#
|
@@ -2381,7 +2389,7 @@ including AESV2 (AES-128) and AESV3 (AES-256).
|
|
2381
2389
|
|
2382
2390
|
=head1 AUTHOR
|
2383
2391
|
|
2384
|
-
Copyright 2003-
|
2392
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
2385
2393
|
|
2386
2394
|
This library is free software; you can redistribute it and/or modify it
|
2387
2395
|
under the same terms as Perl itself.
|
@@ -119,7 +119,7 @@ information from Progressive Graphics File (PGF) images.
|
|
119
119
|
|
120
120
|
=head1 AUTHOR
|
121
121
|
|
122
|
-
Copyright 2003-
|
122
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
123
123
|
|
124
124
|
This library is free software; you can redistribute it and/or modify it
|
125
125
|
under the same terms as Perl itself.
|
@@ -1236,7 +1236,7 @@ Verbose or the Unknown option.
|
|
1236
1236
|
|
1237
1237
|
=head1 AUTHOR
|
1238
1238
|
|
1239
|
-
Copyright 2003-
|
1239
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
1240
1240
|
|
1241
1241
|
This library is free software; you can redistribute it and/or modify it
|
1242
1242
|
under the same terms as Perl itself.
|
@@ -438,7 +438,7 @@ This module decodes both the binary and XML-based PLIST format.
|
|
438
438
|
|
439
439
|
=head1 AUTHOR
|
440
440
|
|
441
|
-
Copyright 2003-
|
441
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
442
442
|
|
443
443
|
This library is free software; you can redistribute it and/or modify it
|
444
444
|
under the same terms as Perl itself.
|
@@ -2586,7 +2586,7 @@ Definitions for PLUS (Picture Licensing Universal System) tags.
|
|
2586
2586
|
|
2587
2587
|
=head1 AUTHOR
|
2588
2588
|
|
2589
|
-
Copyright 2003-
|
2589
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
2590
2590
|
|
2591
2591
|
This library is free software; you can redistribute it and/or modify it
|
2592
2592
|
under the same terms as Perl itself.
|
@@ -36,7 +36,7 @@ use strict;
|
|
36
36
|
use vars qw($VERSION $AUTOLOAD %stdCase);
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
38
38
|
|
39
|
-
$VERSION = '1.
|
39
|
+
$VERSION = '1.56';
|
40
40
|
|
41
41
|
sub ProcessPNG_tEXt($$$);
|
42
42
|
sub ProcessPNG_iTXt($$$);
|
@@ -1422,8 +1422,16 @@ sub ProcessPNG($$)
|
|
1422
1422
|
next;
|
1423
1423
|
}
|
1424
1424
|
if ($datChunk) {
|
1425
|
-
#
|
1426
|
-
|
1425
|
+
my $chunkSizeLimit = 10000000; # largest chunk to read into memory
|
1426
|
+
if ($outfile) {
|
1427
|
+
# avoid loading very large data chunks into memory
|
1428
|
+
if ($len > $chunkSizeLimit) {
|
1429
|
+
Write($outfile, $hbuf) or $err = 1;
|
1430
|
+
Image::ExifTool::CopyBlock($raf, $outfile, $len+4) or $et->Error("Error copying $datChunk");
|
1431
|
+
next;
|
1432
|
+
}
|
1433
|
+
# skip over data chunks if possible/necessary
|
1434
|
+
} elsif (not $validate or $len > $chunkSizeLimit) {
|
1427
1435
|
$raf->Seek($len + 4, 1) or $et->Warn('Seek error'), last;
|
1428
1436
|
next;
|
1429
1437
|
}
|
@@ -1531,7 +1539,7 @@ and JNG (JPEG Network Graphics) images.
|
|
1531
1539
|
|
1532
1540
|
=head1 AUTHOR
|
1533
1541
|
|
1534
|
-
Copyright 2003-
|
1542
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
1535
1543
|
|
1536
1544
|
This library is free software; you can redistribute it and/or modify it
|
1537
1545
|
under the same terms as Perl itself.
|
@@ -143,7 +143,7 @@ BitMap) images.
|
|
143
143
|
|
144
144
|
=head1 AUTHOR
|
145
145
|
|
146
|
-
Copyright 2003-
|
146
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
147
147
|
|
148
148
|
This library is free software; you can redistribute it and/or modify it
|
149
149
|
under the same terms as Perl itself.
|
@@ -284,7 +284,7 @@ information from Paint Shop Pro images.
|
|
284
284
|
|
285
285
|
=head1 AUTHOR
|
286
286
|
|
287
|
-
Copyright 2003-
|
287
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
288
288
|
|
289
289
|
This library is free software; you can redistribute it and/or modify it
|
290
290
|
under the same terms as Perl itself.
|
@@ -379,7 +379,7 @@ KF7 and KF8 books (AZW and AZW3).
|
|
379
379
|
|
380
380
|
=head1 AUTHOR
|
381
381
|
|
382
|
-
Copyright 2003-
|
382
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
383
383
|
|
384
384
|
This library is free software; you can redistribute it and/or modify it
|
385
385
|
under the same terms as Perl itself.
|
@@ -2812,7 +2812,7 @@ Panasonic and Leica maker notes in EXIF information.
|
|
2812
2812
|
|
2813
2813
|
=head1 AUTHOR
|
2814
2814
|
|
2815
|
-
Copyright 2003-
|
2815
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
2816
2816
|
|
2817
2817
|
This library is free software; you can redistribute it and/or modify it
|
2818
2818
|
under the same terms as Perl itself.
|
@@ -888,7 +888,7 @@ write meta information in Panasonic/Leica RAW, RW2 and RWL images.
|
|
888
888
|
|
889
889
|
=head1 AUTHOR
|
890
890
|
|
891
|
-
Copyright 2003-
|
891
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
892
892
|
|
893
893
|
This library is free software; you can redistribute it and/or modify it
|
894
894
|
under the same terms as Perl itself.
|
@@ -731,7 +731,7 @@ timed metadata from the 'mett' frame found in Parrot drone MP4 videos.
|
|
731
731
|
|
732
732
|
=head1 AUTHOR
|
733
733
|
|
734
|
-
Copyright 2003-
|
734
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
735
735
|
|
736
736
|
This library is free software; you can redistribute it and/or modify it
|
737
737
|
under the same terms as Perl itself.
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
58
58
|
use Image::ExifTool::GPS;
|
59
59
|
use Image::ExifTool::HP;
|
60
60
|
|
61
|
-
$VERSION = '3.
|
61
|
+
$VERSION = '3.36';
|
62
62
|
|
63
63
|
sub CryptShutterCount($$);
|
64
64
|
sub PrintFilter($$$);
|
@@ -322,6 +322,7 @@ sub DecodeAFPoints($$$$;$);
|
|
322
322
|
'8 21' => 'Sigma 17-50mm F2.8 EX DC OS HSM', #26
|
323
323
|
'8 22' => 'Sigma 85mm F1.4 EX DG HSM', #26
|
324
324
|
'8 23' => 'Sigma 70-200mm F2.8 APO EX DG OS HSM', #27
|
325
|
+
'8 24' => 'Sigma 17-70mm F2.8-4 DC Macro OS HSM', #27
|
325
326
|
'8 25' => 'Sigma 17-50mm F2.8 EX DC HSM', #Exiv2
|
326
327
|
'8 27' => 'Sigma 18-200mm F3.5-6.3 II DC HSM', #27
|
327
328
|
'8 28' => 'Sigma 18-250mm F3.5-6.3 DC Macro HSM', #27
|
@@ -6290,7 +6291,7 @@ tags, and everyone who helped contribute to the LensType values.
|
|
6290
6291
|
|
6291
6292
|
=head1 AUTHOR
|
6292
6293
|
|
6293
|
-
Copyright 2003-
|
6294
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
6294
6295
|
|
6295
6296
|
This library is free software; you can redistribute it and/or modify it
|
6296
6297
|
under the same terms as Perl itself.
|
@@ -711,7 +711,7 @@ One maker notes.
|
|
711
711
|
|
712
712
|
=head1 AUTHOR
|
713
713
|
|
714
|
-
Copyright 2003-
|
714
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
715
715
|
|
716
716
|
This library is free software; you can redistribute it and/or modify it
|
717
717
|
under the same terms as Perl itself.
|
@@ -484,7 +484,7 @@ information from Kodak Photo CD Image Pac (PCD) files.
|
|
484
484
|
|
485
485
|
=head1 AUTHOR
|
486
486
|
|
487
|
-
Copyright 2003-
|
487
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
488
488
|
|
489
489
|
This library is free software; you can redistribute it and/or modify it
|
490
490
|
under the same terms as Perl itself.
|
@@ -236,7 +236,7 @@ write information written by the Camera Bits Photo Mechanic software.
|
|
236
236
|
|
237
237
|
=head1 AUTHOR
|
238
238
|
|
239
|
-
Copyright 2003-
|
239
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
240
240
|
|
241
241
|
This library is free software; you can redistribute it and/or modify it
|
242
242
|
under the same terms as Perl itself.
|
@@ -1137,7 +1137,7 @@ be preserved when copying Photoshop information via user-defined tags.
|
|
1137
1137
|
|
1138
1138
|
=head1 AUTHOR
|
1139
1139
|
|
1140
|
-
Copyright 2003-
|
1140
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
1141
1141
|
|
1142
1142
|
This library is free software; you can redistribute it and/or modify it
|
1143
1143
|
under the same terms as Perl itself.
|
@@ -777,7 +777,7 @@ This code reads meta information from EPS (Encapsulated PostScript), PS
|
|
777
777
|
|
778
778
|
=head1 AUTHOR
|
779
779
|
|
780
|
-
Copyright 2003-
|
780
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
781
781
|
|
782
782
|
This library is free software; you can redistribute it and/or modify it
|
783
783
|
under the same terms as Perl itself.
|
@@ -112,7 +112,7 @@ Print Image Matching meta information.
|
|
112
112
|
|
113
113
|
=head1 AUTHOR
|
114
114
|
|
115
|
-
Copyright 2003-
|
115
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
116
116
|
|
117
117
|
This library is free software; you can redistribute it and/or modify it
|
118
118
|
under the same terms as Perl itself.
|
@@ -1331,7 +1331,7 @@ information from the APP7 Qualcomm segment in JPEG images.
|
|
1331
1331
|
|
1332
1332
|
=head1 AUTHOR
|
1333
1333
|
|
1334
|
-
Copyright 2003-
|
1334
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
1335
1335
|
|
1336
1336
|
This library is free software; you can redistribute it and/or modify it
|
1337
1337
|
under the same terms as Perl itself.
|
@@ -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.57';
|
51
51
|
|
52
52
|
sub ProcessMOV($$;$);
|
53
53
|
sub ProcessKeys($$$);
|
@@ -424,7 +424,6 @@ my %eeBox = (
|
|
424
424
|
# (note: vide is only processed if specific atoms exist in the VideoSampleDesc)
|
425
425
|
vide => { %eeStd,
|
426
426
|
JPEG => 'stsd',
|
427
|
-
# avcC => 'stsd', # (uncomment to parse H264 stream)
|
428
427
|
},
|
429
428
|
text => { %eeStd },
|
430
429
|
meta => { %eeStd },
|
@@ -434,6 +433,10 @@ my %eeBox = (
|
|
434
433
|
ctbx => { %eeStd }, # (GM cars)
|
435
434
|
'' => { 'gps ' => 'moov', 'GPS ' => 'main' }, # (no handler -- in top level 'moov' box, and main)
|
436
435
|
);
|
436
|
+
# boxes to save when ExtractEmbedded is set to 2 or higher
|
437
|
+
my %eeBox2 = (
|
438
|
+
vide => { avcC => 'stsd' }, # (parses H264 video stream)
|
439
|
+
);
|
437
440
|
|
438
441
|
# QuickTime atoms
|
439
442
|
%Image::ExifTool::QuickTime::Main = (
|
@@ -8884,7 +8887,7 @@ sub ProcessMOV($$;$)
|
|
8884
8887
|
my $dirID = $$dirInfo{DirID} || '';
|
8885
8888
|
my $charsetQuickTime = $et->Options('CharsetQuickTime');
|
8886
8889
|
my ($buff, $tag, $size, $track, $isUserData, %triplet, $doDefaultLang, $index);
|
8887
|
-
my ($dirEnd, $
|
8890
|
+
my ($dirEnd, $unkOpt, %saveOptions, $atomCount);
|
8888
8891
|
|
8889
8892
|
my $topLevel = not $$et{InQuickTime};
|
8890
8893
|
$$et{InQuickTime} = 1;
|
@@ -8948,8 +8951,8 @@ sub ProcessMOV($$;$)
|
|
8948
8951
|
}
|
8949
8952
|
$$raf{NoBuffer} = 1 if $et->Options('FastScan'); # disable buffering in FastScan mode
|
8950
8953
|
|
8951
|
-
|
8952
|
-
|
8954
|
+
my $ee = $$et{OPTIONS}{ExtractEmbedded};
|
8955
|
+
if ($ee) {
|
8953
8956
|
$unkOpt = $$et{OPTIONS}{Unknown};
|
8954
8957
|
require 'Image/ExifTool/QuickTimeStream.pl';
|
8955
8958
|
}
|
@@ -9032,6 +9035,9 @@ sub ProcessMOV($$;$)
|
|
9032
9035
|
} elsif ($handlerType ne 'vide' and not $$et{OPTIONS}{Validate}) {
|
9033
9036
|
EEWarn($et);
|
9034
9037
|
}
|
9038
|
+
} elsif ($ee and $ee > 1 and $eeBox2{$handlerType} and $eeBox2{$handlerType}{$tag}) {
|
9039
|
+
$eeTag = 1;
|
9040
|
+
$$et{OPTIONS}{Unknown} = 1;
|
9035
9041
|
}
|
9036
9042
|
my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
|
9037
9043
|
|
@@ -9500,7 +9506,7 @@ information from QuickTime and MP4 video, M4A audio, and HEIC image files.
|
|
9500
9506
|
|
9501
9507
|
=head1 AUTHOR
|
9502
9508
|
|
9503
|
-
Copyright 2003-
|
9509
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
9504
9510
|
|
9505
9511
|
This library is free software; you can redistribute it and/or modify it
|
9506
9512
|
under the same terms as Perl itself.
|
@@ -96,7 +96,7 @@ my %insvLimit = (
|
|
96
96
|
NOTES => q{
|
97
97
|
Timed metadata extracted from QuickTime media data and some AVI videos when
|
98
98
|
the ExtractEmbedded option is used. Although most of these tags are
|
99
|
-
combined into the single table below, ExifTool currently reads
|
99
|
+
combined into the single table below, ExifTool currently reads 49 different
|
100
100
|
formats of timed GPS metadata from video files.
|
101
101
|
},
|
102
102
|
VARS => { NO_ID => 1 },
|
@@ -531,7 +531,10 @@ my %insvLimit = (
|
|
531
531
|
PROCESS_PROC => \&Process_tx3g,
|
532
532
|
GROUPS => { 2 => 'Location' },
|
533
533
|
FIRST_ENTRY => 0,
|
534
|
-
NOTES =>
|
534
|
+
NOTES => q{
|
535
|
+
Tags extracted from the tx3g sbtl timed metadata of Yuneec drones, and
|
536
|
+
subtitle text in some other videos.
|
537
|
+
},
|
535
538
|
Lat => {
|
536
539
|
Name => 'GPSLatitude',
|
537
540
|
RawConv => '$$self{FoundGPSLatitude} = 1; $val',
|
@@ -552,6 +555,11 @@ my %insvLimit = (
|
|
552
555
|
GimYaw => 'GimbalYaw',
|
553
556
|
GimPitch => 'GimbalPitch',
|
554
557
|
GimRoll => 'GimbalRoll',
|
558
|
+
DateTime => { # for date/time-format subtitle text
|
559
|
+
Groups => { 2 => 'Time' },
|
560
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
561
|
+
},
|
562
|
+
Text => { Groups => { 2 => 'Other' } },
|
555
563
|
);
|
556
564
|
|
557
565
|
%Image::ExifTool::QuickTime::INSV_MakerNotes = (
|
@@ -1195,6 +1203,10 @@ sub ProcessSamples($)
|
|
1195
1203
|
$pos += $hdrLen + $len;
|
1196
1204
|
last if $pos + $hdrLen >= length($buff);
|
1197
1205
|
}
|
1206
|
+
if ($$et{GotNAL06}) {
|
1207
|
+
my $eeOpt = $et->Options('ExtractEmbedded');
|
1208
|
+
last unless $eeOpt and $eeOpt > 2;
|
1209
|
+
}
|
1198
1210
|
next;
|
1199
1211
|
}
|
1200
1212
|
if ($verbose > 1) {
|
@@ -1771,6 +1783,25 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
1771
1783
|
$trk = GetFloat($dataPt, 0x58);
|
1772
1784
|
}
|
1773
1785
|
|
1786
|
+
} elsif ($$dataPt =~ /^.{60}A\0.{6}([NS])\0.{6}([EW])\0/s and $dirLen >= 112) {
|
1787
|
+
|
1788
|
+
# header looks like this in my sample (unknown dashcam, "Anticlock 2 2020_1125_1455_007.MOV"):
|
1789
|
+
# 0000: 00 00 80 00 66 72 65 65 47 50 53 20 68 00 00 00 [....freeGPS h...]
|
1790
|
+
# 0010: 32 30 31 33 30 33 32 35 41 00 00 00 00 00 00 00 [20130325A.......]
|
1791
|
+
# 0020: 41 70 72 20 20 36 20 32 30 31 36 2c 20 31 36 3a [Apr 6 2016, 16:]
|
1792
|
+
# 0030: 0e 00 00 00 38 00 00 00 22 00 00 00 41 00 00 00 [....8..."...A...]
|
1793
|
+
# 0040: 8a 63 24 45 53 00 00 00 9f e6 42 45 45 00 00 00 [.c$ES.....BEE...]
|
1794
|
+
# 0050: 59 c0 04 3f 52 b8 42 41 14 00 00 00 0b 00 00 00 [Y..?R.BA........]
|
1795
|
+
# 0060: 19 00 00 00 06 00 00 00 05 00 00 00 f6 ff ff ff [................]
|
1796
|
+
# 0070: 03 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 [................]
|
1797
|
+
($latRef, $lonRef) = ($1, $2);
|
1798
|
+
($hr,$min,$sec,$yr,$mon,$day,@acc) = unpack('x48V3x28V6',$$dataPt);
|
1799
|
+
map { $_ = $_ - 4294967296 if $_ >= 0x80000000; $_ /= 1000 } @acc; # (NC)
|
1800
|
+
$lat = GetFloat($dataPt, 0x40);
|
1801
|
+
$lon = GetFloat($dataPt, 0x48);
|
1802
|
+
$spd = GetFloat($dataPt, 0x50);
|
1803
|
+
$trk = GetFloat($dataPt, 0x54);
|
1804
|
+
|
1774
1805
|
} else {
|
1775
1806
|
|
1776
1807
|
# (look for binary GPS as stored by NextBase 512G, ref PH)
|
@@ -1836,8 +1867,10 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
1836
1867
|
$et->HandleTag($tagTbl, GPSDateTime => $time);
|
1837
1868
|
$et->HandleTag($tagTbl, GPSLatitude => $lat * ($latRef eq 'S' ? -1 : 1));
|
1838
1869
|
$et->HandleTag($tagTbl, GPSLongitude => $lon * ($lonRef eq 'W' ? -1 : 1));
|
1839
|
-
|
1840
|
-
|
1870
|
+
if (defined $spd) {
|
1871
|
+
$et->HandleTag($tagTbl, GPSSpeed => $spd); # (now in km/h)
|
1872
|
+
$et->HandleTag($tagTbl, GPSSpeedRef => 'K');
|
1873
|
+
}
|
1841
1874
|
if (defined $trk) {
|
1842
1875
|
$et->HandleTag($tagTbl, GPSTrack => $trk);
|
1843
1876
|
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
@@ -1960,7 +1993,13 @@ sub Process_tx3g($$$)
|
|
1960
1993
|
my $dataPt = $$dirInfo{DataPt};
|
1961
1994
|
return 0 if length $$dataPt < 2;
|
1962
1995
|
pos($$dataPt) = 2; # skip 2-byte length word
|
1963
|
-
$et->
|
1996
|
+
$et->VerboseDir('tx3g', undef, length($$dataPt)-2);
|
1997
|
+
$et->HandleTag($tagTablePtr, 'Text', substr($$dataPt, 2));
|
1998
|
+
if ($$dataPt =~ /^..\w{3} (\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2}) ?([-+])(\d{2}):?(\d{2})$/s) {
|
1999
|
+
$et->HandleTag($tagTablePtr, 'DateTime', "$1:$2:$3 $4$5$6:$7");
|
2000
|
+
} else {
|
2001
|
+
$et->HandleTag($tagTablePtr, $1, $2) while $$dataPt =~ /(\w+):([^:]*[^:\s])(\s|$)/sg;
|
2002
|
+
}
|
1964
2003
|
return 1;
|
1965
2004
|
}
|
1966
2005
|
|
@@ -2492,7 +2531,7 @@ sub ProcessInsta360($;$)
|
|
2492
2531
|
$et->HandleTag($tagTbl, GPSTrack => $a[9]);
|
2493
2532
|
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
2494
2533
|
$et->HandleTag($tagTbl, GPSAltitude => $a[10]);
|
2495
|
-
$et->HandleTag($tagTbl, Unknown02 => "@a[1,2]") if $unknown;
|
2534
|
+
$et->HandleTag($tagTbl, Unknown02 => "@a[1,2]") if $unknown; # millisecond counter (https://exiftool.org/forum/index.php?topic=9884.msg65143#msg65143)
|
2496
2535
|
}
|
2497
2536
|
}
|
2498
2537
|
} elsif ($id == 0x101) {
|
@@ -2649,7 +2688,7 @@ information like GPS tracks from MOV, MP4 and INSV media data.
|
|
2649
2688
|
|
2650
2689
|
=head1 AUTHOR
|
2651
2690
|
|
2652
|
-
Copyright 2003-
|
2691
|
+
Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
|
2653
2692
|
|
2654
2693
|
This library is free software; you can redistribute it and/or modify it
|
2655
2694
|
under the same terms as Perl itself.
|