exiftool-vendored.exe 12.38.0 → 12.41.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 (201) hide show
  1. package/LICENSE +254 -247
  2. package/bin/exiftool_files/Changes +62 -0
  3. package/bin/exiftool_files/README +45 -45
  4. package/bin/exiftool_files/arg_files/exif2xmp.args +5 -0
  5. package/bin/exiftool_files/arg_files/xmp2exif.args +6 -0
  6. package/bin/exiftool_files/config_files/acdsee.config +6 -6
  7. package/bin/exiftool_files/config_files/photoshop_paths.config +30 -7
  8. package/bin/exiftool_files/config_files/picasa_faces.config +1 -1
  9. package/bin/exiftool_files/config_files/pix4d.config +2 -2
  10. package/bin/exiftool_files/config_files/tiff_version.config +2 -2
  11. package/bin/exiftool_files/exiftool.pl +97 -65
  12. package/bin/exiftool_files/lib/File/RandomAccess.pm +1 -1
  13. package/bin/exiftool_files/lib/File/RandomAccess.pod +2 -2
  14. package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +1 -1
  16. package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +1 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +1 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
  19. package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +1 -1
  20. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +1 -1
  21. package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
  22. package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
  23. package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
  24. package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +1 -1
  25. package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
  26. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +6 -4
  27. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +1 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +79 -5
  29. package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +1 -1
  30. package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
  31. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +1 -1
  32. package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +1 -1
  34. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +1 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +1 -1
  36. package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +1 -1
  37. package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +1 -1
  38. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
  39. package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
  40. package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +1 -1
  41. package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
  42. package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +1 -1
  43. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +53 -21
  44. package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +1 -1
  45. package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
  46. package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +1 -1
  47. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +16 -4
  48. package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +1 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +1 -1
  51. package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +1 -1
  52. package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
  53. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +1 -1
  54. package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
  55. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +1 -1
  56. package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
  57. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +1 -1
  58. package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
  59. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +4 -3
  60. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +1 -1
  61. package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
  62. package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +1 -1
  63. package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
  64. package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +1 -1
  65. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  66. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +1 -1
  67. package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +1 -1
  68. package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
  69. package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
  70. package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +1 -1
  71. package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +1 -1
  72. package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +6 -2
  73. package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  74. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +1 -1
  75. package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +1 -1
  76. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  77. package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
  78. package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  79. package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
  80. package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +1 -1
  81. package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
  82. package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +1 -1
  83. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  84. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  85. package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +1 -1
  86. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
  87. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +1 -1
  88. package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +1 -1
  89. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
  90. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
  91. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
  92. package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
  93. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
  94. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
  95. package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
  96. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  97. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  98. package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +1 -1
  99. package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
  100. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +1 -1
  101. package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +1 -1
  102. package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
  103. package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
  104. package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
  105. package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
  106. package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
  107. package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
  108. package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
  109. package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
  110. package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
  111. package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +1 -1
  112. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +10 -10
  113. package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +13 -2
  114. package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +9 -5
  115. package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +1 -1
  116. package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
  117. package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  118. package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
  119. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +924 -184
  120. package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
  121. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +519 -6
  122. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +17 -18
  123. package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
  124. package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +1 -1
  125. package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +1 -1
  126. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +8 -7
  127. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +1 -1
  128. package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
  129. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
  130. package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
  131. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +1 -1
  132. package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
  133. package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
  134. package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +1 -1
  135. package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
  136. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +28 -8
  137. package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +1 -1
  138. package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
  139. package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
  140. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +1 -1
  141. package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  142. package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
  143. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +3 -2
  144. package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +1 -1
  145. package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
  146. package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  147. package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +1 -1
  148. package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +1 -1
  149. package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
  150. package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
  151. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +10 -6
  152. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +16 -5
  153. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +1 -1
  154. package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +1 -1
  155. package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +1 -1
  156. package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
  157. package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
  158. package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
  159. package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
  160. package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
  161. package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +1 -1
  162. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +6 -2
  163. package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
  164. package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
  165. package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +3 -1
  166. package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +3 -2
  167. package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
  168. package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  169. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +11 -5
  170. package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
  171. package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
  172. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  173. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +6382 -6290
  174. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +340 -21
  175. package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +1 -1
  176. package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
  177. package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +1 -1
  178. package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
  179. package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +1 -1
  180. package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +1 -1
  181. package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
  182. package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
  183. package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  184. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +1 -1
  185. package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  186. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -1
  187. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +30 -10
  188. package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  189. package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
  190. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +9 -4
  191. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +3 -1
  192. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +6 -5
  193. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +49 -23
  194. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +3 -2
  195. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +22 -8
  196. package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +10 -2
  197. package/bin/exiftool_files/lib/Image/ExifTool/ZISRAW.pm +1 -1
  198. package/bin/exiftool_files/lib/Image/ExifTool/iWork.pm +1 -1
  199. package/bin/exiftool_files/lib/Image/ExifTool.pm +21 -5
  200. package/bin/exiftool_files/lib/Image/ExifTool.pod +71 -69
  201. package/package.json +14 -3
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Description: Buffer to support random access reading of sequential file
5
5
  #
