exiftool_vendored 13.10.0 → 13.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (212) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +33 -0
  3. data/bin/MANIFEST +1 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +3 -3
  7. data/bin/exiftool +206 -148
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool/AAC.pm +1 -1
  11. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  12. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  13. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  14. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  15. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  16. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  17. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  19. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -6
  24. data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
  25. data/bin/lib/Image/ExifTool/Canon.pm +8 -4
  26. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  27. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  28. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  29. data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
  30. data/bin/lib/Image/ExifTool/Casio.pm +1 -1
  31. data/bin/lib/Image/ExifTool/Charset.pm +1 -1
  32. data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
  33. data/bin/lib/Image/ExifTool/DJI.pm +96 -45
  34. data/bin/lib/Image/ExifTool/DNG.pm +1 -1
  35. data/bin/lib/Image/ExifTool/DPX.pm +1 -1
  36. data/bin/lib/Image/ExifTool/DV.pm +1 -1
  37. data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
  38. data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
  39. data/bin/lib/Image/ExifTool/EXE.pm +123 -32
  40. data/bin/lib/Image/ExifTool/Exif.pm +7 -4
  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 +1 -1
  59. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  60. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  61. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  62. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  63. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  64. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ICO.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  67. data/bin/lib/Image/ExifTool/IPTC.pm +8 -5
  68. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  69. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  70. data/bin/lib/Image/ExifTool/Import.pm +5 -4
  71. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  72. data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
  73. data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
  74. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  75. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  76. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  77. data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  79. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  80. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  81. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  99. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  100. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  101. data/bin/lib/Image/ExifTool/LigoGPS.pm +408 -0
  102. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  103. data/bin/lib/Image/ExifTool/M2TS.pm +22 -13
  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/MISB.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  115. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  117. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  118. data/bin/lib/Image/ExifTool/Matroska.pm +12 -4
  119. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  120. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  121. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  122. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Nikon.pm +164 -35
  124. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  125. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  126. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  127. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  128. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  129. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  130. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  131. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  132. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  134. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  136. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  138. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PNG.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  143. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Panasonic.pm +20 -2
  145. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  146. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  147. data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  148. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  149. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  150. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  152. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  153. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Protobuf.pm +24 -14
  155. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  156. data/bin/lib/Image/ExifTool/QuickTime.pm +46 -17
  157. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -302
  158. data/bin/lib/Image/ExifTool/README +4 -0
  159. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  160. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  161. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  162. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  172. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  173. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  174. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  175. data/bin/lib/Image/ExifTool/Sony.pm +1 -1
  176. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  177. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  178. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  179. data/bin/lib/Image/ExifTool/TagLookup.pm +11 -5
  180. data/bin/lib/Image/ExifTool/TagNames.pod +84 -34
  181. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  182. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  183. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  184. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  185. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  186. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  187. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  188. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  189. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  190. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  191. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  192. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  193. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  194. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  195. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  196. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  197. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -3
  198. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  199. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  200. data/bin/lib/Image/ExifTool/Writer.pl +9 -8
  201. data/bin/lib/Image/ExifTool/XISF.pm +1 -1
  202. data/bin/lib/Image/ExifTool/XMP.pm +1 -1
  203. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  204. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  205. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  206. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  207. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  208. data/bin/lib/Image/ExifTool.pm +13 -7
  209. data/bin/lib/Image/ExifTool.pod +14 -5
  210. data/bin/perl-Image-ExifTool.spec +1 -1
  211. data/lib/exiftool_vendored/version.rb +1 -1
  212. metadata +3 -2
@@ -29,7 +29,7 @@
29
29
  # Sets internal ERROR member from $! if there is an error reading
30
30
  # the file.
31
31
  #
32
- # Legal: Copyright (c) 2003-2024, Phil Harvey (philharvey66 at gmail.com)
32
+ # Legal: Copyright (c) 2003-2025, Phil Harvey (philharvey66 at gmail.com)
33
33
  # This library is free software; you can redistribute it and/or
