exiftool_vendored 13.45.0 → 13.46.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 (218) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +19 -1
  3. data/bin/META.json +1 -1
  4. data/bin/META.yml +1 -1
  5. data/bin/README +3 -3
  6. data/bin/exiftool +8 -7
  7. data/bin/lib/File/RandomAccess.pm +1 -1
  8. data/bin/lib/File/RandomAccess.pod +2 -2
  9. data/bin/lib/Image/ExifTool/AAC.pm +1 -1
  10. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  11. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  13. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  14. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  15. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  16. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  17. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  18. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  19. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +2 -2
  23. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  24. data/bin/lib/Image/ExifTool/Canon.pm +52 -11
  25. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  26. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  29. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  31. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DJI.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  34. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DSF.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 +4 -3
  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/GM.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GPS.pm +1 -1
  56. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  57. data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
  58. data/bin/lib/Image/ExifTool/Geotag.pm +60 -19
  59. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  60. data/bin/lib/Image/ExifTool/Google.pm +3 -2
  61. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  62. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  63. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  64. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  67. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  68. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  69. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  70. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  71. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  72. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  73. data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  74. data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
  75. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  76. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  77. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Kandao.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/sk.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  99. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  100. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  101. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  102. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  103. data/bin/lib/Image/ExifTool/LigoGPS.pm +1 -1
  104. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  105. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  108. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  115. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  117. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  118. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  119. data/bin/lib/Image/ExifTool/MakerNotes.pm +4 -2
  120. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  122. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  123. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  124. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  125. data/bin/lib/Image/ExifTool/Nikon.pm +1 -1
  126. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  127. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  128. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  129. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  130. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  131. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  132. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  133. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  134. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  135. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  136. data/bin/lib/Image/ExifTool/PCAP.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  138. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PNG.pm +1 -1
  144. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  145. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  146. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  147. data/bin/lib/Image/ExifTool/Panasonic.pm +7 -2
  148. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  149. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  150. data/bin/lib/Image/ExifTool/Pentax.pm +4 -3
  151. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  152. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  153. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Plot.pm +1 -1
  156. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  157. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Protobuf.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  160. data/bin/lib/Image/ExifTool/QuickTime.pm +8 -4
  161. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
  162. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  163. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  164. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  173. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  175. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  177. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  178. data/bin/lib/Image/ExifTool/Sony.pm +1 -1
  179. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  180. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  181. data/bin/lib/Image/ExifTool/TNEF.pm +1 -1
  182. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  183. data/bin/lib/Image/ExifTool/TagLookup.pm +6976 -6967
  184. data/bin/lib/Image/ExifTool/TagNames.pod +19 -4
  185. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  186. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  187. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  188. data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
  189. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  190. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  191. data/bin/lib/Image/ExifTool/Validate.pm +5 -5
  192. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  193. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  194. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  195. data/bin/lib/Image/ExifTool/WavPack.pm +1 -1
  196. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  197. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  198. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  199. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  200. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  201. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  202. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  203. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +8 -4
  204. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  205. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  206. data/bin/lib/Image/ExifTool/Writer.pl +1 -1
  207. data/bin/lib/Image/ExifTool/XISF.pm +1 -1
  208. data/bin/lib/Image/ExifTool/XMP.pm +1 -1
  209. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  210. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  211. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  212. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  213. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  214. data/bin/lib/Image/ExifTool.pm +7 -5
  215. data/bin/lib/Image/ExifTool.pod +11 -2
  216. data/bin/perl-Image-ExifTool.spec +1 -1
  217. data/lib/exiftool_vendored/version.rb +1 -1
  218. metadata +1 -1
@@ -329,7 +329,7 @@ meta information in FLIF (Free Lossless Image Format) images.
329
329
 
330
330
  =head1 AUTHOR
331
331
 
332
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
332
+ Copyright 2003-2026, 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.
@@ -1633,7 +1633,7 @@ Systems Inc. thermal image files (FFF, FPF and JPEG format).
1633
1633
 
1634
1634
  =head1 AUTHOR
1635
1635
 
1636
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1636
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1637
1637
 
1638
1638
  This library is free software; you can redistribute it and/or modify it
1639
1639
  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-2025, Phil Harvey (philharvey66 at gmail.com)
