exiftool-vendored.pl 12.72.0 → 12.76.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 (206) hide show
  1. package/bin/Changes +64 -1
  2. package/bin/META.json +1 -1
  3. package/bin/META.yml +1 -1
  4. package/bin/README +47 -46
  5. package/bin/exiftool +123 -96
  6. package/bin/lib/File/RandomAccess.pm +32 -6
  7. package/bin/lib/File/RandomAccess.pod +6 -6
  8. package/bin/lib/Image/ExifTool/7Z.pm +3 -3
  9. package/bin/lib/Image/ExifTool/AAC.pm +8 -6
  10. package/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. package/bin/lib/Image/ExifTool/AFCP.pm +3 -3
  12. package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  13. package/bin/lib/Image/ExifTool/APE.pm +1 -1
  14. package/bin/lib/Image/ExifTool/APP12.pm +1 -1
  15. package/bin/lib/Image/ExifTool/ASF.pm +1 -1
  16. package/bin/lib/Image/ExifTool/Apple.pm +1 -1
  17. package/bin/lib/Image/ExifTool/Audible.pm +1 -1
  18. package/bin/lib/Image/ExifTool/BMP.pm +1 -1
  19. package/bin/lib/Image/ExifTool/BPG.pm +1 -1
  20. package/bin/lib/Image/ExifTool/BZZ.pm +3 -3
  21. package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +9 -9
  23. package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. package/bin/lib/Image/ExifTool/Canon.pm +7 -6
  25. package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  26. package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  27. package/bin/lib/Image/ExifTool/CanonVRD.pm +3 -3
  28. package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. package/bin/lib/Image/ExifTool/Casio.pm +1 -1
  30. package/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. package/bin/lib/Image/ExifTool/DICOM.pm +3 -3
  32. package/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. package/bin/lib/Image/ExifTool/DNG.pm +5 -5
  34. package/bin/lib/Image/ExifTool/DPX.pm +1 -1
  35. package/bin/lib/Image/ExifTool/DV.pm +1 -1
  36. package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  37. package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  38. package/bin/lib/Image/ExifTool/EXE.pm +1 -1
  39. package/bin/lib/Image/ExifTool/Exif.pm +4 -3
  40. package/bin/lib/Image/ExifTool/FITS.pm +1 -1
  41. package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  42. package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  43. package/bin/lib/Image/ExifTool/FLIR.pm +3 -3
  44. package/bin/lib/Image/ExifTool/Fixup.pm +4 -4
  45. package/bin/lib/Image/ExifTool/Flash.pm +1 -1
  46. package/bin/lib/Image/ExifTool/FlashPix.pm +61 -8
  47. package/bin/lib/Image/ExifTool/Font.pm +1 -1
  48. package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  49. package/bin/lib/Image/ExifTool/FujiFilm.pm +9 -4
  50. package/bin/lib/Image/ExifTool/GE.pm +1 -1
  51. package/bin/lib/Image/ExifTool/GIF.pm +1 -1
  52. package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  53. package/bin/lib/Image/ExifTool/GPS.pm +1 -1
  54. package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  55. package/bin/lib/Image/ExifTool/Geotag.pm +4 -4
  56. package/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  57. package/bin/lib/Image/ExifTool/H264.pm +1 -1
  58. package/bin/lib/Image/ExifTool/HP.pm +1 -1
  59. package/bin/lib/Image/ExifTool/HTML.pm +1 -1
  60. package/bin/lib/Image/ExifTool/HtmlDump.pm +7 -5
  61. package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  62. package/bin/lib/Image/ExifTool/ICO.pm +1 -1
  63. package/bin/lib/Image/ExifTool/ID3.pm +3 -3
  64. package/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. package/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. package/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. package/bin/lib/Image/ExifTool/Import.pm +6 -6
  68. package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. package/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  70. package/bin/lib/Image/ExifTool/JPEG.pm +5 -2
  71. package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  72. package/bin/lib/Image/ExifTool/JSON.pm +3 -3
  73. package/bin/lib/Image/ExifTool/JVC.pm +3 -3
  74. package/bin/lib/Image/ExifTool/Jpeg2000.pm +67 -17
  75. package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  76. package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  77. package/bin/lib/Image/ExifTool/LIF.pm +1 -1
  78. package/bin/lib/Image/ExifTool/LNK.pm +1 -1
  79. package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  80. package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  81. package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  82. package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  83. package/bin/lib/Image/ExifTool/Lang/es.pm +4 -4
  84. package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  85. package/bin/lib/Image/ExifTool/Lang/fr.pm +4 -5
  86. package/bin/lib/Image/ExifTool/Lang/it.pm +3 -3
  87. package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  88. package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  89. package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  90. package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  91. package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  92. package/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  93. package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  94. package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  95. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  96. package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  97. package/bin/lib/Image/ExifTool/Leaf.pm +3 -3
  98. package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  99. package/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  100. package/bin/lib/Image/ExifTool/MIE.pm +5 -5
  101. package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  102. package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  103. package/bin/lib/Image/ExifTool/MISB.pm +1 -1
  104. package/bin/lib/Image/ExifTool/MNG.pm +1 -1
  105. package/bin/lib/Image/ExifTool/MOI.pm +1 -1
  106. package/bin/lib/Image/ExifTool/MPC.pm +1 -1
  107. package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  108. package/bin/lib/Image/ExifTool/MPF.pm +1 -1
  109. package/bin/lib/Image/ExifTool/MRC.pm +1 -1
  110. package/bin/lib/Image/ExifTool/MWG.pm +1 -1
  111. package/bin/lib/Image/ExifTool/MXF.pm +1 -1
  112. package/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  113. package/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  114. package/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  115. package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  116. package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  117. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +3 -3
  118. package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  119. package/bin/lib/Image/ExifTool/Nikon.pm +11 -8
  120. package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  121. package/bin/lib/Image/ExifTool/NikonCustom.pm +4 -4
  122. package/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  123. package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  124. package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  125. package/bin/lib/Image/ExifTool/Ogg.pm +3 -3
  126. package/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  127. package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  128. package/bin/lib/Image/ExifTool/Opus.pm +1 -1
  129. package/bin/lib/Image/ExifTool/Other.pm +1 -1
  130. package/bin/lib/Image/ExifTool/PCX.pm +1 -1
  131. package/bin/lib/Image/ExifTool/PDF.pm +55 -5
  132. package/bin/lib/Image/ExifTool/PGF.pm +1 -1
  133. package/bin/lib/Image/ExifTool/PICT.pm +1 -1
  134. package/bin/lib/Image/ExifTool/PLIST.pm +4 -4
  135. package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  136. package/bin/lib/Image/ExifTool/PNG.pm +24 -2
  137. package/bin/lib/Image/ExifTool/PPM.pm +1 -1
  138. package/bin/lib/Image/ExifTool/PSP.pm +1 -1
  139. package/bin/lib/Image/ExifTool/Palm.pm +1 -1
  140. package/bin/lib/Image/ExifTool/Panasonic.pm +27 -2
  141. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +4 -4
  142. package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  143. package/bin/lib/Image/ExifTool/Pentax.pm +32 -11
  144. package/bin/lib/Image/ExifTool/PhaseOne.pm +6 -6
  145. package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  146. package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  147. package/bin/lib/Image/ExifTool/Photoshop.pm +4 -4
  148. package/bin/lib/Image/ExifTool/PostScript.pm +3 -3
  149. package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  150. package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  151. package/bin/lib/Image/ExifTool/QuickTime.pm +55 -101
  152. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +97 -7
  153. package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  154. package/bin/lib/Image/ExifTool/RSRC.pm +3 -3
  155. package/bin/lib/Image/ExifTool/RTF.pm +1 -1
  156. package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  157. package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  158. package/bin/lib/Image/ExifTool/Real.pm +1 -1
  159. package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  160. package/bin/lib/Image/ExifTool/Red.pm +1 -1
  161. package/bin/lib/Image/ExifTool/Ricoh.pm +3 -3
  162. package/bin/lib/Image/ExifTool/Samsung.pm +5 -5
  163. package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  164. package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  165. package/bin/lib/Image/ExifTool/Shift.pl +2 -3
  166. package/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  167. package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  168. package/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  169. package/bin/lib/Image/ExifTool/Sony.pm +5 -5
  170. package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  171. package/bin/lib/Image/ExifTool/Stim.pm +1 -1
  172. package/bin/lib/Image/ExifTool/TagInfoXML.pm +4 -4
  173. package/bin/lib/Image/ExifTool/TagLookup.pm +3879 -3862
  174. package/bin/lib/Image/ExifTool/TagNames.pod +11439 -11374
  175. package/bin/lib/Image/ExifTool/Text.pm +1 -1
  176. package/bin/lib/Image/ExifTool/Theora.pm +1 -1
  177. package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  178. package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  179. package/bin/lib/Image/ExifTool/VCard.pm +1 -1
  180. package/bin/lib/Image/ExifTool/Validate.pm +1 -1
  181. package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  182. package/bin/lib/Image/ExifTool/WPG.pm +1 -1
  183. package/bin/lib/Image/ExifTool/WTV.pm +1 -1
  184. package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
  185. package/bin/lib/Image/ExifTool/WriteExif.pl +27 -24
  186. package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  187. package/bin/lib/Image/ExifTool/WritePDF.pl +2 -2
  188. package/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  189. package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  190. package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  191. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -2
  192. package/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  193. package/bin/lib/Image/ExifTool/WriteXMP.pl +9 -5
  194. package/bin/lib/Image/ExifTool/Writer.pl +74 -45
  195. package/bin/lib/Image/ExifTool/XISF.pm +1 -1
  196. package/bin/lib/Image/ExifTool/XMP.pm +20 -3
  197. package/bin/lib/Image/ExifTool/XMP2.pl +10 -1
  198. package/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  199. package/bin/lib/Image/ExifTool/ZIP.pm +7 -7
  200. package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  201. package/bin/lib/Image/ExifTool/iWork.pm +1 -1
  202. package/bin/lib/Image/ExifTool.pm +59 -28
  203. package/bin/lib/Image/ExifTool.pod +81 -68
  204. package/bin/perl-Image-ExifTool.spec +45 -44
  205. package/bin/pp_build_exe.args +5 -5
  206. package/package.json +5 -5
