exiftool_vendored 12.13.0 → 12.14.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 (194) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +19 -2
  3. data/bin/MANIFEST +1 -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 +26 -13
  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 +7 -3
  11. data/bin/lib/Image/ExifTool.pod +2 -2
  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 +5 -4
  25. data/bin/lib/Image/ExifTool/Canon.pm +1 -1
  26. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  29. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  34. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  39. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  40. data/bin/lib/Image/ExifTool/Exif.pm +14 -1
  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 +1 -1
  51. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  52. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  53. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  54. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  56. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  57. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  58. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  59. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  61. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  62. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  63. data/bin/lib/Image/ExifTool/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 +1 -1
  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 +1 -1
  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/Nintendo.pm +1 -1
  118. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  119. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  120. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  121. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  122. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  123. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  124. data/bin/lib/Image/ExifTool/PDF.pm +10 -2
  125. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  126. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  127. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  128. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  129. data/bin/lib/Image/ExifTool/PNG.pm +1 -1
  130. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  131. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  132. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  134. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  135. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  136. data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
  137. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  138. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  140. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  143. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  144. data/bin/lib/Image/ExifTool/QuickTime.pm +1 -1
  145. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +24 -3
  146. data/bin/lib/Image/ExifTool/RIFF.pm +82 -5
  147. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  148. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  149. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  150. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  153. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  159. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  161. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Sony.pm +1 -1
  163. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  165. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  166. data/bin/lib/Image/ExifTool/TagLookup.pm +2 -1
  167. data/bin/lib/Image/ExifTool/TagNames.pod +22 -5
  168. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  172. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  173. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  175. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  176. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  177. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  178. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  179. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  180. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  181. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  182. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  183. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
  184. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  185. data/bin/lib/Image/ExifTool/Writer.pl +11 -3
  186. data/bin/lib/Image/ExifTool/XMP.pm +17 -8
  187. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  188. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  189. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  190. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  191. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  192. data/bin/perl-Image-ExifTool.spec +1 -1
  193. data/lib/exiftool_vendored/version.rb +1 -1
  194. metadata +2 -2
@@ -9796,7 +9796,7 @@ Nikon maker notes in EXIF information.
9796
9796
 
9797
9797
  =head1 AUTHOR
9798
9798
 
9799
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
9799
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
9800
9800
 
9801
9801
  This library is free software; you can redistribute it and/or modify it
9802
9802
  under the same terms as Perl itself.
@@ -918,7 +918,7 @@ the maker notes of NEF images.
918
918
 
919
919
  =head1 AUTHOR
920
920
 
921
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
921
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
922
922
 
923
923
  This library is free software; you can redistribute it and/or modify it
924
924
  under the same terms as Perl itself.
@@ -9534,7 +9534,7 @@ this information.
9534
9534
 
9535
9535
  =head1 AUTHOR
9536
9536
 
9537
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
9537
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
9538
9538
 
9539
9539
  This library is free software; you can redistribute it and/or modify it
9540
9540
  under the same terms as Perl itself.
@@ -107,7 +107,7 @@ interpret Nintendo maker notes EXIF meta information.
107
107
 
108
108
  =head1 AUTHOR
109
109
 
110
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
110
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
111
111
 
112
112
  This library is free software; you can redistribute it and/or modify it
113
113
  under the same terms as Perl itself.
@@ -395,7 +395,7 @@ archives of XML files.
395
395
 
396
396
  =head1 AUTHOR
397
397
 
398
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
398
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
399
399
 
400
400
  This library is free software; you can redistribute it and/or modify it
401
401
  under the same terms as Perl itself.
@@ -214,7 +214,7 @@ information from Ogg bitstream container files.
214
214
 
215
215
  =head1 AUTHOR
216
216
 
217
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
217
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
218
218
 
219
219
  This library is free software; you can redistribute it and/or modify it
220
220
  under the same terms as Perl itself.
@@ -4064,7 +4064,7 @@ Olympus or Epson maker notes in EXIF information.
4064
4064
 
4065
4065
  =head1 AUTHOR
4066
4066
 
4067
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
4067
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
4068
4068
 
4069
4069
  This library is free software; you can redistribute it and/or modify it
