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.
@@ -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