exiftool_vendored 12.10.0 → 12.15.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 (195) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +71 -2
  3. data/bin/MANIFEST +5 -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 +130 -55
  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 +46 -10
  11. data/bin/lib/Image/ExifTool.pod +14 -11
  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 +10 -4
  25. data/bin/lib/Image/ExifTool/Canon.pm +15 -12
  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 +28 -2
  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 +30 -11
  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 +15 -12
  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 +3 -3
  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 +314 -35
  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 +4 -2
  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 +12 -4
  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 +28 -19
  146. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +25 -4
  147. data/bin/lib/Image/ExifTool/RIFF.pm +83 -5
  148. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  149. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  150. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  153. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  160. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  162. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Sony.pm +8 -2
  164. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Stim.pm +3 -3
  166. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  167. data/bin/lib/Image/ExifTool/TagLookup.pm +3943 -3807
  168. data/bin/lib/Image/ExifTool/TagNames.pod +313 -21
  169. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  173. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  175. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  176. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  177. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  178. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  179. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  180. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  181. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  182. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  183. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  184. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -4
  185. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  186. data/bin/lib/Image/ExifTool/Writer.pl +28 -14
  187. data/bin/lib/Image/ExifTool/XMP.pm +17 -8
  188. data/bin/lib/Image/ExifTool/XMP2.pl +5 -1
  189. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  190. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  191. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  192. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  193. data/bin/perl-Image-ExifTool.spec +1 -1
  194. data/lib/exiftool_vendored/version.rb +1 -1
  195. metadata +9 -4
@@ -96,7 +96,7 @@ my %insvLimit = (
96
96
  NOTES => q{
97
97
  Timed metadata extracted from QuickTime media data and some AVI videos when
98
98
  the ExtractEmbedded option is used. Although most of these tags are
99
- combined into the single table below, ExifTool currently reads 46 different
99
+ combined into the single table below, ExifTool currently reads 49 different
100
100
  formats of timed GPS metadata from video files.
101
101
  },
102
102
  VARS => { NO_ID => 1 },
@@ -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,55 @@ my %code2charset = (
1243
1261
  },
1244
1262
  );
1245
1263
 
1264
+ # streamed USER txts written by Momento M6 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 Momento M6 dashcam.
1270
+ Extracted only if the ExtractEmbedded option is used.
1271
+ },
1272
+ # (little-endian)
1273
+ # 0 - int32u: 32
1274
+ # 4 - int32u: sample number (starting from unknown offset)
1275
+ # 8 - int8u[4]: "w x y z" ? (w 0=front cam, 1=rear cam, z mostly 5-8)
1276
+ # 12 - int8u[4]: "0 x 1 0" ? (x incrementing once per second)
1277
+ # 16 - int8u[4]: "0 32 0 x" ?
1278
+ # 20 - int32u: 100-150(mostly), 250-300(once per second)
1279
+ # 24 - int8u[4]: "0 x y 0" ?
1280
+ 28 => { Name => 'GPSAltitude', Format => 'int32u', ValueConv => '$val / 10' }, # (NC)
1281
+ # 32 - int32u: 0(mostly), 23(once per second)
1282
+ # 36 - int32u: 0
1283
+ 40 => { Name => 'Accelerometer', Format => 'float[3]' },
1284
+ # 52 - int32u: 1
1285
+ 56 => { Name => 'GPSSpeed', Format => 'float' }, # km/h
1286
+ 60 => {
1287
+ Name => 'GPSLatitude',
1288
+ Format => 'float',
1289
+ # Note: these values are unsigned and I don't know where the hemisphere is stored,
1290
+ # but my only sample is from the U.S., so assume a positive latitude (for now)
1291
+ ValueConv => 'my $deg = int($val / 100); $deg + ($val - $deg * 100) / 60',
1292
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
1293
+ },
1294
+ 64 => {
1295
+ Name => 'GPSLongitude',
1296
+ Format => 'float',
1297
+ # Note: these values are unsigned and I don't know where the hemisphere is stored,
1298
+ # but my only sample is from the U.S., so assume a negative longitude (for now)
1299
+ ValueConv => 'my $deg = int($val / 100); -($deg + ($val - $deg * 100) / 60)',
1300
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
1301
+ },
1302
+ 68 => {
1303
+ Name => 'GPSDateTime',
1304
+ Description => 'GPS Date/Time',
1305
+ Groups => { 2 => 'Time' },
1306
+ Format => 'int32u',
1307
+ ValueConv => 'ConvertUnixTime($val)',
1308
+ # (likely local time, but clock seemed off by 3 hours in my sample)
1309
+ PrintConv => '$self->ConvertDateTime($val)',
1310
+ },
1311
+ );
1312
+
1246
1313
  # WebP alpha info (ref 14)
