exiftool_vendored 12.13.0 → 12.17.1

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 (196) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +61 -4
  3. data/bin/MANIFEST +3 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +3 -3
  7. data/bin/exiftool +63 -43
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool.pm +36 -3
  11. data/bin/lib/Image/ExifTool.pod +9 -7
  12. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  13. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  14. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  15. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  16. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  17. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  19. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  24. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +9 -7
  25. data/bin/lib/Image/ExifTool/Canon.pm +3 -2
  26. data/bin/lib/Image/ExifTool/CanonCustom.pm +20 -2
  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 +28 -2
  34. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DPX.pm +4 -4
  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 +45 -16
  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 +1 -1
  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 +3 -2
  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 +6 -6
  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 +1 -1
  58. data/bin/lib/Image/ExifTool/H264.pm +21 -6
  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/ID3.pm +1 -1
  64. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  68. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. data/bin/lib/Image/ExifTool/JPEG.pm +24 -2
  70. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  72. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Jpeg2000.pm +9 -4
  74. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  75. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  76. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  77. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  96. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  97. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  98. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  99. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  100. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  101. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  102. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  103. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  109. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  110. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  111. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  113. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  114. data/bin/lib/Image/ExifTool/Nikon.pm +312 -34
  115. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  116. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  117. data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
  118. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  119. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  120. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  122. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  124. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  125. data/bin/lib/Image/ExifTool/PDF.pm +10 -2
  126. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  127. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  128. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  129. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  130. data/bin/lib/Image/ExifTool/PNG.pm +12 -4
  131. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  134. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  136. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  137. data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
  138. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  141. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  145. data/bin/lib/Image/ExifTool/QuickTime.pm +12 -6
  146. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +46 -7
  147. data/bin/lib/Image/ExifTool/README +5 -4
  148. data/bin/lib/Image/ExifTool/RIFF.pm +85 -7
  149. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  150. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  153. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  161. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  163. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Sony.pm +4 -2
  165. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  167. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  168. data/bin/lib/Image/ExifTool/TagLookup.pm +3985 -3811
  169. data/bin/lib/Image/ExifTool/TagNames.pod +422 -21
  170. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  173. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  174. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  175. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  177. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  178. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  179. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  180. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  181. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  182. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  183. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  184. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  185. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
  186. data/bin/lib/Image/ExifTool/WriteXMP.pl +10 -7
  187. data/bin/lib/Image/ExifTool/Writer.pl +17 -7
  188. data/bin/lib/Image/ExifTool/XMP.pm +44 -9
  189. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  190. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  191. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  192. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  193. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  194. data/bin/perl-Image-ExifTool.spec +1 -1
  195. data/lib/exiftool_vendored/version.rb +1 -1
  196. metadata +36 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db3a7aa5240badd765f9044226898f1fdd5d89286ae3229cc33e303a07a66650
4
- data.tar.gz: ed260754d2395c78de549a723c77f3231859f235d61cdd9d0c9defb5d26a537f
3
+ metadata.gz: d80826479c3ca8c2e3cfaf71aac23fb1d19de4d2b204fb5cce97d17315744c4c
4
+ data.tar.gz: b42b14d289558856c2cef660d6ff16592c814fcf3ec8f106e5edb4b62dd26e5d
5
5
  SHA512:
6
- metadata.gz: d582b2f2893382ee400e160a908c685fd7b8b3e88a8dc06548bb9092b49695ca8ae109e8eae68805d710933705f1cad8ead1e159e2d0b5051d93b95677ba4a2c
7
- data.tar.gz: e5225a46e4d1805467cec7bb4e23ff9e2215dffcf6f1964067455de022739b406d21ff7df9faf32ed37ebd257d2a46842519e6f096c5d0f8d86dd39b236c56f2
6
+ metadata.gz: 928b5a6323959d076b93102f6e7d980b2ef6936a90b77542fbbbb73e9ab767c5767c9a63d1073e8374aec816979d76f5c9e45342a50408426d43c1ee60a03b99
7
+ data.tar.gz: b86d1b66ca9d01bb8d4261f25cf4daaed9698a407332211559cdb253fd997ea4eaaac9535f874ee55bb1131e7729f145e3aca26d5d0d85512d957bd018c6efc7
data/bin/Changes CHANGED
@@ -4,16 +4,73 @@ ExifTool Version History
4
4
 
