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.
- checksums.yaml +4 -4
- data/bin/Changes +33 -0
- data/bin/MANIFEST +1 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/exiftool +206 -148
- data/bin/lib/File/RandomAccess.pm +1 -1
- data/bin/lib/File/RandomAccess.pod +2 -2
- data/bin/lib/Image/ExifTool/AAC.pm +1 -1
- data/bin/lib/Image/ExifTool/AES.pm +1 -1
- data/bin/lib/Image/ExifTool/AFCP.pm +1 -1
- data/bin/lib/Image/ExifTool/AIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/APE.pm +1 -1
- data/bin/lib/Image/ExifTool/APP12.pm +1 -1
- data/bin/lib/Image/ExifTool/ASF.pm +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +1 -1
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +1 -1
- data/bin/lib/Image/ExifTool/BPG.pm +1 -1
- data/bin/lib/Image/ExifTool/BZZ.pm +1 -1
- data/bin/lib/Image/ExifTool/BigTIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -6
- data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +8 -4
- data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/Casio.pm +1 -1
- data/bin/lib/Image/ExifTool/Charset.pm +1 -1
- data/bin/lib/Image/ExifTool/DICOM.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +96 -45
- data/bin/lib/Image/ExifTool/DNG.pm +1 -1
- data/bin/lib/Image/ExifTool/DPX.pm +1 -1
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/DarwinCore.pm +1 -1
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +123 -32
- data/bin/lib/Image/ExifTool/Exif.pm +7 -4
- data/bin/lib/Image/ExifTool/FITS.pm +1 -1
- data/bin/lib/Image/ExifTool/FLAC.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/Fixup.pm +1 -1
- data/bin/lib/Image/ExifTool/Flash.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/Font.pm +1 -1
- data/bin/lib/Image/ExifTool/FotoStation.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -1
- data/bin/lib/Image/ExifTool/GE.pm +1 -1
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GIMP.pm +1 -1
- data/bin/lib/Image/ExifTool/GM.pm +1 -1
- data/bin/lib/Image/ExifTool/GPS.pm +1 -1
- data/bin/lib/Image/ExifTool/GeoTiff.pm +1 -1
- data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- data/bin/lib/Image/ExifTool/GoPro.pm +1 -1
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/HTML.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ICO.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +1 -1
- data/bin/lib/Image/ExifTool/IPTC.pm +8 -5
- data/bin/lib/Image/ExifTool/ISO.pm +1 -1
- data/bin/lib/Image/ExifTool/ITC.pm +1 -1
- data/bin/lib/Image/ExifTool/Import.pm +5 -4
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/InfiRay.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEGDigest.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/JVC.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/KyoceraRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/LIF.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/cs.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/de.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_ca.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/en_gb.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fi.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/fr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/it.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ja.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ko.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/nl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/pl.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/ru.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sk.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/sv.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/tr.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_cn.pm +1 -1
- data/bin/lib/Image/ExifTool/Lang/zh_tw.pm +1 -1
- data/bin/lib/Image/ExifTool/Leaf.pm +1 -1
- data/bin/lib/Image/ExifTool/LigoGPS.pm +408 -0
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +22 -13
- data/bin/lib/Image/ExifTool/MIE.pm +1 -1
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/MISB.pm +1 -1
- data/bin/lib/Image/ExifTool/MNG.pm +1 -1
- data/bin/lib/Image/ExifTool/MOI.pm +1 -1
- data/bin/lib/Image/ExifTool/MPC.pm +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MPF.pm +1 -1
- data/bin/lib/Image/ExifTool/MRC.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/MakerNotes.pm +1 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +12 -4
- data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +1 -1
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Motorola.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +164 -35
- data/bin/lib/Image/ExifTool/NikonCapture.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonCustom.pm +1 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +1 -1
- data/bin/lib/Image/ExifTool/Nintendo.pm +1 -1
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +1 -1
- data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
- data/bin/lib/Image/ExifTool/Opus.pm +1 -1
- data/bin/lib/Image/ExifTool/Other.pm +1 -1
- data/bin/lib/Image/ExifTool/PCX.pm +1 -1
- data/bin/lib/Image/ExifTool/PDF.pm +1 -1
- data/bin/lib/Image/ExifTool/PGF.pm +1 -1
- data/bin/lib/Image/ExifTool/PICT.pm +1 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +1 -1
- data/bin/lib/Image/ExifTool/PLUS.pm +1 -1
- data/bin/lib/Image/ExifTool/PNG.pm +1 -1
- data/bin/lib/Image/ExifTool/PPM.pm +1 -1
- data/bin/lib/Image/ExifTool/PSP.pm +1 -1
- data/bin/lib/Image/ExifTool/Palm.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +20 -2
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Parrot.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- data/bin/lib/Image/ExifTool/PhaseOne.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoCD.pm +1 -1
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -1
- data/bin/lib/Image/ExifTool/PostScript.pm +1 -1
- data/bin/lib/Image/ExifTool/PrintIM.pm +1 -1
- data/bin/lib/Image/ExifTool/Protobuf.pm +24 -14
- data/bin/lib/Image/ExifTool/Qualcomm.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +46 -17
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -302
- data/bin/lib/Image/ExifTool/README +4 -0
- data/bin/lib/Image/ExifTool/RIFF.pm +1 -1
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +1 -1
- data/bin/lib/Image/ExifTool/Radiance.pm +1 -1
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Real.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +1 -1
- data/bin/lib/Image/ExifTool/Red.pm +1 -1
- data/bin/lib/Image/ExifTool/Ricoh.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Sanyo.pm +1 -1
- data/bin/lib/Image/ExifTool/Scalado.pm +1 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +1 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +1 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +1 -1
- data/bin/lib/Image/ExifTool/SonyIDC.pm +1 -1
- data/bin/lib/Image/ExifTool/Stim.pm +1 -1
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +11 -5
- data/bin/lib/Image/ExifTool/TagNames.pod +84 -34
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Theora.pm +1 -1
- data/bin/lib/Image/ExifTool/Torrent.pm +1 -1
- data/bin/lib/Image/ExifTool/Unknown.pm +1 -1
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +1 -1
- data/bin/lib/Image/ExifTool/Vorbis.pm +1 -1
- data/bin/lib/Image/ExifTool/WPG.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePNG.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +5 -3
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +9 -8
- data/bin/lib/Image/ExifTool/XISF.pm +1 -1
- data/bin/lib/Image/ExifTool/XMP.pm +1 -1
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +13 -7
- data/bin/lib/Image/ExifTool.pod +14 -5
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- 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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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.
|
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-
|
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-
|
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-
|
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.
|
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
|
636
|
-
'61182.59' => 'Canon RF
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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.
|
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 => '
|
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
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
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
|
207
|
-
|
208
|
-
|
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
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
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
|
249
|
-
|
250
|
-
|
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
|
261
|
-
Name => '
|
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
|
-
|
264
|
-
|
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
|
-
|
316
|
+
2 => {
|
267
317
|
Name => 'GPSLatitude',
|
268
318
|
Format => 'double',
|
269
|
-
|
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
|
-
|
323
|
+
3 => {
|
273
324
|
Name => 'GPSLongitude',
|
274
325
|
Format => 'double',
|
275
|
-
RawConv => '$$self{GPSLongitude} = $$self{
|
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-
|
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-
|
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-
|
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-
|
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-
|
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-
|
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.
|