4070
4070
  under the same terms as Perl itself.
@@ -302,7 +302,7 @@ information from OpenEXR images.
302
302
 
303
303
  =head1 AUTHOR
304
304
 
305
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
305
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
306
306
 
307
307
  This library is free software; you can redistribute it and/or modify it
308
308
  under the same terms as Perl itself.
@@ -69,7 +69,7 @@ information from Ogg Opus audio files.
69
69
 
70
70
  =head1 AUTHOR
71
71
 
72
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
72
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
73
73
 
74
74
  This library is free software; you can redistribute it and/or modify it
75
75
  under the same terms as Perl itself.
@@ -114,7 +114,7 @@ information from PC Paintbrush (PCX) files.
114
114
 
115
115
  =head1 AUTHOR
116
116
 
117
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
117
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
118
118
 
119
119
  This library is free software; you can redistribute it and/or modify it
120
120
  under the same terms as Perl itself.
@@ -21,7 +21,7 @@ use vars qw($VERSION $AUTOLOAD $lastFetched);
21
21
  use Image::ExifTool qw(:DataAccess :Utils);
22
22
  require Exporter;
23
23
 
24
- $VERSION = '1.50';
24
+ $VERSION = '1.51';
25
25
 
26
26
  sub FetchObject($$$$);
27
27
  sub ExtractObject($$;$$);
@@ -2164,6 +2164,7 @@ sub ReadPDF($$)
2164
2164
  # set input record separator
2165
2165
  local $/ = $ws =~ /(\x0d\x0a|\x0d|\x0a)/ ? $1 : "\x0a";
2166
2166
  my (%xref, @mainDicts, %loaded, $mainFree);
2167
+ my ($xrefSize, $mainDictSize) = (0, 0);
2167
2168
  # initialize variables to capture when rewriting
2168
2169
  if ($capture) {
2169
2170
  $capture->{startxref} = $xr;
@@ -2206,6 +2207,7 @@ XRef:
2206
2207
  $raf->Read($buff, 20) == 20 or return -6;
2207
2208
  $buff =~ /^\s*(\d{10}) (\d{5}) (f|n)/s or return -4;
2208
2209
  my $num = $start + $i;
2210
+ $xrefSize = $num if $num > $xrefSize;
2209
2211
  # locate object to generate entry from stream if necessary
2210
2212
  # (must do this before we test $xref{$num})
2211
2213
  LocateAnyObject(\%xref, $num) if $xref{dicts};
@@ -2242,6 +2244,8 @@ XRef:
2242
2244
  $et->Warn('Error loading secondary dictionary');
2243
2245
  next;
2244
2246
  }
2247
+ # keep track of total trailer dictionary Size
2248
+ $mainDictSize = $$mainDict{Size} if $$mainDict{Size} and $$mainDict{Size} > $mainDictSize;
2245
2249
  if ($loadXRefStream) {
2246
2250
  # decode and save our XRef stream from PDF-1.5 file
2247
2251
  # (but parse it later as required to save time)
@@ -2280,6 +2284,10 @@ XRef:
2280
2284
  # load previous xref table if it exists
2281
2285
  push @xrefOffsets, $$mainDict{Prev}, 'Prev' if $$mainDict{Prev};
2282
2286
  }
2287
+ if ($xrefSize > $mainDictSize) {
2288
+ my $str = "Objects in xref table ($xrefSize) exceed trailer dictionary Size ($mainDictSize)";
2289
+ $capture ? $et->Error($str) : $et->Warn($str);
2290
+ }
2283
2291
  #
2284
2292
  # extract encryption information if necessary
2285
2293
  #
@@ -2381,7 +2389,7 @@ including AESV2 (AES-128) and AESV3 (AES-256).
2381
2389
 
2382
2390
  =head1 AUTHOR
2383
2391
 
2384
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
2392
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2385
2393
 
2386
2394
  This library is free software; you can redistribute it and/or modify it
2387
2395
  under the same terms as Perl itself.
@@ -119,7 +119,7 @@ information from Progressive Graphics File (PGF) images.
119
119
 
120
120
  =head1 AUTHOR
121
121
 