6
- # Legal: Copyright (c) 2003-2021 Phil Harvey (philharvey66 at gmail.com)
6
+ # Legal: Copyright (c) 2003-2022 Phil Harvey (philharvey66 at gmail.com)
7
7
  # This library is free software; you can redistribute it and/or
8
8
  # modify it under the same terms as Perl itself.
9
9
  #------------------------------------------------------------------------------
@@ -236,7 +236,7 @@ the end of file is not allowed.
236
236
 
237
237
  =head1 AUTHOR
238
238
 
239
- Copyright 2003-2021 Phil Harvey (philharvey66 at gmail.com)
239
+ Copyright 2003-2022 Phil Harvey (philharvey66 at gmail.com)
240
240
 
241
241
  This library is free software; you can redistribute it and/or modify it
242
242
  under the same terms as Perl itself.
@@ -477,7 +477,7 @@ main purpose of encryption, so this really can't be considered a bug.
477
477
 
478
478
  =head1 AUTHOR
479
479
 
480
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
480
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
481
481
 
482
482
  This library is free software; you can redistribute it and/or modify it
483
483
  under the same terms as Perl itself.
@@ -259,7 +259,7 @@ scanning for AFCP information.
259
259
 
260
260
  =head1 AUTHOR
261
261
 
262
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
262
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
263
263
 
264
264
  This library is free software; you can redistribute it and/or modify it
265
265
  under the same terms as Perl itself.
@@ -287,7 +287,7 @@ information from AIFF (Audio Interchange File Format) audio files.
287
287
 
288
288
  =head1 AUTHOR
289
289
 
290
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
290
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
291
291
 
292
292
  This library is free software; you can redistribute it and/or modify it
293
293
  under the same terms as Perl itself.
@@ -263,7 +263,7 @@ Currently doesn't parse MAC header unless it is at the start of the file.
263
263
 
264
264
  =head1 AUTHOR
265
265
 
266
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
266
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
267
267
 
268
268
  This library is free software; you can redistribute it and/or modify it
269
269
  under the same terms as Perl itself.
@@ -305,7 +305,7 @@ APP12 meta information.
305
305
 
306
306
  =head1 AUTHOR
307
307
 
308
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
308
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
309
309
 
310
310
  This library is free software; you can redistribute it and/or modify it
311
311
  under the same terms as Perl itself.
@@ -876,7 +876,7 @@ Windows Media Audio (WMA) and Windows Media Video (WMV) files.
876
876
 
877
877
  =head1 AUTHOR
878
878
 
879
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
879
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
880
880
 
881
881
  This library is free software; you can redistribute it and/or modify it
882
882
  under the same terms as Perl itself.
@@ -149,7 +149,7 @@ Apple maker notes in EXIF information.
149
149
 
150
150
  =head1 AUTHOR
151
151
 
152
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
152
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
153
153
 
154
154
  This library is free software; you can redistribute it and/or modify it
155
155
  under the same terms as Perl itself.
@@ -291,7 +291,7 @@ information from Audible audio books.
291
291
 