@@ -8,7 +8,7 @@
8
8
  # Revisions: Nov. 12/2003 - P. Harvey Created
9
9
  # (See html/history.html for revision history)
10
10
  #
11
- # Legal: Copyright (c) 2003-2023, Phil Harvey (philharvey66 at gmail.com)
11
+ # Legal: Copyright (c) 2003-2024, Phil Harvey (philharvey66 at gmail.com)
12
12
  # This library is free software; you can redistribute it and/or
13
13
  # modify it under the same terms as Perl itself.
14
14
  #------------------------------------------------------------------------------
@@ -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.72';
32
+ $VERSION = '12.76';
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',
@@ -1111,6 +1117,7 @@ my @availableOptions = (
1111
1117
  [ 'ImageHashType', 'MD5', 'image hash algorithm' ],
1112
1118
  [ 'Lang', $defaultLang, 'localized language for descriptions etc' ],
1113
1119
  [ 'LargeFileSupport', undef, 'flag indicating support of 64-bit file offsets' ],
1120
+ [ 'LimitLongValues', 60, 'length limit for long values' ],
1114
1121
  [ 'List', undef, '[deprecated, use ListSplit and ListJoin instead]' ],
1115
1122
  [ 'ListItem', undef, 'used to return a specific item from lists' ],
1116
1123
  [ 'ListJoin', ', ', 'join lists together with this separator' ],
@@ -1639,6 +1646,11 @@ my %systemTagsNotes = (
1639
1646
  Groups => { 0 => 'XML', 1 => 'XML' },
1640
1647
  Binary => 1,
1641
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
+ },
1642
1654
  ICC_Profile => {
1643
1655
  Notes => q{
1644
1656
  the full ICC_Profile data block. This tag is generated only if specifically
@@ -2195,7 +2207,7 @@ sub new
2195
2207
  # use Image::ExifTool 'ImageInfo';
2196
2208
  # my $info = ImageInfo($file, 'DateTimeOriginal', 'ImageSize');
2197
2209
  # - or -
2198
- # my $et = new Image::ExifTool;
2210
+ # my $et = Image::ExifTool->new;
2199
2211
  # my $info = $et->ImageInfo($file, \@tagList, {Sort=>'Group0'} );
2200
2212
  sub ImageInfo($;@)
2201
2213
  {
@@ -2205,7 +2217,7 @@ sub ImageInfo($;@)
2205
2217
  if (ref $_[0] and UNIVERSAL::isa($_[0],'Image::ExifTool')) {
2206
2218
  $self = shift;
2207
2219
  } else {
2208
- $self = new Image::ExifTool;
2220
+ $self = Image::ExifTool->new;
2209
2221
  }
2210
2222
  my %saveOptions = %{$$self{OPTIONS}}; # save original options
2211
2223
 
@@ -2528,7 +2540,7 @@ sub ExtractInfo($;@)
2528
2540
  FILE_TYPE => $$self{FILE_TYPE},
2529
2541
  };
2530
2542
  $saveOrder = GetByteOrder(),
2531
- $$self{RAF} = new File::RandomAccess($_[0]);
2543
+ $$self{RAF} = File::RandomAccess->new($_[0]);
2532
2544
  $$self{PROCESSED} = { };
2533
2545
  delete $$self{EXIF_DATA};
2534
2546
  delete $$self{EXIF_POS};
@@ -2635,7 +2647,7 @@ sub ExtractInfo($;@)
2635
2647
  # open the file
2636
2648
  if ($self->Open(\*EXIFTOOL_FILE, $filename)) {
2637
2649
  # create random access file object
2638
- $raf = new File::RandomAccess(\*EXIFTOOL_FILE);
2650
+ $raf = File::RandomAccess->new(\*EXIFTOOL_FILE);
2639
2651
  # patch to force pipe to be buffered because seek returns success
2640
2652
  # in Windows cmd shell pipe even though it really failed
2641
2653
  $$raf{TESTED} = -1 if $filename eq '-' or $filename =~ /\|$/;
@@ -2766,12 +2778,16 @@ sub ExtractInfo($;@)
2766
2778
  $raf->BinMode(); # set binary mode before we start reading
2767
2779
  my $pos = $raf->Tell(); # get file position so we can rewind
2768
2780
  # loop through list of file types to test
2769
- my ($buff, $seekErr);
2781
+ my ($buff, $err);
2770
2782
  my %dirInfo = ( RAF => $raf, Base => $pos, TestBuff => \$buff );
2771
2783
  # read start of file for testing
2772
- $raf->Read($buff, $testLen) or $buff = '';
2773
- $raf->Seek($pos, 0) or $seekErr = 1;
2774
- 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) {
2775
2791
  my $unkHeader;
2776
2792
  $type = shift @fileTypeList;
2777
2793
  if ($type) {
@@ -2794,7 +2810,7 @@ sub ExtractInfo($;@)
2794
2810
  $type = ($1 eq "\xff\xd8\xff") ? 'JPEG' : 'TIFF';
2795
2811
  my $skip = pos($buff) - length($1);
2796
2812
  $dirInfo{Base} = $pos + $skip;
2797
- $raf->Seek($pos + $skip, 0) or $seekErr = 1, last;
2813
+ $raf->Seek($pos + $skip, 0) or $err = 'Error seeking in file', last;
2798
2814
  $self->Warn("Processing $type-like data after unknown $skip-byte header");
2799
2815
  $unkHeader = 1 unless $$self{DOC_NUM};
2800
2816
  }
@@ -2840,14 +2856,13 @@ sub ExtractInfo($;@)
2840
2856
  last;
2841
2857
  }
2842
2858
  # seek back to try again from the same position in the file
2843
- $raf->Seek($pos, 0) or $seekErr = 1, last;
2859
+ $raf->Seek($pos, 0) or $err = 'Error seeking in file';
2844
2860
  }
2845
- if (not defined $type and not $$self{DOC_NUM}) {
2861
+ if (not $err and not defined $type and not $$self{DOC_NUM}) {
2846
2862
  # if we were given a single image with a known type there
2847
2863
  # must be a format error since we couldn't read it, otherwise
2848
2864
  # it is likely we don't support images of this type
2849
2865
  my $fileType = GetFileType($realname) || '';
2850
- my $err;
2851
2866
  if (not length $buff) {
2852
2867
  $err = 'File is empty';
2853
2868
  } else {
@@ -2888,10 +2903,9 @@ sub ExtractInfo($;@)
2888
2903
  }
2889
2904
  }
2890
2905
  }
2891
- $self->Error($err);
2892
2906
  }
2893
- if ($seekErr) {
2894
- $self->Error('Error seeking in file');
2907
+ if ($err) {
2908
+ $self->Error($err);
2895
2909
  } elsif ($self->Options('ScanForXMP') and (not defined $type or
2896
2910
  (not $fast and not $$self{FoundXMP})))
2897
2911
  {
@@ -4113,7 +4127,7 @@ sub Init($)
4113
4127
  $$self{FileType} = ''; # identified file type
4114
4128
  if ($self->Options('HtmlDump')) {
4115
4129
  require Image::ExifTool::HtmlDump;
4116
- $$self{HTML_DUMP} = new Image::ExifTool::HtmlDump;
4130
+ $$self{HTML_DUMP} = Image::ExifTool::HtmlDump->new;
4117
4131
  }
4118
4132
  # make sure our TextOut is a file reference
4119
4133
  $$self{OPTIONS}{TextOut} = \*STDOUT unless ref $$self{OPTIONS}{TextOut};
@@ -4176,7 +4190,7 @@ sub ExtractAltInfo($)
4176
4190
  # (eg. -file1 '$originalfilename')
4177
4191
  if ($fileName =~ /\$/) {
4178
4192
  my @tags = reverse sort keys %{$$self{VALUE}};
4179
- $fileName = $self->InsertTagValues(\@tags, $fileName, 'Warn');
4193
+ $fileName = $self->InsertTagValues($fileName, \@tags, 'Warn');
4180
4194
  next unless defined $fileName;
4181
4195
  }
4182
4196
  $altExifTool->ExtractInfo($fileName);
@@ -4503,7 +4517,7 @@ sub GetFileTime($$)
4503
4517
  $atime = $mtime = $ctime = pack 'LL', 0, 0;
4504
4518
  unless ($k32GetFileTime) {
4505
4519
  return () if defined $k32GetFileTime;
4506
- $k32GetFileTime = new Win32::API('KERNEL32', 'GetFileTime', 'NPPP', 'I');
4520
+ $k32GetFileTime = Win32::API->new('KERNEL32', 'GetFileTime', 'NPPP', 'I');
4507
4521
  unless ($k32GetFileTime) {
4508
4522
  $self->Warn('Error calling Win32::API::GetFileTime');
4509
4523
  $k32GetFileTime = 0;
@@ -4582,7 +4596,7 @@ sub ParseArguments($;@)
4582
4596
  my $buff = $@ ? pack('C*',unpack($] < 5.010000 ? 'U0C*' : 'C0C*',$$arg)) : Encode::encode('utf8',$$arg);
4583
4597
  $arg = \$buff;
4584
4598
  }
4585
- $$self{RAF} = new File::RandomAccess($arg);
4599
+ $$self{RAF} = File::RandomAccess->new($arg);
4586
4600
  # set filename to empty string to indicate that
4587
4601
  # we have a file but we didn't open it
4588
4602
  $$self{FILENAME} = '';
@@ -6317,6 +6331,20 @@ sub InverseFileName($$)
6317
6331
  return $val;
6318
6332
  }
6319
6333
 
6334
+ #------------------------------------------------------------------------------
6335
+ # Limit length of long values (to be used in PrintConv)
6336
+ # Inputs: 0) string value, 1) ExifTool ref
6337
+ # Returns: length-limited value
6338
+ sub LimitLongValues($$)
6339
+ {
6340
+ my ($str, $self) = @_;
6341
+ my $lim = $$self{OPTIONS}{LimitLongValues};
6342
+ if (length($str) > $lim and $lim >= 5) {
6343
+ $str = substr($str,0,$lim-5) . "[...]";
6344
+ }
6345
+ return $str;
6346
+ }
6347
+
6320
6348
  #------------------------------------------------------------------------------
6321
6349
  # Save information for HTML dump
6322
6350
  # Inputs: 0) ExifTool hash ref, 1) start offset, 2) data size
@@ -6966,7 +6994,7 @@ sub ProcessJPEG($$)
6966
6994
  } elsif ($$segDataPt =~ /^(II|MM).{4}HEAPJPGM/s) {
6967
6995
  next if $fast > 1; # skip processing for very fast
6968
6996
  $dumpType = 'CIFF';
6969
- my %dirInfo = ( RAF => new File::RandomAccess($segDataPt) );
6997
+ my %dirInfo = ( RAF => File::RandomAccess->new($segDataPt) );
6970
6998
  $$self{SET_GROUP1} = 'CIFF';
6971
6999
  push @{$$self{PATH}}, 'CIFF';
6972
7000
  require Image::ExifTool::CanonRaw;
@@ -7491,6 +7519,8 @@ sub ProcessJPEG($$)
7491
7519
  } elsif ($$segDataPt =~ /^AROT\0/ and $length > 10) {
7492
7520
  # iPhone "AROT" segment containing integrated intensity per 16 scan lines
7493
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)
7494
7524
  $xtra = 'segment (N=' . unpack('x6N', $$segDataPt) . ')';
7495
7525
  }