122
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
122
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
123
123
 
124
124
  This library is free software; you can redistribute it and/or modify it
125
125
  under the same terms as Perl itself.
@@ -1236,7 +1236,7 @@ Verbose or the Unknown option.
1236
1236
 
1237
1237
  =head1 AUTHOR
1238
1238
 
1239
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1239
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1240
1240
 
1241
1241
  This library is free software; you can redistribute it and/or modify it
1242
1242
  under the same terms as Perl itself.
@@ -438,7 +438,7 @@ This module decodes both the binary and XML-based PLIST format.
438
438
 
439
439
  =head1 AUTHOR
440
440
 
441
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
441
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
442
442
 
443
443
  This library is free software; you can redistribute it and/or modify it
444
444
  under the same terms as Perl itself.
@@ -2586,7 +2586,7 @@ Definitions for PLUS (Picture Licensing Universal System) tags.
2586
2586
 
2587
2587
  =head1 AUTHOR
2588
2588
 
2589
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
2589
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2590
2590
 
2591
2591
  This library is free software; you can redistribute it and/or modify it
2592
2592
  under the same terms as Perl itself.
@@ -1531,7 +1531,7 @@ and JNG (JPEG Network Graphics) images.
1531
1531
 
1532
1532
  =head1 AUTHOR
1533
1533
 
1534
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1534
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1535
1535
 
1536
1536
  This library is free software; you can redistribute it and/or modify it
1537
1537
  under the same terms as Perl itself.
@@ -143,7 +143,7 @@ BitMap) images.
143
143
 
144
144
  =head1 AUTHOR
145
145
 
146
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
146
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
147
147
 
148
148
  This library is free software; you can redistribute it and/or modify it
149
149
  under the same terms as Perl itself.
@@ -284,7 +284,7 @@ information from Paint Shop Pro images.
284
284
 
285
285
  =head1 AUTHOR
286
286
 
287
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
287
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
288
288
 
289
289
  This library is free software; you can redistribute it and/or modify it
290
290
  under the same terms as Perl itself.
@@ -379,7 +379,7 @@ KF7 and KF8 books (AZW and AZW3).
379
379
 
380
380
  =head1 AUTHOR
381
381
 
382
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
382
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
383
383
 
384
384
  This library is free software; you can redistribute it and/or modify it
385
385
  under the same terms as Perl itself.
@@ -2812,7 +2812,7 @@ Panasonic and Leica maker notes in EXIF information.
2812
2812
 
2813
2813
  =head1 AUTHOR
2814
2814
 
2815
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
2815
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2816
2816
 
2817
2817
  This library is free software; you can redistribute it and/or modify it
2818
2818
  under the same terms as Perl itself.
@@ -888,7 +888,7 @@ write meta information in Panasonic/Leica RAW, RW2 and RWL images.
888
888
 
889
889
  =head1 AUTHOR
890
890
 
891
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
891
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
892
892
 
893
893
  This library is free software; you can redistribute it and/or modify it
894
894
  under the same terms as Perl itself.
@@ -731,7 +731,7 @@ timed metadata from the 'mett' frame found in Parrot drone MP4 videos.
731
731
 
732
732
  =head1 AUTHOR
733
733
 
734
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
734
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
735
735
 
736
736
  This library is free software; you can redistribute it and/or modify it
737
737
  under the same terms as Perl itself.
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
58
58
  use Image::ExifTool::GPS;
59
59
  use Image::ExifTool::HP;
60
60
 
61
- $VERSION = '3.35';
61
+ $VERSION = '3.36';
62
62
 
63
63
  sub CryptShutterCount($$);
64
64
  sub PrintFilter($$$);
@@ -322,6 +322,7 @@ sub DecodeAFPoints($$$$;$);
322
322
  '8 21' => 'Sigma 17-50mm F2.8 EX DC OS HSM', #26
323
323
  '8 22' => 'Sigma 85mm F1.4 EX DG HSM', #26
324
324
  '8 23' => 'Sigma 70-200mm F2.8 APO EX DG OS HSM', #27
325
+ '8 24' => 'Sigma 17-70mm F2.8-4 DC Macro OS HSM', #27
325
326
  '8 25' => 'Sigma 17-50mm F2.8 EX DC HSM', #Exiv2