1247
1314
  %Image::ExifTool::RIFF::ALPH = (
1248
1315
  PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
@@ -1752,6 +1819,7 @@ sub ProcessRIFF($$)
1752
1819
  my ($buff, $buf2, $type, $mime, $err, $rf64);
1753
1820
  my $verbose = $et->Options('Verbose');
1754
1821
  my $unknown = $et->Options('Unknown');
1822
+ my $ee = $et->Options('ExtractEmbedded');
1755
1823
 
1756
1824
  # verify this is a valid RIFF file
1757
1825
  return 0 unless $raf->Read($buff, 12) == 12;
@@ -1769,7 +1837,8 @@ sub ProcessRIFF($$)
1769
1837
  $mime = $riffMimeType{$type} if $type;
1770
1838
  $et->SetFileType($type, $mime);
1771
1839
  $$et{VALUE}{FileType} .= ' (RF64)' if $rf64;
1772
- $$et{RIFFStreamType} = ''; # initialize stream type
1840
+ $$et{RIFFStreamType} = ''; # initialize stream type
1841
+ $$et{RIFFStreamCodec} = []; # initialize codec array
1773
1842
  SetByteOrder('II');
1774
1843
  my $tagTbl = GetTagTable('Image::ExifTool::RIFF::Main');
1775
1844
  my $pos = 12;
@@ -1808,14 +1877,20 @@ sub ProcessRIFF($$)
1808
1877
  # stop when we hit the audio data or AVI index or AVI movie data
1809
1878
  # --> no more because Adobe Bridge stores XMP after this!!
1810
1879
  # (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'))
1880
+ if ($et->Options('FastScan') and ($tag eq 'data' or $tag eq 'idx1' or
1881
+ ($tag eq 'LIST_movi' and not $ee)))
1813
1882
  {
1814
1883
  $et->VPrint(0, "(end of parsing)\n");
1815
1884
  last;
1816
1885
  }
1817
1886
  # RIFF chunks are padded to an even number of bytes
1818
1887
  my $len2 = $len + ($len & 0x01);
1888
+ # change name of stream txts data depending on the Codec
1889
+ if ($ee and $tag =~ /^(\d{2})tx$/) {
1890
+ $tag = 'tx_' . ($$et{RIFFStreamCodec}[$1] || 'Unknown');
1891
+ $tag = "tx_Unknown" unless defined $$tagTbl{$tag};
1892
+ $$et{DOC_NUM} = ++$$et{DOC_COUNT};
1893
+ }
1819
1894
  my $tagInfo = $$tagTbl{$tag};
1820
1895
  if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF)$/)) {
1821
1896
  $raf->Read($buff, $len2) == $len2 or $err=1, last;
@@ -1835,11 +1910,14 @@ sub ProcessRIFF($$)
1835
1910
  delete $$et{SET_GROUP0};
1836
1911
  delete $$et{SET_GROUP1};
1837
1912
  }
