exiftool-vendored.exe 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 (202) hide show
  1. package/bin/exiftool_files/Changes +64 -1
  2. package/bin/exiftool_files/README +47 -46
  3. package/bin/exiftool_files/exiftool.pl +121 -90
  4. package/bin/exiftool_files/lib/File/RandomAccess.pm +32 -6
  5. package/bin/exiftool_files/lib/File/RandomAccess.pod +6 -6
  6. package/bin/exiftool_files/lib/Image/ExifTool/7Z.pm +3 -3
  7. package/bin/exiftool_files/lib/Image/ExifTool/AAC.pm +8 -6
  8. package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
  9. package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +3 -3
  10. package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +1 -1
  11. package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +1 -1
  12. package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
  13. package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +1 -1
  14. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +1 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
  16. package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +3 -3
  19. package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
  20. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +9 -9
  21. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +1 -1
  22. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +7 -6
  23. package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +1 -1
  24. package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
  25. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +3 -3
  26. package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
  27. package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +1 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +1 -1
  29. package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +3 -3
  30. package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +1 -1
  31. package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +5 -5
  32. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
  34. package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +1 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
  36. package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +1 -1
  37. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +4 -3
  38. package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +1 -1
  39. package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
  40. package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +1 -1
  41. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +3 -3
  42. package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +4 -4
  43. package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
  44. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +61 -8
  45. package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +1 -1
  46. package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
  47. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +9 -4
  48. package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +1 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
  51. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +1 -1
  52. package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
  53. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +4 -4
  54. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +1 -1
  55. package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
  56. package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +1 -1
  57. package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
  58. package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +7 -5
  59. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  60. package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +1 -1
  61. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +3 -3
  62. package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +1 -1
  63. package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
  64. package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
  65. package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +6 -6
  66. package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +1 -1
  67. package/bin/exiftool_files/lib/Image/ExifTool/InfiRay.pm +1 -1
  68. package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +5 -2
  69. package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  70. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +3 -3
  71. package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +3 -3
  72. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +67 -17
  73. package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
  74. package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  75. package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
  76. package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +1 -1
  77. package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
  78. package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +1 -1
  79. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  80. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  81. package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +4 -4
  82. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
  83. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +4 -5
  84. package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +3 -3
  85. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
  86. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
  87. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
  88. package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
  89. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
  90. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sk.pm +1 -1
  91. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
  92. package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
  93. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  94. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  95. package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +3 -3
  96. package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
  97. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +1 -1
  98. package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +5 -5
  99. package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
  100. package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
  101. package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +1 -1
  102. package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
  103. package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
  104. package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
  105. package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
  106. package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
  107. package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
  108. package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
  109. package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +1 -1
  110. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +1 -1
  111. package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +1 -1
  112. package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +1 -1
  113. package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +1 -1
  114. package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
  115. package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +3 -3
  116. package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
  117. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +11 -8
  118. package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
  119. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +4 -4
  120. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +1 -1
  121. package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
  122. package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +1 -1
  123. package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +3 -3
  124. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +1 -1
  125. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +1 -1
  126. package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
  127. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
  128. package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
  129. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +55 -5
  130. package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
  131. package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
  132. package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +4 -4
  133. package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
  134. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +24 -2
  135. package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +1 -1
  136. package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
  137. package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
  138. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +27 -2
  139. package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +4 -4
  140. package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
  141. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +32 -11
  142. package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +6 -6
  143. package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
  144. package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  145. package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +4 -4
  146. package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +3 -3
  147. package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
  148. package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
  149. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +55 -101
  150. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +97 -7
  151. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +1 -1
  152. package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +3 -3
  153. package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +1 -1
  154. package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
  155. package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
  156. package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
  157. package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
  158. package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
  159. package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +3 -3
  160. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +5 -5
  161. package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
  162. package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
  163. package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +2 -3
  164. package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +1 -1
  165. package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
  166. package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  167. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +5 -5
  168. package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
  169. package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
  170. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +4 -4
  171. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +3879 -3862
  172. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +11439 -11374
  173. package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +1 -1
  174. package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
  175. package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +1 -1
  176. package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
  177. package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +1 -1
  178. package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +1 -1
  179. package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
  180. package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +1 -1
  181. package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
  182. package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
  183. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +27 -24
  184. package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  185. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +2 -2
  186. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +1 -1
  187. package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  188. package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
  189. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +5 -2
  190. package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  191. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +9 -5
  192. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +74 -45
  193. package/bin/exiftool_files/lib/Image/ExifTool/XISF.pm +1 -1
  194. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +20 -3
  195. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +10 -1
  196. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +1 -1
  197. package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +7 -7
  198. package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +1 -1
  199. package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
  200. package/bin/exiftool_files/lib/Image/ExifTool.pm +59 -28
  201. package/bin/exiftool_files/lib/Image/ExifTool.pod +81 -68
  202. package/package.json +6 -6
