exiftool_vendored 12.37.0 → 12.41.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (206) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +73 -0
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +45 -45
  7. data/bin/arg_files/exif2xmp.args +5 -0
  8. data/bin/arg_files/xmp2exif.args +6 -0
  9. data/bin/config_files/acdsee.config +6 -6
  10. data/bin/config_files/photoshop_paths.config +30 -7
  11. data/bin/config_files/picasa_faces.config +1 -1
  12. data/bin/config_files/pix4d.config +2 -2
  13. data/bin/config_files/tiff_version.config +2 -2
  14. data/bin/exiftool +100 -67
  15. data/bin/lib/File/RandomAccess.pm +1 -1
  16. data/bin/lib/File/RandomAccess.pod +2 -2
  17. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  18. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  19. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  20. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  21. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  22. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  23. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  24. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  25. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  26. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  27. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  28. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  29. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -4
  30. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Canon.pm +79 -5
  32. data/bin/lib/Image/ExifTool/CanonCustom.pm +13 -3
  33. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  34. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  35. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  36. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  37. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  39. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  40. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  41. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  42. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  43. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  44. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  45. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  46. data/bin/lib/Image/ExifTool/Exif.pm +53 -21
  47. data/bin/lib/Image/ExifTool/FITS.pm +1 -1
  48. data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  49. data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  50. data/bin/lib/Image/ExifTool/FLIR.pm +16 -4
  51. data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  52. data/bin/lib/Image/ExifTool/Flash.pm +1 -1
  53. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  54. data/bin/lib/Image/ExifTool/Font.pm +1 -1
  55. data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  56. data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  57. data/bin/lib/Image/ExifTool/GE.pm +1 -1
  58. data/bin/lib/Image/ExifTool/GIF.pm +1 -1
  59. data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  60. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  61. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  62. data/bin/lib/Image/ExifTool/Geotag.pm +4 -3
  63. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  64. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  65. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  66. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  67. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  68. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  69. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  70. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  71. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  72. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  74. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  75. data/bin/lib/Image/ExifTool/JPEG.pm +6 -2
  76. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  77. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  78. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  81. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  82. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  83. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  99. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  100. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  101. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  102. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  103. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  105. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  106. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  115. data/bin/lib/Image/ExifTool/MacOS.pm +10 -10
  116. data/bin/lib/Image/ExifTool/MakerNotes.pm +13 -2
  117. data/bin/lib/Image/ExifTool/Matroska.pm +9 -5
  118. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  119. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  120. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  122. data/bin/lib/Image/ExifTool/Nikon.pm +1062 -189
  123. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  124. data/bin/lib/Image/ExifTool/NikonCustom.pm +519 -6
  125. data/bin/lib/Image/ExifTool/NikonSettings.pm +17 -18
  126. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  127. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  128. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  129. data/bin/lib/Image/ExifTool/Olympus.pm +8 -7
  130. data/bin/lib/Image/ExifTool/OpenEXR.pm +5 -3
  131. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  132. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  133. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  134. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  136. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  138. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PNG.pm +28 -8
  140. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  142. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  143. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  144. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  145. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  146. data/bin/lib/Image/ExifTool/Pentax.pm +3 -2
  147. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  148. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  149. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  150. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  151. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  152. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  153. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  154. data/bin/lib/Image/ExifTool/QuickTime.pm +10 -6
  155. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +16 -5
  156. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  157. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  158. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  160. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Samsung.pm +6 -2
  166. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Shift.pl +3 -1
  169. data/bin/lib/Image/ExifTool/Shortcuts.pm +3 -2
  170. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  171. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Sony.pm +11 -5
  173. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  175. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  176. data/bin/lib/Image/ExifTool/TagLookup.pm +6385 -6290
  177. data/bin/lib/Image/ExifTool/TagNames.pod +361 -22
  178. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  179. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  180. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  181. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  182. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  183. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  184. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  185. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  186. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  187. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  188. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  189. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  190. data/bin/lib/Image/ExifTool/WritePNG.pl +30 -10
  191. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  192. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  193. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +9 -4
  194. data/bin/lib/Image/ExifTool/WriteXMP.pl +3 -1
  195. data/bin/lib/Image/ExifTool/Writer.pl +6 -5
  196. data/bin/lib/Image/ExifTool/XMP.pm +51 -25
  197. data/bin/lib/Image/ExifTool/XMP2.pl +3 -2
  198. data/bin/lib/Image/ExifTool/XMPStruct.pl +22 -8
  199. data/bin/lib/Image/ExifTool/ZIP.pm +10 -2
  200. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  201. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  202. data/bin/lib/Image/ExifTool.pm +23 -6
  203. data/bin/lib/Image/ExifTool.pod +71 -69
  204. data/bin/perl-Image-ExifTool.spec +43 -43
  205. data/lib/exiftool_vendored/version.rb +1 -1
  206. metadata +2 -2