357
+ Copyright 2003-2026, 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-2025, Phil Harvey (philharvey66 at gmail.com)
724
+ Copyright 2003-2026, 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.
@@ -2402,7 +2402,7 @@ JPEG images.
2402
2402
 
2403
2403
  =head1 AUTHOR
2404
2404
 
2405
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2405
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
2406
2406
 
2407
2407
  This library is free software; you can redistribute it and/or modify it
2408
2408
  under the same terms as Perl itself.
@@ -896,7 +896,7 @@ WOFF2.
896
896
 
897
897
  =head1 AUTHOR
898
898
 
899
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
899
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
900
900
 
901
901
  This library is free software; you can redistribute it and/or modify it
902
902
  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-2025, Phil Harvey (philharvey66 at gmail.com)
246
+ Copyright 2003-2026, 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.
@@ -2029,7 +2029,7 @@ FujiFilm maker notes in EXIF information, and to read/write FujiFilm RAW
2029
2029
 
2030
2030
  =head1 AUTHOR
2031
2031
 
2032
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2032
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
2033
2033
 
2034
2034
  This library is free software; you can redistribute it and/or modify it
2035
2035
  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-2025, Phil Harvey (philharvey66 at gmail.com)
71
+ Copyright 2003-2026, 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.
@@ -596,7 +596,7 @@ write GIF meta information.
596
596
 
597
597
  =head1 AUTHOR
598
598
 
599
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
599
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
600
600
 
601
601
  This library is free software; you can redistribute it and/or modify it
602
602
  under the same terms as Perl itself.
@@ -270,7 +270,7 @@ GIMP software.
270
270
 
271
271
  =head1 AUTHOR
272
272
 
273
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
273
+ Copyright 2003-2026, 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.
@@ -531,7 +531,7 @@ metadata from videos written by some GM models such as Corvette and Camero.
531
531
 
532
532
  =head1 AUTHOR
533
533
 
534
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
534
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
535
535
 
536
536
  This library is free software; you can redistribute it and/or modify it
537
537
  under the same terms as Perl itself.
@@ -619,7 +619,7 @@ GPS (Global Positioning System) meta information in EXIF data.
619
619
 
620
620
  =head1 AUTHOR
621
621
 
622
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
622
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
623
623
 
624
624
  This library is free software; you can redistribute it and/or modify it
625
625
  under the same terms as Perl itself.
@@ -2242,7 +2242,7 @@ coordinates.
2242
2242
 
2243
2243
  =head1 AUTHOR
2244
2244
 
2245
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2245
+ Copyright 2003-2026, 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.
@@ -1020,7 +1020,7 @@ the input arguments of the AddEntry method.
1020
1020
 
1021
1021
  =head1 AUTHOR
1022
1022
 
1023
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1023
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1024
1024
 
1025
1025
  This library is free software; you can redistribute it and/or modify it
1026
1026
  under the same terms as Perl itself. The associated database files are
@@ -21,6 +21,7 @@
21
21
  # 2024/11/05 - PH Added support for Google Maps "Export timeline data"
22
22
  # JSON format
23
23
  # 2025/09/22 - PH Added ability to read Columbus CSV log files
24
+ # 2026/01/24 - PH Added GeoUserTag feature
24
25
  #
25
26
  # References: 1) http://www.topografix.com/GPX/1/1/
26
27
  # 2) http://www.gpsinformation.org/dale/nmea.htm#GSA
@@ -35,7 +36,7 @@ use vars qw($VERSION);
35
36
  use Image::ExifTool qw(:Public);
36
37
  use Image::ExifTool::GPS;
37
38
 
38
- $VERSION = '1.84';
39
+ $VERSION = '1.85';
39
40
 
40
41
  sub JITTER() { return 2 } # maximum time jitter
41
42
 
@@ -43,6 +44,7 @@ sub GetTime($);
43
44
  sub SetGeoValues($$;$);
44
45
  sub PrintFixTime($);
45
46
  sub PrintFix($@);
47
+ sub InitUserTags($);
46
48
 
47
49
  # XML tags that we recognize (keys are forced to lower case)