326
327
  '8 27' => 'Sigma 18-200mm F3.5-6.3 II DC HSM', #27
327
328
  '8 28' => 'Sigma 18-250mm F3.5-6.3 DC Macro HSM', #27
@@ -6290,7 +6291,7 @@ tags, and everyone who helped contribute to the LensType values.
6290
6291
 
6291
6292
  =head1 AUTHOR
6292
6293
 
6293
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
6294
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
6294
6295
 
6295
6296
  This library is free software; you can redistribute it and/or modify it
6296
6297
  under the same terms as Perl itself.
@@ -711,7 +711,7 @@ One maker notes.
711
711
 
712
712
  =head1 AUTHOR
713
713
 
714
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
714
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
715
715
 
716
716
  This library is free software; you can redistribute it and/or modify it
717
717
  under the same terms as Perl itself.
@@ -484,7 +484,7 @@ information from Kodak Photo CD Image Pac (PCD) files.
484
484
 
485
485
  =head1 AUTHOR
486
486
 
487
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
487
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
488
488
 
489
489
  This library is free software; you can redistribute it and/or modify it
490
490
  under the same terms as Perl itself.
@@ -236,7 +236,7 @@ write information written by the Camera Bits Photo Mechanic software.
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.
@@ -1137,7 +1137,7 @@ be preserved when copying Photoshop information via user-defined tags.
1137
1137
 
1138
1138
  =head1 AUTHOR
1139
1139
 
1140
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1140
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1141
1141
 
1142
1142
  This library is free software; you can redistribute it and/or modify it
1143
1143
  under the same terms as Perl itself.
@@ -777,7 +777,7 @@ This code reads meta information from EPS (Encapsulated PostScript), PS
777
777
 
778
778
  =head1 AUTHOR
779
779
 
780
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
780
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
781
781
 
782
782
  This library is free software; you can redistribute it and/or modify it
783
783
  under the same terms as Perl itself.
@@ -112,7 +112,7 @@ Print Image Matching meta information.
112
112
 
113
113
  =head1 AUTHOR
114
114
 
115
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
115
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
116
116
 
117
117
  This library is free software; you can redistribute it and/or modify it
118
118
  under the same terms as Perl itself.
@@ -1331,7 +1331,7 @@ information from the APP7 Qualcomm segment in JPEG images.
1331
1331
 
1332
1332
  =head1 AUTHOR
1333
1333
 
1334
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1334
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1335
1335
 
1336
1336
  This library is free software; you can redistribute it and/or modify it
1337
1337
  under the same terms as Perl itself.
@@ -9500,7 +9500,7 @@ information from QuickTime and MP4 video, M4A audio, and HEIC image files.
9500
9500
 
9501
9501
  =head1 AUTHOR
9502
9502
 
9503
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
9503
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
9504
9504
 
9505
9505
  This library is free software; you can redistribute it and/or modify it
9506
9506
  under the same terms as Perl itself.
@@ -1771,6 +1771,25 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
1771
1771
  $trk = GetFloat($dataPt, 0x58);
1772
1772
  }
1773
1773
 
