exiftool_vendored 12.70.0 → 12.73.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (207) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +53 -1
  3. data/bin/MANIFEST +5 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +11 -11
  7. data/bin/exiftool +47 -27
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool/AAC.pm +177 -0
  11. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  13. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  14. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  15. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  16. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  17. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  19. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -3
  24. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  25. data/bin/lib/Image/ExifTool/Canon.pm +22 -7
  26. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  29. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  34. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  39. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  40. data/bin/lib/Image/ExifTool/Exif.pm +31 -10
  41. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  42. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  43. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  44. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  45. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  46. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  47. data/bin/lib/Image/ExifTool/FlashPix.pm +60 -7
  48. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  50. data/bin/lib/Image/ExifTool/FujiFilm.pm +6 -3
  51. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  56. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  57. data/bin/lib/Image/ExifTool/GoPro.pm +17 -2
  58. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  59. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  61. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  62. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  63. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  64. data/bin/lib/Image/ExifTool/ID3.pm +8 -5
  65. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  67. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  68. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  69. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  70. data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JPEG.pm +5 -2
  72. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  73. data/bin/lib/Image/ExifTool/JSON.pm +5 -2
  74. data/bin/lib/Image/ExifTool/JVC.pm +3 -3
  75. data/bin/lib/Image/ExifTool/Jpeg2000.pm +17 -6
  76. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  77. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  78. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  79. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/es.pm +4 -4
  85. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/fr.pm +4 -5
  87. data/bin/lib/Image/ExifTool/Lang/it.pm +3 -3
  88. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Leaf.pm +3 -3
  99. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  100. data/bin/lib/Image/ExifTool/M2TS.pm +22 -17
  101. data/bin/lib/Image/ExifTool/MIE.pm +3 -3
  102. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  103. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  115. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  116. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  117. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  118. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  119. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  120. data/bin/lib/Image/ExifTool/Nikon.pm +166 -97
  121. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  122. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  123. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  124. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  125. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  126. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  127. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  128. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  129. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  130. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  131. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  133. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  134. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  136. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PNG.pm +24 -2
  138. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  140. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  141. data/bin/lib/Image/ExifTool/Panasonic.pm +27 -2
  142. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  143. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Pentax.pm +46 -16
  145. data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -4
  146. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  147. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  148. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  149. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  150. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  152. data/bin/lib/Image/ExifTool/QuickTime.pm +50 -11
  153. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +148 -12
  154. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  155. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  156. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Ricoh.pm +111 -3
  163. data/bin/lib/Image/ExifTool/Samsung.pm +4 -3
  164. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  167. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  169. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Sony.pm +85 -6
  171. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  173. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  174. data/bin/lib/Image/ExifTool/TagLookup.pm +4878 -4830
  175. data/bin/lib/Image/ExifTool/TagNames.pod +11518 -11379
  176. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  177. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  178. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  179. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  180. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  181. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  182. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  183. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  184. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  185. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  186. data/bin/lib/Image/ExifTool/WriteExif.pl +20 -5
  187. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  188. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  189. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  190. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  191. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  192. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +4 -1
  193. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  194. data/bin/lib/Image/ExifTool/WriteXMP.pl +5 -3
  195. data/bin/lib/Image/ExifTool/Writer.pl +87 -15
  196. data/bin/lib/Image/ExifTool/XISF.pm +1 -1
  197. data/bin/lib/Image/ExifTool/XMP.pm +19 -3
  198. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  199. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  200. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  201. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  202. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  203. data/bin/lib/Image/ExifTool.pm +35 -8
  204. data/bin/lib/Image/ExifTool.pod +29 -16
  205. data/bin/perl-Image-ExifTool.spec +9 -9
  206. data/lib/exiftool_vendored/version.rb +1 -1
  207. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8660bdc38a746e24a73d1b5a0b167250bce83398c78d24f4a2ef736b9bb7a5a4