48
50
  my %xmlTag = (
@@ -82,6 +84,8 @@ my %xmlTag = (
82
84
  placemark => '', # KML
83
85
  );
84
86
 
87
+ my %userTag; # user-defined XML tags
88
+
85
89
  # fix information keys which must be interpolated around a circle
86
90
  my %cyclical = (lon => 1, track => 1, dir => 1, pitch => 1, roll => 1);
87
91
  my %cyc180 = (lon => 1, pitch => 1, roll => 1); # wraps from 180 to -180
@@ -174,6 +178,8 @@ sub LoadTrackLog($$;$)
174
178
  unless (eval { require Time::Local }) {
175
179
  return 'Geotag feature requires Time::Local installed';
176
180
  }
181
+ InitUserTags($et);
182
+
177
183
  # add data to existing track
178
184
  my $geotag = $et->GetNewValue('Geotag') || { };
179
185
 
@@ -357,16 +363,24 @@ sub LoadTrackLog($$;$)
357
363
  # XML format (GPX, KML, Garmin XML/TCX etc)
358
364
  #
359
365
  if ($format eq 'XML') {
360
- my ($arg, $tok, $td);
361
- s/\s*=\s*(['"])\s*/=$1/g; # remove unnecessary white space in attributes
362
- # Workaround for KML generated by Google Location History:
363
- # lat/lon/alt are space-separated; we want commas.
364
- s{(\S+)\s+(\S+)\s+(\S+)(</gx:coord>)}{$1,$2,$3$4};
365
- foreach $arg (split) {
366
+ my (@args, $arg, $tok, $td, $value);
367
+ if (/^([^<]+<\/[^>]+>)/) {
368
+ # handle simple property
369
+ s/^\s+</</; # remove whitespace if only whitespace before "<"
370
+ # Workaround for KML generated by Google Location History:
371
+ # lat/lon/alt are space-separated; we want commas.
372
+ s{(\S+)\s+(\S+)\s+(\S+)(</gx:coord>)}{$1,$2,$3$4};
373
+ push @args, $_;
374
+ } else {
375
+ # handle property with attributes
376
+ s/\s*=\s*(['"])\s*/=$1/g; # remove unnecessary white space in attributes
377
+ push @args, split;
378
+ }
379
+ foreach $arg (@args) {
366
380
  # parse attributes (eg. GPX 'lat' and 'lon')
367
381
  # (note: ignore namespace prefixes if they exist)
368
382
  if ($arg =~ /^(\w+:)?(\w+)=(['"])(.*?)\3/g) {
369
- my $tag = $xmlTag{lc $2};
383
+ my $tag = $xmlTag{lc $2} || $userTag{lc $2};
370
384
  if ($tag) {
371
385
  $$fix{$tag} = $4;
372
386
  if ($keyCategory{$tag}) {
@@ -382,7 +396,8 @@ sub LoadTrackLog($$;$)
382
396
  }
383
397
  # loop through XML elements
384
398
  while ($arg =~ m{([^<>]*)<(/)?(\w+:)?(\w+)(>|$)}g) {
385
- my $tag = $xmlTag{$tok = lc $4};
399
+ $tok = lc $4;
400
+ my $tag = $xmlTag{$tok} || $userTag{$tok};
386
401
  # parse as a simple property if this element has a value
387
402
  if (defined $tag and not $tag) {
388
403
  # a containing property was opened or closed
@@ -1137,20 +1152,20 @@ sub SetGeoValues($$;$)
1137
1152
  my $p1 = $$points{$t1};
1138
1153
  # check to see if we are extrapolating before the first entry in a track
1139
1154
  my $maxSecs = ($$p1{first} and $geoMaxIntSecs) ? $geoMaxExtSecs : $geoMaxIntSecs;
1155
+ my $tn; # find time of nearest fix
1156
+ if ($time - $t0 < $t1 - $time) {
1157
+ $tn = $t0;
1158
+ $iExt = $i0;
1159
+ } else {
1160
+ $tn = $t1;
1161
+ $iExt = $i1;
1162
+ }
1140
1163
  # don't interpolate if fixes are too far apart
1141
1164
  # (but always interpolate fixes inside the same TimeSpan)
1142
1165
  if ($t1 - $t0 > $maxSecs and (not $$p1{span} or not $$points{$t0}{span} or
1143
1166
  $$p1{span} != $$points{$t0}{span}))
1144
1167
  {
1145
1168
  # treat as an extrapolation -- use nearest fix if close enough
1146
- my $tn;
1147
- if ($time - $t0 < $t1 - $time) {
1148
- $tn = $t0;
1149
- $iExt = $i0;
1150
- } else {
1151
- $tn = $t1;
1152
- $iExt = $i1;
1153
- }
1154
1169
  if (abs($time - $tn) > $geoMaxExtSecs) {
1155
1170
  $err or $err = 'Time is too far from nearest GPS fix';
1156
1171
  $et->VPrint(2, ' Nearest fix: ', PrintFixTime($tn), ' (',
@@ -1167,6 +1182,8 @@ sub SetGeoValues($$;$)
1167
1182
  $et->VPrint(2, " Interpolating between fixes (f=$f0):\n",
1168
1183
  PrintFix($points, $t0, $t1)) if $verbose > 2;
1169
1184
  $fix = { };
1185
+ # copy user-defined tags from nearest fix
1186
+ $$fix{$_} = $$points{$tn}{$_} foreach values %userTag;
1170
1187
  # loop through available fix information categories
1171
1188
  # (pos, track, alt, orient)
1172
1189
  my ($category, $key);
@@ -1379,11 +1396,19 @@ Category: foreach $category (qw{pos track alt orient atemp err dop}) {
1379
1396
  unless ($exif) {
1380
1397
  @r = $et->SetNewValue(GPSDateTime => "$gpsDate $gpsTime", %opts);
1381
1398
  }
1399
+ # set user-defined tags
1400
+ foreach (sort values %userTag) {
1401
+ @r = $et->SetNewValue(substr($_, 1) => $$fix{$_}) if defined $$fix{$_};
1402
+ }
1382
1403
  } else {
1383
1404
  my %opts = ( IgnorePermanent => 1 );
1384
1405
  $opts{Replace} = 2 if defined $val; # remove existing new values
1406
+ # reset user-defined GPX tags
1407
+ InitUserTags($et); # (won't be set yet because we didn't read a GPX file)
1408
+ foreach (values %userTag) {
1409
+ my @r = $et->SetNewValue(substr($_, 1), undef, %opts);
1410
+ }
1385
1411
  $opts{Group} = $writeGroup if $writeGroup;
1386
-
1387
1412
  # reset any GPS values we might have already set
1388
1413
  foreach (qw(GPSLatitude GPSLatitudeRef GPSLongitude GPSLongitudeRef
1389
1414
  GPSAltitude GPSAltitudeRef GPSDateStamp GPSTimeStamp GPSDateTime
@@ -1556,6 +1581,22 @@ sub PrintFix($@)
1556
1581
  return $str;
1557
1582
  }
1558
1583
 
1584
+ #------------------------------------------------------------------------------
1585
+ # Initialize %userTag for reading user-defined GPX tags
1586
+ # Inputs: 0) ExifTool ref
1587
+ sub InitUserTags($)
1588
+ {
1589
+ my $et = shift;
1590
+ %userTag = ( );
1591
+ if ($$et{OPTIONS}{GeoUserTag}) {
1592
+ foreach (split /\s*,\s*/, $$et{OPTIONS}{GeoUserTag}) {
1593
+ next unless /^(.+)=(.+)$/;
1594
+ $xmlTag{lc $2} and $et->Warn("User-defined GPX tag '${2}' conflicts with existing tag"), next;
1595
+ $userTag{lc $2} = "_$1"; # (leading underline prevents conflicts)
1596
+ }
1597
+ }
1598
+ }
1599
+
1559
1600
  #------------------------------------------------------------------------------
1560
1601
  1; # end
1561
1602
 
@@ -1590,7 +1631,7 @@ user-defined tag GPSRoll, must be active.
1590
1631
 
1591
1632
  =head1 AUTHOR
1592
1633
 
1593
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1634
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1594
1635
 
1595
1636
  This library is free software; you can redistribute it and/or modify it
1596
1637
  under the same terms as Perl itself.
@@ -918,7 +918,7 @@ metadata from GoPro MP4 videos.
918
918
 
919
919
  =head1 AUTHOR
920
920
 
921
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
921
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
922
922
 
923
923
  This library is free software; you can redistribute it and/or modify it
924
924
  under the same terms as Perl itself.
@@ -130,7 +130,8 @@ my %sAppInfo = (
130
130
  NAMESPACE => 'GPano',
131
131
  NOTES => q{
132
132
  Panorama tags written by Google Photosphere. See
133
- L<https://developers.google.com/panorama/metadata/> for the specification.
133
+ L<https://developers.google.com/streetview/spherical-metadata> for the
134
+ specification.
134
135
  },
135
136
  UsePanoramaViewer => { Writable => 'boolean' },
136
137
  CaptureSoftware => { },
@@ -793,7 +794,7 @@ Google maker notes and write Google XMP tags.
793
794
 
794
795
  =head1 AUTHOR
795
796
 
796
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
797
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
797
798
 
798
799
  This library is free software; you can redistribute it and/or modify it
799
800
  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-2025, Phil Harvey (philharvey66 at gmail.com)
1126
+ Copyright 2003-2026, 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-2025, Phil Harvey (philharvey66 at gmail.com)
253
+ Copyright 2003-2026, 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-2025, Phil Harvey (philharvey66 at gmail.com)
558
+ Copyright 2003-2026, 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.
@@ -920,7 +920,7 @@ page.
920
920
 
921
921
  =head1 AUTHOR
922
922
 
923
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
923
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
924
924
 
925
925
  This library is free software; you can redistribute it and/or modify it
926
926
  under the same terms as Perl itself.
@@ -1437,7 +1437,7 @@ data created on one device into another device's native color space.
1437
1437
 
1438
1438
  =head1 AUTHOR
1439
1439
 
1440
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1440
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1441
1441
 
1442
1442
  This library is free software; you can redistribute it and/or modify it
1443
1443
  under the same terms as Perl itself.
@@ -121,7 +121,7 @@ information from Windows ICO (icon) and CUR (cursor) files.
121
121
 
122
122
  =head1 AUTHOR
123
123
 
124
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
124
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
125
125
 
126
126
  This library is free software; you can redistribute it and/or modify it
127
127
  under the same terms as Perl itself.
@@ -1747,7 +1747,7 @@ other types of audio files.
1747
1747
 
1748
1748
  =head1 AUTHOR
1749
1749
 
1750
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1750
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1751
1751
 
1752
1752
  This library is free software; you can redistribute it and/or modify it
1753
1753
  under the same terms as Perl itself.
@@ -1287,7 +1287,7 @@ image files.
1287
1287
 
1288
1288
  =head1 AUTHOR
1289
1289
 
1290
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1290
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1291
1291
 
1292
1292
  This library is free software; you can redistribute it and/or modify it
1293
1293
  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-2025, Phil Harvey (philharvey66 at gmail.com)
187
+ Copyright 2003-2026, 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-2025, Phil Harvey (philharvey66 at gmail.com)
194
+ Copyright 2003-2026, 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.
@@ -356,7 +356,7 @@ ARRAY reference in a special "_ordered_keys_" element of this hash.
356
356
 
357
357
  =head1 AUTHOR
358
358
 
359
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
359
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
360
360
 
361
361
  This library is free software; you can redistribute it and/or modify it
362
362
  under the same terms as Perl itself.
@@ -277,7 +277,7 @@ them and the LargeFileSupport option is enabled.
277
277
 
278
278
  =head1 AUTHOR
279
279
 
280
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
280
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
281
281
 
282
282
  This library is free software; you can redistribute it and/or modify it
283
283
  under the same terms as Perl itself.
@@ -206,7 +206,7 @@ IJPEG SDK, used in cameras such as the P2 Pro.
206
206
 
207
207
  =head1 AUTHOR
208
208
 
209
- Copyright 2003-2025, Marcos Del Sol Vives (marcos at orca.pet)
209
+ Copyright 2003-2026, Marcos Del Sol Vives (marcos at orca.pet)
210
210
 
211
211
  This library is free software; you can redistribute it and/or modify it
212
212
  under the same terms as Perl itself.
@@ -821,7 +821,7 @@ segments are included in the Image::ExifTool module itself.
821
821
 
822
822
  =head1 AUTHOR
823
823
 
824
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
824
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
825
825
 
826
826
  This library is free software; you can redistribute it and/or modify it
827
827
  under the same terms as Perl itself.
@@ -2590,7 +2590,7 @@ estimated JPEG quality if requested.
2590
2590
 
2591
2591
  =head1 AUTHOR
2592
2592
 
2593
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2593
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
2594
2594
 
2595
2595
  This library is free software; you can redistribute it and/or modify it
2596
2596
  under the same terms as Perl itself.
@@ -188,7 +188,7 @@ information from JSON files.
188
188
 
189
189
  =head1 AUTHOR
190
190
 
191
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
191
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
192
192
 
193
193
  This library is free software; you can redistribute it and/or modify it
194
194
  under the same terms as Perl itself.
@@ -117,7 +117,7 @@ notes.
117
117
 
118
118
  =head1 AUTHOR
119
119
 
120
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
120
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
121
121
 
122
122
  This library is free software; you can redistribute it and/or modify it
123
123
  under the same terms as Perl itself.
@@ -1671,7 +1671,7 @@ files.
1671
1671
 
1672
1672
  =head1 AUTHOR
1673
1673
 
1674
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1674
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1675
1675
 
1676
1676
  This library is free software; you can redistribute it and/or modify it
1677
1677
  under the same terms as Perl itself.
@@ -385,7 +385,7 @@ atoms in MP4 videos as shot by the Kandao QOOCAM 3 ULTRA.
385
385
 
386
386
  =head1 AUTHOR
387
387
 
388
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
388
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
389
389
 
390
390
  This library is free software; you can redistribute it and/or modify it
391
391
  under the same terms as Perl itself.
@@ -3253,7 +3253,7 @@ interpret Kodak maker notes EXIF meta information.
3253
3253
 
3254
3254
  =head1 AUTHOR
3255
3255
 
3256
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
3256
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
3257
3257
 
3258
3258
  This library is free software; you can redistribute it and/or modify it
3259
3259
  under the same terms as Perl itself.
@@ -152,7 +152,7 @@ meta information from Kyocera Contax N Digital RAW images.
152
152
 
153
153
  =head1 AUTHOR
154
154
 
155
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
155
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
156
156
 
157
157
  This library is free software; you can redistribute it and/or modify it
158
158
  under the same terms as Perl itself.
@@ -147,7 +147,7 @@ metadata from Leica Image File (LIF) images.
147
147
 
148
148
  =head1 AUTHOR
149
149
 
150
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
150
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
151
151
 
152
152
  This library is free software; you can redistribute it and/or modify it
153
153
  under the same terms as Perl itself.
@@ -796,7 +796,7 @@ information MS Shell Link (Windows shortcut) files.
796
796
 
797
797
  =head1 AUTHOR
798
798
 
799
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
799
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
800
800
 
801
801
  This library is free software; you can redistribute it and/or modify it
802
802
  under the same terms as Perl itself.
@@ -1569,7 +1569,7 @@ and values.
1569
1569
 
1570
1570
  =head1 AUTHOR
1571
1571
 
1572
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1572
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1573
1573
 
1574
1574
  This library is free software; you can redistribute it and/or modify it
1575
1575
  under the same terms as Perl itself.
@@ -8702,7 +8702,7 @@ and values.
8702
8702
 
8703
8703
  =head1 AUTHOR
8704
8704
 
8705
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
8705
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
8706
8706
 
8707
8707
  This library is free software; you can redistribute it and/or modify it
8708
8708
  under the same terms as Perl itself.
@@ -989,7 +989,7 @@ and values.
989
989
 
990
990
  =head1 AUTHOR
991
991
 
992
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
992
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
993
993
 
994
994
  This library is free software; you can redistribute it and/or modify it
995
995
  under the same terms as Perl itself.
@@ -1032,7 +1032,7 @@ and values.
1032
1032
 
1033
1033
  =head1 AUTHOR
1034
1034
 
1035
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
1035
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
1036
1036
 
1037
1037
  This library is free software; you can redistribute it and/or modify it
1038
1038
  under the same terms as Perl itself.
@@ -4005,7 +4005,7 @@ and values.
4005
4005
 
4006
4006
  =head1 AUTHOR
4007
4007
 
4008
- Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
4008
+ Copyright 2003-2026, Phil Harvey (philharvey66 at gmail.com)
4009
4009
 
4010
4010
  This library is free software; you can redistribute it and/or modify it
4011
4011
  under the same terms as Perl itself.