exiftool_vendored 13.12.0 → 13.14.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 +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
|