@@ -17,7 +17,7 @@ use Image::ExifTool::Exif;
17
17
  use Image::ExifTool::MakerNotes;
18
18
  use Image::ExifTool::CanonRaw;
19
19
 
20
- $VERSION = '1.24';
20
+ $VERSION = '1.25';
21
21
 
22
22
  sub ProcessOriginalRaw($$$);
23
23
  sub ProcessAdobeData($$$);
@@ -516,7 +516,7 @@ sub ProcessAdobeMRW($$$)
516
516
  my $buff = "\0MRM" . pack('N', $dirLen - 4);
517
517
  # ignore leading byte order and directory count words
518
518
  $buff .= substr($$dataPt, $dirStart + 4, $dirLen - 4);
519
- my $raf = new File::RandomAccess(\$buff);
519
+ my $raf = File::RandomAccess->new(\$buff);
520
520
  my %dirInfo = ( RAF => $raf, OutFile => $outfile );
521
521
  my $rtnVal = Image::ExifTool::MinoltaRaw::ProcessMRW($et, \%dirInfo);
522
522
  if ($outfile and defined $$outfile and length $$outfile) {
@@ -548,7 +548,7 @@ sub ProcessAdobeRAF($$$)
548
548
  }
549
549
  $et->VerboseDir($dirInfo);
550
550
  # make fake RAF object for processing (same acronym, different meaning)
551
- my $raf = new File::RandomAccess($dataPt);
551
+ my $raf = File::RandomAccess->new($dataPt);
552
552
  my $num = '';
553
553
  # loop through all records in Adobe RAF data:
554
554
  # 0 - RAF table (not processed)
@@ -752,7 +752,7 @@ sub ProcessAdobeMakN($$$)
752
752
  }