1913
+ delete $$et{DOC_NUM} if $ee;
1838
1914
  } elsif ($tag eq 'RIFF') {
1839
1915
  # don't read into RIFF chunk (eg. concatenated video file)
1840
1916
  $raf->Read($buff, 4) == 4 or $err=1, last;
1841
1917
  # extract information from remaining file as an embedded file
1842
1918
  $$et{DOC_NUM} = ++$$et{DOC_COUNT}
1919
+ } elsif ($tag eq 'LIST_movi' and $ee) {
1920
+ next; # parse into movi chunk
1843
1921
  } else {
1844
1922
  if ($len > 0x7fffffff and not $et->Options('LargeFileSupport')) {
1845
1923
  $et->Warn("Stopped parsing at large $tag chunk (LargeFileSupport not set)");
@@ -1874,7 +1952,7 @@ including AVI videos, WAV audio files and WEBP images.
1874
1952
 
1875
1953
  =head1 AUTHOR
1876
1954
 
1877
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1955
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1878
1956
 
1879
1957
  This library is free software; you can redistribute it and/or modify it
1880
1958
  under the same terms as Perl itself.
@@ -225,7 +225,7 @@ resource files.
225
225
 
226
226
  =head1 AUTHOR
227
227
 
228
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
228
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
229
229
 
230
230
  This library is free software; you can redistribute it and/or modify it
231
231
  under the same terms as Perl itself.
@@ -366,7 +366,7 @@ information from RTF (Rich Text Format) documents.
366
366
 
367
367
  =head1 AUTHOR
368
368
 
369
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
369
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
370
370
 
371
371
  This library is free software; you can redistribute it and/or modify it
372
372
  under the same terms as Perl itself.
@@ -125,7 +125,7 @@ images are a type of high dynamic-range image.
125
125
 
126
126
  =head1 AUTHOR
127
127
 
128
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
128
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
129
129
 
130
130
  This library is free software; you can redistribute it and/or modify it
131
131
  under the same terms as Perl itself.
@@ -168,7 +168,7 @@ information from Rawzor compressed images.
168
168
 
169
169
  =head1 AUTHOR
170
170
 
171
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
171
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
172
172
 
173
173
  This library is free software; you can redistribute it and/or modify it
174
174
  under the same terms as Perl itself.
@@ -715,7 +715,7 @@ little-endian, but the Real format is big-endian.
715
715
 
716
716
  =head1 AUTHOR
717
717
 
718
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
718
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
719
719
 
720
720
  This library is free software; you can redistribute it and/or modify it
721
721
  under the same terms as Perl itself.
@@ -431,7 +431,7 @@ maker notes in images from Reconyx cameras.
431
431
 
432
432
  =head1 AUTHOR
433
433
 
434
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
434
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
435
435
 
436
436
  This library is free software; you can redistribute it and/or modify it
437
437
  under the same terms as Perl itself.
@@ -303,7 +303,7 @@ from Redcode R3D version 1 and 2 video files.
303
303
 
304
304
  =head1 AUTHOR
305
305
 
306
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
306
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
307
307
 
308
308
  This library is free software; you can redistribute it and/or modify it
309
309
  under the same terms as Perl itself.
@@ -1143,7 +1143,7 @@ interpret Ricoh maker notes EXIF meta information.
1143
1143
 
1144
1144
  =head1 AUTHOR
1145
1145
 
1146
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1146
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1147
1147
 
1148
1148
  This library is free software; you can redistribute it and/or modify it
1149
1149
  under the same terms as Perl itself.
@@ -1447,7 +1447,7 @@ Samsung maker notes in EXIF information.
1447
1447
 
1448
1448
  =head1 AUTHOR
1449
1449
 
1450
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1450
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1451
1451
 
1452
1452
  This library is free software; you can redistribute it and/or modify it
1453
1453
  under the same terms as Perl itself.
@@ -419,7 +419,7 @@ Sanyo maker notes in EXIF information.
419
419
 
420
420
  =head1 AUTHOR
421
421
 
422
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
422
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
423
423
 
424
424
  This library is free software; you can redistribute it and/or modify it
425
425
  under the same terms as Perl itself.
@@ -128,7 +128,7 @@ metadata from the JPEG APP4 SCALADO segment.
128
128
 
129
129
  =head1 AUTHOR
130
130
 
131
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
131
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
132
132
 
133
133
  This library is free software; you can redistribute it and/or modify it
134
134
  under the same terms as Perl itself.
@@ -630,7 +630,7 @@ limited to the range 1970 to 2038 on 32-bit systems.
630
630
 
631
631
  =head1 AUTHOR
632
632
 
633
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
633
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
634
634
 
635
635
  This library is free software; you can redistribute it and/or modify it
636
636
  under the same terms as Perl itself.
@@ -332,7 +332,7 @@ name prefix.
332
332
 
333
333
  =head1 AUTHOR
334
334
 
335
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
335
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
336
336
 
337
337
  This library is free software; you can redistribute it and/or modify it
338
338
  under the same terms as Perl itself.
@@ -837,7 +837,7 @@ Sigma and Foveon maker notes in EXIF information.
837
837
 
838
838
  =head1 AUTHOR
839
839
 
840
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
840
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
841
841
 
842
842
  This library is free software; you can redistribute it and/or modify it
843
843
  under the same terms as Perl itself.
@@ -650,7 +650,7 @@ Sigma and Foveon X3F images.
650
650
 
651
651
  =head1 AUTHOR
652
652
 
653
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
653
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
654
654
 
655
655
  This library is free software; you can redistribute it and/or modify it
656
656
  under the same terms as Perl itself.
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
34
34
  use Image::ExifTool::Exif;
35
35
  use Image::ExifTool::Minolta;
36
36
 
37
- $VERSION = '3.32';
37
+ $VERSION = '3.35';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -146,6 +146,7 @@ sub PrintInvLensSpec($;$$);
146
146
  32859 => 'Sony FE 20mm F1.8 G', #IB/JR
147
147
  32860 => 'Sony FE 12-24mm F2.8 GM', #JR/IB
148
148
  32864 => 'Sony FE 28-60mm F4-5.6', #JR
149
+ 32865 => 'Sony FE 35mm F1.4 GM', #IB/JR
149
150
 
150
151
  # (comment this out so LensID will report the LensModel, which is more useful)
151
152
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -185,6 +186,7 @@ sub PrintInvLensSpec($;$$);
185
186
  49462 => 'Tamron 70-180mm F2.8 Di III VXD', #JR (Model A056)
186
187
  49463 => 'Tamron 28-200mm F2.8-5.6 Di III RXD', #JR (Model A071)
187
188
  49464 => 'Tamron 70-300mm F4.5-6.3 Di III RXD', #JR (Model A047)
189
+ 49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
188
190
  49473 => 'Tokina atx-m 85mm F1.8 FE', #JR
189
191
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
190
192
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
@@ -217,6 +219,8 @@ sub PrintInvLensSpec($;$$);
217
219
  50518 => 'Sigma 100-400mm F5-6.3 DG DN OS | C', #JR (020)
218
220
  50521 => 'Sigma 85mm F1.4 DG DN | A', #JR (020)
219
221
  50522 => 'Sigma 105mm F2.8 DG DN MACRO | A', #JR (020)
222
+ 50523 => 'Sigma 65mm F2 DG DN | C', #IB (020)
223
+ 50524 => 'Sigma 35mm F2 DG DN | C', #IB (020)
220
224
 
221
225
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
222
226
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
@@ -6062,6 +6066,7 @@ my %pictureProfile2010 = (
6062
6066
  29 => 'Gamma ITU709 (800%)',
6063
6067
  31 => 'Gamma S-Log3 (PP8 or PP9)', #14
6064
6068
  33 => 'Gamma HLG2 (PP10)', #14
6069
+ 34 => 'Gamma HLG3', #IB
6065
6070
  },
6066
6071
  );
6067
6072
  my %isoSetting2010 = (
@@ -9505,6 +9510,7 @@ my %isoSetting2010 = (
9505
9510
  Name => 'DistortionCorrParams',
9506
9511
  Format => 'int16s[16]',
9507
9512
  },
9513
+ 0x0070 => { %pictureProfile2010 }, #IB
9508
9514
  0x0071 => {
9509
9515
  Name => 'FocalLength',
9510
9516
  Format => 'int16u',
@@ -11098,7 +11104,7 @@ Minolta.
11098
11104
 
11099
11105
  =head1 AUTHOR
11100
11106
 
11101
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
11107
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
11102
11108
 
11103
11109
  This library is free software; you can redistribute it and/or modify it
11104
11110
  under the same terms as Perl itself.
@@ -379,7 +379,7 @@ write Sony Image Data Converter version 3.0 metadata in ARW images.
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.
@@ -21,8 +21,8 @@ $VERSION = '1.01';
21
21
  NOTES => q{
22
22
  These tags are part of the CIPA Stereo Still Image specification, and are
23
23
  found in the APP3 "Stim" segment of JPEG images. See
24
- L<http://www.cipa.jp/std/documents/e/DC-006_E.pdf> for the
25
- official specification.
24
+ L<https://web.archive.org/web/20190718152459/http://www.cipa.jp/std/documents/e/DC-006_E.pdf>
25
+ for the official specification.
26
26
  },
27
27
  0 => 'StimVersion',
28
28
  1 => {
@@ -174,7 +174,7 @@ information.
174
174
 
175
175
  =head1 AUTHOR
176
176
 
177
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
177
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
178
178
 
179
179
  This library is free software; you can redistribute it and/or modify it
180
180
  under the same terms as Perl itself.