exiftool_vendored 12.13.0 → 12.14.0

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 (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.