exiftool_vendored 12.10.0 → 12.15.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of exiftool_vendored might be problematic. Click here for more details.

Files changed (195) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +71 -2
  3. data/bin/MANIFEST +5 -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 +130 -55
  8. data/bin/lib/File/RandomAccess.pm +1 -1
  9. data/bin/lib/File/RandomAccess.pod +2 -2
  10. data/bin/lib/Image/ExifTool.pm +46 -10
  11. data/bin/lib/Image/ExifTool.pod +14 -11
  12. data/bin/lib/Image/ExifTool/AES.pm +1 -1
  13. data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
  14. data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
  15. data/bin/lib/Image/ExifTool/APE.pm +1 -1
  16. data/bin/lib/Image/ExifTool/APP12.pm +1 -1
  17. data/bin/lib/Image/ExifTool/ASF.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Apple.pm +1 -1
  19. data/bin/lib/Image/ExifTool/Audible.pm +1 -1
  20. data/bin/lib/Image/ExifTool/BMP.pm +1 -1
  21. data/bin/lib/Image/ExifTool/BPG.pm +1 -1
  22. data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
  23. data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
  24. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +10 -4
  25. data/bin/lib/Image/ExifTool/Canon.pm +15 -12
  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 +28 -2
  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 +1 -1
  40. data/bin/lib/Image/ExifTool/Exif.pm +14 -1
  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/GPS.pm +1 -1
  55. data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
  56. data/bin/lib/Image/ExifTool/Geotag.pm +30 -11
  57. data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
  58. data/bin/lib/Image/ExifTool/H264.pm +1 -1
  59. data/bin/lib/Image/ExifTool/HP.pm +1 -1
  60. data/bin/lib/Image/ExifTool/HTML.pm +1 -1
  61. data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
  62. data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
  63. data/bin/lib/Image/ExifTool/ID3.pm +1 -1
  64. data/bin/lib/Image/ExifTool/IPTC.pm +1 -1
  65. data/bin/lib/Image/ExifTool/ISO.pm +1 -1
  66. data/bin/lib/Image/ExifTool/ITC.pm +1 -1
  67. data/bin/lib/Image/ExifTool/Import.pm +15 -12
  68. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  69. data/bin/lib/Image/ExifTool/JPEG.pm +24 -2
  70. data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
  71. data/bin/lib/Image/ExifTool/JSON.pm +1 -1
  72. data/bin/lib/Image/ExifTool/JVC.pm +1 -1
  73. data/bin/lib/Image/ExifTool/Jpeg2000.pm +9 -4
  74. data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
  75. data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
  76. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  77. data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
  78. data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
  79. data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
  80. data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
  81. data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
  82. data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
  83. data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
  84. data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
  85. data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
  86. data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
  87. data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
  88. data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
  89. data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
  90. data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
  91. data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
  92. data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
  93. data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
  94. data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
  95. data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
  96. data/bin/lib/Image/ExifTool/M2TS.pm +1 -1
  97. data/bin/lib/Image/ExifTool/MIE.pm +1 -1
  98. data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
  99. data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
  100. data/bin/lib/Image/ExifTool/MNG.pm +1 -1
  101. data/bin/lib/Image/ExifTool/MOI.pm +1 -1
  102. data/bin/lib/Image/ExifTool/MPC.pm +1 -1
  103. data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
  104. data/bin/lib/Image/ExifTool/MPF.pm +3 -3
  105. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  106. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  107. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  108. data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
  109. data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
  110. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  111. data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
  112. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
  113. data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
  114. data/bin/lib/Image/ExifTool/Nikon.pm +314 -35
  115. data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
  116. data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
  117. data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
  118. data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
  119. data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
  120. data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
  121. data/bin/lib/Image/ExifTool/Olympus.pm +4 -2
  122. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  123. data/bin/lib/Image/ExifTool/Opus.pm +1 -1
  124. data/bin/lib/Image/ExifTool/PCX.pm +1 -1
  125. data/bin/lib/Image/ExifTool/PDF.pm +10 -2
  126. data/bin/lib/Image/ExifTool/PGF.pm +1 -1
  127. data/bin/lib/Image/ExifTool/PICT.pm +1 -1
  128. data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
  129. data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
  130. data/bin/lib/Image/ExifTool/PNG.pm +12 -4
  131. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  132. data/bin/lib/Image/ExifTool/PSP.pm +1 -1
  133. data/bin/lib/Image/ExifTool/Palm.pm +1 -1
  134. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
  135. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
  136. data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
  137. data/bin/lib/Image/ExifTool/Pentax.pm +12 -4
  138. data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
  139. data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
  140. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
  141. data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
  142. data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
  143. data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
  144. data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
  145. data/bin/lib/Image/ExifTool/QuickTime.pm +28 -19
  146. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +25 -4
  147. data/bin/lib/Image/ExifTool/RIFF.pm +83 -5
  148. data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
  149. data/bin/lib/Image/ExifTool/RTF.pm +1 -1
  150. data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
  151. data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
  152. data/bin/lib/Image/ExifTool/Real.pm +1 -1
  153. data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
  154. data/bin/lib/Image/ExifTool/Red.pm +1 -1
  155. data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
  156. data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
  157. data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
  158. data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
  159. data/bin/lib/Image/ExifTool/Shift.pl +1 -1
  160. data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
  161. data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
  162. data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
  163. data/bin/lib/Image/ExifTool/Sony.pm +8 -2
  164. data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
  165. data/bin/lib/Image/ExifTool/Stim.pm +3 -3
  166. data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
  167. data/bin/lib/Image/ExifTool/TagLookup.pm +3943 -3807
  168. data/bin/lib/Image/ExifTool/TagNames.pod +313 -21
  169. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  170. data/bin/lib/Image/ExifTool/Theora.pm +1 -1
  171. data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
  172. data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
  173. data/bin/lib/Image/ExifTool/VCard.pm +1 -1
  174. data/bin/lib/Image/ExifTool/Validate.pm +1 -1
  175. data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
  176. data/bin/lib/Image/ExifTool/WTV.pm +1 -1
  177. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
  178. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  179. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  180. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
  181. data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
  182. data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
  183. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
  184. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -4
  185. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  186. data/bin/lib/Image/ExifTool/Writer.pl +28 -14
  187. data/bin/lib/Image/ExifTool/XMP.pm +17 -8
  188. data/bin/lib/Image/ExifTool/XMP2.pl +5 -1
  189. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
  190. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  191. data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
  192. data/bin/lib/Image/ExifTool/iWork.pm +1 -1
  193. data/bin/perl-Image-ExifTool.spec +1 -1
  194. data/lib/exiftool_vendored/version.rb +1 -1
  195. metadata +9 -4
