exiftool_vendored 13.12.0 → 13.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +52 -22
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/arg_files/exif2xmp.args +4 -0
- data/bin/arg_files/xmp2exif.args +2 -1
- data/bin/build_geolocation +1 -1
- data/bin/exiftool +5 -5
- data/bin/lib/Image/ExifTool/AFCP.pm +5 -5
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +24 -13
- data/bin/lib/Image/ExifTool/DJI.pm +64 -11
- data/bin/lib/Image/ExifTool/EXE.pm +2 -2
- data/bin/lib/Image/ExifTool/Geolocation.pm +16 -7
- data/bin/lib/Image/ExifTool/JPEG.pm +5 -1
- data/bin/lib/Image/ExifTool/LigoGPS.pm +1 -0
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -0
- data/bin/lib/Image/ExifTool/Protobuf.pm +25 -7
- data/bin/lib/Image/ExifTool/QuickTime.pm +161 -50
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +3438 -3430
- data/bin/lib/Image/ExifTool/TagNames.pod +89 -22
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -2
- data/bin/lib/Image/ExifTool/Vivo.pm +124 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +69 -40
- data/bin/lib/Image/ExifTool/Writer.pl +12 -8
- data/bin/lib/Image/ExifTool.pm +22 -6
- data/bin/lib/Image/ExifTool.pod +43 -41
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -138,11 +138,12 @@ my %rawType = (
|
|
138
138
|
# 2) any dependencies must be added to %excludeGroups
|
139
139
|
my @delGroups = qw(
|
140
140
|
Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11 APP12
|
141
|
-
APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
|
142
|
-
GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC
|
143
|
-
Jpeg2000 JUMBF Keys MakerNotes Meta MetaIFD Microsoft MIE MPF
|
144
|
-
NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG
|
145
|
-
QuickTime RMETA RSRC SEAL SubIFD Trailer UserData
|
141
|
+
APP13 APP14 APP15 AudioKeys CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
|
142
|
+
FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC
|
143
|
+
ItemList JFIF Jpeg2000 JUMBF Keys MakerNotes Meta MetaIFD Microsoft MIE MPF
|
144
|
+
Nextbase NikonApp NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG
|
145
|
+
PNG-pHYs PrintIM QuickTime RMETA RSRC SEAL SubIFD Trailer UserData VideoKeys
|
146
|
+
Vivo XML XML-* XMP XMP-*
|
146
147
|
);
|
147
148
|
# family 2 group names that we can delete
|
148
149
|
my @delGroup2 = qw(
|
@@ -2823,7 +2824,10 @@ sub GetAllGroups($;$)
|
|
2823
2824
|
|
2824
2825
|
my %allGroups;
|
2825
2826
|
# add family 1 groups not in tables
|
2826
|
-
|
2827
|
+
no warnings; # (avoid "possible attempt to put comments in qw()")
|
2828
|
+
$family == 1 and map { $allGroups{$_} = 1 } qw(Garmin AudioItemList AudioUserData
|
2829
|
+
VideoItemList VideoUserData Track#Keys Track#ItemList Track#UserData);
|
2830
|
+
use warnings;
|
2827
2831
|
# loop through all tag tables and get all group names
|
2828
2832
|
while (@tableNames) {
|
2829
2833
|
my $table = GetTagTable(pop @tableNames);
|
@@ -5229,7 +5233,7 @@ sub Set64u(@)
|
|
5229
5233
|
{
|
5230
5234
|
my $val = $_[0];
|
5231
5235
|
my $hi = int($val / 4294967296);
|
5232
|
-
my $lo = Set32u($val - $hi * 4294967296);
|
5236
|
+
my $lo = Set32u($val - $hi * 4294967296); # NOTE: subject to round-off errors!
|
5233
5237
|
$hi = Set32u($hi);
|
5234
5238
|
$val = GetByteOrder() eq 'MM' ? $hi . $lo : $lo . $hi;
|
5235
5239
|
$_[1] and substr(${$_[1]}, $_[2], length($val)) = $val;
|
@@ -6103,7 +6107,7 @@ sub WriteJPEG($$)
|
|
6103
6107
|
my $tbuf = '';
|
6104
6108
|
$raf->Seek(-length($buff), 1); # seek back to just after EOI
|
6105
6109
|
$$trailInfo{OutFile} = \$tbuf; # rewrite the trailer
|
6106
|
-
$$trailInfo{
|
6110
|
+
$$trailInfo{ScanForTrailer} = 1;# scan if necessary
|
6107
6111
|
$self->ProcessTrailers($trailInfo) or undef $trailInfo;
|
6108
6112
|
}
|
6109
6113
|
if (not $oldOutfile) {
|
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 $exeDir
|
30
30
|
%static_vars $advFmtSelf);
|
31
31
|
|
32
|
-
$VERSION = '13.
|
32
|
+
$VERSION = '13.14';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -6896,6 +6896,8 @@ sub IdentifyTrailer($;$)
|
|
6896
6896
|
$type = 'Insta360';
|
6897
6897
|
} elsif ($buff =~ m(\0{6}/NIKON APP$)) {
|
6898
6898
|
$type = 'NikonApp';
|
6899
|
+
} elsif ($buff =~ /\xff{4}\x1b\*9HWfu\x84\x93\xa2\xb1$/) {
|
6900
|
+
$type = 'Vivo';
|
6899
6901
|
}
|
6900
6902
|
last;
|
6901
6903
|
}
|
@@ -6908,7 +6910,8 @@ sub IdentifyTrailer($;$)
|
|
6908
6910
|
# Inputs: 0) ExifTool object ref, 1) DirInfo ref:
|
6909
6911
|
# - requires RAF and DirName
|
6910
6912
|
# - OutFile is a scalar reference for writing
|
6911
|
-
# - scans from current file position if
|
6913
|
+
# - scans from current file position for each trailer if ScanForTrailer is set
|
6914
|
+
# (current file position is just after JPEG EOF for a JPEG image)
|
6912
6915
|
# Returns: 1 if trailer was processed or couldn't be processed (or written OK)
|
6913
6916
|
# 0 if trailer was recognized but offsets need fixing (or write error)
|
6914
6917
|
# - DirName, DirLen, DataPos, Offset, Fixup and OutFile are updated
|
@@ -6954,7 +6957,7 @@ sub ProcessTrailers($$)
|
|
6954
6957
|
# read or write this trailer
|
6955
6958
|
# (proc takes Offset as positive offset from end of trailer to end of file,
|
6956
6959
|
# and returns DataPos and DirLen, and Fixup if applicable, and updates
|
6957
|
-
# OutFile when writing)
|
6960
|
+
# OutFile when writing. Returns < 0 if we must scan for this trailer)
|
6958
6961
|
no strict 'refs';
|
6959
6962
|
my $result = &$proc($self, $dirInfo);
|
6960
6963
|
use strict 'refs';
|
@@ -7364,7 +7367,7 @@ sub ProcessJPEG($$;$)
|
|
7364
7367
|
# and scan for AFCP if necessary
|
7365
7368
|
my $fromEnd = 0;
|
7366
7369
|
if ($trailInfo) {
|
7367
|
-
$$trailInfo{
|
7370
|
+
$$trailInfo{ScanForTrailer} = 1; # scan now if necessary
|
7368
7371
|
$self->ProcessTrailers($trailInfo);
|
7369
7372
|
# save offset from end of file to start of first trailer
|
7370
7373
|
$fromEnd = $$trailInfo{Offset};
|
@@ -7564,6 +7567,19 @@ sub ProcessJPEG($$;$)
|
|
7564
7567
|
$$self{SkipData} = \@skipData if @skipData;
|
7565
7568
|
# extract the EXIF information (it is in standard TIFF format)
|
7566
7569
|
$self->ProcessTIFF(\%dirInfo) or $self->Warn('Malformed APP1 EXIF segment');
|
7570
|
+
# scan for Vivo HiddenData if necessary
|
7571
|
+
if ($$self{Make} eq 'vivo' and
|
7572
|
+
# (stored as UserComment by some models)
|
7573
|
+
not ($$self{VALUE}{UserComment} and $$self{VALUE}{UserComment} =~ /^filter:/) and
|
7574
|
+
$$dataPt =~ /(filter: .*?; \n)\0/sg)
|
7575
|
+
{
|
7576
|
+
if ($htmlDump) {
|
7577
|
+
my $n = length($1) + 1;
|
7578
|
+
$self->HDump($segPos+pos($$dataPt)-$n, $n, '[Vivo HiddenData]', undef, 0x08);
|
7579
|
+
}
|
7580
|
+
my $tbl = GetTagTable('Image::ExifTool::Vivo::Main');
|
7581
|
+
$self->HandleTag($tbl, HiddenData => $1);
|
7582
|
+
}
|
7567
7583
|
# avoid looking for preview unless necessary because it really slows
|
7568
7584
|
# us down -- only look for it if we found pointer, and preview is
|
7569
7585
|
# outside EXIF, and PreviewImage is specifically requested
|
@@ -8541,7 +8557,7 @@ sub DoProcessTIFF($$;$)
|
|
8541
8557
|
if ($raf) {
|
8542
8558
|
my $trailInfo = IdentifyTrailer($raf);
|
8543
8559
|
if ($trailInfo) {
|
8544
|
-
$$trailInfo{
|
8560
|
+
$$trailInfo{ScanForTrailer} = 1; # scan to find AFCP if necessary
|
8545
8561
|
$self->ProcessTrailers($trailInfo);
|
8546
8562
|
}
|
8547
8563
|
# dump any other known trailer (eg. A100 RAW Data)
|
@@ -8646,7 +8662,7 @@ sub DoProcessTIFF($$;$)
|
|
8646
8662
|
last unless $trailInfo;
|
8647
8663
|
my $tbuf = '';
|
8648
8664
|
$$trailInfo{OutFile} = \$tbuf; # rewrite trailer(s)
|
8649
|
-
$$trailInfo{
|
8665
|
+
$$trailInfo{ScanForTrailer} = 1; # scan for AFCP if necessary
|
8650
8666
|
# rewrite all trailers to buffer
|
8651
8667
|
unless ($self->ProcessTrailers($trailInfo)) {
|
8652
8668
|
undef $trailInfo;
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -2563,47 +2563,49 @@ Trailer, VCard, Vorbis, WTV, XML, XMP, ZIP
|
|
2563
2563
|
|
2564
2564
|
=item Family 1 (Specific Location):
|
2565
2565
|
|
2566
|
-
AAC, AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG,
|
2567
|
-
|
2568
|
-
|
2569
|
-
|
2570
|
-
|
2571
|
-
|
2572
|
-
|
2573
|
-
|
2574
|
-
|
2575
|
-
|
2576
|
-
|
2577
|
-
|
2578
|
-
|
2579
|
-
|
2580
|
-
MIE-
|
2581
|
-
MIE-
|
2582
|
-
|
2583
|
-
|
2584
|
-
|
2585
|
-
|
2586
|
-
|
2587
|
-
|
2588
|
-
|
2589
|
-
|
2590
|
-
|
2591
|
-
|
2592
|
-
|
2593
|
-
|
2594
|
-
|
2595
|
-
|
2596
|
-
|
2597
|
-
XMP-
|
2598
|
-
XMP-
|
2599
|
-
XMP-
|
2600
|
-
XMP-
|
2601
|
-
XMP-
|
2602
|
-
XMP-
|
2603
|
-
XMP-
|
2604
|
-
XMP-
|
2605
|
-
XMP-
|
2606
|
-
XMP-
|
2566
|
+
AAC, AC3, AFCP, AIFF, APE, APP10, APP2, ASF, AVI1, Adobe, AdobeCM, AdobeDNG,
|
2567
|
+
Apple, Audible, AudioItemList, AudioKeys, AudioUserData, CBOR, CIFF,
|
2568
|
+
CameraIFD, Canon, CanonCustom, CanonDR4, CanonRaw, CanonVRD, Casio,
|
2569
|
+
Chapter#, Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM,
|
2570
|
+
EXE, EXIF, ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash, FlashPix, Font,
|
2571
|
+
FotoStation, FujiFilm, FujiIFD, GE, GIF, GIMP, GM, GPS, GSpherical, Garmin,
|
2572
|
+
GeoTiff, GlobParamIFD, GoPro, GraphConv, H264, HP, HTC, HTML, HTML-dc,
|
2573
|
+
HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm, ICC-cicp,
|
2574
|
+
ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-view, ICC_Profile,
|
2575
|
+
ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1,
|
2576
|
+
IPTC, IPTC#, ISO, ITC, InfiRay, Insta360, InteropIFD, ItemList, JFIF, JFXX,
|
2577
|
+
JPEG, JPEG-HDR, JPS, JSON, JUMBF, JVC, Jpeg2000, KDC_IFD, Keys, Kodak,
|
2578
|
+
KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf,
|
2579
|
+
LeafSubIFD, Leica, Lyrics3, Lytro, M-RAW, M2TS, MAC, MIE-Audio, MIE-Camera,
|
2580
|
+
MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image,
|
2581
|
+
MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview,
|
2582
|
+
MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MISB, MNG, MOBI, MOI,
|
2583
|
+
MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS, MakerNotes, MakerUnknown,
|
2584
|
+
Matroska, MediaJukebox, Meta, MetaIFD, Microsoft, Minolta, MinoltaRaw,
|
2585
|
+
Motorola, NITF, Nextbase, Nikon, NikonCapture, NikonCustom, NikonScan,
|
2586
|
+
NikonSettings, NineEdits, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF,
|
2587
|
+
PICT, PNG, PNG-cICP, PNG-pHYs, PSP, Palm, Panasonic, PanasonicRaw, Parrot,
|
2588
|
+
Pentax, PhaseOne, PhotoCD, PhotoMechanic, Photoshop, PictureInfo,
|
2589
|
+
PostScript, PreviewIFD, PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2,
|
2590
|
+
RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, Real, Real-CONT, Real-MDPR,
|
2591
|
+
Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Red, Ricoh,
|
2592
|
+
SEAL, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado,
|
2593
|
+
Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, System, Theora, Torrent,
|
2594
|
+
Track#, Track#ItemList, Track#Keys, Track#UserData, UserData, VCalendar,
|
2595
|
+
VCard, VNote, Version0, VideoItemList, VideoKeys, VideoUserData, Vivo,
|
2596
|
+
Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio, XMP-GCamera,
|
2597
|
+
XMP-GContainer, XMP-GCreations, XMP-GDepth, XMP-GFocus, XMP-GImage,
|
2598
|
+
XMP-GPano, XMP-GSpherical, XMP-HDRGainMap, XMP-LImage, XMP-MP, XMP-MP1,
|
2599
|
+
XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-acdsee-rs, XMP-album, XMP-apdi,
|
2600
|
+
XMP-apple-fi, XMP-ast, XMP-aux, XMP-cc, XMP-cell, XMP-crd, XMP-creatorAtom,
|
2601
|
+
XMP-crs, XMP-dc, XMP-dex, XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-et,
|
2602
|
+
XMP-exif, XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty,
|
2603
|
+
XMP-hdr, XMP-hdrgm, XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr,
|
2604
|
+
XMP-mediapro, XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-nine,
|
2605
|
+
XMP-panorama, XMP-pdf, XMP-pdfx, XMP-photomech, XMP-photoshop, XMP-plus,
|
2606
|
+
XMP-pmi, XMP-prism, XMP-prl, XMP-prm, XMP-pur, XMP-rdf, XMP-sdc, XMP-seal,
|
2607
|
+
XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpDSA,
|
2608
|
+
XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP, iTunes
|
2607
2609
|
|
2608
2610
|
=item Family 2 (Category):
|
2609
2611
|
|
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: 13.
|
4
|
+
version: 13.14.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: 2025-01-
|
12
|
+
date: 2025-01-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|
@@ -291,6 +291,7 @@ files:
|
|
291
291
|
- bin/lib/Image/ExifTool/Unknown.pm
|
292
292
|
- bin/lib/Image/ExifTool/VCard.pm
|
293
293
|
- bin/lib/Image/ExifTool/Validate.pm
|
294
|
+
- bin/lib/Image/ExifTool/Vivo.pm
|
294
295
|
- bin/lib/Image/ExifTool/Vorbis.pm
|
295
296
|
- bin/lib/Image/ExifTool/WPG.pm
|
296
297
|
- bin/lib/Image/ExifTool/WTV.pm
|