1774
+ } elsif ($$dataPt =~ /^.{60}A\0.{6}([NS])\0.{6}([EW])\0/s and $dirLen >= 112) {
1775
+
1776
+ # header looks like this in my sample (unknown dashcam, "Anticlock 2 2020_1125_1455_007.MOV"):
1777
+ # 0000: 00 00 80 00 66 72 65 65 47 50 53 20 68 00 00 00 [....freeGPS h...]
1778
+ # 0010: 32 30 31 33 30 33 32 35 41 00 00 00 00 00 00 00 [20130325A.......]
1779
+ # 0020: 41 70 72 20 20 36 20 32 30 31 36 2c 20 31 36 3a [Apr 6 2016, 16:]
1780
+ # 0030: 0e 00 00 00 38 00 00 00 22 00 00 00 41 00 00 00 [....8..."...A...]
1781
+ # 0040: 8a 63 24 45 53 00 00 00 9f e6 42 45 45 00 00 00 [.c$ES.....BEE...]
1782
+ # 0050: 59 c0 04 3f 52 b8 42 41 14 00 00 00 0b 00 00 00 [Y..?R.BA........]
1783
+ # 0060: 19 00 00 00 06 00 00 00 05 00 00 00 f6 ff ff ff [................]
1784
+ # 0070: 03 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 [................]
1785
+ ($latRef, $lonRef) = ($1, $2);
1786
+ ($hr,$min,$sec,$yr,$mon,$day,@acc) = unpack('x48V3x28V6',$$dataPt);
1787
+ map { $_ = $_ - 4294967296 if $_ >= 0x80000000; $_ /= 1000 } @acc; # (NC)
1788
+ $lat = GetFloat($dataPt, 0x40);
1789
+ $lon = GetFloat($dataPt, 0x48);
1790
+ $spd = GetFloat($dataPt, 0x50);
1791
+ $trk = GetFloat($dataPt, 0x54);
1792
+
1774
1793
  } else {
1775
1794
 
1776
1795
  # (look for binary GPS as stored by NextBase 512G, ref PH)
@@ -1836,8 +1855,10 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
1836
1855
  $et->HandleTag($tagTbl, GPSDateTime => $time);
1837
1856
  $et->HandleTag($tagTbl, GPSLatitude => $lat * ($latRef eq 'S' ? -1 : 1));
1838
1857
  $et->HandleTag($tagTbl, GPSLongitude => $lon * ($lonRef eq 'W' ? -1 : 1));
1839
- $et->HandleTag($tagTbl, GPSSpeed => $spd); # (now in km/h)
1840
- $et->HandleTag($tagTbl, GPSSpeedRef => 'K');
1858
+ if (defined $spd) {
1859
+ $et->HandleTag($tagTbl, GPSSpeed => $spd); # (now in km/h)
1860
+ $et->HandleTag($tagTbl, GPSSpeedRef => 'K');
1861
+ }
1841
1862
  if (defined $trk) {
1842
1863
  $et->HandleTag($tagTbl, GPSTrack => $trk);
1843
1864
  $et->HandleTag($tagTbl, GPSTrackRef => 'T');
@@ -2649,7 +2670,7 @@ information like GPS tracks from MOV, MP4 and INSV media data.
2649
2670
 
2650
2671
  =head1 AUTHOR
2651
2672
 
2652
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
2673
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2653
2674
 
2654
2675
  This library is free software; you can redistribute it and/or modify it
2655
2676
  under the same terms as Perl itself.
@@ -482,6 +482,15 @@ my %code2charset = (
482
482
  Name => 'CharacterSet',
483
483
  SubDirectory => { TagTable => 'Image::ExifTool::RIFF::CSET' },
484
484
  },
485
+ # tx_ tags are generated based on the Codec used for the txts stream
486
+ tx_USER => {
487
+ Name => 'UserText',
488
+ SubDirectory => { TagTable => 'Image::ExifTool::RIFF::UserText' },
489
+ },
490
+ tx_Unknown => { # (untested)
491
+ Name => 'Text',
492
+ Notes => 'streamed text, extracted when the ExtractEmbedded option is used',
493
+ },
485
494
  #
486
495
  # WebP-specific tags
487
496
  #
@@ -995,6 +1004,12 @@ my %code2charset = (
995
1004
  Condition => '$$self{RIFFStreamType} eq "vids"',
996
1005
  SubDirectory => { TagTable => 'Image::ExifTool::BMP::Main' },
997
1006
  },
1007
+ {
1008
+ Name => 'TextFormat',
1009
+ Condition => '$$self{RIFFStreamType} eq "txts"',
1010
+ Hidden => 1,
1011
+ RawConv => '$self->Options("ExtractEmbedded") or $self->WarnOnce("Use ExtractEmbedded option to extract timed text"); undef',
1012
+ },
998
1013
  ],
999
1014
  );
1000
1015
 