@@ -1290,9 +1290,19 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
1290
1290
  },
1291
1291
  },
1292
1292
  0x0106 => [{
1293
+ Name => 'AEBShotCount',
1294
+ Condition => '$$self{Model} =~ /\b90D\b/',
1295
+ Notes => 'EOS 90D', # (and who knows what others?)
1296
+ PrintConv => {
1297
+ 2 => '2 shots',
1298
+ 3 => '3 shots',
1299
+ 5 => '5 shots',
1300
+ 7 => '7 shots',
1301
+ },
1302
+ },{
1293
1303
  Name => 'AEBShotCount',
1294
1304
  Condition => '$count == 1',
1295
- Notes => 'one value for some models...',
1305
+ Notes => 'other models storing a single value',
1296
1306
  PrintConv => {
1297
1307
  0 => '3 shots',
1298
1308
  1 => '2 shots',
@@ -1302,7 +1312,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
1302
1312
  },{
1303
1313
  Name => 'AEBShotCount',
1304
1314
  Count => 2,
1305
- Notes => 'two values for others',
1315
+ Notes => 'models storing two values',
1306
1316
  PrintConv => {
1307
1317
  '3 0' => '3 shots',
1308
1318
  '2 1' => '2 shots',
@@ -2863,7 +2873,7 @@ Image::ExifTool to read this information.
2863
2873
 
2864
2874
  =head1 AUTHOR
2865
2875
 
2866
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2876
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2867
2877
 
2868
2878
  This library is free software; you can redistribute it and/or modify it
2869
2879
  under the same terms as Perl itself.
@@ -877,7 +877,7 @@ tags.)
877
877
 
878
878
  =head1 AUTHOR
879
879
 
880
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
880
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
881
881
 
882
882
  This library is free software; you can redistribute it and/or modify it
883
883
  under the same terms as Perl itself.
@@ -2264,7 +2264,7 @@ files, and as a trailer in JPEG, CRW, CR2 and TIFF images.
2264
2264
 
2265
2265
  =head1 AUTHOR
2266
2266
 
2267
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2267
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2268
2268
 
2269
2269
  This library is free software; you can redistribute it and/or modify it
2270
2270
  under the same terms as Perl itself.
@@ -221,7 +221,7 @@ settings files (COS).
221
221
 
222
222
  =head1 AUTHOR
223
223
 
224
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
224
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
225
225
 
226
226
  This library is free software; you can redistribute it and/or modify it
227
227
  under the same terms as Perl itself.
@@ -2034,7 +2034,7 @@ Casio maker notes in EXIF information.
2034
2034
 
2035
2035
  =head1 AUTHOR
2036
2036
 
2037
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2037
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2038
2038
 
2039
2039
  This library is free software; you can redistribute it and/or modify it
2040
2040
  under the same terms as Perl itself.
@@ -422,7 +422,7 @@ when decoding certain types of information.
422
422
 
423
423
  =head1 AUTHOR
424
424
 
425
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
425
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
426
426
 
427
427
  This library is free software; you can redistribute it and/or modify it
428
428
  under the same terms as Perl itself.
@@ -3853,7 +3853,7 @@ No translation of special characters sets is done.
3853
3853
 
3854
3854
  =head1 AUTHOR
3855
3855
 
3856
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
3856
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
3857
3857
 
3858
3858
  This library is free software; you can redistribute it and/or modify it
3859
3859
  under the same terms as Perl itself.
@@ -151,7 +151,7 @@ the maker notes in images from some DJI Phantom drones.
151
151
 
152
152
  =head1 AUTHOR
153
153
 
154
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
154
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
155
155
 
156
156
  This library is free software; you can redistribute it and/or modify it
157
157
  under the same terms as Perl itself.
@@ -820,7 +820,7 @@ information in DNG (Digital Negative) images.
820
820
 
821
821
  =head1 AUTHOR
822
822
 
823
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
823
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
824
824
 
825
825
  This library is free software; you can redistribute it and/or modify it
826
826
  under the same terms as Perl itself.
@@ -225,7 +225,7 @@ metadata from DPX (Digital Picture Exchange) images.
225
225
 
226
226
  =head1 AUTHOR
227
227
 
228
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
228
+ Copyright 2003-2022, 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.
@@ -291,7 +291,7 @@ information from DV (raw Digital Video) files.
291
291
 
292
292
  =head1 AUTHOR
293
293
 
294
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
294
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
295
295
 
296
296
  This library is free software; you can redistribute it and/or modify it
297
297
  under the same terms as Perl itself.
@@ -360,7 +360,7 @@ This file contains tag definitions for the Darwin Core XMP namespace.
360
360
 
361
361
  =head1 AUTHOR
362
362
 
363
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
363
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
364
364
 
365
365
  This library is free software; you can redistribute it and/or modify it
366
366
  under the same terms as Perl itself.
@@ -353,7 +353,7 @@ Image::ExifTool::AIFF.
353
353
 
354
354
  =head1 AUTHOR
355
355
 
356
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
356
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
357
357
 
358
358
  This library is free software; you can redistribute it and/or modify it
359
359
  under the same terms as Perl itself.
@@ -1398,7 +1398,7 @@ library files.
1398
1398
 
1399
1399
  =head1 AUTHOR
1400
1400
 
1401
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1401
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1402
1402
 
1403
1403
  This library is free software; you can redistribute it and/or modify it
1404
1404
  under the same terms as Perl itself.
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
56
56
  use Image::ExifTool qw(:DataAccess :Utils);
57
57
  use Image::ExifTool::MakerNotes;
58
58
 
59
- $VERSION = '4.38';
59
+ $VERSION = '4.40';
60
60
 
61
61
  sub ProcessExif($$$);
62
62
  sub WriteExif($$$);
@@ -415,7 +415,14 @@ my %opcodeInfo = (
415
415
  WriteGroup => 'IFD0',
416
416
  # set priority directory if this is the full resolution image
417
417
  DataMember => 'SubfileType',
418
- RawConv => '$self->SetPriorityDir() if $val eq "0"; $$self{SubfileType} = $val',
418
+ RawConv => q{
419
+ if ($val == ($val & 0x02)) {
420
+ $self->SetPriorityDir() if $val == 0;
421
+ $$self{PageCount} = ($$self{PageCount} || 0) + 1;
422
+ $$self{MultiPage} = 1 if $val == 2 or $$self{PageCount} > 1;
423
+ }
424
+ $$self{SubfileType} = $val;
425
+ },
419
426
  PrintConv => \%subfileType,
420
427
  },
421
428
  0xff => {
@@ -425,7 +432,14 @@ my %opcodeInfo = (
425
432
  Writable => 'int16u',
426
433
  WriteGroup => 'IFD0',
427
434
  # set priority directory if this is the full resolution image
428
- RawConv => '$self->SetPriorityDir() if $val eq "1"; $val',
435
+ RawConv => q{
436
+ if ($val == 1 or $val == 3) {
437
+ $self->SetPriorityDir() if $val == 1;
438
+ $$self{PageCount} = ($$self{PageCount} || 0) + 1;
439
+ $$self{MultiPage} = 1 if $val == 3 or $$self{PageCount} > 1;
440
+ }
441
+ $val;
442
+ },
429
443
  PrintConv => {
430
444
  1 => 'Full-resolution image',
431
445
  2 => 'Reduced-resolution image',
@@ -2144,7 +2158,7 @@ my %opcodeInfo = (
2144
2158
  Notes => 'displayed in seconds, but stored as an APEX value',
2145
2159
  Format => 'rational64s', # Leica M8 patch (incorrectly written as rational64u)
2146
2160
  Writable => 'rational64s',
2147
- ValueConv => 'abs($val)<100 ? 2**(-$val) : 0',
2161
+ ValueConv => 'IsFloat($val) && abs($val)<100 ? 2**(-$val) : 0',
2148
2162
  ValueConvInv => '$val>0 ? -log($val)/log(2) : -100',
2149
2163
  PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
2150
2164
  PrintConvInv => 'Image::ExifTool::Exif::ConvertFraction($val)',
@@ -4817,12 +4831,21 @@ my %subSecConv = (
4817
4831
  GPSPosition => {
4818
4832
  Groups => { 2 => 'Location' },
4819
4833
  Writable => 1,
4834
+ Protected => 1,
4820
4835
  WriteAlso => {
4821
4836
  GPSLatitude => '$val =~ /(.*?)( ?[NS])?,/ ? $1 : undef',
4822
4837
  GPSLatitudeRef => '$val =~ /(-?)(.*?) ?([NS]?),/ ? ($3 || ($1 ? "S" : "N")) : undef',
4823
4838
  GPSLongitude => '$val =~ /, ?(.*?)( ?[EW]?)$/ ? $1 : undef',
4824
4839
  GPSLongitudeRef => '$val =~ /, ?(-?)(.*?) ?([EW]?)$/ ? ($3 || ($1 ? "W" : "E")) : undef',
4825
4840
  },
4841
+ PrintConvInv => q{
4842
+ return undef unless $val =~ /(.*? ?[NS]?), ?(.*? ?[EW]?)$/;
4843
+ my ($lat, $lon) = ($1, $2);
4844
+ require Image::ExifTool::GPS;
4845
+ $lat = Image::ExifTool::GPS::ToDegrees($lat, 1, "lat");
4846
+ $lon = Image::ExifTool::GPS::ToDegrees($lon, 1, "lon");
4847
+ return "$lat, $lon";
4848
+ },
4826
4849
  Require => {
4827
4850
  0 => 'GPSLatitude',
4828
4851
  1 => 'GPSLongitude',
@@ -5240,6 +5263,7 @@ sub RedBlueBalance($@)
5240
5263
  sub PrintExposureTime($)
5241
5264
  {
5242
5265
  my $secs = shift;
5266
+ return $secs unless Image::ExifTool::IsFloat($secs);
5243
5267
  if ($secs < 0.25001 and $secs > 0) {
5244
5268
  return sprintf("1/%d",int(0.5 + 1/$secs));
5245
5269
  }
@@ -5845,7 +5869,7 @@ sub ProcessExif($$$)
5845
5869
  unless ($path =~ /^(JPEG-APP1-IFD0|TIFF-IFD0|PSD-EXIFInfo-IFD0)$/) {
5846
5870
  if ($Image::ExifTool::MWG::strict) {
5847
5871
  $et->Warn("Ignored non-standard EXIF at $path");
5848
- return 1;
5872
+ return 0;
5849
5873
  } else {
5850
5874
  $et->Warn("Non-standard EXIF at $path", 1);
5851
5875
  }
@@ -5888,10 +5912,6 @@ sub ProcessExif($$$)
5888
5912
  # also read next IFD pointer if available
5889
5913
  if ($raf->Read($buf2, $len+4) >= $len) {
5890
5914
  $buff .= $buf2;
5891
- # make copy of dirInfo since we're going to modify it
5892
- my %newDirInfo = %$dirInfo;
5893
- $dirInfo = \%newDirInfo;
5894
- # update directory parameters for the newly loaded IFD
5895
5915
  $dataPt = $$dirInfo{DataPt} = \$buff;
5896
5916
  $dataPos = $$dirInfo{DataPos} = $offset;
5897
5917
  $dataLen = $$dirInfo{DataLen} = length $buff;
@@ -6585,7 +6605,7 @@ sub ProcessExif($$$)
6585
6605
  #### eval Validate ($val, $dirData, $subdirStart, $size)
6586
6606
  my $ok = 0;
6587
6607
  if (defined $$subdir{Validate} and not eval $$subdir{Validate}) {
6588
- $et->Warn("Invalid $tagStr data");
6608
+ $et->Warn("Invalid $tagStr data", $inMakerNotes);
6589
6609
  $invalid = 1;
6590
6610
  } else {
6591
6611
  if (not $subdirInfo{DirName} and $inMakerNotes) {
@@ -6698,28 +6718,40 @@ sub ProcessExif($$$)
6698
6718
 
6699
6719
  # scan for subsequent IFD's if specified
6700
6720
  if ($$dirInfo{Multi} and $bytesFromEnd >= 4) {
6701
- my $offset = Get32u($dataPt, $dirEnd);
6702
- if ($offset) {
6703
- my $subdirStart = $offset - $dataPos;
6704
- # use same directory information for trailing directory,
6705
- # but change the start location (ProcessDirectory will
6706
- # test to make sure we don't reprocess the same dir twice)
6707
- my %newDirInfo = %$dirInfo;
6708
- $newDirInfo{DirStart} = $subdirStart;
6721
+ # use same directory information for trailing directory,
6722
+ # but change the start location (ProcessDirectory will
6723
+ # test to make sure we don't reprocess the same dir twice)
6724
+ my %newDirInfo = %$dirInfo;
6725
+ $newDirInfo{Multi} = 0; # prevent recursion
6726
+ $newDirInfo{OffsetName} = $nextOffName;
6727
+ $$et{INDENT} =~ s/..$//; # keep indent the same
6728
+ for (;;) {
6729
+ my $offset = Get32u($dataPt, $dirEnd) or last;
6730
+ $newDirInfo{DirStart} = $offset - $dataPos;
6709
6731
  # increment IFD number
6710
6732
  my $ifdNum = $newDirInfo{DirName} =~ s/(\d+)$// ? $1 : 0;
6711
6733
  $newDirInfo{DirName} .= $ifdNum + 1;
6712
- $newDirInfo{OffsetName} = $nextOffName;
6713
6734
  # must validate SubIFD1 because the nextIFD pointer is invalid for some RAW formats
6714
6735
  if ($newDirInfo{DirName} ne 'SubIFD1' or ValidateIFD(\%newDirInfo)) {
6715
- $$et{INDENT} =~ s/..$//; # keep indent the same
6716
6736
  my $cur = pop @{$$et{PATH}};
6717
6737
  $et->ProcessDirectory(\%newDirInfo, $tagTablePtr) or $success = 0;
6718
6738
  push @{$$et{PATH}}, $cur;
6739
+ if ($success and $newDirInfo{BytesFromEnd} >= 4) {
6740
+ $dataPt = $newDirInfo{DataPt};
6741
+ $dataPos = $newDirInfo{DataPos};
6742
+ $dirEnd = $newDirInfo{DirEnd};
6743
+ next;
6744
+ }
6719
6745
  } elsif ($verbose or $$et{TIFF_TYPE} eq 'TIFF') {
6720
6746
  $et->Warn('Ignored bad IFD linked from SubIFD');
6721
6747
  }
6748
+ last;
6722
6749
  }
6750
+ } elsif (defined $$dirInfo{Multi}) {
6751
+ # return necessary parameters for parsing next IFD
6752
+ $$dirInfo{DirEnd} = $dirEnd;
6753
+ $$dirInfo{OffsetName} = $nextOffName;
6754
+ $$dirInfo{BytesFromEnd} = $bytesFromEnd;
6723
6755
  }
6724
6756
  return $success;
6725
6757
  }
@@ -6743,7 +6775,7 @@ EXIF and TIFF meta information.
6743
6775
 
6744
6776
  =head1 AUTHOR
6745
6777
 
6746
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
6778
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
6747
6779
 
6748
6780
  This library is free software; you can redistribute it and/or modify it
6749
6781
  under the same terms as Perl itself.
@@ -137,7 +137,7 @@ information from FITS (Flexible Image Transport System) images.
137
137
 
138
138
  =head1 AUTHOR
139
139
 
140
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
140
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
141
141
 
142
142
  This library is free software; you can redistribute it and/or modify it
143
143
  under the same terms as Perl itself.
@@ -284,7 +284,7 @@ information from Free Lossless Audio Codec (FLAC) audio files.
284
284
 
285
285
  =head1 AUTHOR
286
286
 
287
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
287
+ Copyright 2003-2022, 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.
@@ -329,7 +329,7 @@ meta information in FLIF (Free Lossless Image Format) images.
329
329
 
330
330
  =head1 AUTHOR
331
331
 
332
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
332
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
333
333
 
334
334
  This library is free software; you can redistribute it and/or modify it
335
335
  under the same terms as Perl itself.
@@ -24,7 +24,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
24
24
  use Image::ExifTool::Exif;
25
25
  use Image::ExifTool::GPS;
26
26
 
27
- $VERSION = '1.19';
27
+ $VERSION = '1.20';
28
28
 
29
29
  sub ProcessFLIR($$;$);
30
30
  sub ProcessFLIRText($$$);
@@ -691,7 +691,15 @@ my %float8g = ( Format => 'float', PrintConv => 'sprintf("%.8g",$val)' );
691
691
  T => 'True North',
692
692
  },
693
693
  },
694
- # 0x48 - int32u: seen 0,77
694
+ 0x48 => { #PH (NC)
695
+ Name => 'GPSImgDirectionRef',
696
+ Format => 'string[2]',
697
+ RawConv => 'length($val) ? $val : undef',
698
+ PrintConv => {
699
+ M => 'Magnetic North',
700
+ T => 'True North',
701
+ },
702
+ },
695
703
  0x4c => {
696
704
  Name => 'GPSSpeed',
697
705
  %float2f,
@@ -702,7 +710,11 @@ my %float8g = ( Format => 'float', PrintConv => 'sprintf("%.8g",$val)' );
702
710
  %float2f,
703
711
  RawConv => '$val < 0 ? undef : $val',
704
712
  },
705
- # 0x54 - float: seen 0,-1
713
+ 0x54 => {
714
+ Name => 'GPSImgDirection',
715
+ %float2f,
716
+ RawConv => '$val < 0 ? undef : $val',
717
+ },
706
718
  0x58 => {
707
719
  Name => 'GPSMapDatum',
708
720
  Format => 'string[16]',
@@ -1619,7 +1631,7 @@ Systems Inc. thermal image files (FFF, FPF and JPEG format).
1619
1631
 
1620
1632
  =head1 AUTHOR
1621
1633
 
1622
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1634
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1623
1635
 
1624
1636
  This library is free software; you can redistribute it and/or modify it
1625
1637
  under the same terms as Perl itself.
@@ -354,7 +354,7 @@ linear list when ApplyFixups() is called.
354
354
 
355
355
  =head1 AUTHOR
356
356
 
357
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
357
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
358
358
 
359
359
  This library is free software; you can redistribute it and/or modify it
360
360
  under the same terms as Perl itself.
@@ -721,7 +721,7 @@ will add AMF3 support.
721
721
 
722
722
  =head1 AUTHOR
723
723
 
724
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
724
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
725
725
 
726
726
  This library is free software; you can redistribute it and/or modify it
727
727
  under the same terms as Perl itself.
@@ -2395,7 +2395,7 @@ JPEG images.
2395
2395
 
2396
2396
  =head1 AUTHOR
2397
2397
 
2398
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2398
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2399
2399
 
2400
2400
  This library is free software; you can redistribute it and/or modify it
2401
2401
  under the same terms as Perl itself.
@@ -622,7 +622,7 @@ extracted from these formats.
622
622
 
623
623
  =head1 AUTHOR
624
624
 
625
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
625
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
626
626
 
627
627
  This library is free software; you can redistribute it and/or modify it
628
628
  under the same terms as Perl itself.
@@ -243,7 +243,7 @@ write information from the FotoWare FotoStation trailer.
243
243
 
244
244
  =head1 AUTHOR
245
245
 
246
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
246
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
247
247
 
248
248
  This library is free software; you can redistribute it and/or modify it
249
249
  under the same terms as Perl itself.
@@ -1670,7 +1670,7 @@ FujiFilm maker notes in EXIF information, and to read/write FujiFilm RAW
1670
1670
 
1671
1671
  =head1 AUTHOR
1672
1672
 
1673
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1673
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1674
1674
 
1675
1675
  This library is free software; you can redistribute it and/or modify it
1676
1676
  under the same terms as Perl itself.
@@ -68,7 +68,7 @@ General Imaging maker notes.
68
68
 
69
69
  =head1 AUTHOR
70
70
 
71
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
71
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
72
72
 
73
73
  This library is free software; you can redistribute it and/or modify it
74
74
  under the same terms as Perl itself.
@@ -541,7 +541,7 @@ write GIF meta information.
541
541
 
542
542
  =head1 AUTHOR
543
543
 
544
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
544
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
545
545
 
546
546
  This library is free software; you can redistribute it and/or modify it
547
547
  under the same terms as Perl itself.
@@ -270,7 +270,7 @@ GIMP software.
270
270
 
271
271
  =head1 AUTHOR
272
272
 
273
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
273
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
274
274
 
275
275
  This library is free software; you can redistribute it and/or modify it
276
276
  under the same terms as Perl itself.
@@ -579,7 +579,7 @@ GPS (Global Positioning System) meta information in EXIF data.
579
579
 
580
580
  =head1 AUTHOR
581
581
 
582
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
582
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
583
583
 
584
584
  This library is free software; you can redistribute it and/or modify it
585
585
  under the same terms as Perl itself.
@@ -2242,7 +2242,7 @@ coordinates.
2242
2242
 
2243
2243
  =head1 AUTHOR
2244
2244
 
2245
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2245
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
2246
2246
 
2247
2247
  This library is free software; you can redistribute it and/or modify it
2248
2248
  under the same terms as Perl itself.
@@ -28,7 +28,7 @@ use vars qw($VERSION);
28
28
  use Image::ExifTool qw(:Public);
29
29
  use Image::ExifTool::GPS;
30
30
 
31
- $VERSION = '1.65';
31
+ $VERSION = '1.66';
32
32
 
33
33
  sub JITTER() { return 2 } # maximum time jitter
34
34
 
@@ -210,13 +210,14 @@ sub LoadTrackLog($$;$)
210
210
  $raf->ReadLine($_) or last;
211
211
  # determine file format
212
212
  if (not $format) {
213
+ s/^\xef\xbb\xbf//; # remove leading BOM if it exists
213
214
  if (/^<(\?xml|gpx)[\s>]/) { # look for XML or GPX header
214
215
  $format = 'XML';
215
216
  # check for NMEA sentence
216
217
  # (must ONLY start with ones that have timestamps! eg. not GSA or PTNTHPR!)
217
218
  } elsif (/^.*\$([A-Z]{2}(RMC|GGA|GLL|ZDA)|PMGNTRK),/) {
218
219
  $format = 'NMEA';
219
- $nmeaStart = $2 || $1; # save type of first sentence
220
+ $nmeaStart = $2 || $1; # save type of first sentence
220
221
  } elsif (/^A(FLA|XSY|FIL)/) {
221
222
  # (don't set format yet because we want to read HFDTE first)
222
223
  $nmeaStart = 'B' ;
@@ -1423,7 +1424,7 @@ user-defined tag GPSRoll, must be active.
1423
1424
 
1424
1425
  =head1 AUTHOR
1425
1426
 
1426
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1427
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1427
1428
 
1428
1429
  This library is free software; you can redistribute it and/or modify it
1429
1430
  under the same terms as Perl itself.
@@ -733,7 +733,7 @@ metadata from GoPro MP4 videos.
733
733
 
734
734
  =head1 AUTHOR
735
735
 
736
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
736
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
737
737
 
738
738
  This library is free software; you can redistribute it and/or modify it
739
739
  under the same terms as Perl itself.
@@ -1123,7 +1123,7 @@ information from H.264 video streams.
1123
1123
 
1124
1124
  =head1 AUTHOR
1125
1125
 
1126
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1126
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1127
1127
 
1128
1128
  This library is free software; you can redistribute it and/or modify it
1129
1129
  under the same terms as Perl itself.
@@ -250,7 +250,7 @@ Hewlett-Packard maker notes.
250
250
 
251
251
  =head1 AUTHOR
252
252
 
253
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
253
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
254
254
 
255
255
  This library is free software; you can redistribute it and/or modify it
256
256
  under the same terms as Perl itself.
@@ -555,7 +555,7 @@ meta information from HTML documents.
555
555
 
556
556
  =head1 AUTHOR
557
557
 
558
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
558
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
559
559
 
560
560
  This library is free software; you can redistribute it and/or modify it
561
561
  under the same terms as Perl itself.
@@ -917,7 +917,7 @@ page.
917
917
 
918
918
  =head1 AUTHOR
919
919
 
920
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
920
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
921
921
 
922
922
  This library is free software; you can redistribute it and/or modify it
923
923
  under the same terms as Perl itself.
@@ -1354,7 +1354,7 @@ data created on one device into another device's native color space.
1354
1354
 
1355
1355
  =head1 AUTHOR
1356
1356
 
1357
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1357
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1358
1358
 
1359
1359
  This library is free software; you can redistribute it and/or modify it
1360
1360
  under the same terms as Perl itself.
@@ -1652,7 +1652,7 @@ other types of audio files.
1652
1652
 
1653
1653
  =head1 AUTHOR
1654
1654
 
1655
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1655
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1656
1656
 
1657
1657
  This library is free software; you can redistribute it and/or modify it
1658
1658
  under the same terms as Perl itself.
@@ -1280,7 +1280,7 @@ image files.
1280
1280
 
1281
1281
  =head1 AUTHOR
1282
1282
 
1283
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1283
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
1284
1284
 
1285
1285
  This library is free software; you can redistribute it and/or modify it
1286
1286
  under the same terms as Perl itself.