753
753
  if ($outfile) {
754
754
  # rewrite the maker notes directory
755
- my $fixup = $subdirInfo{Fixup} = new Image::ExifTool::Fixup;
755
+ my $fixup = $subdirInfo{Fixup} = Image::ExifTool::Fixup->new;
756
756
  my $oldChanged = $$et{CHANGED};
757
757
  my $buff = $et->WriteDirectory(\%subdirInfo, $subTable);
758
758
  # nothing to do if error writing directory or nothing changed
@@ -849,7 +849,7 @@ information in DNG (Digital Negative) images.
849
849
 
850
850
  =head1 AUTHOR
851
851
 
852
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
852
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
853
853
 
854
854
  This library is free software; you can redistribute it and/or modify it
855
855
  under the same terms as Perl itself.
@@ -225,7 +225,7 @@ metadata from DPX (Digital Picture Exchange) images.
225
225
 
226
226
  =head1 AUTHOR
227
227
 
228
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
228
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
229
229
 
230
230
  This library is free software; you can redistribute it and/or modify it
231
231
  under the same terms as Perl itself.
@@ -291,7 +291,7 @@ information from DV (raw Digital Video) files.
291
291
 
292
292
  =head1 AUTHOR
293
293
 
294
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
294
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
295
295
 
296
296
  This library is free software; you can redistribute it and/or modify it
297
297
  under the same terms as Perl itself.
@@ -372,7 +372,7 @@ This file contains tag definitions for the Darwin Core XMP namespace.
372
372
 
373
373
  =head1 AUTHOR
374
374
 
375
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
375
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
376
376
 
377
377
  This library is free software; you can redistribute it and/or modify it
378
378
  under the same terms as Perl itself.
@@ -353,7 +353,7 @@ Image::ExifTool::AIFF.
353
353
 
354
354
  =head1 AUTHOR
355
355
 
356
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
356
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
357
357
 
358
358
  This library is free software; you can redistribute it and/or modify it
359
359
  under the same terms as Perl itself.
@@ -1454,7 +1454,7 @@ library files.
1454
1454
 
1455
1455
  =head1 AUTHOR
1456
1456
 
1457
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1457
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1458
1458
 
1459
1459
  This library is free software; you can redistribute it and/or modify it
1460
1460
  under the same terms as Perl itself.
@@ -57,7 +57,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
57
57
  use Image::ExifTool qw(:DataAccess :Utils);
58
58
  use Image::ExifTool::MakerNotes;
59
59
 
60
- $VERSION = '4.48';
60
+ $VERSION = '4.50';
61
61
 
62
62
  sub ProcessExif($$$);
63
63
  sub WriteExif($$$);
@@ -4348,6 +4348,7 @@ my %opcodeInfo = (
4348
4348
  Deletable => 1,
4349
4349
  SubDirectory => {
4350
4350
  TagTable => 'Image::ExifTool::Jpeg2000::Main',
4351
+ DirName => 'JUMBF',
4351
4352
  ByteOrder => 'BigEndian',
4352
4353
  },
4353
4354
  },
@@ -6465,7 +6466,7 @@ sub ProcessExif($$$)
6465
6466
  TagInfo => $tagInfo || $tmpInfo,
6466
6467
  Offset => $base + $valuePtr + $dataPos,
6467
6468
  Size => $size,
6468
- Fixup => new Image::ExifTool::Fixup,
6469
+ Fixup => Image::ExifTool::Fixup->new,
6469
6470
  };
6470
6471
  }
