exiftool_vendored 12.13.0 → 12.17.1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

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)/) {