4
- data.tar.gz: 8fc11e9218cf70d7ab1bf608b39bcd12693aea6c20bdaf3d31907a95ff21b626
3
+ metadata.gz: 6e4bebb394e40270c3e7794a1c5e269d227a7e41ac88fe231d5b8e04433eb88b
4
+ data.tar.gz: 781a0260d3d75e23d60b1350d342b7e46af136b39471c673883e2d11dc71152f
5
5
  SHA512:
6
- metadata.gz: 77b2a89162d45e272bb27aa0481c57ea95fae1e677081aad86976accda1492f622e46d789c39818e4de31b1e1fa8fb951c4687a20ecfe7d5435a98df30b73a19
7
- data.tar.gz: 9d59b5179a8b89b99456845bc087b643290efe2bcfddffbed73eb224b7fb7f669a43f1e5c29f60ae60bf3d00ac3142372cee21932c65d321e1868f35fa5e567e
6
+ metadata.gz: 9d294cedfc656675286e39e782d484fcf2b659e85cc8e445dc17999ca3c656a2f6dd2e241e3b23b1da9cda02ab8c15a064bc0c40d20439c853ccd3e5f6214523
7
+ data.tar.gz: ce99e91f91e27be93453645e19d3ec3f3206eb7f06b1d610fadd5f0cc4401e1376a8831f3756ceb3d7896651a9ebbbc4bf1f04d6fc09acce47a78191133e0ff3
data/bin/Changes CHANGED
@@ -7,7 +7,59 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.70. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
- Nov. 19, 2023 - Version 12.70 (production release)
10
+ Jan. 10, 2024 - Version 12.73
11
+
12
+ - Added write support for Leica XMP-xmpDSA tags
13
+ - Added read support for timed GPS from Yada RoadCam Pro 4K dashcam videos
14
+ - Added read support for PNG cpIp chunk
15
+ - Added range checks on lat/long values when writing QuickTime:GPSCoordinates
16
+ - Decode a number of new values for Ricoh GR III tags
17
+ - Decode a new Leica tag
18
+ - Improved handling of Brotli compression errors
19
+ - Enhanced API NoWarning option to also apply to app "Warning:" outputs
20
+ - Identify PNG Plus files
21
+ - Changed name of Pentax ISOAutoParameters to ISOAutoMinSpeed and improved
22
+ decoding
23
+ - Fixed writing of date/time tags in XMP-xmpMM:Pantry structure
24
+ - API Changes:
25
+ - Added LimitLongValues option
26
+
27
+ Dec. 29, 2023 - Version 12.72
28
+
29
+ - Added read support for AAC audio files
30
+ - Added a new QuickTime Keys Android tag
31
+ - Added a number of new values for some Ricoh GR III tags
32
+ - Decode timed metadata from Intsa360 Ace Pro MP4 videos
33
+ - Decode GPSDateTime milliseconds in timed Insta360 metadata
34
+ - Decode timed metadata from INNOV K5 TS videos
35
+ - Decode a number of new GoPro timed-metadata tags
36
+ - Decode a few new Xiaomi EXIF tags
37
+ - Fixed writing of JPG/ARW images from some newer Sony models to preserve
38
+ HiddenData
39
+
40
+ Dec. 21, 2023 - Version 12.71
41
+
42
+ - Added a warning if there was an error reading an alternate file with the
43
+ -fileNUM option
44
+ - Added the ability to write QuickTime Keys:Encoder
45
+ - Added a few new Canon LensType values (thanks Norbert Wasser)
46
+ - Added a new, obscure EXIF tag (thanks Neal Krawetz)
47
+ - Decode real-time metadata from Ricoh Theta videos
48
+ - Decode SpecularWhiteLevel for more Canon models (github #232)
49
+ - Decode Canon DualPixelRaw tag (thanks John Moyer)
50
+ - Decode a few new Nikon tags (thanks Warren Hatch)
51
+ - Decode more FujiFilm M-RAW tags (thanks Greybeard)
52
+ - Improved generation of tag names for some JSON tag ID's containing colons
53
+ - Fixed "Undefined subroutine" error when writing makernotes as a block
54
+ - Fixed missing ID in family 7 group name for ID3 tags which are not valid for
55
+ the specified ID3 version
56
+ - Fixed bug where some tags from alternate files (with the -fileNUM option)
57
+ could show up as "not defined" when used in expressions even though they did
58
+ exist
59
+ - API Changes:
60
+ - Added NoMandatory option
61
+
62
+ Nov. 19, 2023 - Version 12.70 (production release) - "20th Anniversary"
11
63
 
12
64
  - This marks the 20th anniversary of the initial ExifTool release!
13
65
  - Added ability to read/delete C2PA CAI JUMBF metadata from TIFF-based images
data/bin/MANIFEST CHANGED
@@ -41,6 +41,7 @@ fmt_files/kml_track.fmt
41
41
  html/ExifTool.html
42
42
  html/MIE1.1-20070121.pdf
43
43
  html/Shift.html
44
+ html/TagNames/AAC.html
44
45
  html/TagNames/AFCP.html
45
46
  html/TagNames/AIFF.html
46
47
  html/TagNames/APE.html
@@ -214,6 +215,7 @@ lib/File/RandomAccess.pod
214
215
  lib/Image/ExifTool.pm
215
216
  lib/Image/ExifTool.pod
216
217
  lib/Image/ExifTool/7Z.pm
218
+ lib/Image/ExifTool/AAC.pm
217
219
  lib/Image/ExifTool/AES.pm
218
220
  lib/Image/ExifTool/AFCP.pm
219
221
  lib/Image/ExifTool/AIFF.pm
@@ -441,6 +443,8 @@ lib/Image/ExifTool/ZIP.pm
441
443
  lib/Image/ExifTool/ZISRAW.pm
442
444
  lib/Image/ExifTool/iWork.pm
443
445
  perl-Image-ExifTool.spec
446
+ t/AAC.t
447
+ t/AAC_2.out
444
448
  t/AFCP.t
445
449
  t/AFCP_2.out
446
450
  t/AFCP_3.out
@@ -979,6 +983,7 @@ t/ZIP_7.out
979
983
  t/ZIP_8.out
980
984
  t/ZISRAW.t
981
985
  t/ZISRAW_2.out
986
+ t/images/AAC.aac
982
987
  t/images/AFCP.jpg
983
988
  t/images/AIFF.aif
984
989
  t/images/APE.ape
data/bin/META.json CHANGED
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "12.70"
53
+ "version" : "12.73"
54
54
  }