@@ -2264,7 +2264,7 @@ files, and as a trailer in JPEG, CRW, CR2 and TIFF images.
2264
2264
 
2265
2265
  =head1 AUTHOR
2266
2266
 
2267
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
2267
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2268
2268
 
2269
2269
  This library is free software; you can redistribute it and/or modify it
2270
2270
  under the same terms as Perl itself.
@@ -221,7 +221,7 @@ settings files (COS).
221
221
 
222
222
  =head1 AUTHOR
223
223
 
224
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
224
+ Copyright 2003-2021, 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-2020, Phil Harvey (philharvey66 at gmail.com)
2037
+ Copyright 2003-2021, 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.
@@ -420,7 +420,7 @@ when decoding certain types of information.
420
420
 
421
421
  =head1 AUTHOR
422
422
 
423
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
423
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
424
424
 
425
425
  This library is free software; you can redistribute it and/or modify it
426
426
  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-2020, Phil Harvey (philharvey66 at gmail.com)
3856
+ Copyright 2003-2021, 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.
@@ -15,7 +15,7 @@ use Image::ExifTool::Exif;
15
15
  use Image::ExifTool::XMP;
16
16
  use Image::ExifTool::GPS;
17
17
 
18
- $VERSION = '1.02';
18
+ $VERSION = '1.03';
19
19
 