6471
6472
  } else {
@@ -7064,7 +7065,7 @@ EXIF and TIFF meta information.
7064
7065
 
7065
7066
  =head1 AUTHOR
7066
7067
 
7067
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
7068
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
7068
7069
 
7069
7070
  This library is free software; you can redistribute it and/or modify it
7070
7071
  under the same terms as Perl itself.
@@ -137,7 +137,7 @@ information from FITS (Flexible Image Transport System) images.
137
137
 
138
138
  =head1 AUTHOR
139
139
 
140
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
140
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
141
141
 
142
142
  This library is free software; you can redistribute it and/or modify it
143
143
  under the same terms as Perl itself.
@@ -298,7 +298,7 @@ information from Free Lossless Audio Codec (FLAC) audio files.
298
298
 
299
299
  =head1 AUTHOR
300
300
 
301
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
301
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
302
302
 
303
303
  This library is free software; you can redistribute it and/or modify it
304
304
  under the same terms as Perl itself.
@@ -329,7 +329,7 @@ meta information in FLIF (Free Lossless Image Format) images.
329
329
 
330
330
  =head1 AUTHOR
331
331
 
332
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
332
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
333
333
 
334
334
  This library is free software; you can redistribute it and/or modify it
335
335
  under the same terms as Perl itself.
@@ -24,7 +24,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
24
24
  use Image::ExifTool::Exif;
25
25
  use Image::ExifTool::GPS;
26
26
 
27
- $VERSION = '1.22';
27
+ $VERSION = '1.23';
28
28
 
29
29
  sub ProcessFLIR($$;$);
30
30
  sub ProcessFLIRText($$$);
@@ -1468,7 +1468,7 @@ sub ProcessMeasInfo($$$)
1468
1468
  sub ProcessFLIR($$;$)
1469
1469
  {
1470
1470
  my ($et, $dirInfo, $tagTablePtr) = @_;
1471
- my $raf = $$dirInfo{RAF} || new File::RandomAccess($$dirInfo{DataPt});
1471
+ my $raf = $$dirInfo{RAF} || File::RandomAccess->new($$dirInfo{DataPt});
1472
1472
  my $verbose = $et->Options('Verbose');
1473
1473
  my $out = $et->Options('TextOut');
1474
1474
  my $base = $raf->Tell();
@@ -1633,7 +1633,7 @@ Systems Inc. thermal image files (FFF, FPF and JPEG format).
1633
1633
 
1634
1634
  =head1 AUTHOR
1635
1635
 
1636
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1636
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1637
1637
 
1638
1638
  This library is free software; you can redistribute it and/or modify it
1639
1639
  under the same terms as Perl itself.
@@ -39,7 +39,7 @@ use Image::ExifTool qw(GetByteOrder SetByteOrder Get32u Get32s Set32u
39
39
  Get16u Get16s Set16u);
40
40
  use vars qw($VERSION);
41
41
 
42
- $VERSION = '1.05';
42
+ $VERSION = '1.06';
43
43
 
44
44
  sub AddFixup($$;$$);
45
45
  sub ApplyFixup($$);
@@ -69,7 +69,7 @@ sub new
69
69
  sub Clone($)
70
70
  {
71
71
  my $self = shift;
72
- my $clone = new Image::ExifTool::Fixup;
72
+ my $clone = Image::ExifTool::Fixup->new;
73
73
  $clone->{Start} = $self->{Start};
74
74
  $clone->{Shift} = $self->{Shift};
75
75
  my $phash = $self->{Pointers};
@@ -317,7 +317,7 @@ Image::ExifTool::Fixup - Utility to handle pointer fixups
317
317
 
318
318
  use Image::ExifTool::Fixup;
319
319
 
320
- $fixup = new Image::ExifTool::Fixup;
320
+ $fixup = Image::ExifTool::Fixup->new;
321
321
 
322
322
  # add a new fixup to a pointer at the specified offset in data
323
323
  $fixup->AddFixup($offset);
@@ -354,7 +354,7 @@ linear list when ApplyFixups() is called.
354
354
 
355
355
  =head1 AUTHOR
356
356
 
357
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
357
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
358
358
 
359
359
  This library is free software; you can redistribute it and/or modify it
360
360
  under the same terms as Perl itself.
@@ -721,7 +721,7 @@ will add AMF3 support.
721
721
 
722
722
  =head1 AUTHOR
723
723
 
724
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
724
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
725
725
 
726
726
  This library is free software; you can redistribute it and/or modify it
727
727
  under the same terms as Perl itself.
@@ -22,7 +22,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
22
22
  use Image::ExifTool::Exif;
23
23
  use Image::ExifTool::ASF; # for GetGUID()
24
24
 
25
- $VERSION = '1.46';
25
+ $VERSION = '1.48';
26
26
 
27
27
  sub ProcessFPX($$);
28
28
  sub ProcessFPXR($$$);
@@ -511,6 +511,31 @@ my %fpxFileType = (
511
511
  corresponding EmbeddedImage from the Contents of a VNT file
512
512
  },
513
513
  },
514
+ _eeJPG => {
515
+ Name => 'EmbeddedImage',
516
+ Notes => q{
517
+ Not a real tag. Extracted from stream content when the ExtractEmbedded
518
+ option is used
519
+ },
520
+ Groups => { 2 => 'Preview' },
521
+ Binary => 1,
522
+ },
523
+ _eePNG => {
524
+ Name => 'EmbeddedPNG',
525
+ Notes => q{
526
+ Not a real tag. Extracted from stream content when the ExtractEmbedded
527
+ option is used
528
+ },
529
+ Groups => { 2 => 'Preview' },
530
+ Binary => 1,
531
+ },
532
+ _eeLink => {
533
+ Name => 'LinkedFileName',
534
+ Notes => q{
535
+ Not a real tag. Extracted from stream content when the ExtractEmbedded
536
+ option is used
537
+ },
538
+ },
514
539
  );
515
540
 
516
541
  # Summary Information properties
@@ -2180,6 +2205,9 @@ sub ProcessFPX($$)
2180
2205
  my ($buff, $out, $oldIndent, $miniStreamBuff);
2181
2206
  my ($tag, %hier, %objIndex, %loadedDifSect);
2182
2207
 
2208
+ # handle FPX format in memory from PNG cpIp chunk
2209
+ $raf or $raf = File::RandomAccess->new($$dirInfo{DataPt});
2210
+
2183
2211
  # read header
2184
2212
  return 0 unless $raf->Read($buff,HDR_SIZE) == HDR_SIZE;
2185
2213
  # check signature
@@ -2291,6 +2319,8 @@ sub ProcessFPX($$)
2291
2319
  my $miniStream;
2292
2320
  $endPos = length($dir);
2293
2321
  my $index = 0;
2322
+ my $ee; # name of next tag to extract if unknown
2323
+ $ee = 0 if $et->Options('ExtractEmbedded');
2294
2324
 
2295
2325
  for ($pos=0; $pos<=$endPos-128; $pos+=128, ++$index) {
2296
2326
 
@@ -2310,6 +2340,9 @@ sub ProcessFPX($$)
2310
2340
  $tag = Image::ExifTool::Decode(undef, substr($dir,$pos,$len*2), 'UCS2', 'II', 'Latin');
2311
2341
  $tag =~ s/\0.*//s; # truncate at null (in case length was wrong)
2312
2342
 
2343
+ if ($tag eq '0' and not defined $ee) {
2344
+ $et->WarnOnce('Use the ExtractEmbedded option to extract embedded information', 3);
2345
+ }
2313
2346
  my $sect = Get32u(\$dir, $pos + 0x74); # start sector number
2314
2347
  my $size = Get32u(\$dir, $pos + 0x78); # stream length
2315
2348
 
@@ -2320,12 +2353,15 @@ sub ProcessFPX($$)
2320
2353
  $et->Warn('Error loading Mini-FAT stream');
2321
2354
  last;
2322
2355
  }
2323
- $miniStream = new File::RandomAccess(\$miniStreamBuff);
2356
+ $miniStream = File::RandomAccess->new(\$miniStreamBuff);
2324
2357
  }
