exiftool_vendored 12.73.0 → 12.75.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +41 -2
  3. data/bin/META.json +1 -1
  4. data/bin/META.yml +1 -1
  5. data/bin/README +46 -45
  6. data/bin/exiftool +97 -83
  7. data/bin/lib/File/RandomAccess.pm +31 -5
  8. data/bin/lib/File/RandomAccess.pod +4 -4
  9. data/bin/lib/Image/ExifTool/7Z.pm +3 -3
  10. data/bin/lib/Image/ExifTool/AFCP.pm +2 -2
  11. data/bin/lib/Image/ExifTool/BZZ.pm +2 -2
  12. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -7
  13. data/bin/lib/Image/ExifTool/Canon.pm +6 -5
  14. data/bin/lib/Image/ExifTool/CanonVRD.pm +2 -2
  15. data/bin/lib/Image/ExifTool/DICOM.pm +2 -2
  16. data/bin/lib/Image/ExifTool/DNG.pm +4 -4
  17. data/bin/lib/Image/ExifTool/Exif.pm +3 -2
  18. data/bin/lib/Image/ExifTool/FLIR.pm +2 -2
  19. data/bin/lib/Image/ExifTool/Fixup.pm +3 -3
  20. data/bin/lib/Image/ExifTool/FlashPix.pm +3 -3
  21. data/bin/lib/Image/ExifTool/FujiFilm.pm +8 -3
  22. data/bin/lib/Image/ExifTool/Geotag.pm +3 -3
  23. data/bin/lib/Image/ExifTool/HtmlDump.pm +2 -2
  24. data/bin/lib/Image/ExifTool/ID3.pm +2 -2
  25. data/bin/lib/Image/ExifTool/Import.pm +5 -5
  26. data/bin/lib/Image/ExifTool/JSON.pm +2 -2
  27. data/bin/lib/Image/ExifTool/Jpeg2000.pm +51 -12
  28. data/bin/lib/Image/ExifTool/MIE.pm +3 -3
  29. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  30. data/bin/lib/Image/ExifTool/Nikon.pm +3 -1
  31. data/bin/lib/Image/ExifTool/NikonCustom.pm +3 -3
  32. data/bin/lib/Image/ExifTool/Ogg.pm +2 -2
  33. data/bin/lib/Image/ExifTool/PDF.pm +54 -4
  34. data/bin/lib/Image/ExifTool/PLIST.pm +3 -3
  35. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +3 -3
  36. data/bin/lib/Image/ExifTool/PhaseOne.pm +2 -2
  37. data/bin/lib/Image/ExifTool/Photoshop.pm +3 -3
  38. data/bin/lib/Image/ExifTool/PostScript.pm +2 -2
  39. data/bin/lib/Image/ExifTool/QuickTime.pm +41 -107
  40. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +8 -6
  41. data/bin/lib/Image/ExifTool/RSRC.pm +2 -2
  42. data/bin/lib/Image/ExifTool/Samsung.pm +4 -4
  43. data/bin/lib/Image/ExifTool/Shift.pl +1 -2
  44. data/bin/lib/Image/ExifTool/SigmaRaw.pm +3 -3
  45. data/bin/lib/Image/ExifTool/Sony.pm +3 -3
  46. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  47. data/bin/lib/Image/ExifTool/TagLookup.pm +8 -5
  48. data/bin/lib/Image/ExifTool/TagNames.pod +36 -5
  49. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  50. data/bin/lib/Image/ExifTool/WriteExif.pl +26 -23
  51. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  52. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
  53. data/bin/lib/Image/ExifTool/WriteXMP.pl +4 -2
  54. data/bin/lib/Image/ExifTool/Writer.pl +68 -44
  55. data/bin/lib/Image/ExifTool/XMP.pm +2 -1
  56. data/bin/lib/Image/ExifTool/XMP2.pl +9 -0
  57. data/bin/lib/Image/ExifTool/ZIP.pm +6 -6
  58. data/bin/lib/Image/ExifTool.pm +42 -26
  59. data/bin/lib/Image/ExifTool.pod +76 -71
  60. data/bin/perl-Image-ExifTool.spec +45 -44
  61. data/lib/exiftool_vendored/version.rb +1 -1
  62. metadata +2 -2
@@ -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);
31
31
 
32
- $VERSION = '12.73';
32
+ $VERSION = '12.75';
33
33
  $RELEASE = '';
34
34
  @ISA = qw(Exporter);
35
35
  %EXPORT_TAGS = (
@@ -77,7 +77,7 @@ sub GetDeleteGroups();
77
77
  sub AddUserDefinedTags($%);
78
78
  sub SetAlternateFile($$$);
79
79
  # non-public routines below
80
- sub InsertTagValues($$$;$$$);
80
+ sub InsertTagValues($$;$$$$);
81
81
  sub IsWritable($);
82
82
  sub IsSameFile($$$);
83
83
  sub IsRawType($);
@@ -195,9 +195,9 @@ $defaultLang = 'en'; # default language
195
195
  OGG FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF
196
196
  LFP HTML VRD RTF FITS XISF XCF DSS QTIF FPX PICT ZIP GZIP PLIST
197
197
  RAR 7Z BZ2 CZI TAR EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font
198
- RSRC M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI
199
- R3D AA PDB PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD ICO
200
- TXT AAC);
198
+ JUMBF RSRC M2TS MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard
199
+ LRI R3D AA PDB PFM2 MRC LIF JXL MOI ISO ALIAS JSON MP3 DICOM PCD
200
+ ICO TXT AAC);
201
201
 