5
5
  RSS feed: https://exiftool.org/rss.xml
6
6
 
7
- Note: The most recent production release is Version 12.00. (Other versions are
7
+ Note: The most recent production release is Version 12.16. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ Feb. 3, 2021 - Version 12.17
11
+
12
+ - Added a new Canon FocusMode value
13
+ - Added a new FujiFilm FilmMode value
14
+ - Added a number of new XMP-crs tags (thanks Herb)
15
+ - Decode a new H264 MDPM tag
16
+ - Allow non-conforming lower-case XMP boolean "true" and "false" values to be
17
+ written, but only when print conversion is disabled
18
+ - Improved Validate option to warn about non-capitalized boolean XMP values
19
+ - Improved logic for setting GPSLatitude/LongitudeRef values when writing
20
+ - Changed -json and -php options so the -a option is implied even without the
21
+ -g option
22
+ - Avoid extracting audio/video data from AVI videos when -ee -u is used
23
+ - Patched decoding of Canon ContinuousShootingSpeed for newer firmware
24
+ versions of the EOS-1DXmkIII
25
+ - Re-worked LensID patch of version 12.00 (github issue #51)
26
+ - Fixed a few typos in newly-added NikonSettings tags (thanks Herb)
27
+ - Fixed problem where group could not be specified for PNG-pHYs tags when
28
+ writing
29
+
30
+ Jan. 21, 2021 - Version 12.16 (production release)
31
+
32
+ - Extract another form of video subtitle text
33
+ - Enhanced -ee option with -ee2 and -ee3 to allow parsing of the H264 video
34
+ stream in MP4 files
35
+ - Changed a Nikon FlashMode value
36
+ - Fixed problem that caused a failed DPX test on Strawberry Perl
37
+ - API Changes:
38
+ - Enhanced ExtractEmbedded option
39
+
40
+ Jan. 18, 2021 - Version 12.15 (production release)
41
+
42
+ - Added a couple of new Sony LensType values (thanks LibRaw and Jos Roost)
43
+ - Added a new Nikon FlashMode value (thanks Mike)
44
+ - Decode NikonSettings (thanks Warren Hatch)
45
+ - Decode thermal information from DJI RJPEG images
46
+ - Fixed extra newline in -echo3 and -echo4 outputs added in version 12.10
47
+ - Fixed out-of-memory problem when writing some very large PNG files under
48
+ Windows
49
+
50
+ Jan. 6, 2021 - Version 12.14
51
+
52
+ - Added support for 2 more types of timed GPS in video files (that makes 49
53
+ different formats now supported)
54
+ - Added validity check for PDF trailer dictionary Size
55
+ - Added a new Pentax LensType
56
+ - Extract metadata from Jpeg2000 Association box
57
+ - Changed -g:XX:YY and -G:XX:YY options to show empty strings for non-existent
58
+ groups
59
+ - Patched to issue warning and avoid writing date/time values with a zero
60
+ month or day number
61
+ - Patched to avoid runtime warnings if trying to set FileName to an empty
62
+ string
63
+ - Fixed issue that could cause GPS test number 12 to fail on some systems
64
+ - Fixed problem extracting XML as a block from Jpeg2000 images, and extract
65
+ XML tags in the XML group instead of XMP
66
+
10
67
  Dec. 24, 2020 - Version 12.13
11
68
 
12
- - Add time zone automatically to most string-based QuickTime date/time tags
13
- when writing unless the PrintConv option is disabled
14
69
  - Added -i HIDDEN option to ignore files with names that start with "."
15
70
  - Added a few new Nikon ShutterMode values (thanks Jan Skoda)
16
71
  - Added ability to write Google GCamera MicroVideo XMP tags
72
+ - Add time zone automatically to most string-based QuickTime date/time tags
73
+ when writing unless the PrintConv option is disabled
17
74
  - Decode a new Sony tag (thanks LibRaw)
18
75
  - Changed behaviour when writing only pseudo tags to return an error and avoid
19
76
  writing any other tags if writing FileName fails
@@ -185,7 +242,7 @@ July 27, 2020 - Version 12.02
185
242
  - Improved decoding of some Canon EOS 1DXmkIII custom functions
186
243
  - Allow integer QuickTime TrackNumber and DiskNumber values
187
244
  - Relax validity check of QuickTime:ContentCreateDate when writing with -n
188
- - Removed "Com" from the start of some unknown ItemList tag names
245
+ - Removed "Com" from the start of some unknown QuickTime ItemList tag names
189
246
  - Patched CanonCustom decoding for bug in Canon EOS-1DX firmware
190
247
  - Changed QuickTime CleanAperture tags decode as signed rationals
191
248
 
data/bin/MANIFEST CHANGED
@@ -115,6 +115,7 @@ html/TagNames/Motorola.html
115
115
  html/TagNames/Nikon.html
116
116
  html/TagNames/NikonCapture.html
117
117
  html/TagNames/NikonCustom.html
118
+ html/TagNames/NikonSettings.html
118
119
  html/TagNames/Nintendo.html
119
120
  html/TagNames/OOXML.html
120
121
  html/TagNames/Ogg.html
@@ -337,6 +338,7 @@ lib/Image/ExifTool/Motorola.pm
337
338
  lib/Image/ExifTool/Nikon.pm
338
339
  lib/Image/ExifTool/NikonCapture.pm
339
340
  lib/Image/ExifTool/NikonCustom.pm
341
+ lib/Image/ExifTool/NikonSettings.pm
340
342
  lib/Image/ExifTool/Nintendo.pm
341
343
  lib/Image/ExifTool/OOXML.pm
342
344
  lib/Image/ExifTool/Ogg.pm
@@ -603,6 +605,7 @@ t/Jpeg2000.t
603
605
  t/Jpeg2000_2.out
604
606
  t/Jpeg2000_3.out
605
607
  t/Jpeg2000_4.out
608
+ t/Jpeg2000_5.out
606
609
  t/Kodak.t
607
610
  t/Kodak_2.out
608
611
  t/Kodak_3.out
data/bin/META.json CHANGED
@@ -47,5 +47,5 @@
47
47
  }
48
48
  },