7496
7526
  } elsif ($marker == 0xeb) { # APP11 (JPEG-HDR, JUMBF)
@@ -7549,6 +7579,7 @@ sub ProcessJPEG($$)
7549
7579
  $dirInfo{DataPt} = \$buff;
7550
7580
  $dirInfo{DataPos} = $segPos + 8; # (shows correct offsets for single-segment JUMBF)
7551
7581
  $dirInfo{DataLen} = $dirInfo{DirLen} = $size;
7582
+ $dirInfo{DirName} = 'JUMBF';
7552
7583
  my $tagTablePtr = GetTagTable('Image::ExifTool::Jpeg2000::Main');
7553
7584
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
7554
7585
  delete $jumbfChunk{$type};
@@ -7990,7 +8021,7 @@ sub DoProcessTIFF($$;$)
7990
8021
  }
7991
8022
  }
7992
8023
  # update FileType if necessary now that we know more about the file
7993
- if ($$self{DNGVersion} and $$self{FileType} !~ /^(DNG|GPR)$/) {
8024
+ if ($$self{DNGVersion} and $$self{FILE_TYPE} eq 'TIFF' and $$self{FileType} !~ /^(DNG|GPR)$/) {
7994
8025
  # override whatever FileType we set since we now know it is DNG
7995
8026
  $self->OverrideFileType($$self{TIFF_TYPE} = 'DNG');
7996
8027
  }
@@ -8428,7 +8459,7 @@ sub GetTagInfo($$$;$$$)
8428
8459
  $printConv = $$tagTablePtr{PRINT_CONV};
8429
8460
  } else {
8430
8461
  # limit length of printout (can be very long)
8431
- $printConv = 'length($val) > 60 ? substr($val,0,55) . "[...]" : $val';
8462
+ $printConv = \&LimitLongValues;
8432
8463
  }
