exiftool-vendored.pl 12.38.0 → 12.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/LICENSE +10 -3
  2. package/bin/Changes +62 -0
  3. package/bin/MANIFEST +2 -0
  4. package/bin/META.json +1 -1
  5. package/bin/META.yml +1 -1
  6. package/bin/README +45 -45
  7. package/bin/arg_files/exif2xmp.args +5 -0
  8. package/bin/arg_files/xmp2exif.args +6 -0
  9. package/bin/config_files/acdsee.config +6 -6
  10. package/bin/config_files/photoshop_paths.config +30 -7
  11. package/bin/config_files/picasa_faces.config +1 -1
  12. package/bin/config_files/pix4d.config +2 -2
  13. package/bin/config_files/tiff_version.config +2 -2
  14. package/bin/exiftool +96 -65
  15. package/bin/lib/File/RandomAccess.pm +1 -1
  16. package/bin/lib/File/RandomAccess.pod +2 -2
  17. package/bin/lib/Image/ExifTool/AES.pm +1 -1
  18. package/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  19. package/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  20. package/bin/lib/Image/ExifTool/APE.pm +1 -1
  21. package/bin/lib/Image/ExifTool/APP12.pm +1 -1
  22. package/bin/lib/Image/ExifTool/ASF.pm +1 -1
  23. package/bin/lib/Image/ExifTool/Apple.pm +1 -1
  24. package/bin/lib/Image/ExifTool/Audible.pm +1 -1
  25. package/bin/lib/Image/ExifTool/BMP.pm +1 -1
  26. package/bin/lib/Image/ExifTool/BPG.pm +1 -1
  27. package/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  28. package/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  29. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -4
  30. package/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  31. package/bin/lib/Image/ExifTool/Canon.pm +79 -5
  32. package/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  33. package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  34. package/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  35. package/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  36. package/bin/lib/Image/ExifTool/Casio.pm +1 -1
  37. package/bin/lib/Image/ExifTool/Charset.pm +1 -1
  38. package/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  39. package/bin/lib/Image/ExifTool/DJI.pm +1 -1
  40. package/bin/lib/Image/ExifTool/DNG.pm +1 -1
  41. package/bin/lib/Image/ExifTool/DPX.pm +1 -1
  42. package/bin/lib/Image/ExifTool/DV.pm +1 -1
  43. package/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  44. package/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  45. package/bin/lib/Image/ExifTool/EXE.pm +1 -1
  46. package/bin/lib/Image/ExifTool/Exif.pm +53 -21
  47. package/bin/lib/Image/ExifTool/FITS.pm +1 -1
  48. package/bin/lib/Image/ExifTool/FLAC.pm +1 -1
  49. package/bin/lib/Image/ExifTool/FLIF.pm +1 -1
  50. package/bin/lib/Image/ExifTool/FLIR.pm +16 -4
  51. package/bin/lib/Image/ExifTool/Fixup.pm +1 -1
  52. package/bin/lib/Image/ExifTool/Flash.pm +1 -1
  53. package/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  54. package/bin/lib/Image/ExifTool/Font.pm +1 -1
  55. package/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
  56. package/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
  57. package/bin/lib/Image/ExifTool/GE.pm +1 -1
  58. package/bin/lib/Image/ExifTool/GIF.pm +1 -1
  59. package/bin/lib/Image/ExifTool/GIMP.pm +1 -1
  60. package/bin/lib/Image/ExifTool/GPS.pm +1 -1
  61. package/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  62. package/bin/lib/Image/ExifTool/Geotag.pm +4 -3
  63. package/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  64. package/bin/lib/Image/ExifTool/H264.pm +1 -1
  65. package/bin/lib/Image/ExifTool/HP.pm +1 -1
  66. package/bin/lib/Image/ExifTool/HTML.pm +1 -1
  67. package/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  68. package/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  69. package/bin/lib/Image/ExifTool/ID3.pm +1 -1
  70. package/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  71. package/bin/lib/Image/ExifTool/ISO.pm +1 -1
  72. package/bin/lib/Image/ExifTool/ITC.pm +1 -1
  73. package/bin/lib/Image/ExifTool/Import.pm +1 -1
  74. package/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  75. package/bin/lib/Image/ExifTool/JPEG.pm +6 -2
  76. package/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  77. package/bin/lib/Image/ExifTool/JSON.pm +1 -1
  78. package/bin/lib/Image/ExifTool/JVC.pm +1 -1
  79. package/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  80. package/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  81. package/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  82. package/bin/lib/Image/ExifTool/LIF.pm +1 -1
  83. package/bin/lib/Image/ExifTool/LNK.pm +1 -1
  84. package/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  85. package/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  86. package/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  87. package/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  88. package/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  89. package/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  90. package/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  91. package/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  92. package/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  93. package/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  94. package/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  95. package/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  96. package/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  97. package/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  98. package/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  99. package/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  100. package/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  101. package/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  102. package/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  103. package/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  104. package/bin/lib/Image/ExifTool/MIE.pm +1 -1
  105. package/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  106. package/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  107. package/bin/lib/Image/ExifTool/MNG.pm +1 -1
  108. package/bin/lib/Image/ExifTool/MOI.pm +1 -1
  109. package/bin/lib/Image/ExifTool/MPC.pm +1 -1
  110. package/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  111. package/bin/lib/Image/ExifTool/MPF.pm +1 -1
  112. package/bin/lib/Image/ExifTool/MRC.pm +1 -1
  113. package/bin/lib/Image/ExifTool/MWG.pm +1 -1
  114. package/bin/lib/Image/ExifTool/MXF.pm +1 -1
  115. package/bin/lib/Image/ExifTool/MacOS.pm +10 -10
  116. package/bin/lib/Image/ExifTool/MakerNotes.pm +13 -2
  117. package/bin/lib/Image/ExifTool/Matroska.pm +9 -5
  118. package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  119. package/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  120. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  121. package/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  122. package/bin/lib/Image/ExifTool/Nikon.pm +924 -184
  123. package/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  124. package/bin/lib/Image/ExifTool/NikonCustom.pm +519 -6
  125. package/bin/lib/Image/ExifTool/NikonSettings.pm +17 -18
  126. package/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  127. package/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  128. package/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  129. package/bin/lib/Image/ExifTool/Olympus.pm +8 -7
  130. package/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  131. package/bin/lib/Image/ExifTool/Opus.pm +1 -1
  132. package/bin/lib/Image/ExifTool/Other.pm +1 -1
  133. package/bin/lib/Image/ExifTool/PCX.pm +1 -1
  134. package/bin/lib/Image/ExifTool/PDF.pm +1 -1
  135. package/bin/lib/Image/ExifTool/PGF.pm +1 -1
  136. package/bin/lib/Image/ExifTool/PICT.pm +1 -1
  137. package/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  138. package/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  139. package/bin/lib/Image/ExifTool/PNG.pm +28 -8
  140. package/bin/lib/Image/ExifTool/PPM.pm +1 -1
  141. package/bin/lib/Image/ExifTool/PSP.pm +1 -1
  142. package/bin/lib/Image/ExifTool/Palm.pm +1 -1
  143. package/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  144. package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  145. package/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  146. package/bin/lib/Image/ExifTool/Pentax.pm +3 -2
  147. package/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  148. package/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  149. package/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  150. package/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  151. package/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  152. package/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  153. package/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  154. package/bin/lib/Image/ExifTool/QuickTime.pm +10 -6
  155. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +16 -5
  156. package/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  157. package/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  158. package/bin/lib/Image/ExifTool/RTF.pm +1 -1
  159. package/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  160. package/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  161. package/bin/lib/Image/ExifTool/Real.pm +1 -1
  162. package/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  163. package/bin/lib/Image/ExifTool/Red.pm +1 -1
  164. package/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  165. package/bin/lib/Image/ExifTool/Samsung.pm +6 -2
  166. package/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  167. package/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  168. package/bin/lib/Image/ExifTool/Shift.pl +3 -1
  169. package/bin/lib/Image/ExifTool/Shortcuts.pm +3 -2
  170. package/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  171. package/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  172. package/bin/lib/Image/ExifTool/Sony.pm +11 -5
  173. package/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  174. package/bin/lib/Image/ExifTool/Stim.pm +1 -1
  175. package/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  176. package/bin/lib/Image/ExifTool/TagLookup.pm +6382 -6290
  177. package/bin/lib/Image/ExifTool/TagNames.pod +340 -21
  178. package/bin/lib/Image/ExifTool/Text.pm +1 -1
  179. package/bin/lib/Image/ExifTool/Theora.pm +1 -1
  180. package/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  181. package/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  182. package/bin/lib/Image/ExifTool/VCard.pm +1 -1
  183. package/bin/lib/Image/ExifTool/Validate.pm +1 -1
  184. package/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  185. package/bin/lib/Image/ExifTool/WTV.pm +1 -1
  186. package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  187. package/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  188. package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  189. package/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  190. package/bin/lib/Image/ExifTool/WritePNG.pl +30 -10
  191. package/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  192. package/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  193. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +9 -4
  194. package/bin/lib/Image/ExifTool/WriteXMP.pl +3 -1
  195. package/bin/lib/Image/ExifTool/Writer.pl +6 -5
  196. package/bin/lib/Image/ExifTool/XMP.pm +49 -23
  197. package/bin/lib/Image/ExifTool/XMP2.pl +3 -2
  198. package/bin/lib/Image/ExifTool/XMPStruct.pl +22 -8
  199. package/bin/lib/Image/ExifTool/ZIP.pm +10 -2
  200. package/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  201. package/bin/lib/Image/ExifTool/iWork.pm +1 -1
  202. package/bin/lib/Image/ExifTool.pm +21 -5
  203. package/bin/lib/Image/ExifTool.pod +71 -69
  204. package/bin/perl-Image-ExifTool.spec +43 -43
  205. package/bin/pp_build_exe.args +5 -5
  206. package/package.json +14 -3