49
49
  "release_status" : "stable",
50
- "version" : "12.13"
50
+ "version" : "12.17"
51
51
  }
data/bin/META.yml CHANGED
@@ -28,4 +28,4 @@ recommends:
28
28
  Time::HiRes: 0
29
29
  requires:
30
30
  perl: 5.004
31
- version: 12.13
31
+ version: 12.17
data/bin/README CHANGED
@@ -106,8 +106,8 @@ your home directory, then you would type the following commands in a
106
106
  terminal window to extract and run ExifTool:
107
107
 
108
108
  cd ~/Desktop
109
- gzip -dc Image-ExifTool-12.13.tar.gz | tar -xf -
110
- cd Image-ExifTool-12.13
109
+ gzip -dc Image-ExifTool-12.17.tar.gz | tar -xf -
110
+ cd Image-ExifTool-12.17
111
111
  ./exiftool t/images/ExifTool.jpg
112
112
 
113
113
  Note: These commands extract meta information from one of the test images.
@@ -161,7 +161,7 @@ for calculating digest values and providing other features listed below:
161
161
 
162
162
  COPYRIGHT AND LICENSE
163
163
 
164
- Copyright 2003-2020, Phil Harvey
164
+ Copyright 2003-2021, Phil Harvey
165
165
 
166
166
  This is free software; you can redistribute it and/or modify it under the
167
167
  same terms as Perl itself.
