exiftool_vendored 13.08.0 → 13.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (213) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +60 -2
  3. data/bin/MANIFEST +2 -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 +229 -158
  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 +10 -8
  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 +14 -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.dat +0 -0
  58. data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
  59. data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
  60. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  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 +81 -2
  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 +8 -5
  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 +5 -4
  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 +3 -2
  79. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  80. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  81. data/bin/lib/Image/ExifTool/LIF.pm +1 -1
  82. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  96. data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
  97. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  98. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  99. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  100. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  101. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  102. data/bin/lib/Image/ExifTool/LigoGPS.pm +408 -0
  103. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  104. data/bin/lib/Image/ExifTool/M2TS.pm +22 -13
  105. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  107. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MISB.pm +1 -1
  109. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  110. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  111. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  113. data/bin/lib/Image/ExifTool/MPF.pm +1 -1
  114. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  115. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  116. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  117. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  118. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  119. data/bin/lib/Image/ExifTool/Matroska.pm +12 -4
  120. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  122. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  124. data/bin/lib/Image/ExifTool/Nikon.pm +164 -35
  125. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  126. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  127. data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
  128. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  129. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  130. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  131. data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
  132. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  134. data/bin/lib/Image/ExifTool/Other.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  136. data/bin/lib/Image/ExifTool/PDF.pm +1 -1
  137. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  138. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PLIST.pm +3 -3
  140. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  141. data/bin/lib/Image/ExifTool/PNG.pm +3 -2
  142. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  145. data/bin/lib/Image/ExifTool/Panasonic.pm +20 -2
  146. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  147. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  148. data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
  149. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  150. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  151. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Photoshop.pm +2 -1
  153. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  154. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Protobuf.pm +24 -14
  156. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  157. data/bin/lib/Image/ExifTool/QuickTime.pm +94 -26
  158. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -302
  159. data/bin/lib/Image/ExifTool/README +4 -0
  160. data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
  161. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  162. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  164. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  166. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  167. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  168. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  169. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  173. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  175. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  176. data/bin/lib/Image/ExifTool/Sony.pm +1 -1
  177. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  178. data/bin/lib/Image/ExifTool/Stim.pm +1 -1
  179. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  180. data/bin/lib/Image/ExifTool/TagLookup.pm +14 -5
  181. data/bin/lib/Image/ExifTool/TagNames.pod +106 -34
  182. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  183. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  184. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  185. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  186. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  187. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  188. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  189. data/bin/lib/Image/ExifTool/WPG.pm +1 -1
  190. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  191. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  192. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  193. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  194. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  195. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  196. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  197. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  198. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +48 -12
  199. data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
  200. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  201. data/bin/lib/Image/ExifTool/Writer.pl +25 -13
  202. data/bin/lib/Image/ExifTool/XISF.pm +1 -1
  203. data/bin/lib/Image/ExifTool/XMP.pm +1 -1
  204. data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
  205. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  206. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  207. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  208. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  209. data/bin/lib/Image/ExifTool.pm +20 -11
  210. data/bin/lib/Image/ExifTool.pod +55 -40
  211. data/bin/perl-Image-ExifTool.spec +1 -1
  212. data/lib/exiftool_vendored/version.rb +1 -1
  213. 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.
@@ -16,7 +16,7 @@ use vars qw($VERSION);
16
16
  use Image::ExifTool::Exif;
17
17
  use Image::ExifTool::PLIST;
18
18
 
19
- $VERSION = '1.13';
19
+ $VERSION = '1.14';
20
20
 
21
21
  sub ConvertPLIST($$);
22
22
 
@@ -291,12 +291,12 @@ sub ConvertPLIST($$);
291
291
  # 0x0047 - (LeaderFollowerAutoFocusLeaderDepth, ref 2)
292
292
  # 0x0048 - (LeaderFollowerAutoFocusLeaderFocusMethod, ref 2)
293
293
  # 0x0049 - (LeaderFollowerAutoFocusLeaderConfidence, ref 2)
294
- # 0x004A - (LeaderFollowerAutoFocusLeaderROIType, ref 2)
294
+ # 0x004a - (LeaderFollowerAutoFocusLeaderROIType, ref 2)
295
295
  # 0x004a - 2=back normal, 4=back wide angle, 5=front (ref PH)
