exiftool-vendored.exe 12.70.0 → 12.73.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/bin/exiftool_files/Changes +53 -1
  2. package/bin/exiftool_files/README +11 -11
  3. package/bin/exiftool_files/exiftool.pl +49 -28
  4. package/bin/exiftool_files/lib/File/RandomAccess.pm +1 -1
  5. package/bin/exiftool_files/lib/File/RandomAccess.pod +2 -2
  6. package/bin/exiftool_files/lib/Image/ExifTool/AAC.pm +177 -0
  7. package/bin/exiftool_files/lib/Image/ExifTool/AES.pm +1 -1
  8. package/bin/exiftool_files/lib/Image/ExifTool/AFCP.pm +1 -1
  9. package/bin/exiftool_files/lib/Image/ExifTool/AIFF.pm +1 -1
  10. package/bin/exiftool_files/lib/Image/ExifTool/APE.pm +1 -1
  11. package/bin/exiftool_files/lib/Image/ExifTool/APP12.pm +1 -1
  12. package/bin/exiftool_files/lib/Image/ExifTool/ASF.pm +1 -1
  13. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +1 -1
  14. package/bin/exiftool_files/lib/Image/ExifTool/Audible.pm +1 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/BMP.pm +1 -1
  16. package/bin/exiftool_files/lib/Image/ExifTool/BPG.pm +1 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/BZZ.pm +1 -1
  18. package/bin/exiftool_files/lib/Image/ExifTool/BigTIFF.pm +1 -1
  19. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +4 -3
  20. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +1 -1
  21. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +22 -7
  22. package/bin/exiftool_files/lib/Image/ExifTool/CanonCustom.pm +1 -1
  23. package/bin/exiftool_files/lib/Image/ExifTool/CanonRaw.pm +1 -1
  24. package/bin/exiftool_files/lib/Image/ExifTool/CanonVRD.pm +1 -1
  25. package/bin/exiftool_files/lib/Image/ExifTool/CaptureOne.pm +1 -1
  26. package/bin/exiftool_files/lib/Image/ExifTool/Casio.pm +1 -1
  27. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +1 -1
  28. package/bin/exiftool_files/lib/Image/ExifTool/DICOM.pm +1 -1
  29. package/bin/exiftool_files/lib/Image/ExifTool/DJI.pm +1 -1
  30. package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +1 -1
  31. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +1 -1
  32. package/bin/exiftool_files/lib/Image/ExifTool/DV.pm +1 -1
  33. package/bin/exiftool_files/lib/Image/ExifTool/DarwinCore.pm +1 -1
  34. package/bin/exiftool_files/lib/Image/ExifTool/DjVu.pm +1 -1
  35. package/bin/exiftool_files/lib/Image/ExifTool/EXE.pm +1 -1
  36. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +31 -10
  37. package/bin/exiftool_files/lib/Image/ExifTool/FITS.pm +1 -1
  38. package/bin/exiftool_files/lib/Image/ExifTool/FLAC.pm +1 -1
  39. package/bin/exiftool_files/lib/Image/ExifTool/FLIF.pm +1 -1
  40. package/bin/exiftool_files/lib/Image/ExifTool/FLIR.pm +1 -1
  41. package/bin/exiftool_files/lib/Image/ExifTool/Fixup.pm +1 -1
  42. package/bin/exiftool_files/lib/Image/ExifTool/Flash.pm +1 -1
  43. package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +60 -7
  44. package/bin/exiftool_files/lib/Image/ExifTool/Font.pm +1 -1
  45. package/bin/exiftool_files/lib/Image/ExifTool/FotoStation.pm +1 -1
  46. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +6 -3
  47. package/bin/exiftool_files/lib/Image/ExifTool/GE.pm +1 -1
  48. package/bin/exiftool_files/lib/Image/ExifTool/GIF.pm +1 -1
  49. package/bin/exiftool_files/lib/Image/ExifTool/GIMP.pm +1 -1
  50. package/bin/exiftool_files/lib/Image/ExifTool/GPS.pm +1 -1
  51. package/bin/exiftool_files/lib/Image/ExifTool/GeoTiff.pm +1 -1
  52. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +1 -1
  53. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +17 -2
  54. package/bin/exiftool_files/lib/Image/ExifTool/H264.pm +1 -1
  55. package/bin/exiftool_files/lib/Image/ExifTool/HP.pm +1 -1
  56. package/bin/exiftool_files/lib/Image/ExifTool/HTML.pm +1 -1
  57. package/bin/exiftool_files/lib/Image/ExifTool/HtmlDump.pm +1 -1
  58. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  59. package/bin/exiftool_files/lib/Image/ExifTool/ICO.pm +1 -1
  60. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +8 -5
  61. package/bin/exiftool_files/lib/Image/ExifTool/IPTC.pm +1 -1
  62. package/bin/exiftool_files/lib/Image/ExifTool/ISO.pm +1 -1
  63. package/bin/exiftool_files/lib/Image/ExifTool/ITC.pm +1 -1
  64. package/bin/exiftool_files/lib/Image/ExifTool/Import.pm +1 -1
  65. package/bin/exiftool_files/lib/Image/ExifTool/InDesign.pm +1 -1
  66. package/bin/exiftool_files/lib/Image/ExifTool/InfiRay.pm +1 -1
  67. package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +5 -2
  68. package/bin/exiftool_files/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  69. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +5 -2
  70. package/bin/exiftool_files/lib/Image/ExifTool/JVC.pm +3 -3
  71. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +17 -6
  72. package/bin/exiftool_files/lib/Image/ExifTool/Kodak.pm +1 -1
  73. package/bin/exiftool_files/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  74. package/bin/exiftool_files/lib/Image/ExifTool/LIF.pm +1 -1
  75. package/bin/exiftool_files/lib/Image/ExifTool/LNK.pm +1 -1
  76. package/bin/exiftool_files/lib/Image/ExifTool/Lang/cs.pm +1 -1
  77. package/bin/exiftool_files/lib/Image/ExifTool/Lang/de.pm +1 -1
  78. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  79. package/bin/exiftool_files/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  80. package/bin/exiftool_files/lib/Image/ExifTool/Lang/es.pm +4 -4
  81. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fi.pm +1 -1
  82. package/bin/exiftool_files/lib/Image/ExifTool/Lang/fr.pm +4 -5
  83. package/bin/exiftool_files/lib/Image/ExifTool/Lang/it.pm +3 -3
  84. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ja.pm +1 -1
  85. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ko.pm +1 -1
  86. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +1 -1
  87. package/bin/exiftool_files/lib/Image/ExifTool/Lang/pl.pm +1 -1
  88. package/bin/exiftool_files/lib/Image/ExifTool/Lang/ru.pm +1 -1
  89. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sk.pm +1 -1
  90. package/bin/exiftool_files/lib/Image/ExifTool/Lang/sv.pm +1 -1
  91. package/bin/exiftool_files/lib/Image/ExifTool/Lang/tr.pm +1 -1
  92. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  93. package/bin/exiftool_files/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  94. package/bin/exiftool_files/lib/Image/ExifTool/Leaf.pm +3 -3
  95. package/bin/exiftool_files/lib/Image/ExifTool/Lytro.pm +1 -1
  96. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +22 -17
  97. package/bin/exiftool_files/lib/Image/ExifTool/MIE.pm +3 -3
  98. package/bin/exiftool_files/lib/Image/ExifTool/MIEUnits.pod +1 -1
  99. package/bin/exiftool_files/lib/Image/ExifTool/MIFF.pm +1 -1
  100. package/bin/exiftool_files/lib/Image/ExifTool/MISB.pm +1 -1
  101. package/bin/exiftool_files/lib/Image/ExifTool/MNG.pm +1 -1
  102. package/bin/exiftool_files/lib/Image/ExifTool/MOI.pm +1 -1
  103. package/bin/exiftool_files/lib/Image/ExifTool/MPC.pm +1 -1
  104. package/bin/exiftool_files/lib/Image/ExifTool/MPEG.pm +1 -1
  105. package/bin/exiftool_files/lib/Image/ExifTool/MPF.pm +1 -1
  106. package/bin/exiftool_files/lib/Image/ExifTool/MRC.pm +1 -1
  107. package/bin/exiftool_files/lib/Image/ExifTool/MWG.pm +1 -1
  108. package/bin/exiftool_files/lib/Image/ExifTool/MXF.pm +1 -1
  109. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +1 -1
  110. package/bin/exiftool_files/lib/Image/ExifTool/MakerNotes.pm +1 -1
  111. package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +1 -1
  112. package/bin/exiftool_files/lib/Image/ExifTool/Microsoft.pm +1 -1
  113. package/bin/exiftool_files/lib/Image/ExifTool/Minolta.pm +1 -1
  114. package/bin/exiftool_files/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  115. package/bin/exiftool_files/lib/Image/ExifTool/Motorola.pm +1 -1
  116. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +166 -97
  117. package/bin/exiftool_files/lib/Image/ExifTool/NikonCapture.pm +1 -1
  118. package/bin/exiftool_files/lib/Image/ExifTool/NikonCustom.pm +1 -1
  119. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +1 -1
  120. package/bin/exiftool_files/lib/Image/ExifTool/Nintendo.pm +1 -1
  121. package/bin/exiftool_files/lib/Image/ExifTool/OOXML.pm +1 -1
  122. package/bin/exiftool_files/lib/Image/ExifTool/Ogg.pm +1 -1
  123. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +1 -1
  124. package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +1 -1
  125. package/bin/exiftool_files/lib/Image/ExifTool/Opus.pm +1 -1
  126. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +1 -1
  127. package/bin/exiftool_files/lib/Image/ExifTool/PCX.pm +1 -1
  128. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +1 -1
  129. package/bin/exiftool_files/lib/Image/ExifTool/PGF.pm +1 -1
  130. package/bin/exiftool_files/lib/Image/ExifTool/PICT.pm +1 -1
  131. package/bin/exiftool_files/lib/Image/ExifTool/PLIST.pm +1 -1
  132. package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +1 -1
  133. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +24 -2
  134. package/bin/exiftool_files/lib/Image/ExifTool/PPM.pm +1 -1
  135. package/bin/exiftool_files/lib/Image/ExifTool/PSP.pm +1 -1
  136. package/bin/exiftool_files/lib/Image/ExifTool/Palm.pm +1 -1
  137. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +27 -2
  138. package/bin/exiftool_files/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  139. package/bin/exiftool_files/lib/Image/ExifTool/Parrot.pm +1 -1
  140. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +46 -16
  141. package/bin/exiftool_files/lib/Image/ExifTool/PhaseOne.pm +4 -4
  142. package/bin/exiftool_files/lib/Image/ExifTool/PhotoCD.pm +1 -1
  143. package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  144. package/bin/exiftool_files/lib/Image/ExifTool/Photoshop.pm +1 -1
  145. package/bin/exiftool_files/lib/Image/ExifTool/PostScript.pm +1 -1
  146. package/bin/exiftool_files/lib/Image/ExifTool/PrintIM.pm +1 -1
  147. package/bin/exiftool_files/lib/Image/ExifTool/Qualcomm.pm +1 -1
  148. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +50 -11
  149. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +148 -12
  150. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +1 -1
  151. package/bin/exiftool_files/lib/Image/ExifTool/RSRC.pm +1 -1
  152. package/bin/exiftool_files/lib/Image/ExifTool/RTF.pm +1 -1
  153. package/bin/exiftool_files/lib/Image/ExifTool/Radiance.pm +1 -1
  154. package/bin/exiftool_files/lib/Image/ExifTool/Rawzor.pm +1 -1
  155. package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +1 -1
  156. package/bin/exiftool_files/lib/Image/ExifTool/Reconyx.pm +1 -1
  157. package/bin/exiftool_files/lib/Image/ExifTool/Red.pm +1 -1
  158. package/bin/exiftool_files/lib/Image/ExifTool/Ricoh.pm +111 -3
  159. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +4 -3
  160. package/bin/exiftool_files/lib/Image/ExifTool/Sanyo.pm +1 -1
  161. package/bin/exiftool_files/lib/Image/ExifTool/Scalado.pm +1 -1
  162. package/bin/exiftool_files/lib/Image/ExifTool/Shift.pl +1 -1
  163. package/bin/exiftool_files/lib/Image/ExifTool/Shortcuts.pm +1 -1
  164. package/bin/exiftool_files/lib/Image/ExifTool/Sigma.pm +1 -1
  165. package/bin/exiftool_files/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  166. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +85 -6
  167. package/bin/exiftool_files/lib/Image/ExifTool/SonyIDC.pm +1 -1
  168. package/bin/exiftool_files/lib/Image/ExifTool/Stim.pm +1 -1
  169. package/bin/exiftool_files/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  170. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +4878 -4830
  171. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +11518 -11379
  172. package/bin/exiftool_files/lib/Image/ExifTool/Text.pm +1 -1
  173. package/bin/exiftool_files/lib/Image/ExifTool/Theora.pm +1 -1
  174. package/bin/exiftool_files/lib/Image/ExifTool/Torrent.pm +1 -1
  175. package/bin/exiftool_files/lib/Image/ExifTool/Unknown.pm +1 -1
  176. package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +1 -1
  177. package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +1 -1
  178. package/bin/exiftool_files/lib/Image/ExifTool/Vorbis.pm +1 -1
  179. package/bin/exiftool_files/lib/Image/ExifTool/WPG.pm +1 -1
  180. package/bin/exiftool_files/lib/Image/ExifTool/WTV.pm +1 -1
  181. package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  182. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +20 -5
  183. package/bin/exiftool_files/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  184. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -1
  185. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +1 -1
  186. package/bin/exiftool_files/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  187. package/bin/exiftool_files/lib/Image/ExifTool/WritePostScript.pl +1 -1
  188. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +4 -1
  189. package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  190. package/bin/exiftool_files/lib/Image/ExifTool/WriteXMP.pl +5 -3
  191. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +87 -15
  192. package/bin/exiftool_files/lib/Image/ExifTool/XISF.pm +1 -1
  193. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +19 -3
  194. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +1 -1
  195. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +1 -1
  196. package/bin/exiftool_files/lib/Image/ExifTool/ZIP.pm +1 -1
  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 +35 -8
  200. package/bin/exiftool_files/lib/Image/ExifTool.pod +29 -16
  201. package/package.json +5 -4