data/bin/exiftool CHANGED
@@ -10,7 +10,7 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '12.13';
13
+ my $version = '12.17';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -371,12 +371,12 @@ if (grep /^-common_args$/i, @ARGV) {
371
371
  Command: for (;;) {
372
372
 
373
373
  if (@echo3) {
374
- my $str = join "\n", @echo3, "\n";
374
+ my $str = join("\n", @echo3) . "\n";
375
375
  $str =~ s/\$\{status\}/$rtnVal/ig;
376
376
  print STDOUT $str;
377
377
  }
378
378
  if (@echo4) {
379
- my $str = join "\n", @echo4, "\n";
379
+ my $str = join("\n", @echo4) . "\n";
380
380
  $str =~ s/\$\{status\}/$rtnVal/ig;
381
381
  print STDERR $str;
382
382
  }
@@ -894,8 +894,8 @@ for (;;) {
894
894
  $helped = 1;
895
895
  next;
896
896
  }
897
- if (/^(ee|extractembedded)$/i) {
898
- $mt->Options(ExtractEmbedded => 1);
897
+ if (/^(ee|extractembedded)(\d*)$/i) {
898
+ $mt->Options(ExtractEmbedded => $2 || 1);
899
899
  $mt->Options(Duplicates => 1);
900
900
  next;
901
901
  }
@@ -1264,7 +1264,7 @@ for (;;) {
1264
1264
  if (/^php$/i) {
1265
1265
  $json = 2;
1266
1266
  $html = $xml = 0;
1267
- $mt->Options(Duplicates=>1);
1267
+ $mt->Options(Duplicates => 1);
1268
1268
  next;
1269
1269
  }
1270
1270
  if (/^z(ip)?$/i) {
@@ -1505,7 +1505,6 @@ if ($xml) {
1505
1505
  require Image::ExifTool::XMP if $json == 1; # (for EncodeBase64)
1506
1506
  }
1507
1507
  $mt->Options(List => 1) unless $joinLists;
1508
- $mt->Options(Duplicates => 0) unless defined $showGroup;
1509
1508
  $showTagID = 'D' if $tabFormat and not $showTagID;
1510
1509
  } elsif ($structOpt) {
1511
1510
  $mt->Options(List => 1);
@@ -2304,7 +2303,7 @@ TAG: foreach $tag (@foundTags) {
2304
2303
  $group = $et->GetGroup($tag, $showGroup);
2305
2304
  # look ahead to see if this tag may suppress a priority tag in
2306
2305
  # the same group, and if so suppress this tag instead
2307
- next if $noDups and $tag =~ /^(.*?) ?\(/ and defined $$info{$1} and
2306
+ next if $noDups and $tag =~ /^(.*?) \(/ and defined $$info{$1} and
2308
2307
  $group eq $et->GetGroup($1, $showGroup);
2309
2308
  $group = 'Unknown' if not $group and ($xml or $json or $csv);
2310
2309
  if ($fp and not ($allGroup or $csv)) {
@@ -2327,6 +2326,9 @@ TAG: foreach $tag (@foundTags) {
2327
2326
  }
2328
2327
  undef $group; # undefine so we don't print it below
2329
2328
  }
2329
+ } elsif ($noDups) {
2330
+ # don't allow duplicates, but avoid suppressing the priority tag
2331
+ next if $tag =~ /^(.*?) \(/ and defined $$info{$1};
2330
2332
  }
2331
2333
 
2332
2334
  ++$lineCount; # we are printing something meaningful
@@ -2858,6 +2860,10 @@ sub SetImageInfo($$$)
2858
2860
  # determine what our output file name should be
2859
2861
  my $newFileName = $et->GetNewValues('FileName');
2860
2862
  my $newDir = $et->GetNewValues('Directory');
2863
+ if (defined $newFileName and not length $newFileName) {
2864
+ Warn "Warning: New file name is empty - $ infile\n";
2865
+ undef $newFileName;
2866
+ }
2861
2867
  if (defined $testName) {
2862
2868
  my $err;
2863
2869
  $err = "You shouldn't write FileName or Directory with TestFile" if defined $newFileName or defined $newDir;
@@ -4569,7 +4575,7 @@ L<Processing control|/Processing control>
4569
4575
 
4570
4576
  -a (-duplicates) Allow duplicate tags to be extracted
4571
4577
  -e (--composite) Do not generate composite tags
4572
- -ee (-extractEmbedded) Extract information from embedded files
4578
+ -ee[NUM] (-extractEmbedded) Extract information from embedded files
4573
4579
  -ext[+] EXT (-extension) Process files with specified extension
4574
4580
  -F[OFFSET] (-fixBase) Fix the base for maker notes offsets
4575
4581
  -fast[NUM] Increase speed when extracting metadata
@@ -4913,7 +4919,7 @@ and the value is written to all possible groups/tags. For example, the
4913
4919
  string form must be used in the following command since the intent is to set
4914
4920
  the value of all existing date/time tags from C<CreateDate>:
4915
4921
 
4916
- exiftool "-time:all<$createdate" -wm w FILE
4922
+ exiftool '-time:all<$createdate' -wm w FILE
4917
4923
 
4918
4924
  =item B<-x> I<TAG> (B<-exclude>)
4919
4925
 
@@ -4939,7 +4945,7 @@ between images, but allows the metadata to be altered by editing the
4939
4945
  intermediate file (C<out.args> in this example):
4940
4946
 
4941
4947
  exiftool -args -G1 --filename --directory src.jpg > out.args
4942
- exiftool -@ out.args -sep ", " dst.jpg
4948
+ exiftool -@ out.args -sep ', ' dst.jpg
4943
4949
 
4944
4950
  Note: Be careful when copying information with this technique since it is
4945
4951
  easy to write tags which are normally considered "unsafe". For instance,
@@ -5203,18 +5209,18 @@ JSON arrays unless B<-sep> is used. By default XMP structures are flattened
5203
5209
  into individual tags in the JSON output, but the original structure may be
5204
5210
  preserved with the B<-struct> option (this also causes all list-type XMP
5205
5211
  tags to be output as JSON arrays, otherwise single-item lists would be
5206
- output as simple strings). The B<-a> option is implied if the B<-g> or
5207
- B<-G> options are used, otherwise it is ignored and tags with identical
5208
- JSON names are suppressed. (B<-g4> may be used to ensure that all tags have
5209
- unique JSON names.) Adding the B<-D> or B<-H> option changes tag values to
5210
- JSON objects with "val" and "id" fields, and adding B<-l> adds a "desc"
5211
- field, and a "num" field if the numerical value is different from the
5212
- converted "val". The B<-b> option may be added to output binary data,
5213
- encoded in base64 if necessary (indicated by ASCII "base64:" as the first 7
5214
- bytes of the value), and B<-t> may be added to include tag table information
5215
- (see B<-t> for details). The JSON output is UTF-8 regardless of any B<-L>
5216
- or B<-charset> option setting, but the UTF-8 validation is disabled if a
5217
- character set other than UTF-8 is specified.
5212
+ output as simple strings). The B<-a> option is implied when B<-json> is
5213
+ used, but entries with identical JSON names are suppressed in the output.
5214
+ (B<-G4> may be used to ensure that all tags have unique JSON names.) Adding
5215
+ the B<-D> or B<-H> option changes tag values to JSON objects with "val" and
5216
+ "id" fields, and adding B<-l> adds a "desc" field, and a "num" field if the
5217
+ numerical value is different from the converted "val". The B<-b> option may
5218
+ be added to output binary data, encoded in base64 if necessary (indicated by
5219
+ ASCII "base64:" as the first 7 bytes of the value), and B<-t> may be added
5220
+ to include tag table information (see B<-t> for details). The JSON output
5221
+ is UTF-8 regardless of any B<-L> or B<-charset> option setting, but the
5222
+ UTF-8 validation is disabled if a character set other than UTF-8 is
5223
+ specified.
5218
5224
 
5219
5225
  If I<JSONFILE> is specified, the file is imported and the tag definitions
5220
5226
  from the file are used to set tag values on a per-file basis. The special
@@ -5363,7 +5369,7 @@ with this command:
5363
5369
 
5364
5370
  produces output like this:
5365
5371
 
5366
- -- Generated by ExifTool 12.13 --
5372
+ -- Generated by ExifTool 12.17 --
5367
5373
  File: a.jpg - 2003:10:31 15:44:19
5368
5374
  (f/5.6, 1/60s, ISO 100)
5369
5375
  File: b.jpg - 2006:05:23 11:57:38
@@ -5523,18 +5529,18 @@ Notes:
5523
5529
  argument like C<%d%f.txt> is written as C<%%d%%f.txt>.
5524
5530
 
5525
5531
  2) If the argument for B<-w> does not contain a valid format code (eg. %f),
5526
- then it is interpreted as a file extension. It is not possible to specify a
5527
- simple filename as an argument -- creating a single output file from
5528
- multiple source files is typically done by shell redirection, ie)
5532
+ then it is interpreted as a file extension, but there are three different
5533
+ ways to create a single output file from multiple source files:
5529
5534
 
5535
+ # 1. Shell redirection
5530
5536
  exiftool FILE1 FILE2 ... > out.txt
5531
5537
 
5532
- But if necessary, an empty format code may be used to force the argument to
5533
- be interpreted as a format string, and the same result may be obtained
5534
- without the use of shell redirection:
5535
-
5538
+ # 2. With the -w option and a zero-width format code
5536
5539
  exiftool -w+! %0fout.txt FILE1 FILE2 ...
5537
5540
 
5541
+ # 3. With the -W option (see the -W option below)
5542
+ exiftool -W+! out.txt FILE1 FILE2 ...
5543
+
5538
5544
  Advanced features:
5539
5545
 
5540
5546
  A substring of the original file name, directory or extension may be taken
@@ -5702,7 +5708,7 @@ when copying.
5702
5708
 
5703
5709
  Extract existing tags only -- don't generate composite tags.
5704
5710
 
5705
- =item B<-ee> (B<-extractEmbedded>)
5711
+ =item B<-ee>[I<NUM>] (B<-extractEmbedded>)
5706
5712
 
5707
5713
  Extract information from embedded documents in EPS files, embedded EPS
5708
5714
  information and JPEG and Jpeg2000 images in PDF files, embedded MPF images
@@ -5720,6 +5726,11 @@ document as if it were a separate input file. This allows, for example,
5720
5726
  generation of GPS track logs from timed metadata in videos. See
5721
5727
  L<https://exiftool.org/geotag.html#Inverse> for examples.
5722
5728
 
5729
+ Setting I<NUM> to 2 causes the H264 video stream in MP4 videos to be parsed
5730
+ until the first Supplemental Enhancement Information (SEI) message is
5731
+ decoded, or 3 to parse the entire H624 stream and decode all SEI
5732
+ information.
5733
+
5723
5734
  =item B<-ext>[+] I<EXT>, B<--ext> I<EXT> (B<-extension>)
5724
5735
 
5725
5736
  Process only files with (B<-ext>) or without (B<--ext>) a specified
@@ -6369,10 +6380,10 @@ name and directory.
6369
6380
 
6370
6381
  =item B<-stay_open> I<FLAG>
6371
6382
 
6372
- If I<FLAG> is C<1> or C<True>, causes exiftool keep reading from the B<-@>
6373
- I<ARGFILE> even after reaching the end of file. This feature allows calling
6374
- applications to pre-load exiftool, thus avoiding the overhead of loading
6375
- exiftool for each command. The procedure is as follows:
6383
+ If I<FLAG> is C<1> or C<True> (case insensitive), causes exiftool keep
6384
+ reading from the B<-@> I<ARGFILE> even after reaching the end of file. This
6385
+ feature allows calling applications to pre-load exiftool, thus avoiding the
6386
+ overhead of loading exiftool for each command. The procedure is as follows:
6376
6387
 
6377
6388
  1) Execute C<exiftool -stay_open True -@ I<ARGFILE>>, where I<ARGFILE> is the
6378
6389
  name of an existing (possibly empty) argument file or C<-> to pipe arguments
@@ -6395,8 +6406,9 @@ signals back to your application.)
6395
6406
 
6396
6407
  4) Repeat steps 2 and 3 for each command.
6397
6408
 
6398
- 5) Write C<-stay_open\nFalse\n> to I<ARGFILE> when done. This will cause
6399
- exiftool to process any remaining command-line arguments then exit normally.
6409
+ 5) Write C<-stay_open\nFalse\n> (or C<-stay_open\n0\n>) to I<ARGFILE> when
6410
+ done. This will cause exiftool to process any remaining command-line
6411
+ arguments then exit normally.
6400
6412
 
6401
6413
  The input I<ARGFILE> may be changed at any time before step 5 above by
6402
6414
  writing the following lines to the currently open I<ARGFILE>:
@@ -6424,10 +6436,11 @@ an interface to the API UserParam option (see the
6424
6436
  L<Image::ExifTool Options|Image::ExifTool/Options> documentation), and
6425
6437
  provides a method to access user-defined parameters in arguments to the
6426
6438
  B<-if> and B<-p> options as if they were any other tag. Appending a hash
6427
- tag (C<#>) to I<PARAM> also causes the parameter to be extracted as a normal
6428
- tag (in the UserParam group). Similar to the B<-api> option, the parameter
6429
- value is set to 1 if I<=VAL> is omitted, undef if just I<VAL> is omitted
6430
- with C<=>, or an empty string if I<VAL> is omitted with C<^=>.
6439
+ tag (C<#>) to I<PARAM> (eg. C<-userParam MyTag#=yes>) also causes the
6440
+ parameter to be extracted as a normal tag in the UserParam group. Similar
6441
+ to the B<-api> option, the parameter value is set to 1 if I<=VAL> is
6442
+ omitted, undef if just I<VAL> is omitted with C<=>, or an empty string if
6443
+ I<VAL> is omitted with C<^=>.
6431
6444
 
6432
6445
  exiftool -p '$test from $filename' -userparam test=Hello FILE
6433
6446
 
@@ -7137,6 +7150,13 @@ flexibility of ExifTool.)
7137
7150
 
7138
7151
  =back
7139
7152
 
7153
+ =head1 INTERRUPTING EXIFTOOL
7154
+
7155
+ Interrupting exiftool with a CTRL-C or SIGINT will not result in partially
7156
+ written files or temporary files remaining on the hard disk. The exiftool
7157
+ application traps SIGINT and defers it until the end of critical processes
7158
+ if necessary, then does a proper cleanup before exiting.
7159
+
7140
7160
  =head1 EXIT STATUS
7141
7161
 
7142
7162
  The exiftool application exits with a status of 0 on success, or 1 if an
@@ -7145,7 +7165,7 @@ the commands if B<-execute> was used).
7145
7165
 
7146
7166
  =head1 AUTHOR
7147
7167
 
7148
- Copyright 2003-2020, Phil Harvey
7168
+ Copyright 2003-2021, Phil Harvey
7149
7169
 
7150
7170
  This is free software; you can redistribute it and/or modify it under the
7151
7171
  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-2020 Phil Harvey (philharvey66 at gmail.com)
28
+ # Legal: Copyright (c) 2003-2021 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-2020 Phil Harvey (philharvey66 at gmail.com)
6
+ # Legal: Copyright (c) 2003-2021 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-2020 Phil Harvey (philharvey66 at gmail.com)
239
+ Copyright 2003-2021 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.
@@ -8,7 +8,7 @@
8
8
  # Revisions: Nov. 12/2003 - P. Harvey Created
9
9
  # (See html/history.html for revision history)
10
10
  #
11
- # Legal: Copyright (c) 2003-2020, Phil Harvey (philharvey66 at gmail.com)
11
+ # Legal: Copyright (c) 2003-2021, Phil Harvey (philharvey66 at gmail.com)
12
12
  # This library is free software; you can redistribute it and/or
13
13
  # modify it under the same terms as Perl itself.
14
14
  #------------------------------------------------------------------------------
@@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
28
28
  %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
29
29
  %jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
30
30
 
31
- $VERSION = '12.13';
31
+ $VERSION = '12.17';
32
32
  $RELEASE = '';
33
33
  @ISA = qw(Exporter);
34
34
  %EXPORT_TAGS = (
@@ -3395,7 +3395,11 @@ sub GetGroup($$;$)
3395
3395
  my @grps;
3396
3396
  # create list of group names (without identical adjacent groups if simplifying)
3397
3397
  foreach (@families) {
3398
- my $grp = $groups[$_] or next;
3398
+ my $grp = $groups[$_];
3399
+ unless ($grp) {
3400
+ next if $simplify;
3401
+ $grp = '';
3402
+ }
3399
3403
  push @grps, $grp unless $simplify and @grps and $grp eq $grps[-1];
3400
3404
  }
3401
3405
  # remove leading "Main:" if simplifying
@@ -6691,6 +6695,22 @@ sub ProcessJPEG($$)
6691
6695
  # extract the Stim information (it is in standard TIFF format)
6692
6696
  my $tagTablePtr = GetTagTable('Image::ExifTool::Stim::Main');
6693
6697
  $self->ProcessTIFF(\%dirInfo, $tagTablePtr);
6698
+ } elsif ($$self{Make} eq 'DJI') {
6699
+ $dumpType = 'DJI ThermalData';
6700
+ # add this data to the combined data if it exists
6701
+ my $dataPt = $segDataPt;
6702
+ if (defined $combinedSegData) {
6703
+ $combinedSegData .= $$segDataPt;
6704
+ $dataPt = \$combinedSegData;
6705
+ }
6706
+ if ($nextMarker == $marker) {
6707
+ $combinedSegData = $$segDataPt unless defined $combinedSegData;
6708
+ } else {
6709
+ # process DJI FLIR thermal data
6710
+ my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
6711
+ $self->HandleTag($tagTablePtr, 'APP3', $$dataPt);
6712
+ undef $combinedSegData;
6713
+ }
6694
6714
  } elsif ($$segDataPt =~ /^\xff\xd8\xff\xdb/) {
6695
6715
  $dumpType = 'PreviewImage'; # (Samsung, HP, BenQ)
6696
6716
  $preview = $$segDataPt;
@@ -6725,6 +6745,11 @@ sub ProcessJPEG($$)
6725
6745
  # set flag if this is the last FPXR segment
6726
6746
  $dirInfo{LastFPXR} = not ($nextMarker==$marker and $$nextSegDataPt=~/^FPXR\0/),
6727
6747
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
6748
+ } elsif ($$self{Make} eq 'DJI' and $$segDataPt =~ /^\xaa\x55\x12\x06/) {
6749
+ $dumpType = 'DJI ThermalParams';
6750
+ DirStart(\%dirInfo, 0, 0);
6751
+ my $tagTablePtr = GetTagTable('Image::ExifTool::DJI::ThermalParams');
6752
+ $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
6728
6753
  } elsif ($preview) {
6729
6754
  # continued Samsung S1060 preview from APP3
6730
6755
  $dumpType = 'PreviewImage';
@@ -6747,6 +6772,10 @@ sub ProcessJPEG($$)
6747
6772
  } elsif ($$segDataPt =~ /^ssuniqueid\0/) {
6748
6773
  my $tagTablePtr = GetTagTable('Image::ExifTool::Samsung::APP5');
6749
6774
  $self->HandleTag($tagTablePtr, 'ssuniqueid', substr($$segDataPt, 11));
6775
+ } elsif ($$self{Make} eq 'DJI') {
6776
+ $dumpType = 'DJI ThermalCal';
6777
+ my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
6778
+ $self->HandleTag($tagTablePtr, 'APP5', $$segDataPt);
6750
6779
  } elsif ($preview) {
6751
6780
  $dumpType = 'PreviewImage';
6752
6781
  $preview .= $$segDataPt;
@@ -6782,6 +6811,10 @@ sub ProcessJPEG($$)
6782
6811
  my $tagTablePtr = GetTagTable('Image::ExifTool::GoPro::GPMF');
6783
6812
  DirStart(\%dirInfo, 6);
6784
6813
  $self->ProcessDirectory(\%dirInfo, $tagTablePtr);
6814
+ } elsif ($$segDataPt =~ /^DTAT\0\0.\{/s) {
6815
+ $dumpType = 'DJI_DTAT';
6816
+ my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
6817
+ $self->HandleTag($tagTablePtr, 'APP6', $$segDataPt);
6785
6818
  }
6786
6819
  } elsif ($marker == 0xe7) { # APP7 (Pentax, Huawei, Qualcomm)
6787
6820
  if ($$segDataPt =~ /^PENTAX \0(II|MM)/) {