@@ -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.
@@ -184,7 +184,7 @@ information from ISO 9660 disk images.
184
184
 
185
185
  =head1 AUTHOR
186
186
 
187
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
187
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
188
188
 
189
189
  This library is free software; you can redistribute it and/or modify it
190
190
  under the same terms as Perl itself.
@@ -191,7 +191,7 @@ information (including artwork images) from iTunes Cover Flow files.
191
191
 
192
192
  =head1 AUTHOR
193
193
 
194
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
194
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
195
195
 
196
196
  This library is free software; you can redistribute it and/or modify it
197
197
  under the same terms as Perl itself.
@@ -348,7 +348,7 @@ stored as hash lookups of tag name/value for each SourceFile.
348
348
 
349
349
  =head1 AUTHOR
350
350
 
351
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
351
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
352
352
 
353
353
  This library is free software; you can redistribute it and/or modify it
354
354
  under the same terms as Perl itself.
@@ -258,7 +258,7 @@ them and the LargeFileSupport option is enabled.
258
258
 
259
259
  =head1 AUTHOR
260
260
 
261
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
261
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
262
262
 
263
263
  This library is free software; you can redistribute it and/or modify it
264
264
  under the same terms as Perl itself.
@@ -11,7 +11,7 @@ use strict;
11
11
  use vars qw($VERSION);
12
12
  use Image::ExifTool qw(:DataAccess :Utils);
13
13
 
14
- $VERSION = '1.32';
14
+ $VERSION = '1.33';
15
15
 
16
16
  sub ProcessOcad($$$);
17
17
  sub ProcessJPEG_HDR($$$);
@@ -284,6 +284,10 @@ sub ProcessJPEG_HDR($$$);
284
284
  }, {
285
285
  Name => 'Insta360',
286
286
  Condition => '$$valPt =~ /8db42d694ccc418790edff439fe026bf$/',
287
+ }, {
288
+ Name => 'NikonApp',
289
+ Condition => '$$valPt =~ m(\0{6}/NIKON APP$)',
290
+ Notes => 'contains editing information in XMP format',
287
291
  }, {
288
292
  Name => 'PreviewImage',
289
293
  Condition => '$$valPt =~ /^\xff\xd8\xff/',
@@ -714,7 +718,7 @@ segments are included in the Image::ExifTool module itself.
714
718
 
715
719
  =head1 AUTHOR
716
720
 
717
- Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
721
+ Copyright 2003-2022, Phil Harvey (philharvey66 at gmail.com)
718
722
 
719
723
  This library is free software; you can redistribute it and/or modify it
720
724
  under the same terms as Perl itself.