34
34
  # modify it under the same terms as Perl itself.
35
35
  #------------------------------------------------------------------------------
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Description: Buffer to support random access reading of sequential file
5
5
  #
6
- # Legal: Copyright (c) 2003-2024, Phil Harvey (philharvey66 at gmail.com)
6
+ # Legal: Copyright (c) 2003-2025, Phil Harvey (philharvey66 at gmail.com)
7
7
  # This library is free software; you can redistribute it and/or
8
8
  # modify it under the same terms as Perl itself.
9
9
  #------------------------------------------------------------------------------
@@ -236,7 +236,7 @@ the end of file is not allowed.
236
236
 
237
237
  =head1 AUTHOR
238
238
 
239
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
239
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
240
240
 
241
241
  This library is free software; you can redistribute it and/or modify it
242
242
  under the same terms as Perl itself.
@@ -163,7 +163,7 @@ based on unofficial sources which may be incomplete, inaccurate or outdated.
163
163
 
164
164
  =head1 AUTHOR
165
165
 
166
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
166
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
167
167
 
168
168
  This library is free software; you can redistribute it and/or modify it
169
169
  under the same terms as Perl itself.
@@ -477,7 +477,7 @@ main purpose of encryption, so this really can't be considered a bug.
477
477
 
478
478
  =head1 AUTHOR
479
479
 
480
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
480
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
481
481
 
482
482
  This library is free software; you can redistribute it and/or modify it
483
483
  under the same terms as Perl itself.
@@ -259,7 +259,7 @@ scanning for AFCP information.
259
259
 
260
260
  =head1 AUTHOR
261
261
 
262
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
262
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
263
263
 
264
264
  This library is free software; you can redistribute it and/or modify it
265
265
  under the same terms as Perl itself.
@@ -291,7 +291,7 @@ information from AIFF (Audio Interchange File Format) audio files.
291
291
 
292
292
  =head1 AUTHOR
293
293
 
294
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
294
+ Copyright 2003-2025, 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.
@@ -263,7 +263,7 @@ Currently doesn't parse MAC header unless it is at the start of the file.
263
263
 
264
264
  =head1 AUTHOR
265
265
 
266
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
266
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
267
267
 
268
268
  This library is free software; you can redistribute it and/or modify it
269
269
  under the same terms as Perl itself.
@@ -306,7 +306,7 @@ APP12 meta information.
306
306
 
307
307
  =head1 AUTHOR
308
308
 
309
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
309
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
310
310
 
311
311
  This library is free software; you can redistribute it and/or modify it
312
312
  under the same terms as Perl itself.
@@ -879,7 +879,7 @@ Windows Media Audio (WMA) and Windows Media Video (WMV) files.
879
879
 
880
880
  =head1 AUTHOR
881
881
 
882
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
882
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
883
883
 
884
884
  This library is free software; you can redistribute it and/or modify it
885
885
  under the same terms as Perl itself.
@@ -390,7 +390,7 @@ Apple maker notes in EXIF information.
390
390
 
391
391
  =head1 AUTHOR
392
392
 
393
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
393
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
394
394
 
395
395
  This library is free software; you can redistribute it and/or modify it
396
396
  under the same terms as Perl itself.
@@ -291,7 +291,7 @@ information from Audible audio books.
291
291
 
292
292
  =head1 AUTHOR
293
293
 
294
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
294
+ Copyright 2003-2025, 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.
@@ -335,7 +335,7 @@ This module contains definitions required by Image::ExifTool to read BMP
335
335
 
336
336
  =head1 AUTHOR
337
337
 
338
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
338
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
339
339
 
340
340
  This library is free software; you can redistribute it and/or modify it
341
341
  under the same terms as Perl itself.
@@ -231,7 +231,7 @@ This module contains definitions required by Image::ExifTool to read BPG
231
231
 