8433
8464
  my $hex = sprintf("0x%.4x", $tagID);
8434
8465
  my $prefix = $$tagTablePtr{TAG_PREFIX};
@@ -5,7 +5,7 @@
5
5
  #
6
6
  # URL: https://exiftool.org/
7
7
  #
8
- # Legal: Copyright (c) 2003-2023, Phil Harvey (philharvey66 at gmail.com)
8
+ # Legal: Copyright (c) 2003-2024, Phil Harvey (philharvey66 at gmail.com)
9
9
  # This library is free software; you can redistribute it and/or
10
10
  # modify it under the same terms as Perl itself.
11
11
  #------------------------------------------------------------------------------
@@ -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
 
@@ -822,6 +824,14 @@ set to undef to select the built-in default language. Default is 'en'.
822
824
  Flag to indicate that 64-bit file offsets are supported on this system.
823
825
  Default is undef.
824
826
 
827
+ =item LimitLongValues
828
+
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.
834
+
825
835
  =item ListItem
826
836
 
827
837
  Return only a specific item from list-type values. A value of 0 returns the
@@ -1792,8 +1802,9 @@ or a trailing '#' causes the ValueConv value to be copied (same as setting
1792
1802
  the Type option to 'ValueConv' for this tag only). A leading '+' sets the