292
292
  =head1 AUTHOR
293
293
 
294
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
294
+ Copyright 2003-2022, 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.
@@ -335,7 +335,7 @@ This module contains definitions required by Image::ExifTool to read BMP
335
335
 
336
336
  =head1 AUTHOR
337
337
 
338
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
338
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
339
339
 
340
340
  This library is free software; you can redistribute it and/or modify it
341
341
  under the same terms as Perl itself.
@@ -231,7 +231,7 @@ This module contains definitions required by Image::ExifTool to read BPG
231
231
 
232
232
  =head1 AUTHOR
233
233
 
234
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
234
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
235
235
 
236
236
  This library is free software; you can redistribute it and/or modify it
237
237
  under the same terms as Perl itself.
@@ -445,7 +445,7 @@ compression ability).
445
445
 
446
446
  =head1 AUTHOR
447
447
 
448
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
448
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
449
449
  Copyright 2002, Leon Bottou and Yann Le Cun
450
450
  Copyright 2001, AT&T
451
451
  Copyright 1999-2001, LizardTech Inc.
@@ -275,7 +275,7 @@ information in BigTIFF images.
275
275
 
276
276
  =head1 AUTHOR
277
277
 
278
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
278
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
279
279
 
280
280
  This library is free software; you can redistribute it and/or modify it
281
281
  under the same terms as Perl itself.
@@ -669,7 +669,7 @@ L<Image::ExifTool::BuildTagLookup|Image::ExifTool::BuildTagLookup>.
669
669
 
670
670
  ~head1 AUTHOR
671
671
 
672
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
672
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
673
673
 
674
674
  This library is free software; you can redistribute it and/or modify it
675
675
  under the same terms as Perl itself.
@@ -905,8 +905,10 @@ TagID: foreach $tagID (@keys) {
905
905
  foreach (@grps) {
906
906
  warn "Group name starts with 'ID-' for $short $name\n" if /^ID-/i;
907
907
  }
908
- if ($isXMP and not $$tagInfo{Avoid} and not $$tagInfo{Struct}) {
909
- $dupXmpTag{$name} and warn "Duplicate XMP tag $name\n";
908
+ if ($isXMP and not $$tagInfo{Avoid} and not $$tagInfo{Struct} and
909
+ ($$tagInfo{Writable} or $$table{WRITABLE}))
910
+ {
911
+ $dupXmpTag{$name} and warn "Duplicate writable XMP tag $name\n";
910
912
  $dupXmpTag{$name} = 1;
911
913
  }
912
914
  # validate Name (must not start with a digit or else XML output will not be valid;
@@ -2760,7 +2762,7 @@ Returned list of writable pseudo tags.
2760
2762
 
2761
2763
  =head1 AUTHOR
2762
2764
 
2763
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2765
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2764
2766
 
2765
2767
  This library is free software; you can redistribute it and/or modify it
2766
2768
  under the same terms as Perl itself.
@@ -307,7 +307,7 @@ specification.
307
307
 
308
308
  =head1 AUTHOR
309
309
 
310
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
310
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
311
311
 
312
312
  This library is free software; you can redistribute it and/or modify it
313
313
  under the same terms as Perl itself.
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.55';
91
+ $VERSION = '4.57';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -208,6 +208,7 @@ $VERSION = '4.55';
208
208
  53 => 'Canon EF-S 18-55mm f/3.5-5.6 III', #Jon Charnas
209
209
  54 => 'Canon EF-S 55-250mm f/4-5.6 IS II', #47
210
210
  60 => 'Irix 11mm f/4', #50
211
+ 63 => 'Irix 30mm F1.4 Dragonfly', #IB
211
212
  80 => 'Canon TS-E 50mm f/2.8L Macro', #42
212
213
  81 => 'Canon TS-E 90mm f/2.8L Macro', #42
213
214
  82 => 'Canon TS-E 135mm f/4L Macro', #42
@@ -599,6 +600,9 @@ $VERSION = '4.55';
599
600
  '61182.25' => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC)
600
601
  '61182.26' => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC)