data/bin/META.yml CHANGED
@@ -31,4 +31,4 @@ recommends:
31
31
  Time::HiRes: 0
32
32
  requires:
33
33
  perl: 5.004
34
- version: 12.70
34
+ version: 12.73
data/bin/README CHANGED
@@ -14,13 +14,14 @@ supported by ExifTool (r = read, w = write, c = create):
14
14
 
15
15
  File Types
16
16
  ------------+-------------+-------------+-------------+------------
17
- 360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
18
- 3FR r | DR4 r/w/c | J2C r | O r | RIFF r
19
- 3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
20
- 3GP r/w | DV r | JP2 r/w | ODS r | RTF r
21
- 7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
22
- A r | DVR-MS r | JSON r | OFR r | RWL r/w
23
- AA r | DYLIB r | JXL r | OGG r | RWZ r
17
+ 360 r/w | DOCX r | ISO r | NRW r/w | RAR r
18
+ 3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
19
+ 3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
20
+ 3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
21
+ 7Z r | DV r | JP2 r/w | ODS r | RTF r
22
+ A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
23
+ AA r | DVR-MS r | JSON r | OFR r | RWL r/w
24
+ AAC r | DYLIB r | JXL r | OGG r | RWZ r
24
25
  AAE r | EIP r | K25 r | OGV r | RM r
25
26
  AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
26
27
  ACR r | EPUB r | KEY r | OPUS r | SKETCH r
@@ -56,7 +57,6 @@ supported by ExifTool (r = read, w = write, c = create):
56
57
  DLL r | INSP r/w | MXF r | RA r | XLSX r
57
58
  DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
58
59
  DOC r | INX r | NKSC r/w | RAM r | ZIP r