296
- # 0x004B - (ZeroShutterLagFailureReason, ref 2)
297
- # 0x004C - (TimeOfFlightAssistedAutoFocusEstimatorMSPMeasuredDepth, ref 2)
298
- # 0x004D - (TimeOfFlightAssistedAutoFocusEstimatorMSPSensorConfidence, ref 2)
299
- # 0x004E - (Camera, ref 2)
296
+ # 0x004b - (ZeroShutterLagFailureReason, ref 2)
297
+ # 0x004c - (TimeOfFlightAssistedAutoFocusEstimatorMSPMeasuredDepth, ref 2)
298
+ # 0x004d - (TimeOfFlightAssistedAutoFocusEstimatorMSPSensorConfidence, ref 2)
299
+ # 0x004e - (Camera, ref 2)
300
300
  0x004e => {
301
301
  Name => 'Apple_0x004e',
302
302
  Unknown => 1,
@@ -358,7 +358,8 @@ Image::ExifTool::AddCompositeTags('Image::ExifTool::Apple');
358
358
  sub ConvertPLIST($$)
359
359
  {
360
360
  my ($val, $et) = @_;
361
- my $dirInfo = { DataPt => \$val };
361
+ my $dirInfo = { DataPt => \$val, NoVerboseDir => 1 };
362
+ my $oldOrder = $et->GetByteOrder();
362
363
  require Image::ExifTool::PLIST;
363
364
  Image::ExifTool::PLIST::ProcessBinaryPLIST($et, $dirInfo);
364
365
  $val = $$dirInfo{Value};
@@ -366,6 +367,7 @@ sub ConvertPLIST($$)
366
367
  require 'Image/ExifTool/XMPStruct.pl';
367
368
  $val = Image::ExifTool::XMP::SerializeStruct($et, $val);
368
369
  }
370
+ $et->SetByteOrder($oldOrder);
369
371
  return $val;
370
372
  }
371
373
 
@@ -388,7 +390,7 @@ Apple maker notes in EXIF information.
388
390
 
389
391
  =head1 AUTHOR
390
392
 
391
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
393
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
392
394
 
393
395
  This library is free software; you can redistribute it and/or modify it
394
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.
@@ -866,6 +866,11 @@ sub new
866
866
  }
867
867
  $noID = 1 if $isXMP or $short =~ /^(Shortcuts|ASF.*)$/ or $$vars{NO_ID};
868
868
  $hexID = $$vars{HEX_ID};
869
+ if ($$table{WRITE_PROC} and $$table{WRITE_PROC} eq \&Image::ExifTool::WriteBinaryData
870
+ and not $$table{CHECK_PROC})
871
+ {
872
+ warn("Binary table $tableName doesn't have a CHECK_PROC\n");
873
+ }
869
874
  my $processBinaryData = ($$table{PROCESS_PROC} and (
870
875
  $$table{PROCESS_PROC} eq \&Image::ExifTool::ProcessBinaryData or
871
876
  $$table{PROCESS_PROC} eq \&Image::ExifTool::Nikon::ProcessNikonEncrypted or
@@ -1004,6 +1009,9 @@ TagID: foreach $tagID (@keys) {
1004
1009
  if ($writable and not ($$table{WRITE_PROC} or $tableName =~ /Shortcuts/ or $writable eq '2')) {
1005
1010
  undef $writable;
1006
1011
  }
1012
+ #if ($writable and $$tagInfo{Unknown} and $$table{GROUPS}{0} ne 'MakerNotes') {
1013
+ # warn "Warning: Writable Unknown tag - $short $name\n",
1014
+ #}
1007
1015
  # validate some characteristics of obvious date/time tags
1008
1016
  my @g = $et->GetGroup($tagInfo);
1009
1017
  if ($$tagInfo{List} and $g[2] eq 'Time' and $writable and not $$tagInfo{Protected} and
@@ -1332,7 +1340,7 @@ TagID: foreach $tagID (@keys) {
1332
1340
  $writable = 'yes' if $tw and $writable eq '1' or $writable eq '2';
1333
1341
  $writable = '-' . ($tw ? $writable : '');
1334
1342
  $writable .= '!' if $tw and ($$tagInfo{Protected} || 0) & 0x01;
1335
- $writable .= '+' if $$tagInfo{List};
1343
+ $writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
1336
1344
  if (defined $$tagInfo{Permanent}) {
1337
1345
  $writable .= '^' unless $$tagInfo{Permanent};
1338
1346
  } elsif (defined $$table{PERMANENT}) {
@@ -1390,7 +1398,7 @@ TagID: foreach $tagID (@keys) {
1390
1398
  }
1391
1399
  $writable = "=struct" if $struct;
1392
1400
  $writable .= '_' if defined $$tagInfo{Flat};
1393
- $writable .= '+' if $$tagInfo{List};
1401
+ $writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
1394
1402
  $writable .= ':' if $$tagInfo{Mandatory};
1395
1403
  if (defined $$tagInfo{Permanent}) {
1396
1404
  $writable .= '^' unless $$tagInfo{Permanent};
@@ -1558,7 +1566,7 @@ TagID: foreach $tagID (@keys) {
1558
1566
  $writable = 'string';
1559
1567
  }
1560
1568
  }
1561
- $writable .= '+' if $$tagInfo{List};
1569
+ $writable .= '+' if $$tagInfo{List} or $$tagInfo{IsList};
1562
1570
  push @vals, "($$tagInfo{Notes})" if $$tagInfo{Notes};
1563
1571
  # handle PrintConv lookups in Structure elements
1564
1572
  my $printConv = $$tagInfo{PrintConv};
@@ -2803,7 +2811,7 @@ Returned list of writable pseudo tags.
2803
2811
 
2804
2812
  =head1 AUTHOR
2805
2813
 
2806
- Copyright 2003-2024, Phil Harvey (philharvey66 at gmail.com)
2814
+ Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
2807
2815
 
2808
2816
  This library is free software; you can redistribute it and/or modify it
2809
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.