20
20
  my %convFloat2 = (
21
21
  PrintConv => 'sprintf("%+.2f", $val)',
@@ -44,6 +44,32 @@ my %convFloat2 = (
44
44
  0x0b => { Name => 'CameraRoll', Writable => 'float', %convFloat2 },
45
45
  );
46
46
 
47
+ # thermal parameters in APP4 of DJI ZH20T images (ref forum11401)
48
+ %Image::ExifTool::DJI::ThermalParams = (
49
+ PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
50
+ GROUPS => { 0 => 'APP4', 2 => 'Image' },
51
+ NOTES => 'Thermal parameters extracted from APP4 of DJI RJPEG files from the ZH20T.',
52
+ # 0x00 - 0xaa551206 - temperature header magic number
53
+ 0x24 => { Name => 'K1', Format => 'float' },
54
+ 0x28 => { Name => 'K2', Format => 'float' },
55
+ 0x2c => { Name => 'K3', Format => 'float' },
56
+ 0x30 => { Name => 'K4', Format => 'float' },
57
+ 0x34 => { Name => 'KF', Format => 'float' },
58
+ 0x38 => { Name => 'B1', Format => 'float' },
59
+ 0x3c => { Name => 'B2', Format => 'float' },
60
+ 0x44 => { Name => 'ObjectDistance', Format => 'int16u' },
61
+ 0x46 => { Name => 'RelativeHumidity', Format => 'int16u' },
62
+ 0x48 => { Name => 'Emissivity', Format => 'int16u' },
63
+ 0x4a => { Name => 'Reflection', Format => 'int16u', },
64
+ 0x4c => { Name => 'AmbientTemperature', Format => 'int16u' }, # (aka D1)
65
+ 0x50 => { Name => 'D2', Format => 'int32s' },
66
+ 0x54 => { Name => 'KJ', Format => 'int16u' },
67
+ 0x56 => { Name => 'DB', Format => 'int16u' },
68
+ 0x58 => { Name => 'KK', Format => 'int16u' },
69
+ # 0x500 - 0x55aa1206 - device header magic number
70
+ # (nothing yet decoded from device header)
71
+ );
72
+
47
73
  %Image::ExifTool::DJI::XMP = (
48
74
  %Image::ExifTool::XMP::xmpTableDefaults,
49
75
  GROUPS => { 0 => 'XMP', 1 => 'XMP-drone-dji', 2 => 'Location' },
@@ -125,7 +151,7 @@ the maker notes in images from some DJI Phantom drones.
125
151
 
126
152
  =head1 AUTHOR
127
153
 
128
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
154
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
129
155
 
130
156
  This library is free software; you can redistribute it and/or modify it
131
157
  under the same terms as Perl itself.
@@ -820,7 +820,7 @@ information in DNG (Digital Negative) images.
820
820
 
821
821
  =head1 AUTHOR
822
822
 
823
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
823
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
824
824
 
825
825
  This library is free software; you can redistribute it and/or modify it
826
826
  under the same terms as Perl itself.
@@ -214,7 +214,7 @@ metadata from DPX (Digital Picture Exchange) images.
214
214
 
215
215
  =head1 AUTHOR
216
216
 
217
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
217
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
218
218
 
219
219
  This library is free software; you can redistribute it and/or modify it
220
220
  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-2020, Phil Harvey (philharvey66 at gmail.com)
294
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
295
295
 
296
296
  This library is free software; you can redistribute it and/or modify it
297
297
  under the same terms as Perl itself.
@@ -360,7 +360,7 @@ This file contains tag definitions for the Darwin Core XMP namespace.
360
360
 
361
361
  =head1 AUTHOR
362
362
 
363
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
363
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
364
364
 
365
365
  This library is free software; you can redistribute it and/or modify it
366
366
  under the same terms as Perl itself.
@@ -352,7 +352,7 @@ Image::ExifTool::AIFF.
352
352
 
353
353
  =head1 AUTHOR
354
354
 
355
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
355
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
356
356
 
357
357
  This library is free software; you can redistribute it and/or modify it
358
358
  under the same terms as Perl itself.
@@ -1398,7 +1398,7 @@ library files.
1398
1398
 
1399
1399
  =head1 AUTHOR
1400
1400
 
1401
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1401
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1402
1402
 
1403
1403
  This library is free software; you can redistribute it and/or modify it
1404
1404
  under the same terms as Perl itself.
@@ -1377,6 +1377,12 @@ my %opcodeInfo = (
1377
1377
  Count => 6,
1378
1378
  Priority => 0,
1379
1379
  },
1380
+ # 0x220 - int32u: 0 (IFD0, Xaiomi Redmi models)
1381
+ # 0x221 - int32u: 0 (IFD0, Xaiomi Redmi models)
1382
+ # 0x222 - int32u: 0 (IFD0, Xaiomi Redmi models)
1383
+ # 0x223 - int32u: 0 (IFD0, Xaiomi Redmi models)
1384
+ # 0x224 - int32u: 0,1 (IFD0, Xaiomi Redmi models)
1385
+ # 0x225 - string: "" (IFD0, Xaiomi Redmi models)
1380
1386
  0x22f => 'StripRowCounts',
1381
1387
  0x2bc => {
1382
1388
  Name => 'ApplicationNotes', # (writable directory!)
@@ -1998,6 +2004,7 @@ my %opcodeInfo = (
1998
2004
  0x885d => 'FaxSubAddress', #9
1999
2005
  0x885e => 'FaxRecvTime', #9
2000
2006
  0x8871 => 'FedexEDR', #exifprobe (NC)
2007
+ # 0x8889 - string: "portrait" (ExifIFD, Xiaomi POCO F1)
2001
2008
  0x888a => { #PH
2002
2009
  Name => 'LeafSubIFD',
2003
2010
  Format => 'int32u', # Leaf incorrectly uses 'undef' format!
@@ -2008,6 +2015,10 @@ my %opcodeInfo = (
2008
2015
  Start => '$val',
2009
2016
  },
2010
2017
  },
2018
+ # 0x8891 - int16u: 35 (ExifIFD, Xiaomi POCO F1)
2019
+ # 0x8894 - int16u: 0 (ExifIFD, Xiaomi POCO F1)
2020
+ # 0x8895 - int16u: 0 (ExifIFD, Xiaomi POCO F1)
2021
+ # 0x889a - int16u: 0 (ExifIFD, Xiaomi POCO F1)
2011
2022
  # 0x89ab - seen "11 100 130 16 0 0 0 0" in IFD0 of TIFF image from IR scanner (forum8470)
2012
2023
  0x9000 => {
2013
2024
  Name => 'ExifVersion',
@@ -2368,6 +2379,8 @@ my %opcodeInfo = (
2368
2379
  Name => 'CameraElevationAngle',
2369
2380
  Writable => 'rational64s',
2370
2381
  },
2382
+ # 0x9999 - string: camera settings (ExifIFD, Xiaomi POCO F1)
2383
+ # 0x9aaa - int8u[2176]: ? (ExifIFD, Xiaomi POCO F1)
2371
2384
  0x9c9b => {
2372
2385
  Name => 'XPTitle',
2373
2386
  Format => 'undef',
@@ -6591,7 +6604,7 @@ EXIF and TIFF meta information.
6591
6604
 
6592
6605
  =head1 AUTHOR
6593
6606
 
6594
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
6607
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
6595
6608
 
6596
6609
  This library is free software; you can redistribute it and/or modify it
6597
6610
  under the same terms as Perl itself.
@@ -126,7 +126,7 @@ information from FITS (Flexible Image Transport System) images.
126
126
 
127
127
  =head1 AUTHOR
128
128
 
129
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
129
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
130
130
 
131
131
  This library is free software; you can redistribute it and/or modify it
132
132
  under the same terms as Perl itself.
@@ -284,7 +284,7 @@ information from Free Lossless Audio Codec (FLAC) audio files.
284
284
 
285
285
  =head1 AUTHOR
286
286
 
287
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
287
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
288
288
 
289
289
  This library is free software; you can redistribute it and/or modify it
290
290
  under the same terms as Perl itself.
@@ -329,7 +329,7 @@ meta information in FLIF (Free Lossless Image Format) images.
329
329
 
330
330
  =head1 AUTHOR
331
331
 
332
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
332
+ Copyright 2003-2021, 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.
@@ -1594,7 +1594,7 @@ Systems Inc. thermal image files (FFF, FPF and JPEG format).
1594
1594
 
1595
1595
  =head1 AUTHOR
1596
1596
 
1597
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1597
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1598
1598
 
1599
1599
  This library is free software; you can redistribute it and/or modify it
1600
1600
  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-2020, Phil Harvey (philharvey66 at gmail.com)
357
+ Copyright 2003-2021, 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-2020, Phil Harvey (philharvey66 at gmail.com)
724
+ Copyright 2003-2021, 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.
@@ -2370,7 +2370,7 @@ JPEG images.
2370
2370
 
2371
2371
  =head1 AUTHOR
2372
2372
 
2373
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
2373
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
2374
2374
 
2375
2375
  This library is free software; you can redistribute it and/or modify it
2376
2376
  under the same terms as Perl itself.
@@ -622,7 +622,7 @@ extracted from these formats.
622
622
 
623
623
  =head1 AUTHOR
624
624
 
625
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
625
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
626
626
 
627
627
  This library is free software; you can redistribute it and/or modify it
628
628
  under the same terms as Perl itself.
@@ -243,7 +243,7 @@ write information from the FotoWare FotoStation trailer.
243
243
 
244
244
  =head1 AUTHOR
245
245
 
246
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
246
+ Copyright 2003-2021, 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.
@@ -1658,7 +1658,7 @@ FujiFilm maker notes in EXIF information, and to read/write FujiFilm RAW
1658
1658
 
1659
1659
  =head1 AUTHOR
1660
1660
 
1661
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1661
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1662
1662
 
1663
1663
  This library is free software; you can redistribute it and/or modify it
1664
1664
  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-2020, Phil Harvey (philharvey66 at gmail.com)
71
+ Copyright 2003-2021, 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.
@@ -537,7 +537,7 @@ write GIF meta information.
537
537
 
538
538
  =head1 AUTHOR
539
539
 
540
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
540
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
541
541
 
542
542
  This library is free software; you can redistribute it and/or modify it
543
543
  under the same terms as Perl itself.
@@ -270,7 +270,7 @@ GIMP software.
270
270
 
271
271
  =head1 AUTHOR
272
272
 
273
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
273
+ Copyright 2003-2021, 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.
@@ -564,7 +564,7 @@ GPS (Global Positioning System) meta information in EXIF data.
564
564
 
565
565
  =head1 AUTHOR
566
566
 
567
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
567
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
568
568
 
569
569
  This library is free software; you can redistribute it and/or modify it
570
570
  under the same terms as Perl itself.
@@ -2242,7 +2242,7 @@ coordinates.
2242
2242
 
2243
2243
  =head1 AUTHOR
2244
2244
 
2245
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
2245
+ Copyright 2003-2021, 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.
@@ -13,6 +13,7 @@
13
13
  # 2016/07/13 - PH Added ability to geotag date/time only
14
14
  # 2019/07/02 - PH Added ability to read IMU CSV files
15
15
  # 2019/11/10 - PH Also write pitch to CameraElevationAngle
16
+ # 2020/12/01 - PH Added ability to read DJI CSV log files
16
17
  #
17
18
  # References: 1) http://www.topografix.com/GPX/1/1/
18
19
  # 2) http://www.gpsinformation.org/dale/nmea.htm#GSA
@@ -27,7 +28,7 @@ use vars qw($VERSION);
27
28
  use Image::ExifTool qw(:Public);
28
29
  use Image::ExifTool::GPS;
29
30
 
30
- $VERSION = '1.63';
31
+ $VERSION = '1.64';
31
32
 
32
33
  sub JITTER() { return 2 } # maximum time jitter
33
34
 
@@ -133,7 +134,7 @@ sub LoadTrackLog($$;$)
133
134
  my ($et, $val) = @_;
134
135
  my ($raf, $from, $time, $isDate, $noDate, $noDateChanged, $lastDate, $dateFlarm);
135
136
  my ($nmeaStart, $fixSecs, @fixTimes, $lastFix, %nmea, @csvHeadings);
136
- my ($canCut, $cutPDOP, $cutHDOP, $cutSats, $e0, $e1, @tmp);
137
+ my ($canCut, $cutPDOP, $cutHDOP, $cutSats, $e0, $e1, @tmp, $trackFile, $trackTime);
137
138
 
138
139
  unless (eval { require Time::Local }) {
139
140
  return 'Geotag feature requires Time::Local installed';
@@ -159,6 +160,7 @@ sub LoadTrackLog($$;$)
159
160
  } else {
160
161
  # $val is track file name
161
162
  if ($et->Open(\*EXIFTOOL_TRKFILE, $val)) {
163
+ $trackFile = $val;
162
164
  $raf = new File::RandomAccess(\*EXIFTOOL_TRKFILE);
163
165
  unless ($raf->Read($_, 256)) {
164
166
  close EXIFTOOL_TRKFILE;
@@ -201,6 +203,8 @@ sub LoadTrackLog($$;$)
201
203
  my $skipped = 0;
202
204
  my $lastSecs = 0;
203
205
  my $fix = { };
206
+ my $csvDelim = $et->Options('CSVDelim');
207
+ $csvDelim = ',' unless defined $csvDelim;
204
208
  my (@saveFix, $timeSpan);
205
209
  for (;;) {
206
210
  $raf->ReadLine($_) or last;
@@ -230,19 +234,31 @@ sub LoadTrackLog($$;$)
230
234
  $format = 'Winplus';
231
235
  } elsif (/^\s*\d+\s+.*\sypr\s*$/ and (@tmp=split) == 12) {
232
236
  $format = 'Bramor';
233
- } elsif (/\b(GPS)?Date/i and /\b(GPS)?(Date)?Time/i and /,/) {
237
+ } elsif (((/\b(GPS)?Date/i and /\b(GPS)?(Date)?Time/i) or /\bTime\(seconds\)/i) and /\Q$csvDelim/) {
234
238
  chomp;
235
- @csvHeadings = split ',';
239
+ @csvHeadings = split /\Q$csvDelim/;
236
240
  $format = 'CSV';
237
241
  # convert recognized headings to our parameter names
238
242
  foreach (@csvHeadings) {
239
243
  my $param;
240
244
  s/^GPS ?//; # remove leading "GPS" to simplify regex patterns
241
- if (/^Date ?Time/i) { # ExifTool addition
245
+ if (/^Time ?\(seconds\)$/i) { # DJI
246
+ # DJI CSV log files have a column "Time(seconds)" which is seconds since
247
+ # the start of the flight. The date/time is obtained from the file name.
248
+ $param = 'runtime';
249
+ if ($trackFile and $trackFile =~ /(\d{4})-(\d{2})-(\d{2})[^\/]+(\d{2})-(\d{2})-(\d{2})[^\/]*$/) {
250
+ $trackTime = Image::ExifTool::TimeLocal($6,$5,$4,$3,$2-1,$1);
251
+ my $utc = PrintFixTime($trackTime);
252
+ my $tzs = Image::ExifTool::TimeZoneString([$6,$5,$4,$3,$2-1,$1-1900],$trackTime);
253
+ $et->VPrint(2, " DJI start time: $utc (local timezone is $tzs)\n");
254
+ } else {
255
+ return 'Error getting start time from file name for DJI CSV track file';
256
+ }
257
+ } elsif (/^Date ?Time/i) { # ExifTool addition
242
258
  $param = 'datetime';
243
259
  } elsif (/^Date/i) {
244
260
  $param = 'date';
245
- } elsif (/^Time/i) {
261
+ } elsif (/^Time(?! ?\(text\))/i) { # (ignore DJI "Time(text)" column)
246
262
  $param = 'time';
247
263
  } elsif (/^(Pos)?Lat/i) {
248
264
  $param = 'lat';
@@ -423,7 +439,7 @@ DoneFix: $isDate = 1;
423
439
  goto DoneFix; # save this fix
424
440
  } elsif ($format eq 'CSV') {
425
441
  chomp;
426
- my @vals = split ',';
442
+ my @vals = split /\Q$csvDelim/;
427
443
  #
428
444
  # CSV format output of GPS/IMU POS system
429
445
  # Date* - date in DD/MM/YYYY format
@@ -435,7 +451,7 @@ DoneFix: $isDate = 1;
435
451
  # [Angle]Pitch* - pitch angle in degrees
436
452
  # [Angle]Roll* - roll angle in degrees
437
453
  # (ExifTool enhancements allow for standard tag names or descriptions as the column headings,
438
- # add support for time zones and flexible coordinates, and allow a new DateTime column)
454
+ # add support for time zones and flexible coordinates, and allow new DateTime and Shift columns)
439
455
  #
440
456
  my ($param, $date, $secs);
441
457
  foreach $param (@csvHeadings) {
@@ -463,6 +479,9 @@ DoneFix: $isDate = 1;
463
479
  }
464
480
  } elsif ($param eq 'lat' or $param eq 'lon') {
465
481
  $$fix{$param} = Image::ExifTool::GPS::ToDegrees($val, 1);
482
+ } elsif ($param eq 'runtime') {
483
+ $date = $trackTime;
484
+ $secs = $val;
466
485
  } else {
467
486
  $$fix{$param} = $val;
468
487
  }
@@ -1378,8 +1397,8 @@ This module is used by Image::ExifTool
1378
1397
  This module loads GPS track logs, interpolates to determine position based
1379
1398
  on time, and sets new GPS values for geotagging images. Currently supported
1380
1399
  formats are GPX, NMEA RMC/GGA/GLL, KML, IGC, Garmin XML and TCX, Magellan
1381
- PMGNTRK, Honeywell PTNTHPR, Winplus Beacon text, IMU CSV, and Bramor gEO log
1382
- files.
1400
+ PMGNTRK, Honeywell PTNTHPR, Winplus Beacon text, IMU CSV, DJI CSV, and
1401
+ Bramor gEO log files.
1383
1402
 
1384
1403
  Methods in this module should not be called directly. Instead, the Geotag
1385
1404
  feature is accessed by writing the values of the ExifTool Geotag, Geosync
@@ -1393,7 +1412,7 @@ user-defined tag GPSRoll, must be active.
1393
1412
 
1394
1413
  =head1 AUTHOR
1395
1414
 
1396
- Copyright 2003-2020, Phil Harvey (philharvey66 at gmail.com)
1415
+ Copyright 2003-2021, Phil Harvey (philharvey66 at gmail.com)
1397
1416
 
1398
1417
  This library is free software; you can redistribute it and/or modify it
1399
1418
  under the same terms as Perl itself.