202
202
  # file types that we can write (edit)
203
203
  my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
@@ -260,6 +260,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
260
260
  BPG => ['BPG', 'Better Portable Graphics'],
261
261
  BTF => ['BTF', 'Big Tagged Image File Format'], #(unofficial)
262
262
  BZ2 => ['BZ2', 'BZIP2 archive'],
263
+ C2PA => ['JUMBF','Coalition for Content Provenance and Authenticity'],
263
264
  CHM => ['CHM', 'Microsoft Compiled HTML format'],
264
265
  CIFF => ['CRW', 'Camera Image File Format'],
265
266
  COS => ['COS', 'Capture One Settings'],
@@ -374,6 +375,7 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
374
375
  JPS => ['JPEG', 'JPEG Stereo image'],
375
376
  JPX => ['JP2', 'JPEG 2000 with extensions'],
376
377
  JSON => ['JSON', 'JavaScript Object Notation'],
378
+ JUMBF=> ['JUMBF','JPEG Universal Metadata Box Format'],
377
379
  JXL => ['JXL', 'JPEG XL'],
378
380
  JXR => ['TIFF', 'JPEG XR'],
379
381
  K25 => ['TIFF', 'Kodak DC25 RAW'],
@@ -612,6 +614,7 @@ my %fileDescription = (
612
614
  BPG => 'image/bpg',
613
615
  BTF => 'image/x-tiff-big', #(NC) (ref http://www.asmail.be/msg0055371937.html)
614
616
  BZ2 => 'application/bzip2',
617
+ C2PA => 'application/c2pa',
615
618
  'Canon 1D RAW' => 'image/x-raw', # (uses .TIF file extension)
616
619
  CHM => 'application/x-chm',
617
620
  COS => 'application/octet-stream', #PH (NC)
@@ -686,6 +689,7 @@ my %fileDescription = (
686
689
  JPS => 'image/x-jps',
687
690
  JPX => 'image/jpx',
688
691
  JSON => 'application/json',
692
+ JUMBF=> 'application/octet-stream', #PH (invented format)
689
693
  JXL => 'image/jxl', #PH (NC)
690
694
  JXR => 'image/jxr',
691
695
  K25 => 'image/x-kodak-k25',
@@ -856,6 +860,7 @@ my %moduleName = (
856
860
  HDR => 'Radiance',
857
861
  JP2 => 'Jpeg2000',
858
862
  JPEG => '',
863
+ JUMBF=> 'Jpeg2000',
859
864
  JXL => 'Jpeg2000',
860
865
  LFP => 'Lytro',
861
866
  LRI => 0,
@@ -947,6 +952,7 @@ $testLen = 1024; # number of bytes to read when testing for magic number
947
952
  JP2 => '(\0\0\0\x0cjP( |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0)',
948
953
  JPEG => '\xff\xd8\xff',
949
954
  JSON => '(\xef\xbb\xbf)?\s*(\[\s*)?\{\s*"[^"]*"\s*:',
955
+ JUMBF=> '.{4}jumb\0.{3}jumd',
950
956
  JXL => '\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl ',
951
957
  LFP => '\x89LFP\x0d\x0a\x1a\x0a',
952
958
  LIF => '\x70\0{3}.{4}\x2a.{4}<\0',
@@ -1640,6 +1646,11 @@ my %systemTagsNotes = (
1640
1646
  Groups => { 0 => 'XML', 1 => 'XML' },
1641
1647
  Binary => 1,
1642
1648
  },
1649
+ JUMBF => {
1650
+ Notes => 'the C2PA JUMBF data block, extracted only if specifically requested',
1651
+ Groups => { 0 => 'JUMBF', 1 => 'JUMBF' },
1652
+ Binary => 1,
1653
+ },
1643
1654
  ICC_Profile => {
1644
1655
  Notes => q{
1645
1656
  the full ICC_Profile data block. This tag is generated only if specifically
@@ -2196,7 +2207,7 @@ sub new
2196
2207
  # use Image::ExifTool 'ImageInfo';
2197
2208
  # my $info = ImageInfo($file, 'DateTimeOriginal', 'ImageSize');
2198
2209
  # - or -
2199
- # my $et = new Image::ExifTool;
2210
+ # my $et = Image::ExifTool->new;
2200
2211
  # my $info = $et->ImageInfo($file, \@tagList, {Sort=>'Group0'} );
2201
2212
  sub ImageInfo($;@)
2202
2213
  {
@@ -2206,7 +2217,7 @@ sub ImageInfo($;@)
2206
2217
  if (ref $_[0] and UNIVERSAL::isa($_[0],'Image::ExifTool')) {
2207
2218
  $self = shift;
2208
2219
  } else {
2209
- $self = new Image::ExifTool;
2220
+ $self = Image::ExifTool->new;
2210
2221
  }
2211
2222
  my %saveOptions = %{$$self{OPTIONS}}; # save original options
2212
2223
 
@@ -2529,7 +2540,7 @@ sub ExtractInfo($;@)
2529
2540
  FILE_TYPE => $$self{FILE_TYPE},
2530
2541
  };
2531
2542
  $saveOrder = GetByteOrder(),
2532
- $$self{RAF} = new File::RandomAccess($_[0]);
2543
+ $$self{RAF} = File::RandomAccess->new($_[0]);
2533
2544
  $$self{PROCESSED} = { };
2534
2545
  delete $$self{EXIF_DATA};
2535
2546
  delete $$self{EXIF_POS};
@@ -2636,7 +2647,7 @@ sub ExtractInfo($;@)
2636
2647
  # open the file
2637
2648
  if ($self->Open(\*EXIFTOOL_FILE, $filename)) {
2638
2649
  # create random access file object
2639
- $raf = new File::RandomAccess(\*EXIFTOOL_FILE);
2650
+ $raf = File::RandomAccess->new(\*EXIFTOOL_FILE);
2640
2651
  # patch to force pipe to be buffered because seek returns success
2641
2652
  # in Windows cmd shell pipe even though it really failed
2642
2653
  $$raf{TESTED} = -1 if $filename eq '-' or $filename =~ /\|$/;
@@ -2767,12 +2778,16 @@ sub ExtractInfo($;@)
2767
2778
  $raf->BinMode(); # set binary mode before we start reading
2768
2779
  my $pos = $raf->Tell(); # get file position so we can rewind
2769
2780
  # loop through list of file types to test
2770
- my ($buff, $seekErr);
2781
+ my ($buff, $err);
2771
2782
  my %dirInfo = ( RAF => $raf, Base => $pos, TestBuff => \$buff );
2772
2783
  # read start of file for testing
2773
- $raf->Read($buff, $testLen) or $buff = '';
2774
- $raf->Seek($pos, 0) or $seekErr = 1;
2775
- until ($seekErr) {
2784
+ if ($raf->Read($buff, $testLen)) {
2785
+ $raf->Seek($pos, 0) or $err = 'Error seeking in file';
2786
+ } else {
2787
+ $err = $$raf{ERROR};
2788
+ $buff = '';
2789
+ }
2790
+ until ($err) {
2776
2791
  my $unkHeader;
2777
2792
  $type = shift @fileTypeList;
2778
2793
  if ($type) {
@@ -2795,7 +2810,7 @@ sub ExtractInfo($;@)
2795
2810
  $type = ($1 eq "\xff\xd8\xff") ? 'JPEG' : 'TIFF';
2796
2811
  my $skip = pos($buff) - length($1);
2797
2812
  $dirInfo{Base} = $pos + $skip;
2798
- $raf->Seek($pos + $skip, 0) or $seekErr = 1, last;
2813
+ $raf->Seek($pos + $skip, 0) or $err = 'Error seeking in file', last;
2799
2814
  $self->Warn("Processing $type-like data after unknown $skip-byte header");
2800
2815
  $unkHeader = 1 unless $$self{DOC_NUM};
2801
2816
  }
@@ -2841,14 +2856,13 @@ sub ExtractInfo($;@)
2841
2856
  last;
2842
2857
  }
2843
2858
  # seek back to try again from the same position in the file
2844
- $raf->Seek($pos, 0) or $seekErr = 1, last;
2859
+ $raf->Seek($pos, 0) or $err = 'Error seeking in file';
2845
2860
  }
2846
- if (not defined $type and not $$self{DOC_NUM}) {
2861
+ if (not $err and not defined $type and not $$self{DOC_NUM}) {
2847
2862
  # if we were given a single image with a known type there
2848
2863
  # must be a format error since we couldn't read it, otherwise
2849
2864
  # it is likely we don't support images of this type
2850
2865
  my $fileType = GetFileType($realname) || '';
2851
- my $err;
2852
2866
  if (not length $buff) {
2853
2867
  $err = 'File is empty';
2854
2868
  } else {
@@ -2889,10 +2903,9 @@ sub ExtractInfo($;@)
2889
2903
  }
2890
2904
  }
2891
2905
  }
2892
- $self->Error($err);
2893
2906
  }
2894
- if ($seekErr) {
2895
- $self->Error('Error seeking in file');
2907
+ if ($err) {
2908
+ $self->Error($err);
2896
2909
  } elsif ($self->Options('ScanForXMP') and (not defined $type or
2897
2910
  (not $fast and not $$self{FoundXMP})))
2898
2911
  {
@@ -4114,7 +4127,7 @@ sub Init($)
4114
4127
  $$self{FileType} = ''; # identified file type
4115
4128
  if ($self->Options('HtmlDump')) {
4116
4129
  require Image::ExifTool::HtmlDump;
4117
- $$self{HTML_DUMP} = new Image::ExifTool::HtmlDump;
4130
+ $$self{HTML_DUMP} = Image::ExifTool::HtmlDump->new;
4118
4131
  }
4119
4132
  # make sure our TextOut is a file reference
4120
4133
  $$self{OPTIONS}{TextOut} = \*STDOUT unless ref $$self{OPTIONS}{TextOut};
@@ -4177,7 +4190,7 @@ sub ExtractAltInfo($)
4177
4190
  # (eg. -file1 '$originalfilename')
4178
4191
  if ($fileName =~ /\$/) {
4179
4192
  my @tags = reverse sort keys %{$$self{VALUE}};
4180
- $fileName = $self->InsertTagValues(\@tags, $fileName, 'Warn');
4193
+ $fileName = $self->InsertTagValues($fileName, \@tags, 'Warn');
4181
4194
  next unless defined $fileName;
4182
4195
  }
4183
4196
  $altExifTool->ExtractInfo($fileName);
@@ -4504,7 +4517,7 @@ sub GetFileTime($$)
4504
4517
  $atime = $mtime = $ctime = pack 'LL', 0, 0;
4505
4518
  unless ($k32GetFileTime) {
4506
4519
  return () if defined $k32GetFileTime;
4507
- $k32GetFileTime = new Win32::API('KERNEL32', 'GetFileTime', 'NPPP', 'I');
4520
+ $k32GetFileTime = Win32::API->new('KERNEL32', 'GetFileTime', 'NPPP', 'I');
4508
4521
  unless ($k32GetFileTime) {
4509
4522
  $self->Warn('Error calling Win32::API::GetFileTime');
4510
4523
  $k32GetFileTime = 0;
@@ -4583,7 +4596,7 @@ sub ParseArguments($;@)
4583
4596
  my $buff = $@ ? pack('C*',unpack($] < 5.010000 ? 'U0C*' : 'C0C*',$$arg)) : Encode::encode('utf8',$$arg);
4584
4597
  $arg = \$buff;
4585
4598
  }
4586
- $$self{RAF} = new File::RandomAccess($arg);
4599
+ $$self{RAF} = File::RandomAccess->new($arg);
4587
4600
  # set filename to empty string to indicate that
4588
4601
  # we have a file but we didn't open it
4589
4602
  $$self{FILENAME} = '';
@@ -6981,7 +6994,7 @@ sub ProcessJPEG($$)
6981
6994
  } elsif ($$segDataPt =~ /^(II|MM).{4}HEAPJPGM/s) {
6982
6995
  next if $fast > 1; # skip processing for very fast
6983
6996
  $dumpType = 'CIFF';
6984
- my %dirInfo = ( RAF => new File::RandomAccess($segDataPt) );
6997
+ my %dirInfo = ( RAF => File::RandomAccess->new($segDataPt) );
6985
6998
  $$self{SET_GROUP1} = 'CIFF';
6986
6999
  push @{$$self{PATH}}, 'CIFF';
6987
7000
  require Image::ExifTool::CanonRaw;
@@ -7506,6 +7519,8 @@ sub ProcessJPEG($$)
7506
7519
  } elsif ($$segDataPt =~ /^AROT\0/ and $length > 10) {
7507
7520
  # iPhone "AROT" segment containing integrated intensity per 16 scan lines
7508
7521
  # (with number of elements N = ImageHeight / 16 - 1, ref PH/NealKrawetz)
7522
+ # "Absolute ROTational difference between two frames"
7523
+ # (see https://www.hackerfactor.com/blog/index.php?/archives/822-Apple-Rot.html)
7509
7524
  $xtra = 'segment (N=' . unpack('x6N', $$segDataPt) . ')';
7510
7525
  }
7511
7526
  } elsif ($marker == 0xeb) { # APP11 (JPEG-HDR, JUMBF)
@@ -7564,6 +7579,7 @@ sub ProcessJPEG($$)
7564
7579
  $dirInfo{DataPt} = \$buff;
7565
7580
  $dirInfo{DataPos} = $segPos + 8; # (shows correct offsets for single-segment JUMBF)
7566
7581
  $dirInfo{DataLen} = $dirInfo{DirLen} = $size;
7582
+ $dirInfo{DirName} = 'JUMBF';
7567
7583
  my $tagTablePtr = GetTagTable('Image::ExifTool::Jpeg2000::Main');
7568
7584
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
7569
7585
  delete $jumbfChunk{$type};
@@ -8005,7 +8021,7 @@ sub DoProcessTIFF($$;$)
8005
8021
  }
8006
8022
  }
8007
8023
  # update FileType if necessary now that we know more about the file
8008
- if ($$self{DNGVersion} and $$self{FileType} !~ /^(DNG|GPR)$/) {
8024
+ if ($$self{DNGVersion} and $$self{FILE_TYPE} eq 'TIFF' and $$self{FileType} !~ /^(DNG|GPR)$/) {
8009
8025
  # override whatever FileType we set since we now know it is DNG
8010
8026
  $self->OverrideFileType($$self{TIFF_TYPE} = 'DNG');
8011
8027
  }
@@ -65,49 +65,50 @@ supported by ExifTool (r = read, w = write, c = create):
65
65
 
66
66
  File Types
67
67
  ------------+-------------+-------------+-------------+------------
68
- 360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
69
- 3FR r | DR4 r/w/c | J2C r | O r | RIFF r
70
- 3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
71
- 3GP r/w | DV r | JP2 r/w | ODS r | RTF r
72
- 7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
73
- A r | DVR-MS r | JSON r | OFR r | RWL r/w
74
- AA r | DYLIB r | JXL r | OGG r | RWZ r
75
- AAE r | EIP r | K25 r | OGV r | RM r
76
- AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
77
- ACR r | EPUB r | KEY r | OPUS r | SKETCH r
78
- AFM r | ERF r/w | LA r | ORF r/w | SO r
79
- AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
80
- AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
81
- APE r | EXR r | LNK r | PAC r | SRW r/w
82
- ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
83
- ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
84
- ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
85
- AVI r | FITS r | MACOS r | PCX r | TIFF r/w
86
- AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
87
- AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
88
- BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
89
- BPG r | FLV r | MIFF r | PFA r | TXT r
90
- BTF r | FPF r | MKA r | PFB r | VCF r
91
- CHM r | FPX r | MKS r | PFM r | VNT r
92
- COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
93
- CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
94
- CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
95
- CRM r/w | GZ r | MODD r | PICT r | WDP r/w
96
- CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
97
- CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
98
- CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
99
- CUR r | HEIF r/w | MP3 r | PPT r | WMV r
100
- CZI r | HTML r | MP4 r/w | PPTX r | WPG r
101
- DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
102
- DCP r/w | ICO r | MPG r | PSB r/w | WV r
103
- DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
104
- DFONT r | IDML r | MQV r/w | PSP r | XCF r
105
- DIVX r | IIQ r/w | MRC r | QTIF r/w | XISF r
106
- DJVU r | IND r/w | MRW r/w | R3D r | XLS r
107
- DLL r | INSP r/w | MXF r | RA r | XLSX r
108
- DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
109
- DOC r | INX r | NKSC r/w | RAM r | ZIP r
110
- DOCX r | ISO r | NRW r/w | RAR r |
68
+ 360 r/w | DOCX r | ITC r | O r | RSRC r
69
+ 3FR r | DPX r | J2C r | ODP r | RTF r
70
+ 3G2 r/w | DR4 r/w/c | JNG r/w | ODS r | RW2 r/w
71
+ 3GP r/w | DSS r | JP2 r/w | ODT r | RWL r/w
72
+ 7Z r | DV r | JPEG r/w | OFR r | RWZ r
73
+ A r | DVB r/w | JSON r | OGG r | RM r
74
+ AA r | DVR-MS r | JXL r | OGV r | SEQ r
75
+ AAC r | DYLIB r | K25 r | ONP r | SKETCH r
76
+ AAE r | EIP r | KDC r | OPUS r | SO r
77
+ AAX r/w | EPS r/w | KEY r | ORF r/w | SR2 r/w
78
+ ACR r | EPUB r | LA r | ORI r/w | SRF r
79
+ AFM r | ERF r/w | LFP r | OTF r | SRW r/w
80
+ AI r/w | EXE r | LIF r | PAC r | SVG r
81
+ AIFF r | EXIF r/w/c | LNK r | PAGES r | SWF r
82
+ APE r | EXR r | LRV r/w | PBM r/w | THM r/w
83
+ ARQ r/w | EXV r/w/c | M2TS r | PCD r | TIFF r/w
84
+ ARW r/w | F4A/V r/w | M4A/V r/w | PCX r | TORRENT r
85
+ ASF r | FFF r/w | MACOS r | PDB r | TTC r
86
+ AVI r | FITS r | MAX r | PDF r/w | TTF r
87
+ AVIF r/w | FLA r | MEF r/w | PEF r/w | TXT r
88
+ AZW r | FLAC r | MIE r/w/c | PFA r | VCF r
89
+ BMP r | FLIF r/w | MIFF r | PFB r | VNT r
90
+ BPG r | FLV r | MKA r | PFM r | VRD r/w/c
91
+ BTF r | FPF r | MKS r | PGF r | VSD r
92
+ C2PA r | FPX r | MKV r | PGM r/w | WAV r
93
+ CHM r | GIF r/w | MNG r/w | PLIST r | WDP r/w
94
+ COS r | GLV r/w | MOBI r | PICT r | WEBP r/w
95
+ CR2 r/w | GPR r/w | MODD r | PMP r | WEBM r
96
+ CR3 r/w | GZ r | MOI r | PNG r/w | WMA r
97
+ CRM r/w | HDP r/w | MOS r/w | PPM r/w | WMV r
98
+ CRW r/w | HDR r | MOV r/w | PPT r | WPG r
99
+ CS1 r/w | HEIC r/w | MP3 r | PPTX r | WTV r
100
+ CSV r | HEIF r/w | MP4 r/w | PS r/w | WV r
101
+ CUR r | HTML r | MPC r | PSB r/w | X3F r/w
102
+ CZI r | ICC r/w/c | MPG r | PSD r/w | XCF r
103
+ DCM r | ICO r | MPO r/w | PSP r | XISF r
104
+ DCP r/w | ICS r | MQV r/w | QTIF r/w | XLS r
105
+ DCR r | IDML r | MRC r | R3D r | XLSX r
106
+ DFONT r | IIQ r/w | MRW r/w | RA r | XMP r/w/c
107
+ DIVX r | IND r/w | MXF r | RAF r/w | ZIP r
108
+ DJVU r | INSP r/w | NEF r/w | RAM r |
109
+ DLL r | INSV r | NKSC r/w | RAR r |
110
+ DNG r/w | INX r | NRW r/w | RAW r/w |
111
+ DOC r | ISO r | NUMBERS r | RIFF r |
111
112
 
112
113
  Meta Information
113
114
  ----------------------+----------------------+---------------------
@@ -619,7 +620,8 @@ DateFormat of "%Y:%m:%d %H:%M:%S").
619
620
  =item Duplicates
620
621
 
621
622
  Flag to return values from tags with duplicate names when extracting
622
- information. Default is 1.
623
+ information. Default is 1. Forced to 1 when copying tags with
624
+ L</SetNewValuesFromFile>.
623
625
 
624
626
  =item Escape
625
627
 
@@ -824,11 +826,11 @@ Default is undef.
824
826
 
825
827
  =item LimitLongValues
826
828
 
827
- When extracting some values that may be very long, the PrintConv values are
828
- length-limited and the value is truncated with an elipsis ("[...]") if it
829
- exceeds a specified length. This option specifies the length limit for
830
- these tags. A setting of 4 or less disables the limit (because the elipsis
831
- string is longer than this). Default is 60.
829
+ When extracting values for some specific tags (usually Unknown tags), the
830
+ PrintConv values are length-limited and the value is truncated with an
831
+ ellipsis ("[...]") if it exceeds a specified length. This option specifies
832
+ the length limit for these tags. A setting of 4 or less disables the limit
833
+ (because the ellipsis string is longer than this). Default is 60.
832
834
 
833
835
  =item ListItem
834
836
 
@@ -1800,8 +1802,9 @@ or a trailing '#' causes the ValueConv value to be copied (same as setting
1800
1802
  the Type option to 'ValueConv' for this tag only). A leading '+' sets the
1801
1803
  Replace option to 0 on a per-tag basis (see Options below). Wildcards ('*'
1802
1804
  and '?') may be used in the tag name. A tag name of '*' is commonly used
1803
- when a group is specified to copy all tags in the group (eg. 'XMP:*'). A
1804
- special feature allows tag names of the form 'DSTTAGE<lt>SRCTAG' (or
1805
+ when a group is specified to copy all tags in the group (eg. 'XMP:*').
1806
+
1807
+ A special feature allows tag names of the form 'DSTTAGE<lt>SRCTAG' (or
1805
1808
  'SRCTAGE<gt>DSTTAG') to be specified to copy information to a tag with a
1806
1809
  different name or a specified group. Both 'SRCTAG' and 'DSTTAG' may contain
1807
1810
  wildcards and/or be prefixed by a group name (eg.
@@ -1811,18 +1814,20 @@ a list with arguments of the form 'DSTTAG+E<lt>SRCTAG' or
1811
1814
  'DSTTAG-E<lt>SRCTAG'. Tags are evaluated in order, so exclusions apply only
1812
1815
  to tags included earlier in the list. An extension of this feature allows
1813
1816
  the tag value to be set from a string containing tag names with leading '$'
1814
- symbols (eg. 'CommentE<lt>the file is $filename'). Braces '{}' may be used
1815
- around the tag name to separate it from subsequent text, and a '$$' is used
1816
- to to represent a '$' symbol. The behaviour for missing tags in expressions
1817
- is defined by the L</MissingTagValue> option. The tag value may be modified
1817
+ symbols (eg. 'CommentE<lt>the file is $filename'). Braces '{}' may be used
1818
+ around a tag name to separate it from subsequent text, and a '$$' is used to
1819
+ to represent a '$' symbol. The behaviour for missing tags in expressions is
1820
+ defined by the L</MissingTagValue> option. The tag value may be modified
1818
1821
  via changes to the default input variable ($_) in a Perl expression placed
1819
1822
  inside the braces and after a semicolon following the tag name (see the last
1820
1823
  example above). A '@' may be added after the tag name (before the
1821
1824
  semicolon) to make the expression act on individual list items instead of
1822
- the concatenated string for list-type tags. Braces within the expression
1823
- must be balanced. Multiple options hash references may be passed to set
1824
- different options for different tags. Options apply to subsequent tags in
1825
- the argument list.
1825
+ the concatenated string for list-type tags. The expression has access to
1826
+ the full ExifTool API through the current ExifTool object (C<$self>) and the
1827
+ tag key (C<$tag>). Braces within the expression must be balanced.
1828
+
1829
+ Multiple options hash references may be passed to set different options for
1830
+ different tags. Options apply to subsequent tags in the argument list.
1826
1831
 
1827
1832
  By default, this routine will commute information between same-named tags in
1828
1833
  different groups, allowing information to be translated between images with
@@ -2434,16 +2439,16 @@ Here is a complete list of groups for each of these families:
2434
2439
  =item Family 0 (Information Type):
2435
2440
 
2436
2441
  AAC, AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP2,
2437
- APP3, APP4, APP5, APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG,
2438
- DV, DjVu, Ducky, EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash,
2439
- FlashPix, Font, FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML,
2440
- ICC_Profile, ID3, IPTC, ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK,
2441
- Leaf, Lytro, M2TS, MIE, MIFF, MISB, MNG, MOI, MPC, MPEG, MPF, MXF,
2442
- MakerNotes, Matroska, Meta, Ogg, OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP,
2443
- Palm, Parrot, PanasonicRaw, PhotoCD, PhotoMechanic, Photoshop, PostScript,
2444
- PrintIM, QuickTime, RAF, RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG,
2445
- SigmaRaw, Stim, Theora, Torrent, Trailer, UserParam, VCard, Vorbis, WTV,
2446
- XML, XMP, ZIP
2442
+ APP3, APP4, APP5, APP6, APP7, APP8, APP9, ASF, Audible, Canon, CanonVRD,
2443
+ Composite, DICOM, DNG, DV, DjVu, Ducky, EXE, EXIF, ExifTool, FITS, FLAC,
2444
+ FLIR, File, Flash, FlashPix, Font, FotoStation, GIF, GIMP, GeoTiff, GoPro,
2445
+ H264, HTML, ICC_Profile, ID3, IPTC, ISO, ITC, JFIF, JPEG, JSON, JUMBF,
2446
+ Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF, MISB, MNG, MOI, MPC, MPEG, MPF,
2447
+ MXF, MakerNotes, Matroska, Meta, Ogg, OpenEXR, Opus, PDF, PICT, PLIST, PNG,
2448
+ PSP, Palm, PanasonicRaw, Parrot, PhotoCD, PhotoMechanic, Photoshop,
2449
+ PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC, RTF, Radiance, Rawzor,
2450
+ Real, Red, SVG, SigmaRaw, Sony, Stim, Theora, Torrent, Trailer, VCard,
2451
+ Vorbis, WTV, XML, XMP, ZIP
2447
2452
 
2448
2453
  =item Family 1 (Specific Location):
2449
2454
 
@@ -2485,8 +2490,8 @@ XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft,
2485
2490
  XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-nine, XMP-panorama, XMP-pdf,
2486
2491
  XMP-pdfx, XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism,
2487
2492
  XMP-prl, XMP-prm, XMP-pur, XMP-rdf, XMP-sdc, XMP-swf, XMP-tiff, XMP-x,
2488
- XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS,
2489
- XMP-xmpRights, XMP-xmpTPg, ZIP, iTunes
2493
+ XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpDSA, XMP-xmpMM, XMP-xmpNote,
2494
+ XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP, iTunes
2490
2495
 
2491
2496
  =item Family 2 (Category):
2492
2497
 
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 12.73
3
+ Version: 12.75
4
4
  Release: 1
5
5
  License: Artistic/GPL
6
6
  Group: Development/Libraries/Perl
@@ -22,49 +22,50 @@ supported by ExifTool (r = read, w = write, c = create):
22
22
 
23
23
  File Types
24
24
  ------------+-------------+-------------+-------------+------------
25
- 360 r/w | DOCX r | ISO r | NRW r/w | RAR r
26
- 3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
27
- 3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
28
- 3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
29
- 7Z r | DV r | JP2 r/w | ODS r | RTF r
30
- A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
31
- AA r | DVR-MS r | JSON r | OFR r | RWL r/w
32
- AAC r | DYLIB r | JXL r | OGG r | RWZ r
33
- AAE r | EIP r | K25 r | OGV r | RM r
34
- AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
35
- ACR r | EPUB r | KEY r | OPUS r | SKETCH r
36
- AFM r | ERF r/w | LA r | ORF r/w | SO r
37
- AI r/w | EXE r | LFP r | ORI r/w | SR2 r/w
38
- AIFF r | EXIF r/w/c | LIF r | OTF r | SRF r
39
- APE r | EXR r | LNK r | PAC r | SRW r/w
40
- ARQ r/w | EXV r/w/c | LRV r/w | PAGES r | SVG r
41
- ARW r/w | F4A/V r/w | M2TS r | PBM r/w | SWF r
42
- ASF r | FFF r/w | M4A/V r/w | PCD r | THM r/w
43
- AVI r | FITS r | MACOS r | PCX r | TIFF r/w
44
- AVIF r/w | FLA r | MAX r | PDB r | TORRENT r
45
- AZW r | FLAC r | MEF r/w | PDF r/w | TTC r
46
- BMP r | FLIF r/w | MIE r/w/c | PEF r/w | TTF r
47
- BPG r | FLV r | MIFF r | PFA r | TXT r
48
- BTF r | FPF r | MKA r | PFB r | VCF r
49
- CHM r | FPX r | MKS r | PFM r | VNT r
50
- COS r | GIF r/w | MKV r | PGF r | VRD r/w/c
51
- CR2 r/w | GLV r/w | MNG r/w | PGM r/w | VSD r
52
- CR3 r/w | GPR r/w | MOBI r | PLIST r | WAV r
53
- CRM r/w | GZ r | MODD r | PICT r | WDP r/w
54
- CRW r/w | HDP r/w | MOI r | PMP r | WEBP r/w
55
- CS1 r/w | HDR r | MOS r/w | PNG r/w | WEBM r
56
- CSV r | HEIC r/w | MOV r/w | PPM r/w | WMA r
57
- CUR r | HEIF r/w | MP3 r | PPT r | WMV r
58
- CZI r | HTML r | MP4 r/w | PPTX r | WPG r
59
- DCM r | ICC r/w/c | MPC r | PS r/w | WTV r
60
- DCP r/w | ICO r | MPG r | PSB r/w | WV r
61
- DCR r | ICS r | MPO r/w | PSD r/w | X3F r/w
62
- DFONT r | IDML r | MQV r/w | PSP r | XCF r
63
- DIVX r | IIQ r/w | MRC r | QTIF r/w | XISF r
64
- DJVU r | IND r/w | MRW r/w | R3D r | XLS r
65
- DLL r | INSP r/w | MXF r | RA r | XLSX r
66
- DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
67
- DOC r | INX r | NKSC r/w | RAM r | ZIP r
25
+ 360 r/w | DOCX r | ITC r | O r | RSRC r
26
+ 3FR r | DPX r | J2C r | ODP r | RTF r
27
+ 3G2 r/w | DR4 r/w/c | JNG r/w | ODS r | RW2 r/w
28
+ 3GP r/w | DSS r | JP2 r/w | ODT r | RWL r/w
29
+ 7Z r | DV r | JPEG r/w | OFR r | RWZ r
30
+ A r | DVB r/w | JSON r | OGG r | RM r
31
+ AA r | DVR-MS r | JXL r | OGV r | SEQ r
32
+ AAC r | DYLIB r | K25 r | ONP r | SKETCH r
33
+ AAE r | EIP r | KDC r | OPUS r | SO r
34
+ AAX r/w | EPS r/w | KEY r | ORF r/w | SR2 r/w
35
+ ACR r | EPUB r | LA r | ORI r/w | SRF r
36
+ AFM r | ERF r/w | LFP r | OTF r | SRW r/w
37
+ AI r/w | EXE r | LIF r | PAC r | SVG r
38
+ AIFF r | EXIF r/w/c | LNK r | PAGES r | SWF r
39
+ APE r | EXR r | LRV r/w | PBM r/w | THM r/w
40
+ ARQ r/w | EXV r/w/c | M2TS r | PCD r | TIFF r/w
41
+ ARW r/w | F4A/V r/w | M4A/V r/w | PCX r | TORRENT r
42
+ ASF r | FFF r/w | MACOS r | PDB r | TTC r
43
+ AVI r | FITS r | MAX r | PDF r/w | TTF r
44
+ AVIF r/w | FLA r | MEF r/w | PEF r/w | TXT r
45
+ AZW r | FLAC r | MIE r/w/c | PFA r | VCF r
46
+ BMP r | FLIF r/w | MIFF r | PFB r | VNT r
47
+ BPG r | FLV r | MKA r | PFM r | VRD r/w/c
48
+ BTF r | FPF r | MKS r | PGF r | VSD r
49
+ C2PA r | FPX r | MKV r | PGM r/w | WAV r
50
+ CHM r | GIF r/w | MNG r/w | PLIST r | WDP r/w
51
+ COS r | GLV r/w | MOBI r | PICT r | WEBP r/w
52
+ CR2 r/w | GPR r/w | MODD r | PMP r | WEBM r
53
+ CR3 r/w | GZ r | MOI r | PNG r/w | WMA r
54
+ CRM r/w | HDP r/w | MOS r/w | PPM r/w | WMV r
55
+ CRW r/w | HDR r | MOV r/w | PPT r | WPG r
56
+ CS1 r/w | HEIC r/w | MP3 r | PPTX r | WTV r
57
+ CSV r | HEIF r/w | MP4 r/w | PS r/w | WV r
58
+ CUR r | HTML r | MPC r | PSB r/w | X3F r/w
59
+ CZI r | ICC r/w/c | MPG r | PSD r/w | XCF r
60
+ DCM r | ICO r | MPO r/w | PSP r | XISF r
61
+ DCP r/w | ICS r | MQV r/w | QTIF r/w | XLS r
62
+ DCR r | IDML r | MRC r | R3D r | XLSX r
63
+ DFONT r | IIQ r/w | MRW r/w | RA r | XMP r/w/c
64
+ DIVX r | IND r/w | MXF r | RAF r/w | ZIP r
65
+ DJVU r | INSP r/w | NEF r/w | RAM r |
66
+ DLL r | INSV r | NKSC r/w | RAR r |
67
+ DNG r/w | INX r | NRW r/w | RAW r/w |
68
+ DOC r | ISO r | NUMBERS r | RIFF r |
68
69
 
69
70
  Meta Information
70
71
  ----------------------+----------------------+---------------------
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ExiftoolVendored
4
- VERSION = Gem::Version.new('12.73.0')
4
+ VERSION = Gem::Version.new('12.75.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: 12.73.0
4
+ version: 12.75.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: 2024-01-14 00:00:00.000000000 Z
12
+ date: 2024-01-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: exiftool