2325
2358
 
2326
2359
  my $tagInfo;
2327
2360
  if ($$tagTablePtr{$tag}) {
2328
2361
  $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
2362
+ } elsif (defined $ee and $tag eq $ee) {
2363
+ $tagInfo = ''; # won't know the actual tagID untile we read the stream
2364
+ $ee = sprintf('%x', hex($ee)+1); # tag to look for next
2329
2365
  } else {
2330
2366
  # remove instance number or class ID from tag if necessary
2331
2367
  $tagInfo = $et->GetTagInfo($tagTablePtr, $1) if
@@ -2349,7 +2385,7 @@ sub ProcessFPX($$)
2349
2385
  $$sub{Parent} = $index;
2350
2386
  }
2351
2387
 
2352
- next unless $tagInfo or $verbose;
2388
+ next unless defined $tagInfo or $verbose;
2353
2389
 
2354
2390
  # load the data for stream types
2355
2391
  my $extra = '';
@@ -2383,18 +2419,22 @@ sub ProcessFPX($$)
2383
2419
  $extra .= " Left=$lSib" unless $lSib == FREE_SECT;
2384
2420
  $extra .= " Right=$rSib" unless $rSib == FREE_SECT;
2385
2421
  $extra .= " Child=$chld" unless $chld == FREE_SECT;
2422
+ $extra .= " Size=$size" if defined $size;
2423
+ my $name;
2424
+ $name = "Unknown_0x$tag" if not $tagInfo and $tag =~ /^[0-9a-f]{1,3}$/;
2386
2425
  $et->VerboseInfo($tag, $tagInfo,
2387
2426
  Index => $index,
2388
2427
  Value => $buff,
2389
2428
  DataPt => \$buff,
2390
2429
  Extra => $extra,
2391
- Size => $size,
2430
+ # Size => $size, (moved to $extra so we can see the rest of the stream if larger)
2431
+ Name => $name,
2392
2432
  );
2393
2433
  }