601
602
  '61182.27' => 'Canon RF 16mm F2.8 STM', #42
603
+ '61182.28' => 'Canon RF 400mm F2.8L IS USM', #IB
604
+ '61182.29' => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
605
+ '61182.30' => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
602
606
  #'61182.xx' => 'Canon RF 100mm F2.8L MACRO IS USM',
603
607
  65535 => 'n/a',
604
608
  );
@@ -970,8 +974,8 @@ my %canonQuality = (
970
974
  4 => 'RAW',
971
975
  5 => 'Superfine',
972
976
  7 => 'CRAW', #42
973
- 130 => 'Normal Movie', #22
974
- 131 => 'Movie (2)', #PH (7DmkII 1920x1080)
977
+ 130 => 'Light (RAW)', #github#119
978
+ 131 => 'Standard (RAW)', #github#119
975
979
  );
976
980
  my %canonImageSize = (
977
981
  -1 => 'n/a',
@@ -1018,7 +1022,7 @@ my %canonWhiteBalance = (
1018
1022
  20 => 'PC Set4', #PH
1019
1023
  21 => 'PC Set5', #PH
1020
1024
  # 22 - Custom 2?
1021
- 23 => 'Auto (ambience priority)', #PH (5DS)
1025
+ 23 => 'Auto (ambience priority)', #PH (5DS) (perhaps this needs re-thinking?: forum13295)
1022
1026
  # 30 - Click White Balance?
1023
1027
  # 31 - Shot Settings?
1024
1028
  # 137 - Tungsten?
@@ -2053,6 +2057,13 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2053
2057
  TagTable => 'Image::ExifTool::Canon::HDRInfo',
2054
2058
  }
2055
2059
  },