232
232
  =head1 AUTHOR
233
233
 
234
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
234
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
235
235
 
236
236
  This library is free software; you can redistribute it and/or modify it
237
237
  under the same terms as Perl itself.
@@ -445,7 +445,7 @@ compression ability).
445
445
 
446
446
  =head1 AUTHOR
447
447
 
448
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
448
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
449
449
  Copyright 2002, Leon Bottou and Yann Le Cun
450
450
  Copyright 2001, AT&T
451
451
  Copyright 1999-2001, LizardTech Inc.
@@ -282,7 +282,7 @@ information in BigTIFF images.
282
282
 
283
283
  =head1 AUTHOR
284
284
 
285
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
285
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
286
286
 
287
287
  This library is free software; you can redistribute it and/or modify it
288
288
  under the same terms as Perl itself.
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
35
35
  use Image::ExifTool::Validate;
36
36
  use Image::ExifTool::MacOS;
37
37
 
38
- $VERSION = '3.59';
38
+ $VERSION = '3.60';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -688,7 +688,7 @@ L<Image::ExifTool::BuildTagLookup|Image::ExifTool::BuildTagLookup>.
688
688
 
689
689
  ~head1 AUTHOR
690
690
 
691
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
691
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
692
692
 
693
693
  This library is free software; you can redistribute it and/or modify it
694
694
  under the same terms as Perl itself.