59
- DOCX r | ISO r | NRW r/w | RAR r |
60
60
 
61
61
  Meta Information
62
62
  ----------------------+----------------------+---------------------
@@ -108,8 +108,8 @@ your home directory, then you would type the following commands in a
108
108
  terminal window to extract and run ExifTool:
109
109
 
110
110
  cd ~/Desktop
111
- gzip -dc Image-ExifTool-12.70.tar.gz | tar -xf -
112
- cd Image-ExifTool-12.70
111
+ gzip -dc Image-ExifTool-12.73.tar.gz | tar -xf -
112
+ cd Image-ExifTool-12.73
113
113
  ./exiftool t/images/ExifTool.jpg
114
114
 
115
115
  Note: These commands extract meta information from one of the test images.
@@ -166,7 +166,7 @@ for calculating digest values and providing other features listed below:
166
166
 
167
167
  COPYRIGHT AND LICENSE
168
168
 
169
- Copyright 2003-2023, Phil Harvey
169
+ Copyright 2003-2024, Phil Harvey
170
170
 
171
171
  This is free software; you can redistribute it and/or modify it under the
172
172
  same terms as Perl itself.
data/bin/exiftool CHANGED
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.70';
14
+ my $version = '12.73';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -58,6 +58,7 @@ sub ConvertBinary($);
58
58
  sub IsEqual($$);
59
59
  sub Infile($;$);
60
60
  sub AddSetTagsFile($;$);
61
+ sub Warning($$);
61
62
  sub DoSetFromFile($$$);
62
63
  sub CleanFilename($);
63
64
  sub SetWindowTitle($);