2060
+ 0x4026 => { #github#119
2061
+ Name => 'LogInfo',
2062
+ SubDirectory => {
2063
+ Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
2064
+ TagTable => 'Image::ExifTool::Canon::LogInfo',
2065
+ }
2066
+ },
2056
2067
  0x4028 => { #PH
2057
2068
  Name => 'AFConfig', # (AFTabInfo)
2058
2069
  SubDirectory => {
@@ -2126,6 +2137,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2126
2137
  4 => 'Continuous, Low', #PH
2127
2138
  5 => 'Continuous, High', #PH
2128
2139
  6 => 'Silent Single', #PH
2140
+ 8 => 'Continuous, High+', #WolfgangGulcker
2129
2141
  # ref A: https://exiftool.org/forum/index.php/topic,5701.msg27843.html#msg27843
2130
2142
  9 => 'Single, Silent', #A
2131
2143
  10 => 'Continuous, Silent', #A
@@ -6789,6 +6801,9 @@ my %ciMaxFocal = (
6789
6801
  284 => 'Canon RF 100-400mm F5.6-8 IS USM + RF1.4x', #42 (NC)
6790
6802
  285 => 'Canon RF 100-400mm F5.6-8 IS USM + RF2x', #42 (NC)
6791
6803
  288 => 'Canon RF 16mm F2.8 STM', #42
6804
+ 289 => 'Canon RF 400mm F2.8L IS USM', #IB
6805
+ 290 => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
6806
+ 291 => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
6792
6807
  #xxx => 'Canon RF 100mm F2.8L MACRO IS USM',
6793
6808
  # Note: add new RF lenses to %canonLensTypes with ID 61182
6794
6809
  },
@@ -8701,6 +8716,65 @@ my %filterConv = (
8701
8716
  # 3 - maybe related to AutoImageAlign?
8702
8717
  );
8703
8718
 
8719
+ # More color information (MakerNotes tag 0x4026) (ref github issue #119)
8720
+ %Image::ExifTool::Canon::LogInfo = (
8721
+ %binaryDataAttrs,
8722
+ FORMAT => 'int32s',
8723
+ FIRST_ENTRY => 1,
8724
+ PRIORITY => 0,
8725
+ 4 => {
8726
+ Name => 'CompressionFormat',
8727
+ PrintConv => {
8728
+ 0 => 'Editing (ALL-I)',
8729
+ 1 => 'Standard (IPB)',
8730
+ 2 => 'Light (IPB)',
8731
+ 3 => 'Motion JPEG',
8732
+ 4 => 'RAW', # either Standard or Light, depending on Quality
8733
+ },
8734
+ },
8735
+ 6 => { # 0 to 7
8736
+ Name => 'Sharpness',
8737
+ RawConv => '$val == 0x7fffffff ? undef : $val',
8738
+ },
8739
+ 7 => { # -4 to 4
8740
+ Name => 'Saturation',
8741
+ RawConv => '$val == 0x7fffffff ? undef : $val',
8742
+ %Image::ExifTool::Exif::printParameter,
8743
+ },
8744
+ 8 => { # -4 to 4
8745
+ Name => 'ColorTone',
8746
+ RawConv => '$val == 0x7fffffff ? undef : $val',
8747
+ %Image::ExifTool::Exif::printParameter,
8748
+ },
8749
+ 9 => {
8750
+ Name => 'ColorSpace2',
8751
+ RawConv => '$val == 0x7fffffff ? undef : $val',
8752
+ PrintConv => {
8753
+ 0 => 'BT.709',
8754
+ 1 => 'BT.2020',
8755
+ 2 => 'CinemaGamut',
8756
+ },
8757
+ },
8758
+ 10 => {
8759
+ Name => 'ColorMatrix',
8760
+ RawConv => '$val == 0x7fffffff ? undef : $val',
8761
+ PrintConv => {
8762
+ 0 => 'EOS Original',
8763
+ 1 => 'Neutral',
8764
+ },
8765
+ },
8766
+ 11 => {
8767
+ Name => 'CanonLogVersion', # (increases dynamic range of sensor data)
8768
+ RawConv => '$val == 0x7fffffff ? undef : $val',
8769
+ PrintConv => {
8770
+ 0 => 'OFF',
8771
+ 1 => 'CLogV1',
8772
+ 2 => 'CLogV2', # (NC)
8773
+ 3 => 'CLogV3',
8774
+ },
8775
+ },
8776
+ );
8777
+
8704
8778
  # AF configuration info (MakerNotes tag 0x4028) (ref PH)
8705
8779
  %Image::ExifTool::Canon::AFConfig = (
8706
8780
  %binaryDataAttrs,
@@ -10064,7 +10138,7 @@ Canon maker notes in EXIF information.
10064
10138
 
10065
10139
  =head1 AUTHOR
10066
10140
 
10067
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
10141
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
10068
10142
 
10069
10143
  This library is free software; you can redistribute it and/or modify it
10070
10144
  under the same terms as Perl itself.
@@ -2873,7 +2873,7 @@ Image::ExifTool to read this information.
2873
2873
 
2874
2874
  =head1 AUTHOR
2875
2875
 
2876
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2876
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2877
2877
 
2878
2878
  This library is free software; you can redistribute it and/or modify it
2879
2879
  under the same terms as Perl itself.
@@ -877,7 +877,7 @@ tags.)
877
877
 
878
878
  =head1 AUTHOR
879
879
 
880
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
880
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
881
881
 
882
882
  This library is free software; you can redistribute it and/or modify it
883
883
  under the same terms as Perl itself.
@@ -2264,7 +2264,7 @@ files, and as a trailer in JPEG, CRW, CR2 and TIFF images.
2264
2264
 
2265
2265
  =head1 AUTHOR
2266
2266
 
2267
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2267
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2268
2268
 
2269
2269
  This library is free software; you can redistribute it and/or modify it
2270
2270
  under the same terms as Perl itself.
@@ -221,7 +221,7 @@ settings files (COS).
221
221
 
222
222
  =head1 AUTHOR
223
223
 
224
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
224
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
225
225
 
226
226
  This library is free software; you can redistribute it and/or modify it
227
227
  under the same terms as Perl itself.
@@ -2034,7 +2034,7 @@ Casio maker notes in EXIF information.
2034
2034
 
2035
2035
  =head1 AUTHOR
2036
2036
 
2037
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2037
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2038
2038
 
2039
2039
  This library is free software; you can redistribute it and/or modify it
2040
2040
  under the same terms as Perl itself.
@@ -422,7 +422,7 @@ when decoding certain types of information.
422
422
 
423
423
  =head1 AUTHOR
424
424
 
425
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
425
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
426
426
 
427
427
  This library is free software; you can redistribute it and/or modify it
428
428
  under the same terms as Perl itself.
@@ -3853,7 +3853,7 @@ No translation of special characters sets is done.
3853
3853
 
3854
3854
  =head1 AUTHOR
3855
3855
 
3856
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
3856
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
3857
3857
 
3858
3858
  This library is free software; you can redistribute it and/or modify it
3859
3859
  under the same terms as Perl itself.
@@ -151,7 +151,7 @@ the maker notes in images from some DJI Phantom drones.
151
151
 
152
152
  =head1 AUTHOR
153
153
 
154
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
154
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
155
155
 
156
156
  This library is free software; you can redistribute it and/or modify it
157
157
  under the same terms as Perl itself.
@@ -820,7 +820,7 @@ information in DNG (Digital Negative) images.
820
820
 
821
821
  =head1 AUTHOR
822
822
 
823
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
823
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
824
824
 
825
825
  This library is free software; you can redistribute it and/or modify it
826
826
  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-2021, Phil Harvey (philharvey66 at gmail.com)
228
+ Copyright 2003-2022, 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-2021, Phil Harvey (philharvey66 at gmail.com)
294
+ Copyright 2003-2022, 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.
@@ -360,7 +360,7 @@ This file contains tag definitions for the Darwin Core XMP namespace.
360
360
 
361
361
  =head1 AUTHOR
362
362
 
363
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
363
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
364
364
 
365
365
  This library is free software; you can redistribute it and/or modify it
366
366
  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-2021, Phil Harvey (philharvey66 at gmail.com)
356
+ Copyright 2003-2022, 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.
@@ -1398,7 +1398,7 @@ library files.
1398
1398
 
1399
1399
  =head1 AUTHOR
1400
1400
 
1401
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1401
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1402
1402
 
1403
1403
  This library is free software; you can redistribute it and/or modify it
1404
1404
  under the same terms as Perl itself.
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
56
56
  use Image::ExifTool qw(:DataAccess :Utils);
57
57
  use Image::ExifTool::MakerNotes;
58
58
 
59
- $VERSION = '4.38';
59
+ $VERSION = '4.40';
60
60
 
61
61
  sub ProcessExif($$$);
62
62
  sub WriteExif($$$);
@@ -415,7 +415,14 @@ my %opcodeInfo = (
415
415
  WriteGroup => 'IFD0',
416
416
  # set priority directory if this is the full resolution image
417
417
  DataMember => 'SubfileType',
418
- RawConv => '$self->SetPriorityDir() if $val eq "0"; $$self{SubfileType} = $val',
418
+ RawConv => q{
419
+ if ($val == ($val & 0x02)) {
420
+ $self->SetPriorityDir() if $val == 0;
421
+ $$self{PageCount} = ($$self{PageCount} || 0) + 1;
422
+ $$self{MultiPage} = 1 if $val == 2 or $$self{PageCount} > 1;
423
+ }
424
+ $$self{SubfileType} = $val;
425
+ },
419
426
  PrintConv => \%subfileType,
420
427
  },
421
428
  0xff => {
@@ -425,7 +432,14 @@ my %opcodeInfo = (
425
432
  Writable => 'int16u',
426
433
  WriteGroup => 'IFD0',
427
434
  # set priority directory if this is the full resolution image
428
- RawConv => '$self->SetPriorityDir() if $val eq "1"; $val',
435
+ RawConv => q{
436
+ if ($val == 1 or $val == 3) {
437
+ $self->SetPriorityDir() if $val == 1;
438
+ $$self{PageCount} = ($$self{PageCount} || 0) + 1;
439
+ $$self{MultiPage} = 1 if $val == 3 or $$self{PageCount} > 1;
440
+ }
441
+ $val;
442
+ },
429
443
  PrintConv => {
430
444
  1 => 'Full-resolution image',
431
445
  2 => 'Reduced-resolution image',
@@ -2144,7 +2158,7 @@ my %opcodeInfo = (
2144
2158
  Notes => 'displayed in seconds, but stored as an APEX value',
2145
2159
  Format => 'rational64s', # Leica M8 patch (incorrectly written as rational64u)
2146
2160
  Writable => 'rational64s',
2147
- ValueConv => 'abs($val)<100 ? 2**(-$val) : 0',
2161
+ ValueConv => 'IsFloat($val) && abs($val)<100 ? 2**(-$val) : 0',
2148
2162
  ValueConvInv => '$val>0 ? -log($val)/log(2) : -100',
2149
2163
  PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
2150
2164
  PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
@@ -4817,12 +4831,21 @@ my %subSecConv = (
4817
4831
  GPSPosition => {
4818
4832
  Groups => { 2 => 'Location' },
4819
4833
  Writable => 1,
4834
+ Protected => 1,
4820
4835
  WriteAlso => {
4821
4836
  GPSLatitude => '$val =~ /(.*?)( ?[NS])?,/ ? $1 : undef',
4822
4837
  GPSLatitudeRef => '$val =~ /(-?)(.*?) ?([NS]?),/ ? ($3 || ($1 ? "S" : "N")) : undef',
4823
4838
  GPSLongitude => '$val =~ /, ?(.*?)( ?[EW]?)$/ ? $1 : undef',
4824
4839
  GPSLongitudeRef => '$val =~ /, ?(-?)(.*?) ?([EW]?)$/ ? ($3 || ($1 ? "W" : "E")) : undef',
4825
4840
  },
4841
+ PrintConvInv => q{
4842
+ return undef unless $val =~ /(.*? ?[NS]?), ?(.*? ?[EW]?)$/;
4843
+ my ($lat, $lon) = ($1, $2);
4844
+ require Image::ExifTool::GPS;
4845
+ $lat = Image::ExifTool::GPS::ToDegrees($lat, 1, "lat");
4846
+ $lon = Image::ExifTool::GPS::ToDegrees($lon, 1, "lon");
4847
+ return "$lat, $lon";
4848
+ },
4826
4849
  Require => {
4827
4850
  0 => 'GPSLatitude',
4828
4851
  1 => 'GPSLongitude',
@@ -5240,6 +5263,7 @@ sub RedBlueBalance($@)
5240
5263
  sub PrintExposureTime($)
5241
5264
  {
5242
5265
  my $secs = shift;
5266
+ return $secs unless Image::ExifTool::IsFloat($secs);
5243
5267
  if ($secs < 0.25001 and $secs > 0) {
5244
5268
  return sprintf("1/%d",int(0.5 + 1/$secs));
5245
5269
  }
@@ -5845,7 +5869,7 @@ sub ProcessExif($$$)
5845
5869
  unless ($path =~ /^(JPEG-APP1-IFD0|TIFF-IFD0|PSD-EXIFInfo-IFD0)$/) {
5846
5870
  if ($Image::ExifTool::MWG::strict) {
5847
5871
  $et->Warn("Ignored non-standard EXIF at $path");
5848
- return 1;
5872
+ return 0;
5849
5873
  } else {
5850
5874
  $et->Warn("Non-standard EXIF at $path", 1);
5851
5875
  }
@@ -5888,10 +5912,6 @@ sub ProcessExif($$$)
5888
5912
  # also read next IFD pointer if available
5889
5913
  if ($raf->Read($buf2, $len+4) >= $len) {
5890
5914
  $buff .= $buf2;
5891
- # make copy of dirInfo since we're going to modify it
5892
- my %newDirInfo = %$dirInfo;
5893
- $dirInfo = \%newDirInfo;
5894
- # update directory parameters for the newly loaded IFD
5895
5915
  $dataPt = $$dirInfo{DataPt} = \$buff;
5896
5916
  $dataPos = $$dirInfo{DataPos} = $offset;
5897
5917
  $dataLen = $$dirInfo{DataLen} = length $buff;
@@ -6585,7 +6605,7 @@ sub ProcessExif($$$)
6585
6605
  #### eval Validate ($val, $dirData, $subdirStart, $size)
6586
6606
  my $ok = 0;
6587
6607
  if (defined $$subdir{Validate} and not eval $$subdir{Validate}) {
6588
- $et->Warn("Invalid $tagStr data");
6608
+ $et->Warn("Invalid $tagStr data", $inMakerNotes);
6589
6609
  $invalid = 1;
6590
6610
  } else {
6591
6611
  if (not $subdirInfo{DirName} and $inMakerNotes) {
@@ -6698,28 +6718,40 @@ sub ProcessExif($$$)
6698
6718
 
6699
6719
  # scan for subsequent IFD's if specified
6700
6720
  if ($$dirInfo{Multi} and $bytesFromEnd >= 4) {
6701
- my $offset = Get32u($dataPt, $dirEnd);
6702
- if ($offset) {
6703
- my $subdirStart = $offset - $dataPos;
6704
- # use same directory information for trailing directory,
6705
- # but change the start location (ProcessDirectory will
6706
- # test to make sure we don't reprocess the same dir twice)
6707
- my %newDirInfo = %$dirInfo;
6708
- $newDirInfo{DirStart} = $subdirStart;
6721
+ # use same directory information for trailing directory,
6722
+ # but change the start location (ProcessDirectory will
6723
+ # test to make sure we don't reprocess the same dir twice)
6724
+ my %newDirInfo = %$dirInfo;
6725
+ $newDirInfo{Multi} = 0; # prevent recursion
6726
+ $newDirInfo{OffsetName} = $nextOffName;
6727
+ $$et{INDENT} =~ s/..$//; # keep indent the same
6728
+ for (;;) {
6729
+ my $offset = Get32u($dataPt, $dirEnd) or last;
6730
+ $newDirInfo{DirStart} = $offset - $dataPos;
6709
6731
  # increment IFD number
6710
6732
  my $ifdNum = $newDirInfo{DirName} =~ s/(\d+)$// ? $1 : 0;
6711
6733
  $newDirInfo{DirName} .= $ifdNum + 1;
6712
- $newDirInfo{OffsetName} = $nextOffName;
6713
6734
  # must validate SubIFD1 because the nextIFD pointer is invalid for some RAW formats
6714
6735
  if ($newDirInfo{DirName} ne 'SubIFD1' or ValidateIFD(\%newDirInfo)) {
6715
- $$et{INDENT} =~ s/..$//; # keep indent the same
6716
6736
  my $cur = pop @{$$et{PATH}};
6717
6737
  $et->ProcessDirectory(\%newDirInfo, $tagTablePtr) or $success = 0;
6718
6738
  push @{$$et{PATH}}, $cur;
6739
+ if ($success and $newDirInfo{BytesFromEnd} >= 4) {
6740
+ $dataPt = $newDirInfo{DataPt};
6741
+ $dataPos = $newDirInfo{DataPos};
6742
+ $dirEnd = $newDirInfo{DirEnd};
6743
+ next;
6744
+ }
6719
6745
  } elsif ($verbose or $$et{TIFF_TYPE} eq 'TIFF') {
6720
6746
  $et->Warn('Ignored bad IFD linked from SubIFD');
6721
6747
  }
6748
+ last;
6722
6749
  }
6750
+ } elsif (defined $$dirInfo{Multi}) {
6751
+ # return necessary parameters for parsing next IFD
6752
+ $$dirInfo{DirEnd} = $dirEnd;
6753
+ $$dirInfo{OffsetName} = $nextOffName;
6754
+ $$dirInfo{BytesFromEnd} = $bytesFromEnd;
6723
6755
  }
6724
6756
  return $success;
6725
6757
  }
@@ -6743,7 +6775,7 @@ EXIF and TIFF meta information.
6743
6775
 
6744
6776
  =head1 AUTHOR
6745
6777
 
6746
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
6778
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
6747
6779
 
6748
6780
  This library is free software; you can redistribute it and/or modify it
6749
6781
  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-2021, Phil Harvey (philharvey66 at gmail.com)
140
+ Copyright 2003-2022, 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.