1793
1803
  Replace option to 0 on a per-tag basis (see Options below). Wildcards ('*'
1794
1804
  and '?') may be used in the tag name. A tag name of '*' is commonly used
1795
- when a group is specified to copy all tags in the group (eg. 'XMP:*'). A
1796
- 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
1797
1808
  'SRCTAGE<gt>DSTTAG') to be specified to copy information to a tag with a
1798
1809
  different name or a specified group. Both 'SRCTAG' and 'DSTTAG' may contain
1799
1810
  wildcards and/or be prefixed by a group name (eg.
@@ -1803,18 +1814,20 @@ a list with arguments of the form 'DSTTAG+E<lt>SRCTAG' or
1803
1814
  'DSTTAG-E<lt>SRCTAG'. Tags are evaluated in order, so exclusions apply only
1804
1815
  to tags included earlier in the list. An extension of this feature allows
1805
1816
  the tag value to be set from a string containing tag names with leading '$'
1806
- symbols (eg. 'CommentE<lt>the file is $filename'). Braces '{}' may be used
1807
- around the tag name to separate it from subsequent text, and a '$$' is used
1808
- to to represent a '$' symbol. The behaviour for missing tags in expressions
1809
- 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
1810
1821
  via changes to the default input variable ($_) in a Perl expression placed
1811
1822
  inside the braces and after a semicolon following the tag name (see the last
1812
1823
  example above). A '@' may be added after the tag name (before the
1813
1824
  semicolon) to make the expression act on individual list items instead of
1814
- the concatenated string for list-type tags. Braces within the expression
1815
- must be balanced. Multiple options hash references may be passed to set
1816
- different options for different tags. Options apply to subsequent tags in
1817
- 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.
1818
1831
 
1819
1832
  By default, this routine will commute information between same-named tags in
1820
1833
  different groups, allowing information to be translated between images with
@@ -2426,16 +2439,16 @@ Here is a complete list of groups for each of these families:
2426
2439
  =item Family 0 (Information Type):
2427
2440
 
2428
2441
  AAC, AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP2,
2429
- APP3, APP4, APP5, APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG,
2430
- DV, DjVu, Ducky, EXE, EXIF, ExifTool, FITS, FLAC, FLIR, File, Flash,
2431
- FlashPix, Font, FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML,
2432
- ICC_Profile, ID3, IPTC, ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK,
2433
- Leaf, Lytro, M2TS, MIE, MIFF, MISB, MNG, MOI, MPC, MPEG, MPF, MXF,
2434
- MakerNotes, Matroska, Meta, Ogg, OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP,
2435
- Palm, Parrot, PanasonicRaw, PhotoCD, PhotoMechanic, Photoshop, PostScript,
2436
- PrintIM, QuickTime, RAF, RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG,
2437
- SigmaRaw, Stim, Theora, Torrent, Trailer, UserParam, VCard, Vorbis, WTV,
2438
- 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
2439
2452
 
2440
2453
  =item Family 1 (Specific Location):
2441
2454
 
@@ -2477,8 +2490,8 @@ XMP-ics, XMP-iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft,
2477
2490
  XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-nine, XMP-panorama, XMP-pdf,
2478
2491
  XMP-pdfx, XMP-photomech, XMP-photoshop, XMP-plus, XMP-pmi, XMP-prism,
2479
2492
  XMP-prl, XMP-prm, XMP-pur, XMP-rdf, XMP-sdc, XMP-swf, XMP-tiff, XMP-x,
2480
- XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS,
2481
- 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
2482
2495
 
2483
2496
  =item Family 2 (Category):
2484
2497
 
@@ -2881,7 +2894,7 @@ specified by the L</Charset> option.
2881
2894
 
2882
2895
  =head1 AUTHOR
2883
2896
 
2884
- Copyright 2003-2023, Phil Harvey
2897
+ Copyright 2003-2024, Phil Harvey
2885
2898
 
2886
2899
  This library is free software; you can redistribute it and/or modify it
2887
2900
  under the same terms as Perl itself.
@@ -1,6 +1,6 @@
1
1
  Summary: perl module for image data extraction
2
2
  Name: perl-Image-ExifTool
3
- Version: 12.72
3
+ Version: 12.76
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
  ----------------------+----------------------+---------------------