@@ -1642,7 +1643,10 @@ if (@newValues) {
1642
1643
  if ($tag =~ /^(All)?TagsFromFile$/i) {
1643
1644
  defined $newVal or Error("Need file name for -tagsFromFile\n"), next Command;
1644
1645
  ++$isWriting;
1645
- if ($newVal eq '@' or not defined FilenameSPrintf($newVal)) {
1646
+ if ($newVal eq '@' or not defined FilenameSPrintf($newVal) or
1647
+ # can't set tags yet if we are using tags from other files with the -fileNUM option
1648
+ grep /\bfile\d+:/i, @{$setTags{$newVal}})
1649
+ {
1646
1650
  push @dynamicFiles, $newVal;
1647
1651
  next; # set tags from dynamic file later
1648
1652
  }
@@ -1702,7 +1706,7 @@ if (@newValues) {
1702
1706
  my ($rtn, $wrn) = $mt->SetNewValue($tag, $newVal, %opts);
1703
1707
  $needSave = 1;
1704
1708
  ++$isWriting if $rtn;
1705
- $wrn and Warn "Warning: $wrn\n";
1709
+ $wrn and Warning($mt, $wrn);
1706
1710
  }
1707
1711
  # exclude specified tags
1708
1712
  foreach (@exclude) {
@@ -2715,7 +2719,7 @@ TAG: foreach $tag (@foundTags) {
2715
2719
  $padLen -= $gcstr->columns;
2716
2720
  } else {
2717
2721
  $padLen -= length Encode::decode_utf8($desc);
2718
- Warn "Warning: Unicode::GCString problem. Columns may be misaligned\n";
2722
+ Warning($et, 'Unicode::GCString problem. Columns may be misaligned');
2719
2723
  $fixLen = 1;
2720
2724
  }
2721
2725
  }
@@ -2985,7 +2989,7 @@ sub SetImageInfo($$$)
2985
2989
  my $newFileName = $et->GetNewValues('FileName');
2986
2990
  my $newDir = $et->GetNewValues('Directory');
2987
2991
  if (defined $newFileName and not length $newFileName) {
2988
- Warn "Warning: New file name is empty - $ infile\n";
2992
+ Warning($et,"New file name is empty - $infile");
2989
2993
  undef $newFileName;
2990
2994
  }
2991
2995
  if (defined $testName) {
@@ -3644,9 +3648,22 @@ sub Infile($;$)
3644
3648
  return $file;
3645
3649
  }
3646
3650
 
3651
+ #------------------------------------------------------------------------------
3652
+ # Issue warning to stderr, adding leading "Warning: " and trailing newline
3653
+ # if the warning isn't suppressed by the API NoWarning option
3654
+ # Inputs: 0) ExifTool ref, 1) warning string
3655
+ sub Warning($$)
3656
+ {
3657
+ my ($et, $str) = @_;
3658
+ my $noWarn = $et->Options('NoWarning');
3659
+ if (not defined $noWarn or not eval { $str =~ /$noWarn/ }) {
3660
+ Warn "Warning: $str\n";
3661
+ }
3662
+ }
3663
+
3647
3664
  #------------------------------------------------------------------------------
3648
3665
  # Set new values from file
3649
- # Inputs: 0) exiftool ref, 1) filename, 2) reference to list of values to set
3666
+ # Inputs: 0) ExifTool ref, 1) filename, 2) reference to list of values to set
3650
3667
  # Returns: 0 on error (and increments $countBadWr)
3651
3668
  sub DoSetFromFile($$$)
3652
3669
  {
@@ -3659,19 +3676,18 @@ sub DoSetFromFile($$$)
3659
3676
  # delete all error and warning tags
3660
3677
  my @warns = grep /^(Error|Warning)\b/, keys %$info;
3661
3678
  $numSet -= scalar(@warns);
3662
- # issue a warning for the main error only if we were able to set some tags
3663
- if (keys(%$info) > @warns) {
3664
- my $err = $$info{Error};
3665
- delete $$info{$_} foreach @warns;
3666
- $$info{Warning} = $err;
3667
- }
3679
+ # issue a warning only for the main error
3680
+ my $err = $$info{Error};
3681
+ delete $$info{$_} foreach @warns;
3682
+ my $noWarn = $et->Options('NoWarning');
3683
+ $$info{Warning} = $err unless defined $noWarn and eval { $err =~ /$noWarn/ };
3668
3684
  } elsif ($$info{Warning}) {
3669
3685
  my $warns = 1;
3670
3686
  ++$warns while $$info{"Warning ($warns)"};
3671
3687
  $numSet -= $warns;
3672
3688
  }
3673
3689
  PrintErrors($et, $info, $file) and EFile($file), ++$countBadWr, return 0;
3674
- Warn "Warning: No writable tags set from $file\n" unless $numSet;
3690
+ Warning($et,"No writable tags set from $file") unless $numSet;
3675
3691
  return 1;
3676
3692
  }
3677
3693
 
@@ -3817,7 +3833,7 @@ sub ScanDir($$;$)
3817
3833
  if ($evalWarning) {
3818
3834
  chomp $evalWarning;
3819
3835
  $evalWarning =~ s/ at .*//s;
3820
- Warn "Warning: [Win32::FindFile] $evalWarning - $dir\n";
3836
+ Warning($et,"[Win32::FindFile] $evalWarning - $dir");
3821
3837
  $winSurrogate = 1 if $evalWarning =~ /surrogate/;
3822
3838
  } else {
3823
3839
  $et->Options(CharsetFileName => 'UTF8'); # now using UTF8
@@ -4628,13 +4644,14 @@ supported by ExifTool (r = read, w = write, c = create):
4628
4644
 
4629
4645
  File Types
4630
4646
  ------------+-------------+-------------+-------------+------------
4631
- 360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
4632
- 3FR r | DR4 r/w/c | J2C r | O r | RIFF r
4633
- 3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
4634
- 3GP r/w | DV r | JP2 r/w | ODS r | RTF r
4635
- 7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
4636
- A r | DVR-MS r | JSON r | OFR r | RWL r/w
4637
- AA r | DYLIB r | JXL r | OGG r | RWZ r
4647
+ 360 r/w | DOCX r | ISO r | NRW r/w | RAR r
4648
+ 3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
4649
+ 3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
4650
+ 3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
4651
+ 7Z r | DV r | JP2 r/w | ODS r | RTF r
4652
+ A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
4653
+ AA r | DVR-MS r | JSON r | OFR r | RWL r/w
4654
+ AAC r | DYLIB r | JXL r | OGG r | RWZ r
4638
4655
  AAE r | EIP r | K25 r | OGV r | RM r
4639
4656
  AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
4640
4657
  ACR r | EPUB r | KEY r | OPUS r | SKETCH r
@@ -4670,7 +4687,6 @@ supported by ExifTool (r = read, w = write, c = create):
4670
4687
  DLL r | INSP r/w | MXF r | RA r | XLSX r
4671
4688
  DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
4672
4689
  DOC r | INX r | NKSC r/w | RAM r | ZIP r
4673
- DOCX r | ISO r | NRW r/w | RAR r |
4674
4690
 
4675
4691
  Meta Information
4676
4692
  ----------------------+----------------------+---------------------
@@ -5440,7 +5456,7 @@ tags specified for the specific SourceFile processed. The imported JSON
5440
5456
  file must have the same format as the exported JSON files with the exception
5441
5457
  that options exporting JSON objects instead of simple values are not
5442
5458
  compatible with the import file format (ie. export with B<-D>, B<-H>, B<-l>,
5443
- or B<-T> is not compatable, and use B<-G> instead of B<-g>). Additionally,
5459
+ or B<-T> is not compatible, and use B<-G> instead of B<-g>). Additionally,
5444
5460
  tag names in the input JSON file may be suffixed with a C<#> to disable
5445
5461
  print conversion.
5446
5462
 
@@ -5582,7 +5598,7 @@ with this command:
5582
5598
 
5583
5599
  produces output like this:
5584
5600
 
5585
- -- Generated by ExifTool 12.70 --
5601
+ -- Generated by ExifTool 12.73 --
5586
5602
  File: a.jpg - 2003:10:31 15:44:19
5587
5603
  (f/5.6, 1/60s, ISO 100)
5588
5604
  File: b.jpg - 2006:05:23 11:57:38
@@ -6605,8 +6621,12 @@ Rights from the original file could look like this:
6605
6621
 
6606
6622
  exiftool -file1 '$originalfilename' '-rights<file1:rights' edited.jpg
6607
6623
 
6608
- Composite tags may access tags from alternate files using the appropriate
6609
- (case-sensitive) family 8 group name.
6624
+ Subtle note: If a B<-tagsFromFile> option is used, tags in the I<ALTFILE>
6625
+ argument come from the I<SRCFILE> that applies to the first argument
6626
+ accessing tags from the corresponding C<FileNUM> group.
6627
+
6628
+ User-defined Composite tags may access tags from alternate files using the
6629
+ appropriate (case-sensitive) family 8 group name.
6610
6630
 
6611
6631
  =item B<-list_dir>
6612
6632
 
@@ -7447,7 +7467,7 @@ the commands if B<-execute> was used).
7447
7467
 
7448
7468
  =head1 AUTHOR
7449
7469
 
7450
- Copyright 2003-2023, Phil Harvey
7470
+ Copyright 2003-2024, Phil Harvey
7451
7471
 
7452
7472
  This is free software; you can redistribute it and/or modify it under the
7453
7473
  same terms as Perl itself.
@@ -25,7 +25,7 @@
25
25
  #
26
26
  # May also be used for string i/o (just pass a scalar reference)
27
27
  #
28
- # Legal: Copyright (c) 2003-2023 Phil Harvey (philharvey66 at gmail.com)
28
+ # Legal: Copyright (c) 2003-2024, Phil Harvey (philharvey66 at gmail.com)
29
29
  # This library is free software; you can redistribute it and/or
30
30
  # modify it under the same terms as Perl itself.
31
31
  #------------------------------------------------------------------------------
@@ -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-2023 Phil Harvey (philharvey66 at gmail.com)
6
+ # Legal: Copyright (c) 2003-2024, 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-2023 Phil Harvey (philharvey66 at gmail.com)
239
+ Copyright 2003-2024, 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.
@@ -0,0 +1,177 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: AAC.pm
3
+ #
4
+ # Description: Read AAC audio files
5
+ #
6
+ # Revisions: 2023-12-29 - P. Harvey Created
7
+ #------------------------------------------------------------------------------
8
+
9
+ package Image::ExifTool::AAC;
10
+
11
+ use strict;
12
+ use vars qw($VERSION);
13
+ use Image::ExifTool qw(:DataAccess :Utils);
14
+ use Image::ExifTool::FLAC;
15
+
16
+ $VERSION = '1.00';
17
+
18
+ my %convSampleRate = (
19
+ 0 => 96000, 7 => 22050,
20
+ 1 => 88200, 8 => 16000,
21
+ 2 => 64000, 9 => 12000,
22
+ 3 => 48000, 10 => 11025,
23
+ 4 => 44100, 11 => 8000,
24
+ 5 => 32000, 12 => 7350,
25
+ 6 => 24000,
26
+ );
27
+
28
+ %Image::ExifTool::AAC::Main = (
29
+ PROCESS_PROC => \&Image::ExifTool::FLAC::ProcessBitStream,
30
+ GROUPS => { 2 => 'Audio' },
31
+ NOTES => 'Tags extracted from Advanced Audio Coding (AAC) files.',
32
+ # Bit000-011 - sync word (all 1's)
33
+ # Bit012 - ID (seems to be always 0)
34
+ # Bit013-014 - layer (00)
35
+ # Bit015 - CRC absent (0=crc exists, 1=no crc)
36
+ 'Bit016-017' => {
37
+ Name => 'ProfileType',
38
+ PrintConv => {
39
+ 0 => 'Main',
40
+ 1 => 'Low Complexity',
41
+ 2 => 'Scalable Sampling Rate',
42
+ },
43
+ },
44
+ 'Bit018-021' => {
45
+ Name => 'SampleRate',
46
+ ValueConv => \%convSampleRate,
47
+ },
48
+ # Bit022 - private
49
+ 'Bit023-025' => {
50
+ Name => 'Channels',
51
+ PrintConv => {
52
+ 0 => '?',
53
+ 1 => 1,
54
+ 2 => 2,
55
+ 3 => 3,
56
+ 4 => 4,
57
+ 5 => 5,
58
+ 6 => '5+1',
59
+ 7 => '7+1',
60
+ },
61
+ },
62
+ # Bit026 - original/copy
63
+ # Bit027 - home
64
+ # Bit028 - copyright ID
65
+ # Bit029 - copyright start
66
+ # Bit030-042 - FrameLength
67
+ # Bit043-053 - buffer fullness
68
+ # Bit054-055 - BlocksInFrame (minus 1)
69
+ # Note: Bitrate for frame = FrameLength * 8 * SampleRate / ((BlocksInFrame+1) * 1024)
70
+ # - but all frames must be scanned to calculate average bitrate
71
+ Encoder => {
72
+ Name => 'Encoder',
73
+ Notes => 'taken from filler payload of first frame',
74
+ },
75
+ );
76
+
77
+ #------------------------------------------------------------------------------
78
+ # Read information from an AAC file
79
+ # Inputs: 0) ExifTool object reference, 1) Directory information reference
80
+ # Returns: 1 on success, 0 if this wasn't a valid AAC file
81
+ sub ProcessAAC($$)
82
+ {
83
+ my ($et, $dirInfo) = @_;
84
+ my $raf = $$dirInfo{RAF};
85
+ my ($buff, $buf2);
86
+
87
+ # format of frame header (7 bytes):
88
+ # SSSS SSSS SSSS ILLC PPRR RRpC CCoh csff ffff ffff fffb bbbb bbbb bbNN
89
+ # 1111 1111 1111 0001 0110 0000 0100 0000 0000 0101 0101 1111 1111 1100 (eg.)
90
+ # S = sync word o = original/copy
91
+ # I = ID h = home
92
+ # L = layer (00) c = copyright ID
93
+ # C = CRC absent s = copyright start
94
+ # P = profile object type f = frame length
95
+ # R = sampling rate index b = buffer fullness
96
+ # p = private N = number of raw data blocks in frame
97
+ # C = channel configuration
98
+
99
+ $raf->Read($buff, 7) == 7 or return 0;
100
+ return 0 unless $buff =~ /^\xff[\xf0\xf1]/;
101
+ my @t = unpack('NnC', $buff);
102
+ return 0 if (($t[0] >> 16) & 0x03) == 3; # (reserved profile type)
103
+ return 0 if (($t[0] >> 12) & 0x0f) > 12; # validate sampling frequency index
104
+ my $len = (($t[0] << 11) & 0x1800) | (($t[1] >> 5) & 0x07ff);
105
+ return 0 if $len < 7;
106
+
107
+ $et->SetFileType();
108
+
109
+ my $tagTablePtr = GetTagTable('Image::ExifTool::AAC::Main');
110
+ $et->ProcessDirectory({ DataPt => \$buff }, $tagTablePtr);
111
+
112
+ # read the first frame data to check for a filler with the encoder name
113
+ while ($len > 8 and $raf->Read($buff, $len-7) == $len-7) {
114
+ my $noCRC = ($t[0] & 0x00010000);
115
+ my $blocks = ($t[2] & 0x03);
116
+ my $pos = 0;
117
+ $pos += 2 + 2 * $blocks unless $noCRC;
118
+ last if $pos + 2 > length($buff);
119
+ my $tmp = unpack("x${pos}n", $buff);
120
+ my $id = $tmp >> 13;
121
+ # read filler payload
122
+ if ($id == 6) {
123
+ my $cnt = ($tmp >> 9) & 0x0f;
124
+ ++$pos;
125
+ if ($cnt == 15) {
126
+ $cnt += (($tmp >> 1) & 0xff) - 1;
127
+ ++$pos;
128
+ }
129
+ if ($pos + $cnt <= length($buff)) {
130
+ my $dat = substr($buff, $pos, $cnt);
131
+ $dat =~ s/^\0+//;
132
+ $dat =~ s/\0+$//;
133
+ $et->HandleTag($tagTablePtr, Encoder => $dat) if $dat =~ /^[\x20-\x7e]+$/;
134
+ }
135
+ }
136
+ last;
137
+ }
138
+
139
+ return 1;
140
+ }
141
+
142
+ 1; # end
143
+
144
+ __END__
145
+
146
+ =head1 NAME
147
+
148
+ Image::ExifTool::AAC - Read AAC audio files
149
+
150
+ =head1 SYNOPSIS
151
+
152
+ This module is used by Image::ExifTool
153
+
154
+ =head1 DESCRIPTION
155
+
156
+ This module contains definitions required by Image::ExifTool to read
157
+ Advanced Audio Coding (AAC) files.
158
+
159
+ =head1 NOTES
160
+
161
+ Since ISO charges money for the official AAC specification, this module is
162
+ based on unofficial sources which may be incomplete, inaccurate or outdated.
163
+
164
+ =head1 AUTHOR
165
+
166
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
167
+
168
+ This library is free software; you can redistribute it and/or modify it
169
+ under the same terms as Perl itself.
170
+
171
+ =head1 SEE ALSO
172
+
173
+ L<Image::ExifTool::TagNames/AAC Tags>,
174
+ L<Image::ExifTool(3pm)|Image::ExifTool>
175
+
176
+ =cut
177
+
@@ -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-2023, Phil Harvey (philharvey66 at gmail.com)
480
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
262
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
290
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
266
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
308
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
879
+ Copyright 2003-2024, 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.
@@ -343,7 +343,7 @@ Apple maker notes in EXIF information.
343
343
 
344
344
  =head1 AUTHOR
345
345
 
346
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
346
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
347
347
 
348
348
  This library is free software; you can redistribute it and/or modify it
349
349
  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-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.
@@ -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-2023, Phil Harvey (philharvey66 at gmail.com)
338
+ Copyright 2003-2024, 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-2023, Phil Harvey (philharvey66 at gmail.com)
234
+ Copyright 2003-2024, 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.