@@ -1340,7 +1340,7 @@ TagID: foreach $tagID (@keys) {
1340
1340
  $writable = 'yes' if $tw and $writable eq '1' or $writable eq '2';
1341
1341
  $writable = '-' . ($tw ? $writable : '');
1342
1342
  $writable .= '!' if $tw and ($$tagInfo{Protected} || 0) & 0x01;
1343
- $writable .= '+' if $$tagInfo{List};
1343
+ $writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
1344
1344
  if (defined $$tagInfo{Permanent}) {
1345
1345
  $writable .= '^' unless $$tagInfo{Permanent};
1346
1346
  } elsif (defined $$table{PERMANENT}) {
@@ -1398,7 +1398,7 @@ TagID: foreach $tagID (@keys) {
1398
1398
  }
1399
1399
  $writable = "=struct" if $struct;
1400
1400
  $writable .= '_' if defined $$tagInfo{Flat};
1401
- $writable .= '+' if $$tagInfo{List};
1401
+ $writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
1402
1402
  $writable .= ':' if $$tagInfo{Mandatory};
1403
1403
  if (defined $$tagInfo{Permanent}) {
1404
1404
  $writable .= '^' unless $$tagInfo{Permanent};
@@ -1566,7 +1566,7 @@ TagID: foreach $tagID (@keys) {
1566
1566
  $writable = 'string';
1567
1567
  }
1568
1568
  }
1569
- $writable .= '+' if $$tagInfo{List};
1569
+ $writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
1570
1570
  push @vals, "($$tagInfo{Notes})" if $$tagInfo{Notes};
1571
1571
  # handle PrintConv lookups in Structure elements
1572
1572
  my $printConv = $$tagInfo{PrintConv};
@@ -2811,7 +2811,7 @@ Returned list of writable pseudo tags.
2811
2811
 
2812
2812
  =head1 AUTHOR
2813
2813
 
2814
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2814
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2815
2815
 
2816
2816
  This library is free software; you can redistribute it and/or modify it
2817
2817
  under the same terms as Perl itself.
@@ -324,7 +324,7 @@ specification.
324
324
 
325
325
  =head1 AUTHOR
326
326
 
327
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
327
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
328
328
 
329
329
  This library is free software; you can redistribute it and/or modify it
330
330
  under the same terms as Perl itself.
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.86';
91
+ $VERSION = '4.87';
92
92
 
93
93
  # Note: Removed 'USM' from 'L' lenses since it is redundant - PH
94
94
  # (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -632,8 +632,10 @@ $VERSION = '4.86';
632
632
  '61182.55' => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
633
633
  '61182.56' => 'Canon RF 35mm F1.4 L VCM', #42
634
634
  '61182.57' => 'Canon RF 70-200mm F2.8 L IS USM Z', #42
635
- '61182.58' => 'Canon RF 50mm F1.4 L VCM', #42
636
- '61182.59' => 'Canon RF 24mm F1.4 L VCM', #42
635
+ '61182.58' => 'Canon RF 70-200mm F2.8 L IS USM Z + RF1.4x', #42
636
+ '61182.59' => 'Canon RF 70-200mm F2.8 L IS USM Z + RF2x', #42
637
+ '61182.60' => 'Canon RF 50mm F1.4 L VCM', #42
638
+ '61182.61' => 'Canon RF 24mm F1.4 L VCM', #42
637
639
  65535 => 'n/a',
638
640
  );
639
641
 
@@ -7023,6 +7025,8 @@ my %ciMaxFocal = (
7023
7025
  317 => 'Canon RF-S 3.9mm F3.5 STM DUAL FISHEYE', #42
7024
7026
  318 => 'Canon RF 28-70mm F2.8 IS STM', #42
7025
7027
  319 => 'Canon RF 70-200mm F2.8 L IS USM Z', #42
7028
+ 320 => 'Canon RF 70-200mm F2.8 L IS USM Z + RF1.4x', #42
7029
+ 321 => 'Canon RF 70-200mm F2.8 L IS USM Z + RF2x', #42
7026
7030
  325 => 'Canon RF 50mm F1.4 L VCM', #42
7027
7031
  326 => 'Canon RF 24mm F1.4 L VCM', #42
7028
7032
  # Note: add new RF lenses to %canonLensTypes with ID 61182
@@ -10591,7 +10595,7 @@ Canon maker notes in EXIF information.
10591
10595
 
10592
10596
  =head1 AUTHOR
10593
10597
 
10594
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
10598
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
10595
10599
 
10596
10600
  This library is free software; you can redistribute it and/or modify it
10597
10601
  under the same terms as Perl itself.
@@ -2873,7 +2873,7 @@ Image::ExifTool to read this information.
2873
2873
 
2874
2874
  =head1 AUTHOR
2875
2875
 
2876
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2876
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2877
2877
 
2878
2878
  This library is free software; you can redistribute it and/or modify it
2879
2879
  under the same terms as Perl itself.
@@ -888,7 +888,7 @@ tags.)
888
888
 
889
889
  =head1 AUTHOR
890
890
 
891
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
891
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
892
892
 
893
893
  This library is free software; you can redistribute it and/or modify it
894
894
  under the same terms as Perl itself.
@@ -2288,7 +2288,7 @@ files, and as a trailer in JPEG, CRW, CR2 and TIFF images.
2288
2288
 
2289
2289
  =head1 AUTHOR
2290
2290
 
2291
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2291
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2292
2292
 
2293
2293
  This library is free software; you can redistribute it and/or modify it
2294
2294
  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-2024, Phil Harvey (philharvey66 at gmail.com)
224
+ Copyright 2003-2025, 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-2024, Phil Harvey (philharvey66 at gmail.com)
2037
+ Copyright 2003-2025, 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-2024, Phil Harvey (philharvey66 at gmail.com)
425
+ Copyright 2003-2025, 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-2024, Phil Harvey (philharvey66 at gmail.com)
3856
+ Copyright 2003-2025, 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.
@@ -5,22 +5,29 @@
5
5
  #
6
6
  # Revisions: 2016-07-25 - P. Harvey Created
7
7
  # 2017-06-23 - PH Added XMP tags
8
+ # 2024-12-04 - PH Added protobuf tags
8
9
  #------------------------------------------------------------------------------
9
10
 
10
11
  package Image::ExifTool::DJI;
11
12
 
12
13
  use strict;
13
- use vars qw($VERSION);
14
+ use vars qw($VERSION %knownProtocol);
14
15
  use Image::ExifTool qw(:DataAccess :Utils);
15
16
  use Image::ExifTool::Exif;
16
17
  use Image::ExifTool::XMP;
17
18
  use Image::ExifTool::GPS;
18
19
  use Image::ExifTool::Protobuf;
19
20
 
20
- $VERSION = '1.10';
21
+ $VERSION = '1.11';
21
22
 
22
23
  sub ProcessDJIInfo($$$);
23
24
 
25
+ %knownProtocol = (
26
+ 'dvtm_ac203.proto' => 1,
27
+ 'dvtm_ac204.proto' => 1,
28
+ 'dvtm_AVATA2.proto' => 1,
29
+ );
30
+
24
31
  my %convFloat2 = (
25
32
  PrintConv => 'sprintf("%+.2f", $val)',
26
33
  PrintConvInv => '$val',
@@ -189,47 +196,42 @@ my %convFloat2 = (
189
196
 
190
197
  # metadata in protobuf format (djmd and dbgi meta types, ref PH)
191
198
  %Image::ExifTool::DJI::Protobuf = (
192
- GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Location' },
199
+ GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Camera' },
193
200
  TAG_PREFIX => '',
194
201
  PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
195
202
  NOTES => q{
196
- Tags found in protobuf-format DJI meta djmd and dbgi timed metadata. Only a
197
- few tags are currently known, but unknown djmd tags may be extracted by
198
- setting the Unknown option to 1 (or 2 to also extract unknown dbgi debug
199
- tags). Tag ID's are composed of the corresponding .proto file name combined
200
- with the hierarchical protobuf field numbers. The "dvtm_AVATA2.proto" file
201
- is used by the DJI Avanta 2, and "dvtm_ac203.proto" by the OsmoAction4.
203
+ Tags found in protobuf-format DJI djmd and dbgi timed metadata. Only a few
204
+ tags are currently known, but unknown djmd tags may be extracted by setting
205
+ the Unknown option to 1 (or 2 to also extract unknown dbgi debug tags). Tag
206
+ ID's are composed of the corresponding .proto file name combined with the
207
+ hierarchical protobuf field numbers.
208
+
209
+ ExifTool currently extracts timed GPS plus a few other tags from DJI devices
210
+ which use the following protocols: dvtm_AVATA2.proto (Avanta 2),
211
+ dvtm_ac203.proto (Osmo Action 4), and dvtm_ac204.proto (Osmo Action 5).
212
+ },
213
+ Protocol => {
214
+ RawConv => q{
215
+ unless ($Image::ExifTool::DJI::knownProtocol{$val}) {
216
+ $self->Warn("Unknown protocol $val (please submit sample for testing)");
217
+ }
218
+ return $val;
219
+ },
202
220
  },
203
- Protocol => { },
204
221
  # dvtm_ac203_1-1-6 - some version number
205
222
  'dvtm_ac203_1-1-10' => 'Model',
206
- 'dvtm_ac203_2-3-1' => { Name => 'FrameWidth', Format => 'unsigned' },
207
- 'dvtm_ac203_2-3-2' => { Name => 'FrameHeight', Format => 'unsigned' },
208
- 'dvtm_ac203_2-3-3' => { Name => 'FrameRate', Format => 'float' },
209
- # dvtm_ac203_3-4-1-4 - model code?
210
- 'dvtm_ac203_3-4-2-1-1' => {
211
- Name => 'CoordinateUnits',
212
- Format => 'unsigned',
213
- # don't extract this -- just convert to degrees
214
- RawConv => '$$self{CoordUnits} = $val; undef',
215
- Hidden => 1,
216
- # PrintConv => { 0 => 'Radians', 1 => 'Degrees' },
217
- },
218
- 'dvtm_ac203_3-4-2-1-2' => {
219
- Name => 'GPSLatitude',
220
- Format => 'double',
221
- # set ExifTool GPSLatitude/GPSLongitude members so GPSDateTime will be generated if necessary
222
- RawConv => '$$self{GPSLatitude} = $$self{CoordUnits} ? $val : $val * 180 / 3.141592653589793', # (NC)
223
- PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
223
+ 'dvtm_ac203_2-3' => {
224
+ Name => 'FrameInfo',
225
+ SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
224
226
  },
225
- 'dvtm_ac203_3-4-2-1-3' => {
226
- Name => 'GPSLongitude',
227
- Format => 'double',
228
- RawConv => '$$self{GPSLongitude} = $$self{CoordUnits} ? $val : $val * 180 / 3.141592653589793', # (NC)
229
- PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
227
+ # dvtm_ac203_3-4-1-4 - model code?
228
+ 'dvtm_ac203_3-4-2-1' => {
229
+ Name => 'GPSInfo',
230
+ SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
230
231
  },
231
232
  'dvtm_ac203_3-4-2-2' => {
232
233
  Name => 'GPSAltitude',
234
+ Groups => { 2 => 'Location' },
233
235
  Format => 'unsigned',
234
236
  ValueConv => '$val / 1000',
235
237
  },
@@ -241,38 +243,87 @@ my %convFloat2 = (
241
243
  ValueConv => '$val =~ tr/-/:/; $val',
242
244
  PrintConv => '$self->ConvertDateTime($val)',
243
245
  },
246
+ # dvtm_ac204_1-1-6 - some version number
247
+ 'dvtm_ac204_1-1-10' => 'Model',
248
+ 'dvtm_ac204_2-3' => {
249
+ Name => 'FrameInfo',
250
+ SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
251
+ },
252
+ # dvtm_ac204_3-4-1-4 - model code?
253
+ 'dvtm_ac204_3-4-2-1' => {
254
+ Name => 'GPSInfo',
255
+ SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
256
+ },
257
+ 'dvtm_ac204_3-4-2-2' => {
258
+ Name => 'GPSAltitude',
259
+ Groups => { 2 => 'Location' },
260
+ Format => 'unsigned',
261
+ ValueConv => '$val / 1000',
262
+ },
263
+ 'dvtm_ac204_3-4-2-6-1' => {
264
+ Name => 'GPSDateTime',
265
+ Format => 'string',
266
+ Groups => { 2 => 'Time' },
267
+ RawConv => '$$self{GPSDateTime} = $val',
268
+ ValueConv => '$val =~ tr/-/:/; $val',
269
+ PrintConv => '$self->ConvertDateTime($val)',
270
+ },
244
271
  # dvtm_AVATA2_1-1-2 - some version number
245
272
  # dvtm_AVATA2_1-1-3 - some version number
246
273
  'dvtm_AVATA2_1-1-10' => 'Model',
247
274
  'dvtm_AVATA2_2-2-3-1' => 'SerialNumber', # (NC)
248
- 'dvtm_AVATA2_2-3-1' => { Name => 'FrameWidth', Format => 'unsigned' },
249
- 'dvtm_AVATA2_2-3-2' => { Name => 'FrameHeight', Format => 'unsigned' },
250
- 'dvtm_AVATA2_2-3-3' => { Name => 'FrameRate', Format => 'float' },
275
+ 'dvtm_AVATA2_2-3' => {
276
+ Name => 'FrameInfo',
277
+ SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
278
+ },
251
279
  # dvtm_AVATA2_3-1-1 - frame number (starting at 1)
252
280
  'dvtm_AVATA2_3-1-2' => { # (also 3-2-1-6 and 3-4-1-6)
253
281
  Name => 'TimeStamp',
282
+ Groups => { 2 => 'Time' },
254
283
  Format => 'unsigned',
255
284
  # milliseconds, but I don't know what the zero is
256
285
  ValueConv => '$val / 1e6',
257
286
  },
258
287
  # dvtm_AVATA2_3-2-1-4 - model code?
259
288
  # dvtm_AVATA2_3-4-1-4 - model code?
260
- 'dvtm_AVATA2_3-4-4-1-1' => { # (NC) (default seems to be radians if missing)
261
- Name => 'CoordinateDegrees',
289
+ 'dvtm_AVATA2_3-4-4-1' => {
290
+ Name => 'GPSInfo',
291
+ SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
292
+ },
293
+ );
294
+
295
+ %Image::ExifTool::DJI::FrameInfo = (
296
+ GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Video' },
297
+ PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
298
+ VARS => { HEX_ID => 0 },
299
+ 1 => { Name => 'FrameWidth', Format => 'unsigned' },
300
+ 2 => { Name => 'FrameHeight', Format => 'unsigned' },
301
+ 3 => { Name => 'FrameRate', Format => 'float' },
302
+ );
303
+
304
+ %Image::ExifTool::DJI::GPSInfo = (
305
+ GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Location' },
306
+ PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
307
+ VARS => { HEX_ID => 0 },
308
+ 1 => {
309
+ Name => 'CoordinateUnits',
262
310
  Format => 'unsigned',
263
- RawConv => '$$self{CoordDegrees} = $val; undef',
264
- Hidden => 1,
311
+ Notes => 'not extracted, but used internally to convert coordinates to degrees',
312
+ # don't extract this -- just convert to degrees
313
+ RawConv => '$$self{CoordUnits} = $val; undef',
314
+ # PrintConv => { 0 => 'Radians', 1 => 'Degrees' },
265
315
  },
266
- 'dvtm_AVATA2_3-4-4-1-2' => {
316
+ 2 => {
267
317
  Name => 'GPSLatitude',
268
318
  Format => 'double',
269
- RawConv => '$$self{GPSLatitude} = $$self{CoordDegrees} ? $val : $val * 180 / 3.141592653589793', # (NC)
319
+ # set ExifTool GPSLatitude/GPSLongitude members so GPSDateTime will be generated if necessary
320
+ RawConv => '$$self{GPSLatitude} = $$self{CoordUnits} ? $val : $val * 180 / 3.141592653589793', # (NC)
270
321
  PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
271
322
  },
272
- 'dvtm_AVATA2_3-4-4-1-3' => {
323
+ 3 => {
273
324
  Name => 'GPSLongitude',
274
325
  Format => 'double',
275
- RawConv => '$$self{GPSLongitude} = $$self{CoordDegrees} ? $val : $val * 180 / 3.141592653589793', # (NC)
326
+ RawConv => '$$self{GPSLongitude} = $$self{CoordUnits} ? $val : $val * 180 / 3.141592653589793', # (NC)
276
327
  PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
277
328
  },
278
329
  );
@@ -328,7 +379,7 @@ the maker notes in images from some DJI Phantom drones.
328
379
 
329
380
  =head1 AUTHOR
330
381
 
331
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
382
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
332
383
 
333
384
  This library is free software; you can redistribute it and/or modify it
334
385
  under the same terms as Perl itself.
@@ -849,7 +849,7 @@ information in DNG (Digital Negative) images.
849
849
 
850
850
  =head1 AUTHOR
851
851
 
852
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
852
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
853
853
 
854
854
  This library is free software; you can redistribute it and/or modify it
855
855
  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-2024, Phil Harvey (philharvey66 at gmail.com)
228
+ Copyright 2003-2025, 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-2024, Phil Harvey (philharvey66 at gmail.com)
294
+ Copyright 2003-2025, 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.
@@ -372,7 +372,7 @@ This file contains tag definitions for the Darwin Core XMP namespace.
372
372
 
373
373
  =head1 AUTHOR
374
374
 
375
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
375
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
376
376
 
377
377
  This library is free software; you can redistribute it and/or modify it
378
378
  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-2024, Phil Harvey (philharvey66 at gmail.com)
356
+ Copyright 2003-2025, 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.