2394
- if ($tagInfo and $buff) {
2434
+ if (defined $tagInfo and $buff) {
2395
2435
  my $num = $$et{NUM_FOUND};
2396
- my $subdir = $$tagInfo{SubDirectory};
2397
- if ($subdir) {
2436
+ if ($tagInfo and $$tagInfo{SubDirectory}) {
2437
+ my $subdir = $$tagInfo{SubDirectory};
2398
2438
  my %dirInfo = (
2399
2439
  DataPt => \$buff,
2400
2440
  DirStart => $$subdir{DirStart},
@@ -2422,6 +2462,19 @@ sub ProcessFPX($$)
2422
2462
  }
2423
2463
  }
2424
2464
  delete $$et{DOC_NUM};
2465
+ } elsif (not $tagInfo) {
2466
+ # extract some embedded information from PNG Plus images
2467
+ if ($buff =~ /^(.{19,40})(\xff\xd8\xff\xe0|\x89PNG\r\n\x1a\n)/sg) {
2468
+ my $id = $2 eq "\xff\xd8\xff\xe0" ? '_eeJPG' : '_eePNG';
2469
+ $et->HandleTag($tagTablePtr, $id, substr($buff, length($1)));
2470
+ } elsif ($buff =~ /^\0\x80\0\0\x01\0\0\0\x0e\0/ and length($buff) > 18) {
2471
+ my $len = unpack('x17C', $buff);
2472
+ next if $len + 18 > length($buff);
2473
+ my $filename = $et->Decode(substr($buff,18,$len), 'UTF16', 'II');
2474
+ $et->HandleTag($tagTablePtr, '_eeLink', $filename);
2475
+ } else {
2476
+ next;
2477
+ }
2425
2478
  } else {
2426
2479
  $et->FoundTag($tagInfo, $buff);
2427
2480
  }
@@ -2508,7 +2561,7 @@ JPEG images.
2508
2561
 
2509
2562
  =head1 AUTHOR
2510
2563
 
2511
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2564
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2512
2565
 
2513
2566
  This library is free software; you can redistribute it and/or modify it
2514
2567
  under the same terms as Perl itself.
@@ -622,7 +622,7 @@ extracted from these formats.
622
622
 
623
623
  =head1 AUTHOR
624
624
 
625
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
625
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
626
626
 
627
627
  This library is free software; you can redistribute it and/or modify it
628
628
  under the same terms as Perl itself.
@@ -243,7 +243,7 @@ write information from the FotoWare FotoStation trailer.
243
243
 
244
244
  =head1 AUTHOR
245
245
 
246
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
246
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
247
247
 
248
248
  This library is free software; you can redistribute it and/or modify it
249
249
  under the same terms as Perl itself.
@@ -31,7 +31,7 @@ use vars qw($VERSION);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
  use Image::ExifTool::Exif;
33
33
 
34
- $VERSION = '1.91';
34
+ $VERSION = '1.92';
35
35
 
36
36
  sub ProcessFujiDir($$$);
37
37
  sub ProcessFaceRec($$$);
@@ -1187,6 +1187,8 @@ my %faceCategories = (
1187
1187
  ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
1188
1188
  PrintConv => '$val=~tr/ /x/; $val',
1189
1189
  },
1190
+ # 0x112 - int16u[2] same as 0x111 but with width/height swapped?
1191
+ # 0x113 - int16u[2] same as 0x111?
1190
1192
  0x115 => {
1191
1193
  Name => 'RawImageAspectRatio',
1192
1194
  Format => 'int16u',
@@ -1236,6 +1238,7 @@ my %faceCategories = (
1236
1238
  Count => 36,
1237
1239
  PrintConv => '$val =~ tr/012 /RGB/d; join " ", $val =~ /....../g',
1238
1240
  },
1241
+ # 0x141 - int16u[2] Bit depth? "14 42" for 14-bit RAF and "16 48" for 16-bit RAF
1239
1242
  0x2000 => { #IB
1240
1243
  Name => 'WB_GRGBLevelsAuto',
1241
1244
  Format => 'int16u',
@@ -1408,6 +1411,8 @@ my %faceCategories = (
1408
1411
  0xf00e => 'WB_GRBLevels',
1409
1412
  0xf00f => 'ChromaticAberrationParams', # (rational64s[23])
1410
1413
  0xf010 => 'VignettingParams', #9 (rational64s[31 or 64])
1414
+ # 0xf013 - int32u[3] same as 0xf00d
1415
+ # 0xf014 - int32u[3] - also related to WhiteBalance
1411
1416
  );
1412
1417
 
1413
1418
  # information found in FFMV atom of MOV videos
@@ -1688,7 +1693,7 @@ sub WriteRAF($$)
1688
1693
  # rewrite the embedded JPEG in memory
1689
1694
  my %jpegInfo = (
1690
1695
  Parent => 'RAF',
1691
- RAF => new File::RandomAccess(\$jpeg),
1696
+ RAF => File::RandomAccess->new(\$jpeg),
1692
1697
  OutFile => \$outJpeg,
1693
1698
  );
1694
1699
  $$et{FILE_TYPE} = 'JPEG';
@@ -1792,7 +1797,7 @@ sub ProcessRAF($$)
1792
1797
  # extract information from embedded JPEG
1793
1798
  my %dirInfo = (
1794
1799
  Parent => 'RAF',
1795
- RAF => new File::RandomAccess(\$jpeg),
1800
+ RAF => File::RandomAccess->new(\$jpeg),
1796
1801
  );
1797
1802
  if ($jpos) {
1798
1803
  $$et{BASE} += $jpos;
@@ -1874,7 +1879,7 @@ FujiFilm maker notes in EXIF information, and to read/write FujiFilm RAW
1874
1879
 
1875
1880
  =head1 AUTHOR
1876
1881
 
1877
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1882
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1878
1883
 
1879
1884
  This library is free software; you can redistribute it and/or modify it
1880
1885
  under the same terms as Perl itself.
@@ -68,7 +68,7 @@ General Imaging maker notes.
68
68
 
69
69
  =head1 AUTHOR
70
70
 
71
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
71
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
72
72
 
73
73
  This library is free software; you can redistribute it and/or modify it
74
74
  under the same terms as Perl itself.
@@ -545,7 +545,7 @@ write GIF meta information.
545
545
 
546
546
  =head1 AUTHOR
547
547
 
548
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
548
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
549
549
 
550
550
  This library is free software; you can redistribute it and/or modify it
551
551
  under the same terms as Perl itself.
@@ -270,7 +270,7 @@ GIMP software.
270
270
 
271
271
  =head1 AUTHOR
272
272
 
273
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
273
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
274
274
 
275
275
  This library is free software; you can redistribute it and/or modify it
276
276
  under the same terms as Perl itself.
@@ -613,7 +613,7 @@ GPS (Global Positioning System) meta information in EXIF data.
613
613
 
614
614
  =head1 AUTHOR
615
615
 
616
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
616
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
617
617
 
618
618
  This library is free software; you can redistribute it and/or modify it
619
619
  under the same terms as Perl itself.
@@ -2242,7 +2242,7 @@ coordinates.
2242
2242
 
2243
2243
  =head1 AUTHOR
2244
2244
 
2245
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2245
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2246
2246
 
2247
2247
  This library is free software; you can redistribute it and/or modify it
2248
2248
  under the same terms as Perl itself.
@@ -29,7 +29,7 @@ use vars qw($VERSION);
29
29
  use Image::ExifTool qw(:Public);
30
30
  use Image::ExifTool::GPS;
31
31
 
32
- $VERSION = '1.73';
32
+ $VERSION = '1.74';
33
33
 
34
34
  sub JITTER() { return 2 } # maximum time jitter
35
35
 
@@ -174,7 +174,7 @@ sub LoadTrackLog($$;$)
174
174
  # $val is track file name
175
175
  if ($et->Open(\*EXIFTOOL_TRKFILE, $val)) {
176
176
  $trackFile = $val;
177
- $raf = new File::RandomAccess(\*EXIFTOOL_TRKFILE);
177
+ $raf = File::RandomAccess->new(\*EXIFTOOL_TRKFILE);
178
178
  unless ($raf->Read($_, 256)) {
179
179
  close EXIFTOOL_TRKFILE;
180
180
  return "Empty track file '${val}'";
@@ -202,7 +202,7 @@ sub LoadTrackLog($$;$)
202
202
  }
203
203
  unless ($from) {
204
204
  # set up RAF for reading log file in memory
205
- $raf = new File::RandomAccess(\$val);
205
+ $raf = File::RandomAccess->new(\$val);
206
206
  $from = 'data';
207
207
  }
208
208
 
@@ -1492,7 +1492,7 @@ user-defined tag GPSRoll, must be active.
1492
1492
 
1493
1493
  =head1 AUTHOR
1494
1494
 
1495
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1495
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1496
1496
 
1497
1497
  This library is free software; you can redistribute it and/or modify it
1498
1498
  under the same terms as Perl itself.
@@ -748,7 +748,7 @@ metadata from GoPro MP4 videos.
748
748
 
749
749
  =head1 AUTHOR
750
750
 
751
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
751
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
752
752
 
753
753
  This library is free software; you can redistribute it and/or modify it
754
754
  under the same terms as Perl itself.
@@ -1123,7 +1123,7 @@ information from H.264 video streams.
1123
1123
 
1124
1124
  =head1 AUTHOR
1125
1125
 
1126
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1126
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1127
1127
 
1128
1128
  This library is free software; you can redistribute it and/or modify it
1129
1129
  under the same terms as Perl itself.
@@ -250,7 +250,7 @@ Hewlett-Packard maker notes.
250
250
 
251
251
  =head1 AUTHOR
252
252
 
253
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
253
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
254
254
 
255
255
  This library is free software; you can redistribute it and/or modify it
256
256
  under the same terms as Perl itself.
@@ -555,7 +555,7 @@ meta information from HTML documents.
555
555
 
556
556
  =head1 AUTHOR
557
557
 
558
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
558
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
559
559
 
560
560
  This library is free software; you can redistribute it and/or modify it
561
561
  under the same terms as Perl itself.
@@ -13,7 +13,7 @@ use vars qw($VERSION);
13
13
  use Image::ExifTool; # only for FinishTiffDump()
14
14
  use Image::ExifTool::HTML qw(EscapeHTML);
15
15
 
16
- $VERSION = '1.39';
16
+ $VERSION = '1.41';
17
17
 
18
18
  sub DumpTable($$$;$$$$$$);
19
19
  sub Open($$$;@);
@@ -314,6 +314,8 @@ sub Print($$;$$$$$)
314
314
  $title = 'HtmlDump' unless $title;
315
315
  $level or $level = 0;
316
316
  my $tell = $raf->Tell();
317
+ $raf->Seek(0,2) or $$self{ERROR} = 'Seek error', return -1;
318
+ my $fileLen = $raf->Tell();
317
319
  my $pos = 0;
318
320
  my $dataEnd = $dataPos + ($dataPt ? length($$dataPt) : 0);
319
321
  # initialize member variables
@@ -352,6 +354,7 @@ sub Print($$;$$$$$)
352
354
  } else {
353
355
  last;
354
356
  }
357
+ $start = $fileLen if $start > $fileLen; # handle case of bad start offset
355
358
  my $len = $start - $pos;
356
359
  if ($len > 0 and not $wasUnused) {
357
360
  # we have a unused bytes before this data block
@@ -432,8 +435,7 @@ sub Print($$;$$$$$)
432
435
  {
433
436
  $err = $msg;
434
437
  # reset $len to the actual length of available data
435
- $raf->Seek(0, 2);
436
- $len = $raf->Tell() - $start;
438
+ $len = $fileLen - $start;
437
439
  $tip .= "<br>Error: Only $len bytes available!" if $tip;
438
440
  next;
439
441
  }
@@ -894,7 +896,7 @@ Image::ExifTool::HtmlDump - Dump information in hex to HTML page
894
896
  =head1 SYNOPSIS
895
897
 
896
898
  use Image::ExifTool::HtmlDump;
897
- my $dump = new Image::ExifTool::HtmlDump;
899
+ my $dump = Image::ExifTool::HtmlDump->new;
898
900
  $dump->Add($start, $size, $comment);
899
901
  $dump->Print($dumpInfo, $raf, $dataPt, $dataPos, $outfile);
900
902
 
@@ -917,7 +919,7 @@ page.
917
919
 
918
920
  =head1 AUTHOR
919
921
 
920
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
922
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
921
923
 
922
924
  This library is free software; you can redistribute it and/or modify it
923
925
  under the same terms as Perl itself.
@@ -1357,7 +1357,7 @@ data created on one device into another device's native color space.
1357
1357
 
1358
1358
  =head1 AUTHOR
1359
1359
 
1360
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
1360
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
1361
1361
 
1362
1362
  This library is free software; you can redistribute it and/or modify it
1363
1363
  under the same terms as Perl itself.