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.
@@ -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 FotoStation
142
- GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD IPTC ItemList JFIF
143
- Jpeg2000 JUMBF Keys MakerNotes Meta MetaIFD Microsoft MIE MPF Nextbase NikonApp
144
- NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG PNG-pHYs PrintIM
145
- QuickTime RMETA RSRC SEAL SubIFD Trailer UserData XML XML-* XMP XMP-*
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
- $family == 1 and map { $allGroups{$_} = 1 } qw(Garmin);
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{ScanForAFCP} = 1; # scan if necessary
6110
+ $$trailInfo{ScanForTrailer} = 1;# scan if necessary
6107
6111
  $self->ProcessTrailers($trailInfo) or undef $trailInfo;
6108
6112
  }
6109
6113
  if (not $oldOutfile) {
@@ -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.12';
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 ScanForAFCP is set
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{ScanForAFCP} = 1; # scan now if necessary
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{ScanForAFCP} = 1; # scan to find AFCP if necessary
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{ScanForAFCP} = 1; # scan for AFCP if necessary
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;
@@ -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, Apple,
2567
- Audible, CBOR, CIFF, CameraIFD, Canon, CanonCustom, CanonDR4, CanonRaw,
2568
- CanonVRD, Casio, Chapter#, Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta,
2569
- Ducky, EPPIM, EXE, EXIF, ExifIFD, ExifTool, FITS, FLAC, FLIR, File, Flash,
2570
- FlashPix, Font, FotoStation, FujiFilm, FujiIFD, GE, GIF, GIMP, GM, GPS,
2571
- GSpherical, Garmin, GeoTiff, GlobParamIFD, GoPro, GraphConv, H264, HP, HTC,
2572
- HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-equiv,
2573
- ICC-chrm, ICC-cicp, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-view,
2574
- ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4,
2575
- IFD0, IFD1, IPTC, IPTC#, ISO, ITC, InfiRay, Insta360, InteropIFD, ItemList,
2576
- JFIF, JFXX, JPEG, JPEG-HDR, JPS, JSON, JUMBF, JVC, Jpeg2000, KDC_IFD, Keys,
2577
- Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LIGO, LNK,
2578
- Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M-RAW, M2TS, MAC, MIE-Audio,
2579
- MIE-Camera, MIE-Canon, MIE-Doc, MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo,
2580
- MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient,
2581
- MIE-Preview, MIE-Thumbnail, MIE-UTM, MIE-Unknown, MIE-Video, MIFF, MISB,
2582
- MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS, MakerNotes,
2583
- MakerUnknown, Matroska, MediaJukebox, Meta, MetaIFD, Microsoft, Minolta,
2584
- MinoltaRaw, Motorola, NITF, Nextbase, Nikon, NikonCapture, NikonCustom,
2585
- NikonScan, NikonSettings, NineEdits, Nintendo, Ocad, Ogg, Olympus, OpenEXR,
2586
- Opus, PDF, PICT, PNG, PNG-cICP, PNG-pHYs, PSP, Palm, Panasonic,
2587
- PanasonicRaw, Parrot, Pentax, PhaseOne, PhotoCD, PhotoMechanic, Photoshop,
2588
- PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, Qualcomm,
2589
- QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, Real,
2590
- Real-CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD,
2591
- Reconyx, Red, Ricoh, SEAL, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG,
2592
- Samsung, Sanyo, Scalado, Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD,
2593
- System, Theora, Torrent, Track#, UserData, VCalendar, VCard, VNote,
2594
- Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP-GAudio,
2595
- XMP-GCamera, XMP-GContainer, XMP-GCreations, XMP-GDepth, XMP-GFocus,
2596
- XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage, XMP-MP, XMP-MP1,
2597
- XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-acdsee-rs, XMP-album, XMP-apple-fi,
2598
- XMP-ast, XMP-aux, XMP-cc, XMP-cell, XMP-crd, XMP-creatorAtom, XMP-crs,
2599
- XMP-dc, XMP-dex, XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-et, XMP-exif,
2600
- XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-hdr,
2601
- XMP-hdrgm, XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro,
2602
- XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-nine, XMP-panorama,
2603
- XMP-pdf, XMP-pdfx, XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi,
2604
- XMP-prism, XMP-prl, XMP-prm, XMP-pur, XMP-rdf, XMP-sdc, XMP-swf, XMP-tiff,
2605
- XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpDSA, XMP-xmpMM, XMP-xmpNote,
2606
- XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP, iTunes
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
 
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 13.12
3
+ Version: 13.14
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('13.12.0')
4
+ VERSION = Gem::Version.new('13.14.0')
5
5
  end
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.12.0
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-14 00:00:00.000000000 Z
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