@@ -1025,7 +1040,7 @@ my %code2charset = (
1025
1040
  0 => {
1026
1041
  Name => 'StreamType',
1027
1042
  Format => 'string[4]',
1028
- RawConv => '$$self{RIFFStreamType} = $val',
1043
+ RawConv => '$$self{RIFFStreamNum} = ($$self{RIFFStreamNum} || 0) + 1; $$self{RIFFStreamType} = $val',
1029
1044
  PrintConv => {
1030
1045
  auds => 'Audio',
1031
1046
  mids => 'MIDI',
@@ -1038,16 +1053,19 @@ my %code2charset = (
1038
1053
  {
1039
1054
  Name => 'AudioCodec',
1040
1055
  Condition => '$$self{RIFFStreamType} eq "auds"',
1056
+ RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
1041
1057
  Format => 'string[4]',
1042
1058
  },
1043
1059
  {
1044
1060
  Name => 'VideoCodec',
1045
1061
  Condition => '$$self{RIFFStreamType} eq "vids"',
1062
+ RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
1046
1063
  Format => 'string[4]',
1047
1064
  },
1048
1065
  {
1049
1066
  Name => 'Codec',
1050
1067
  Format => 'string[4]',
1068
+ RawConv => '$$self{RIFFStreamCodec}[$$self{RIFFStreamNum}-1] = $val',
1051
1069
  },
1052
1070
  ],
1053
1071
  # 2 => 'StreamFlags',
@@ -1243,6 +1261,54 @@ my %code2charset = (
1243
1261
  },
1244
1262
  );
1245
1263
 
1264
+ # streamed USER txts written by some dashcam (ref PH)
1265
+ %Image::ExifTool::RIFF::UserText = (
1266
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
1267
+ GROUPS => { 2 => 'Location' },
1268
+ NOTES => q{
1269
+ Tags decoded from the USER-format txts stream written by an unknown dashcam.
1270
+ Extracted only if the ExtractEmbedded option is used.
1271
+ },
1272
+ # 0 - int32u: 0
1273
+ # 4 - int32u: sample number (starting from unknown offset)
1274
+ # 8 - int8u[4]: "0 x y z" ? (z mostly 5-8)
1275
+ # 12 - int8u[4]: "0 x 1 0" ? (x incrementing once per second)
1276
+ # 16 - int8u[4]: "0 32 0 x" ?
1277
+ # 20 - int32u: 100-150(mostly), 250-300(once per second)
1278
+ # 24 - int8u[4]: "0 x y 0" ?
1279
+ 28 => { Name => 'GPSAltitude', Format => 'int32u', ValueConv => '$val / 10' }, # (NC)
1280
+ # 32 - int32u: 0(mostly), 23(once per second)
1281
+ # 36 - int32u: 1
1282
+ 40 => { Name => 'Accelerometer', Format => 'float[3]' },
1283
+ # 52 - int32u: 1
1284
+ 56 => { Name => 'GPSSpeed', Format => 'float' }, # km/h
1285
+ 60 => {
1286
+ Name => 'GPSLatitude',
1287
+ Format => 'float',
1288
+ # Note: these values are unsigned and I don't know where the hemisphere is stored,
1289
+ # but my only sample is from the U.S., so assume a positive latitude (for now)
1290
+ ValueConv => 'my $deg = int($val / 100); $deg + ($val - $deg * 100) / 60',
1291
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
1292
+ },
1293
+ 64 => {
1294
+ Name => 'GPSLongitude',
1295
+ Format => 'float',
1296
+ # Note: these values are unsigned and I don't know where the hemisphere is stored,
1297
+ # but my only sample is from the U.S., so assume a negative longitude (for now)
1298
+ ValueConv => 'my $deg = int($val / 100); -($deg + ($val - $deg * 100) / 60)',
1299
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
1300
+ },
1301
+ 68 => {
1302
+ Name => 'GPSDateTime',
1303
+ Description => 'GPS Date/Time',
1304
+ Groups => { 2 => 'Time' },
1305
+ Format => 'int32u',
1306
+ ValueConv => 'ConvertUnixTime($val)',
1307
+ # (likely local time, but clock seemed off by 3 hours in my sample)
1308
+ PrintConv => '$self->ConvertDateTime($val)',
1309
+ },
1310
+ );
1311
+
1246
1312
  # WebP alpha info (ref 14)
1247
1313
  %Image::ExifTool::RIFF::ALPH = (
1248
1314
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
@@ -1752,6 +1818,7 @@ sub ProcessRIFF($$)
1752
1818
  my ($buff, $buf2, $type, $mime, $err, $rf64);
1753
1819
  my $verbose = $et->Options('Verbose');
1754
1820
  my $unknown = $et->Options('Unknown');
1821
+ my $ee = $et->Options('ExtractEmbedded');
1755
1822
 
1756
1823
  # verify this is a valid RIFF file
1757
1824
  return 0 unless $raf->Read($buff, 12) == 12;
@@ -1769,7 +1836,8 @@ sub ProcessRIFF($$)
1769
1836
  $mime = $riffMimeType{$type} if $type;
1770
1837
  $et->SetFileType($type, $mime);
1771
1838
  $$et{VALUE}{FileType} .= ' (RF64)' if $rf64;
1772
- $$et{RIFFStreamType} = ''; # initialize stream type
1839
+ $$et{RIFFStreamType} = ''; # initialize stream type
1840
+ $$et{RIFFStreamCodec} = []; # initialize codec array
1773
1841
  SetByteOrder('II');
1774
1842
  my $tagTbl = GetTagTable('Image::ExifTool::RIFF::Main');
1775
1843
  my $pos = 12;
@@ -1808,14 +1876,20 @@ sub ProcessRIFF($$)
1808
1876
  # stop when we hit the audio data or AVI index or AVI movie data
1809
1877
  # --> no more because Adobe Bridge stores XMP after this!!
1810
1878
  # (so now we only do this on the FastScan option)
1811
- if (($tag eq 'data' or $tag eq 'idx1' or $tag eq 'LIST_movi') and
1812
- $et->Options('FastScan'))
1879
+ if ($et->Options('FastScan') and ($tag eq 'data' or $tag eq 'idx1' or
1880
+ ($tag eq 'LIST_movi' and not $ee)))
1813
1881
  {
1814
1882
  $et->VPrint(0, "(end of parsing)\n");
1815
1883
  last;
1816
1884
  }
1817
1885
  # RIFF chunks are padded to an even number of bytes
1818
1886
  my $len2 = $len + ($len & 0x01);
1887
+ # change name of stream txts data depending on the Codec
1888
+ if ($ee and $tag =~ /^(\d{2})tx$/) {
1889
+ $tag = 'tx_' . ($$et{RIFFStreamCodec}[$1] || 'Unknown');
1890
+ $tag = "tx_Unknown" unless defined $$tagTbl{$tag};
1891
+ $$et{DOC_NUM} = ++$$et{DOC_COUNT};
1892
+ }
1819
1893
  my $tagInfo = $$tagTbl{$tag};
1820
1894
  if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF)$/)) {
1821
1895
  $raf->Read($buff, $len2) == $len2 or $err=1, last;
@@ -1835,11 +1909,14 @@ sub ProcessRIFF($$)
1835
1909
  delete $$et{SET_GROUP0};
1836
1910
  delete $$et{SET_GROUP1};
1837
1911
  }
1912
+ delete $$et{DOC_NUM} if $ee;
1838
1913
  } elsif ($tag eq 'RIFF') {
1839
1914
  # don't read into RIFF chunk (eg. concatenated video file)
1840
1915
  $raf->Read($buff, 4) == 4 or $err=1, last;
1841
1916
  # extract information from remaining file as an embedded file
1842
1917
  $$et{DOC_NUM} = ++$$et{DOC_COUNT}
1918
+ } elsif ($tag eq 'LIST_movi' and $ee) {
1919
+ next; # parse into movi chunk
1843
1920
  } else {
1844
1921
  if ($len > 0x7fffffff and not $et->Options('LargeFileSupport')) {
1845
1922
  $et->Warn("Stopped parsing at large $tag chunk (LargeFileSupport not set)");
@@ -1874,7 +1951,7 @@ including AVI videos, WAV audio files and WEBP images.
1874
1951
 
1875
1952
  =head1 AUTHOR
1876
1953
 
1877
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1954
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1878
1955
 
1879
1956
  This library is free software; you can redistribute it and/or modify it
1880
1957
  under the same terms as Perl itself.