@@ -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
@@ -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.
@@ -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;
@@ -49,6 +49,7 @@ sub ConvertBinary($);
49
49
  sub IsEqual($$);
50
50
  sub Infile($;$);
51
51
  sub AddSetTagsFile($;$);
52
+ sub Warning($$);
52
53
  sub DoSetFromFile($$$);
53
54
  sub CleanFilename($);
54
55
  sub SetWindowTitle($);
@@ -1639,7 +1640,10 @@ if (@newValues) {
1639
1640
  if ($tag =~ /^(All)?TagsFromFile$/i) {
1640
1641
  defined $newVal or Error("Need file name for -tagsFromFile\n"), next Command;
1641
1642
  ++$isWriting;
1642
- if ($newVal eq '@' or not defined FilenameSPrintf($newVal)) {
1643
+ if ($newVal eq '@' or not defined FilenameSPrintf($newVal) or
1644
+ # can't set tags yet if we are using tags from other files with the -fileNUM option
1645
+ grep /\bfile\d+:/i, @{$setTags{$newVal}})
1646
+ {
1643
1647
  push @dynamicFiles, $newVal;
1644
1648
  next; # set tags from dynamic file later
1645
1649
  }
@@ -1699,7 +1703,7 @@ if (@newValues) {
1699
1703
  my ($rtn, $wrn) = $mt->SetNewValue($tag, $newVal, %opts);
1700
1704
  $needSave = 1;
1701
1705
  ++$isWriting if $rtn;
1702
- $wrn and Warn "Warning: $wrn\n";
1706
+ $wrn and Warning($mt, $wrn);
1703
1707
  }
1704
1708
  # exclude specified tags
1705
1709
  foreach (@exclude) {
@@ -2712,7 +2716,7 @@ TAG: foreach $tag (@foundTags) {
2712
2716
  $padLen -= $gcstr->columns;
2713
2717
  } else {
2714
2718
  $padLen -= length Encode::decode_utf8($desc);
2715
- Warn "Warning: Unicode::GCString problem. Columns may be misaligned\n";
2719
+ Warning($et, 'Unicode::GCString problem. Columns may be misaligned');
2716
2720
  $fixLen = 1;
2717
2721
  }
2718
2722
  }
@@ -2982,7 +2986,7 @@ sub SetImageInfo($$$)
2982
2986
  my $newFileName = $et->GetNewValues('FileName');
2983
2987
  my $newDir = $et->GetNewValues('Directory');
2984
2988
  if (defined $newFileName and not length $newFileName) {
2985
- Warn "Warning: New file name is empty - $ infile\n";
2989
+ Warning($et,"New file name is empty - $infile");
2986
2990
  undef $newFileName;
2987
2991
  }
2988
2992
  if (defined $testName) {
@@ -3641,9 +3645,22 @@ sub Infile($;$)
3641
3645
  return $file;
3642
3646
  }
3643
3647
 
3648
+ #------------------------------------------------------------------------------
3649
+ # Issue warning to stderr, adding leading "Warning: " and trailing newline
3650
+ # if the warning isn't suppressed by the API NoWarning option
3651
+ # Inputs: 0) ExifTool ref, 1) warning string
3652
+ sub Warning($$)
3653
+ {
3654
+ my ($et, $str) = @_;
3655
+ my $noWarn = $et->Options('NoWarning');
3656
+ if (not defined $noWarn or not eval { $str =~ /$noWarn/ }) {
3657
+ Warn "Warning: $str\n";
3658
+ }
3659
+ }
3660
+
3644
3661
  #------------------------------------------------------------------------------
3645
3662
  # Set new values from file
3646
- # Inputs: 0) exiftool ref, 1) filename, 2) reference to list of values to set
3663
+ # Inputs: 0) ExifTool ref, 1) filename, 2) reference to list of values to set
3647
3664
  # Returns: 0 on error (and increments $countBadWr)
3648
3665
  sub DoSetFromFile($$$)
3649
3666
  {
@@ -3656,19 +3673,18 @@ sub DoSetFromFile($$$)
3656
3673
  # delete all error and warning tags
3657
3674
  my @warns = grep /^(Error|Warning)\b/, keys %$info;
3658
3675
  $numSet -= scalar(@warns);
3659
- # issue a warning for the main error only if we were able to set some tags
3660
- if (keys(%$info) > @warns) {
3661
- my $err = $$info{Error};
3662
- delete $$info{$_} foreach @warns;
3663
- $$info{Warning} = $err;
3664
- }
3676
+ # issue a warning only for the main error
3677
+ my $err = $$info{Error};
3678
+ delete $$info{$_} foreach @warns;
3679
+ my $noWarn = $et->Options('NoWarning');
3680
+ $$info{Warning} = $err unless defined $noWarn and eval { $err =~ /$noWarn/ };
3665
3681
  } elsif ($$info{Warning}) {
3666
3682
  my $warns = 1;
3667
3683
  ++$warns while $$info{"Warning ($warns)"};
3668
3684
  $numSet -= $warns;
3669
3685
  }
3670
3686
  PrintErrors($et, $info, $file) and EFile($file), ++$countBadWr, return 0;
3671
- Warn "Warning: No writable tags set from $file\n" unless $numSet;
3687
+ Warning($et,"No writable tags set from $file") unless $numSet;
3672
3688
  return 1;
3673
3689
  }
3674
3690
 
@@ -3814,7 +3830,7 @@ sub ScanDir($$;$)
3814
3830
  if ($evalWarning) {
3815
3831
  chomp $evalWarning;
3816
3832
  $evalWarning =~ s/ at .*//s;
3817
- Warn "Warning: [Win32::FindFile] $evalWarning - $dir\n";
3833
+ Warning($et,"[Win32::FindFile] $evalWarning - $dir");
3818
3834
  $winSurrogate = 1 if $evalWarning =~ /surrogate/;
3819
3835
  } else {
3820
3836
  $et->Options(CharsetFileName => 'UTF8'); # now using UTF8
@@ -4636,13 +4652,14 @@ DESCRIPTION
4636
4652
 
4637
4653
  File Types
4638
4654
  ------------+-------------+-------------+-------------+------------
4639
- 360 r/w | DPX r | ITC r | NUMBERS r | RAW r/w
4640
- 3FR r | DR4 r/w/c | J2C r | O r | RIFF r
4641
- 3G2 r/w | DSS r | JNG r/w | ODP r | RSRC r
4642
- 3GP r/w | DV r | JP2 r/w | ODS r | RTF r
4643
- 7Z r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
4644
- A r | DVR-MS r | JSON r | OFR r | RWL r/w
4645
- AA r | DYLIB r | JXL r | OGG r | RWZ r
4655
+ 360 r/w | DOCX r | ISO r | NRW r/w | RAR r
4656
+ 3FR r | DPX r | ITC r | NUMBERS r | RAW r/w
4657
+ 3G2 r/w | DR4 r/w/c | J2C r | O r | RIFF r
4658
+ 3GP r/w | DSS r | JNG r/w | ODP r | RSRC r
4659
+ 7Z r | DV r | JP2 r/w | ODS r | RTF r
4660
+ A r | DVB r/w | JPEG r/w | ODT r | RW2 r/w
4661
+ AA r | DVR-MS r | JSON r | OFR r | RWL r/w
4662
+ AAC r | DYLIB r | JXL r | OGG r | RWZ r
4646
4663
  AAE r | EIP r | K25 r | OGV r | RM r
4647
4664
  AAX r/w | EPS r/w | KDC r | ONP r | SEQ r
4648
4665
  ACR r | EPUB r | KEY r | OPUS r | SKETCH r
@@ -4678,7 +4695,6 @@ DESCRIPTION
4678
4695
  DLL r | INSP r/w | MXF r | RA r | XLSX r
4679
4696
  DNG r/w | INSV r | NEF r/w | RAF r/w | XMP r/w/c
4680
4697
  DOC r | INX r | NKSC r/w | RAM r | ZIP r
4681
- DOCX r | ISO r | NRW r/w | RAR r |
4682
4698
 
4683
4699
  Meta Information
4684
4700
  ----------------------+----------------------+---------------------
@@ -5458,7 +5474,7 @@ OPTIONS
5458
5474
  file must have the same format as the exported JSON files with the
5459
5475
  exception that options exporting JSON objects instead of simple
5460
5476
  values are not compatible with the import file format (ie. export
5461
- with -D, -H, -l, or -T is not compatable, and use -G instead of
5477
+ with -D, -H, -l, or -T is not compatible, and use -G instead of
5462
5478
  -g). Additionally, tag names in the input JSON file may be suffixed
5463
5479
  with a "#" to disable print conversion.
5464
5480
 
@@ -5604,7 +5620,7 @@ OPTIONS
5604
5620
 
5605
5621
  produces output like this:
5606
5622
 
5607
- -- Generated by ExifTool 12.70 --
5623
+ -- Generated by ExifTool 12.73 --
5608
5624
  File: a.jpg - 2003:10:31 15:44:19
5609
5625
  (f/5.6, 1/60s, ISO 100)
5610
5626
  File: b.jpg - 2006:05:23 11:57:38
@@ -6606,10 +6622,15 @@ OPTIONS
6606
6622
  OriginalFileName tag has been set in the edited file, a command to
6607
6623
  copy Rights from the original file could look like this:
6608
6624
 
6609
- exiftool -file1 "$originalfilename" "-rights<file1:rights" edited.jpg
6625
+ exiftool -file1 '$originalfilename' '-rights<file1:rights' edited.jpg
6626
+
6627
+ Subtle note: If a -tagsFromFile option is used, tags in the
6628
+ *ALTFILE* argument come from the *SRCFILE* that applies to the
6629
+ first argument accessing tags from the corresponding "FileNUM"
6630
+ group.
6610
6631
 
6611
- Composite tags may access tags from alternate files using the
6612
- appropriate (case-sensitive) family 8 group name.
6632
+ User-defined Composite tags may access tags from alternate files
6633
+ using the appropriate (case-sensitive) family 8 group name.
6613
6634
 
6614
6635
  -list_dir
6615
6636
  List directories themselves instead of their contents. This option
@@ -7343,7 +7364,7 @@ EXIT STATUS
7343
7364
  the commands if -execute was used).
7344
7365
 
7345
7366
  AUTHOR
7346
- Copyright 2003-2022, Phil Harvey
7367
+ Copyright 2003-2024, Phil Harvey
7347
7368
 
7348
7369
  This is free software; you can redistribute it and/or modify it under
7349
7370
  the 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.
@@ -445,7 +445,7 @@ compression ability).
445
445
 
446
446
  =head1 AUTHOR
447
447
 
448
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
448
+ Copyright 2003-2024, 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.
@@ -282,7 +282,7 @@ information in BigTIFF images.
282
282
 
283
283
  =head1 AUTHOR
284
284
 
285
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
285
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
286
286
 
287
287
  This library is free software; you can redistribute it and/or modify it
288
288
  under the same terms as Perl itself.
@@ -219,7 +219,8 @@ writable directly, but is written automatically by ExifTool (often when a
219
219
  corresponding L<Composite|Image::ExifTool::TagNames/Composite Tags> or
220
220
  L<Extra|Image::ExifTool::TagNames/Extra Tags> tag is written). A colon
221
221
  (C<:>) indicates a I<Mandatory> tag which may be added automatically when
222
- writing. Normally MakerNotes tags may not be deleted individually, but a
222
+ writing (use the API L<NoMandatory|../ExifTool.html#NoMandatory> option to avoid creating mandatory EXIF
223
+ tags). Normally MakerNotes tags may not be deleted individually, but a
223
224
  caret (C<^>) indicates a I<Deletable> MakerNotes tag.
224
225
 
225
226
  The HTML version of these tables also lists possible B<Values> for
@@ -679,7 +680,7 @@ L<Image::ExifTool::BuildTagLookup|Image::ExifTool::BuildTagLookup>.
679
680
 
680
681
  ~head1 AUTHOR
681
682
 
682
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
683
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
683
684
 
684
685
  This library is free software; you can redistribute it and/or modify it
685
686
  under the same terms as Perl itself.
@@ -2779,7 +2780,7 @@ Returned list of writable pseudo tags.
2779
2780
 
2780
2781
  =head1 AUTHOR
2781
2782
 
2782
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
2783
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2783
2784
 
2784
2785
  This library is free software; you can redistribute it and/or modify it
2785
2786
  under the same terms as Perl itself.
@@ -321,7 +321,7 @@ specification.
321
321
 
322
322
  =head1 AUTHOR
323
323
 
324
- Copyright 2003-2023, Phil Harvey (philharvey66 at gmail.com)
324
+ Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
325
325
 
326
326
  This library is free software; you can redistribute it and/or modify it
327
327
  under the same terms as Perl itself.