exiftool_vendored 13.57.1 → 13.59.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/Changes +38 -2
- data/bin/MANIFEST +1 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -2
- data/bin/config_files/example.config +1 -1
- data/bin/config_files/novelty.config +51 -0
- data/bin/exiftool +13 -10
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +6 -4
- data/bin/lib/Image/ExifTool/Canon.pm +41 -39
- data/bin/lib/Image/ExifTool/DJI.pm +22 -5
- data/bin/lib/Image/ExifTool/Exif.pm +7 -7
- data/bin/lib/Image/ExifTool/FujiFilm.pm +17 -12
- data/bin/lib/Image/ExifTool/Garmin.pm +185 -3221
- data/bin/lib/Image/ExifTool/Import.pm +18 -9
- data/bin/lib/Image/ExifTool/M2TS.pm +24 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +4 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +6 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +4 -1
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +68 -28
- data/bin/lib/Image/ExifTool/TagLookup.pm +39 -37
- data/bin/lib/Image/ExifTool/TagNames.pod +83 -59
- data/bin/lib/Image/ExifTool/WriteXMP.pl +9 -0
- data/bin/lib/Image/ExifTool/Writer.pl +12 -0
- data/bin/lib/Image/ExifTool/XMP.pm +28 -7
- data/bin/lib/Image/ExifTool.pm +41 -15
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9ce05a515790dd95ab7268976c98a631cd914f89751e06325c85c4d5621295bc
|
|
4
|
+
data.tar.gz: d944c0936aea71dd27276c9591ac5e2568070f8a2088df644e8a019a42b98467
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f299b91c8e5085bf0f661ef597d551e3859c41c879ce8a2c14fdc4038396ea9882fd74f60a556c58d944b70db558b9719ced4cb4874784bd1d64b01c45cf4590
|
|
7
|
+
data.tar.gz: b2d2edf181e10759f40853133e294e1ed52dfbf14d7e90c94d2548d71c6bfa2c10d3203f77fb83fad1e787babb67e129e1275a66bf230899d6c357c9676b8619
|
data/bin/Changes
CHANGED
|
@@ -7,11 +7,47 @@ RSS feed: https://exiftool.org/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 13.55. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
|
9
9
|
|
|
10
|
+
May 27, 2026 - Version 13.59
|
|
11
|
+
|
|
12
|
+
- Security update
|
|
13
|
+
- Added NewUUID Extra tag (thanks Daniel Dumitriu, github #421)
|
|
14
|
+
- Added a new Canon RF lens (thanks Norbert Wasser)
|
|
15
|
+
- Added config_files/novelty.config to the distribution (github #422)
|
|
16
|
+
- Decode tags from the Sony ILCE-7RM6 (thanks Jos Roost)
|
|
17
|
+
- Decode a new FujiFilm tag (thanks Iliah Borg)
|
|
18
|
+
- Decode a few more DJI protobuf tags
|
|
19
|
+
- Decode a new Ricoh Pentax tag
|
|
20
|
+
- Issue Error instead of Warning when writing XMP with some problems which
|
|
21
|
+
could cause loss of data
|
|
22
|
+
- Improved error message when reading wrongly encoded CSV or JSON file
|
|
23
|
+
- Enhanced -config option to allow piped input with "-config -"
|
|
24
|
+
- Enhanced -validate option to do more strict checking of EXIF-for-XMP tags
|
|
25
|
+
- Patched -sort option avoid inconsistent output ordering of same-named tags
|
|
26
|
+
- Patched Composite SubSec date/time tags to specify the EXIF group for the
|
|
27
|
+
SubSec and OffsetTime tags upon which they are based (avoids non-standard
|
|
28
|
+
XMP tags from being incorrectly used here)
|
|
29
|
+
- Fixed bug in -diff feature when finding differences for specific tags and a
|
|
30
|
+
specified tag was missing from the source file
|
|
31
|
+
|
|
32
|
+
May 5, 2026 - Version 13.58
|
|
33
|
+
|
|
34
|
+
- Added a few new Nikon Z lenses (thanks Warren Hatch)
|
|
35
|
+
- Added a few new QuickTime MajorBrand values (thanks Herb)
|
|
36
|
+
- Added a new RAFCompression value
|
|
37
|
+
- Added undocumented -eh option (alias for -E/-escapeHTML)
|
|
38
|
+
- Decode timed GPS from INNOVV N2 TS videos
|
|
39
|
+
- Improved decoding of Canon ColorData for some models (thanks Iliah Borg)
|
|
40
|
+
- Changed the name of the RAFVersion tag to FirmwareVersion
|
|
41
|
+
- Removed conversion for Garmin FIT DeviceIndex values
|
|
42
|
+
- Properly parse XML CDATA and comment sections
|
|
43
|
+
- Fixed issue which could cause failed Garmin test on some systems
|
|
44
|
+
|
|
10
45
|
Apr. 17, 2026 - Version 13.57
|
|
11
46
|
|
|
12
47
|
- Added print conversions for Garmin FIT enum tags
|
|
13
48
|
- Decode a number of undocumented Garmin FIT tags
|
|
14
|
-
- Reverted XML patch of 13.56 which broke structured
|
|
49
|
+
- Reverted XML patch of 13.56 which broke structured output for XMP files with
|
|
50
|
+
an XML header
|
|
15
51
|
|
|
16
52
|
Apr. 15, 2026 - Version 13.56 - "Exif 3.1"
|
|
17
53
|
|
|
@@ -91,7 +127,7 @@ Feb. 19, 2026 - Version 13.51
|
|
|
91
127
|
|
|
92
128
|
Feb. 7, 2026 - Version 13.50 (production release)
|
|
93
129
|
|
|
94
|
-
- Security update (MacOS only
|
|
130
|
+
- Security update (MacOS only)
|
|
95
131
|
- Added a few new Sony lenses (thanks Jos Roost)
|
|
96
132
|
- Added a couple of new Canon lenses (thanks Norbert Wasser)
|
|
97
133
|
- Decode another Samsung trailer tag
|
data/bin/MANIFEST
CHANGED
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
|
@@ -111,8 +111,8 @@ your home directory, then you would type the following commands in a
|
|
|
111
111
|
terminal window to extract and run ExifTool:
|
|
112
112
|
|
|
113
113
|
cd ~/Desktop
|
|
114
|
-
gzip -dc Image-ExifTool-13.
|
|
115
|
-
cd Image-ExifTool-13.
|
|
114
|
+
gzip -dc Image-ExifTool-13.59.tar.gz | tar -xf -
|
|
115
|
+
cd Image-ExifTool-13.59
|
|
116
116
|
./exiftool t/images/ExifTool.jpg
|
|
117
117
|
|
|
118
118
|
Note: These commands extract meta information from one of the test images.
|
|
@@ -213,6 +213,7 @@ distribution package:
|
|
|
213
213
|
guano.config - Decode individual tags from Guano metadata
|
|
214
214
|
local_time.config - Determine local time from GPS information
|
|
215
215
|
nksc.config - Decode tags in Nikon ViewNX NKSC files
|
|
216
|
+
novelty.config - Definitions for XMP Novelty Theory tags
|
|
216
217
|
onone.config - Definitions for writing On1 XMP tags
|
|
217
218
|
photoshop_paths.config - For extracting or copying Photoshop paths
|
|
218
219
|
picasa_faces.config - Convert from Picasa to MWG/MP face regions
|
|
@@ -136,7 +136,7 @@
|
|
|
136
136
|
# new PNG tags are added to the PNG::TextualData table:
|
|
137
137
|
'Image::ExifTool::PNG::TextualData' => {
|
|
138
138
|
# Example 12. PNG:NewPngTag1
|
|
139
|
-
NewPngTag1 => { },
|
|
139
|
+
NewPngTag1 => { }, # (Writable is 'string' by default for XMP tags)
|
|
140
140
|
# Example 13. PNG:NewPngTag2
|
|
141
141
|
NewPngTag2 => { iTXt => 1 }, # (force this tag to be written as iTXt)
|
|
142
142
|
# Example 14. PNG:NewPngTag3
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#------------------------------------------------------------------------------
|
|
2
|
+
# File: novelty.config
|
|
3
|
+
#
|
|
4
|
+
# Description: This config file defines Novelty Theory XMP tags for writing.
|
|
5
|
+
#
|
|
6
|
+
# Notes: Tags for annotating timestamped media (video, photo, audio)
|
|
7
|
+
# with metadata in the context of Terence McKenna's Novelty
|
|
8
|
+
# Theory framework (see The Invisible Landscape, 1975).
|
|
9
|
+
# Published and maintained at http://hexart.pl/novelty/1.0/
|
|
10
|
+
# for use by archival projects documenting media against the
|
|
11
|
+
# McKenna timewave.
|
|
12
|
+
#
|
|
13
|
+
# Requires: ExifTool version 7.00 or later
|
|
14
|
+
#
|
|
15
|
+
# Revisions: 2026-05-27 - P. Harvey Created (from github #422)
|
|
16
|
+
#------------------------------------------------------------------------------
|
|
17
|
+
|
|
18
|
+
%Image::ExifTool::UserDefined = (
|
|
19
|
+
'Image::ExifTool::XMP::Main' => {
|
|
20
|
+
novelty => {
|
|
21
|
+
SubDirectory => { TagTable => 'Image::ExifTool::UserDefined::novelty' },
|
|
22
|
+
},
|
|
23
|
+
},
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
# Novelty Theory XMP namespace (http://hexart.pl/novelty/1.0/)
|
|
27
|
+
%Image::ExifTool::UserDefined::novelty = (
|
|
28
|
+
GROUPS => { 0 => 'XMP', 1 => 'XMP-novelty', 2 => 'Other' },
|
|
29
|
+
NAMESPACE => { novelty => 'http://hexart.pl/novelty/1.0/' },
|
|
30
|
+
WRITABLE => 'string',
|
|
31
|
+
NoveltyIndex => { Writable => 'real' },
|
|
32
|
+
TimewavePosition => { },
|
|
33
|
+
Concrescence => { },
|
|
34
|
+
EschatonCoordinates => { },
|
|
35
|
+
StrangeAttractor => { },
|
|
36
|
+
HabitNoveltyRatio => { },
|
|
37
|
+
WaveformType => { },
|
|
38
|
+
Protocol => { },
|
|
39
|
+
Operator => { },
|
|
40
|
+
Intent => { },
|
|
41
|
+
Witness => { },
|
|
42
|
+
CosmicSign => { },
|
|
43
|
+
Frequency => { },
|
|
44
|
+
SacredGeometry => { },
|
|
45
|
+
Dimension => { },
|
|
46
|
+
Lineage => { },
|
|
47
|
+
Mantra => { },
|
|
48
|
+
Seal => { Avoid => 1 }, # avoid conflict with XMP-seal:Seal
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
1; #end
|
data/bin/exiftool
CHANGED
|
@@ -11,7 +11,7 @@ use strict;
|
|
|
11
11
|
use warnings;
|
|
12
12
|
require 5.004;
|
|
13
13
|
|
|
14
|
-
my $version = '13.
|
|
14
|
+
my $version = '13.59';
|
|
15
15
|
|
|
16
16
|
$^W = 1; # enable global warnings
|
|
17
17
|
|
|
@@ -1009,7 +1009,8 @@ for (;;) {
|
|
|
1009
1009
|
/^list_dir$/i and $listDir = 1, next;
|
|
1010
1010
|
(/^e$/ or $a eq '-composite') and $mt->Options(Composite => 0), next;
|
|
1011
1011
|
(/^-e$/ or $a eq 'composite') and $mt->Options(Composite => 1), next;
|
|
1012
|
-
(
|
|
1012
|
+
# (-eh is undocumented)
|
|
1013
|
+
(/^E$/ or $a eq 'escapehtml' or $a eq 'eh') and require Image::ExifTool::HTML and $escapeHTML = 1, next;
|
|
1013
1014
|
($a eq 'ec' or $a eq 'escapec') and $escapeC = 1, next;
|
|
1014
1015
|
($a eq 'ex' or $a eq 'escapexml') and $escapeXML = 1, next;
|
|
1015
1016
|
if (/^echo(\d)?$/i) {
|
|
@@ -2436,7 +2437,8 @@ sub GetImageInfo($$)
|
|
|
2436
2437
|
if (defined $tag) {
|
|
2437
2438
|
$done{$tag} = 1;
|
|
2438
2439
|
$g = $et->GetGroup($tag, $showGroup);
|
|
2439
|
-
}
|
|
2440
|
+
}
|
|
2441
|
+
unless ($g) { # ($g could be '' if requesting non-existent tag, and this will sort last)
|
|
2440
2442
|
for (;;) {
|
|
2441
2443
|
$tag2 = shift @found2;
|
|
2442
2444
|
defined $tag2 or $g = '', last;
|
|
@@ -4663,6 +4665,7 @@ sub FilenameSPrintf($;$@)
|
|
|
4663
4665
|
$part{F} = $part{f} . $part{E};
|
|
4664
4666
|
($part{D} = $part{d}) =~ s{/+$}{};
|
|
4665
4667
|
@part{qw(t g s o)} = @extra;
|
|
4668
|
+
$part{o} =~ s(^.*[/\\])()s if $part{o}; # remove directory if it exists
|
|
4666
4669
|
my ($filename, $pos) = ('', 0);
|
|
4667
4670
|
while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lu]?)([dDfFeEtgso]))/g) {
|
|
4668
4671
|
$filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1));
|
|
@@ -6159,7 +6162,7 @@ with this command:
|
|
|
6159
6162
|
|
|
6160
6163
|
produces output like this:
|
|
6161
6164
|
|
|
6162
|
-
-- Generated by ExifTool 13.
|
|
6165
|
+
-- Generated by ExifTool 13.59 --
|
|
6163
6166
|
File: a.jpg - 2003:10:31 15:44:19
|
|
6164
6167
|
(f/5.6, 1/60s, ISO 100)
|
|
6165
6168
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -6456,12 +6459,12 @@ between B<-W> and B<-w>:
|
|
|
6456
6459
|
|
|
6457
6460
|
2) B<-W> supports four additional format codes: %t, %g and %s represent the
|
|
6458
6461
|
tag name, group name, and suggested extension for the output file (based on
|
|
6459
|
-
the format of the data), and %o
|
|
6460
|
-
|
|
6461
|
-
extension). The %g code may be followed by a single digit to
|
|
6462
|
-
group family number (eg. %g1), otherwise family 0 is assumed.
|
|
6463
|
-
width/position/case specifiers may be used with these format
|
|
6464
|
-
exactly the same way as with %f and %e.
|
|
6462
|
+
the format of the data), and %o is the value of the OriginalRawFileName or
|
|
6463
|
+
OriginalFileName tag from the input file (without directory name, but
|
|
6464
|
+
including extension). The %g code may be followed by a single digit to
|
|
6465
|
+
specify the group family number (eg. %g1), otherwise family 0 is assumed.
|
|
6466
|
+
The substring width/position/case specifiers may be used with these format
|
|
6467
|
+
codes in exactly the same way as with %f and %e.
|
|
6465
6468
|
|
|
6466
6469
|
3) The argument for B<-W> is interpreted as a file name if it contains no
|
|
6467
6470
|
format codes. (For B<-w>, this would be a file extension.) This change
|
|
@@ -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.69';
|
|
39
39
|
@ISA = qw(Exporter);
|
|
40
40
|
|
|
41
41
|
sub NumbersFirst($$);
|
|
@@ -481,7 +481,7 @@ assume these values are properly stored as UTC, and will convert them to
|
|
|
481
481
|
local time when extracting.
|
|
482
482
|
|
|
483
483
|
When writing string-based date/time tags, the system time zone is added if
|
|
484
|
-
the PrintConv option is enabled and no time zone is specified. This is
|
|
484
|
+
the L<PrintConv|../ExifTool.html#PrintConv> option is enabled and no time zone is specified. This is
|
|
485
485
|
because Apple software may display crazy values if the time zone is missing
|
|
486
486
|
for some tags.
|
|
487
487
|
|
|
@@ -2301,12 +2301,13 @@ sub WriteTagNames($$)
|
|
|
2301
2301
|
for ($r=0; $r<$rows; ++$r) {
|
|
2302
2302
|
print HTMLFILE '<tr>';
|
|
2303
2303
|
for ($c=0; $c<$cols; ++$c) {
|
|
2304
|
-
my ($key, $val, $index, $prt);
|
|
2304
|
+
my ($key, $val, $index, $prt, $bit);
|
|
2305
2305
|
my $n = $r + $c * $rows;
|
|
2306
2306
|
if ($n < @keys) {
|
|
2307
2307
|
$key = $keys[$n];
|
|
2308
2308
|
$val = $$printConv{$key};
|
|
2309
2309
|
} elsif ($n < $items) {
|
|
2310
|
+
$bit = 1;
|
|
2310
2311
|
$key = 'Bit ' . $bits[$n - @keys];
|
|
2311
2312
|
$val = $$bits{$bits[$n - @keys]};
|
|
2312
2313
|
}
|
|
@@ -2321,7 +2322,8 @@ sub WriteTagNames($$)
|
|
|
2321
2322
|
} elsif ($$printConv{PrintString} or
|
|
2322
2323
|
$index !~ /^[+-]?(?=\d|\.\d)\d*(\.\d*)?$/)
|
|
2323
2324
|
{
|
|
2324
|
-
$index =
|
|
2325
|
+
$index = EscapeHTML($index);
|
|
2326
|
+
$index = "'${index}'" unless $bit;
|
|
2325
2327
|
}
|
|
2326
2328
|
} else {
|
|
2327
2329
|
$index = $prt = ' ';
|
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
88
88
|
sub ProcessExifInfo($$$);
|
|
89
89
|
sub SwapWords($);
|
|
90
90
|
|
|
91
|
-
$VERSION = '5.
|
|
91
|
+
$VERSION = '5.07';
|
|
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)
|
|
@@ -646,9 +646,10 @@ $VERSION = '5.06';
|
|
|
646
646
|
'61182.63' => 'Canon RF 24mm F1.4 L VCM', #42
|
|
647
647
|
'61182.64' => 'Canon RF 20mm F1.4 L VCM', #42
|
|
648
648
|
'61182.65' => 'Canon RF 85mm F1.4 L VCM', #github350
|
|
649
|
-
'61182.66' => 'Canon RF
|
|
650
|
-
'61182.67' => 'Canon RF
|
|
651
|
-
'61182.68' => 'Canon RF 14mm
|
|
649
|
+
'61182.66' => 'Canon RF 20-50mm F4 L IS USM PZ', #42
|
|
650
|
+
'61182.67' => 'Canon RF 45mm F1.2 STM', #42
|
|
651
|
+
'61182.68' => 'Canon RF 7-14mm F2.8-3.5 L FISHEYE STM', #42
|
|
652
|
+
'61182.69' => 'Canon RF 14mm F1.4 L VCM', #42
|
|
652
653
|
65535 => 'n/a',
|
|
653
654
|
);
|
|
654
655
|
|
|
@@ -2031,7 +2032,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
2031
2032
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData10' },
|
|
2032
2033
|
},
|
|
2033
2034
|
{ # (int16u[3973]) - R3 ref IB
|
|
2034
|
-
Condition => '($count == 3973 or $count == 3778) and $$valPt
|
|
2035
|
+
Condition => '($count == 3973 or $count == 3778) and $$valPt =~ /^[\0-\x40]/',
|
|
2035
2036
|
Name => 'ColorData11',
|
|
2036
2037
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData11' },
|
|
2037
2038
|
},
|
|
@@ -7132,6 +7133,7 @@ my %ciMaxFocal = (
|
|
|
7132
7133
|
326 => 'Canon RF 24mm F1.4 L VCM', #42
|
|
7133
7134
|
327 => 'Canon RF 20mm F1.4 L VCM', #42
|
|
7134
7135
|
328 => 'Canon RF 85mm F1.4 L VCM', #42/github350
|
|
7136
|
+
329 => 'Canon RF 20-50mm F4 L IS USM PZ', #42
|
|
7135
7137
|
330 => 'Canon RF 45mm F1.2 STM', #42
|
|
7136
7138
|
331 => 'Canon RF 7-14mm F2.8-3.5 L FISHEYE STM', #42
|
|
7137
7139
|
332 => 'Canon RF 14mm F1.4 L VCM', #42
|
|
@@ -8729,18 +8731,18 @@ my %ciMaxFocal = (
|
|
|
8729
8731
|
0xa9 => { Name => 'ColorTempUnknown10', Unknown => 1 },
|
|
8730
8732
|
0xaa => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 },
|
|
8731
8733
|
0xae => { Name => 'ColorTempUnknown11', Unknown => 1 },
|
|
8732
|
-
0xaf => { Name => '
|
|
8733
|
-
0xb3 => { Name => '
|
|
8734
|
-
0xb4 => { Name => '
|
|
8735
|
-
0xb8 => { Name => '
|
|
8736
|
-
0xb9 => { Name => '
|
|
8737
|
-
0xbd => { Name => '
|
|
8738
|
-
0xbe => { Name => '
|
|
8739
|
-
0xc2 => { Name => '
|
|
8740
|
-
0xc3 => { Name => '
|
|
8741
|
-
0xc7 => { Name => '
|
|
8742
|
-
0xc8 => { Name => '
|
|
8743
|
-
0xcc => { Name => '
|
|
8734
|
+
0xaf => { Name => 'WB_RGGBLevelsUnknown12', Format => 'int16s[4]', Unknown => 1 },
|
|
8735
|
+
0xb3 => { Name => 'ColorTempUnknown12', Unknown => 1 },
|
|
8736
|
+
0xb4 => { Name => 'WB_RGGBLevelsUnknown13', Format => 'int16s[4]', Unknown => 1 },
|
|
8737
|
+
0xb8 => { Name => 'ColorTempUnknown13', Unknown => 1 },
|
|
8738
|
+
0xb9 => { Name => 'WB_RGGBLevelsUnknown14', Format => 'int16s[4]', Unknown => 1 },
|
|
8739
|
+
0xbd => { Name => 'ColorTempUnknown14', Unknown => 1 },
|
|
8740
|
+
0xbe => { Name => 'WB_RGGBLevelsUnknown15', Format => 'int16s[4]', Unknown => 1 },
|
|
8741
|
+
0xc2 => { Name => 'ColorTempUnknown15', Unknown => 1 },
|
|
8742
|
+
0xc3 => { Name => 'WB_RGGBLevelsUnknown16', Format => 'int16s[4]', Unknown => 1 },
|
|
8743
|
+
0xc7 => { Name => 'ColorTempUnknown16', Unknown => 1 },
|
|
8744
|
+
0xc8 => { Name => 'WB_RGGBLevelsUnknown17', Format => 'int16s[4]', Unknown => 1 },
|
|
8745
|
+
0xcc => { Name => 'ColorTempUnknown17', Unknown => 1 },
|
|
8744
8746
|
0xcd => { Name => 'WB_RGGBLevelsDaylight', Format => 'int16s[4]' },
|
|
8745
8747
|
0xd1 => 'ColorTempDaylight',
|
|
8746
8748
|
0xd2 => { Name => 'WB_RGGBLevelsShade', Format => 'int16s[4]' },
|
|
@@ -8755,28 +8757,28 @@ my %ciMaxFocal = (
|
|
|
8755
8757
|
0xea => 'ColorTempKelvin',
|
|
8756
8758
|
0xeb => { Name => 'WB_RGGBLevelsFlash', Format => 'int16s[4]' },
|
|
8757
8759
|
0xef => 'ColorTempFlash',
|
|
8758
|
-
0xf0 => { Name => '
|
|
8759
|
-
0xf4 => { Name => '
|
|
8760
|
-
0xf5 => { Name => '
|
|
8761
|
-
0xf9 => { Name => '
|
|
8762
|
-
0xfa => { Name => '
|
|
8763
|
-
0xfe => { Name => '
|
|
8764
|
-
0xff => { Name => '
|
|
8765
|
-
0x103 => { Name => '
|
|
8766
|
-
0x104 => { Name => '
|
|
8767
|
-
0x108 => { Name => '
|
|
8768
|
-
0x109 => { Name => '
|
|
8769
|
-
0x10d => { Name => '
|
|
8770
|
-
0x10e => { Name => '
|
|
8771
|
-
0x112 => { Name => '
|
|
8772
|
-
0x113 => { Name => '
|
|
8773
|
-
0x117 => { Name => '
|
|
8774
|
-
0x118 => { Name => '
|
|
8775
|
-
0x11c => { Name => '
|
|
8776
|
-
0x11d => { Name => '
|
|
8777
|
-
0x121 => { Name => '
|
|
8778
|
-
0x122 => { Name => '
|
|
8779
|
-
0x126 => { Name => '
|
|
8760
|
+
0xf0 => { Name => 'WB_RGGBLevelsUnknown18', Format => 'int16s[4]', Unknown => 1 },
|
|
8761
|
+
0xf4 => { Name => 'ColorTempUnknown18', Unknown => 1 },
|
|
8762
|
+
0xf5 => { Name => 'WB_RGGBLevelsUnknown19', Format => 'int16s[4]', Unknown => 1 },
|
|
8763
|
+
0xf9 => { Name => 'ColorTempUnknown19', Unknown => 1 },
|
|
8764
|
+
0xfa => { Name => 'WB_RGGBLevelsUnknown20', Format => 'int16s[4]', Unknown => 1 },
|
|
8765
|
+
0xfe => { Name => 'ColorTempUnknown20', Unknown => 1 },
|
|
8766
|
+
0xff => { Name => 'WB_RGGBLevelsUnknown21', Format => 'int16s[4]', Unknown => 1 },
|
|
8767
|
+
0x103 => { Name => 'ColorTempUnknown21', Unknown => 1 },
|
|
8768
|
+
0x104 => { Name => 'WB_RGGBLevelsUnknown22', Format => 'int16s[4]', Unknown => 1 },
|
|
8769
|
+
0x108 => { Name => 'ColorTempUnknown22', Unknown => 1 },
|
|
8770
|
+
0x109 => { Name => 'WB_RGGBLevelsUnknown23', Format => 'int16s[4]', Unknown => 1 },
|
|
8771
|
+
0x10d => { Name => 'ColorTempUnknown23', Unknown => 1 },
|
|
8772
|
+
0x10e => { Name => 'WB_RGGBLevelsUnknown24', Format => 'int16s[4]', Unknown => 1 },
|
|
8773
|
+
0x112 => { Name => 'ColorTempUnknown24', Unknown => 1 },
|
|
8774
|
+
0x113 => { Name => 'WB_RGGBLevelsUnknown25', Format => 'int16s[4]', Unknown => 1 },
|
|
8775
|
+
0x117 => { Name => 'ColorTempUnknown25', Unknown => 1 },
|
|
8776
|
+
0x118 => { Name => 'WB_RGGBLevelsUnknown26', Format => 'int16s[4]', Unknown => 1 },
|
|
8777
|
+
0x11c => { Name => 'ColorTempUnknown26', Unknown => 1 },
|
|
8778
|
+
0x11d => { Name => 'WB_RGGBLevelsUnknown27', Format => 'int16s[4]', Unknown => 1 },
|
|
8779
|
+
0x121 => { Name => 'ColorTempUnknown27', Unknown => 1 },
|
|
8780
|
+
0x122 => { Name => 'WB_RGGBLevelsUnknown28', Format => 'int16s[4]', Unknown => 1 },
|
|
8781
|
+
0x126 => { Name => 'ColorTempUnknown28', Unknown => 1 },
|
|
8780
8782
|
0x12c => {
|
|
8781
8783
|
Name => 'ColorCalib',
|
|
8782
8784
|
Format => 'undef[120]',
|
|
@@ -18,7 +18,7 @@ use Image::ExifTool::XMP;
|
|
|
18
18
|
use Image::ExifTool::GPS;
|
|
19
19
|
use Image::ExifTool::Protobuf;
|
|
20
20
|
|
|
21
|
-
$VERSION = '1.
|
|
21
|
+
$VERSION = '1.19';
|
|
22
22
|
|
|
23
23
|
sub ProcessDJIInfo($$$);
|
|
24
24
|
sub ProcessSettings($$$);
|
|
@@ -275,7 +275,9 @@ my %convFloat2 = (
|
|
|
275
275
|
Name => 'FrameInfo',
|
|
276
276
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
277
277
|
},
|
|
278
|
-
'dvtm_ac203_3-2-2-1' => { Name => 'ISO', Format => 'float' },
|
|
278
|
+
#WRONG (forum17996) 'dvtm_ac203_3-2-2-1' => { Name => 'ISO', Format => 'float' },
|
|
279
|
+
'dvtm_ac203_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' }, #forum17996
|
|
280
|
+
'dvtm_ac203_3-2-3-1' => { Name => 'ISO', Format => 'float' }, #forum17996
|
|
279
281
|
'dvtm_ac203_3-2-4-1' => { # (NC)
|
|
280
282
|
Name => 'ShutterSpeed',
|
|
281
283
|
Format => 'rational',
|
|
@@ -315,6 +317,8 @@ my %convFloat2 = (
|
|
|
315
317
|
Name => 'FrameInfo',
|
|
316
318
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
317
319
|
},
|
|
320
|
+
'dvtm_ac204_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' }, #forum17996
|
|
321
|
+
'dvtm_ac204_3-2-3-1' => { Name => 'ISO', Format => 'float' }, #forum17996
|
|
318
322
|
'dvtm_ac204_3-2-4-1' => { # (NC)
|
|
319
323
|
Name => 'ShutterSpeed',
|
|
320
324
|
Format => 'rational',
|
|
@@ -354,6 +358,8 @@ my %convFloat2 = (
|
|
|
354
358
|
Name => 'FrameInfo',
|
|
355
359
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
356
360
|
},
|
|
361
|
+
'dvtm_ac206_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' }, #forum17996
|
|
362
|
+
'dvtm_ac206_3-2-3-1' => { Name => 'ISO', Format => 'float' }, #forum17996
|
|
357
363
|
'dvtm_ac206_3-2-4-1' => { # (NC)
|
|
358
364
|
Name => 'ShutterSpeed',
|
|
359
365
|
Format => 'rational',
|
|
@@ -395,7 +401,7 @@ my %convFloat2 = (
|
|
|
395
401
|
Name => 'FrameInfo',
|
|
396
402
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
397
403
|
},
|
|
398
|
-
|
|
404
|
+
'dvtm_AVATA2_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
399
405
|
'dvtm_AVATA2_3-1-2' => { # (also 3-2-1-6 and 3-4-1-6)
|
|
400
406
|
Name => 'TimeStamp',
|
|
401
407
|
Groups => { 2 => 'Time' },
|
|
@@ -437,6 +443,7 @@ my %convFloat2 = (
|
|
|
437
443
|
Name => 'FrameInfo',
|
|
438
444
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
439
445
|
},
|
|
446
|
+
'dvtm_wm265e_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
440
447
|
# dvtm_wm265e_3-2-1-4 - model code?
|
|
441
448
|
'dvtm_wm265e_3-2-2-1' => { Name => 'ISO', Format => 'float' },
|
|
442
449
|
'dvtm_wm265e_3-2-3-1' => {
|
|
@@ -469,6 +476,7 @@ my %convFloat2 = (
|
|
|
469
476
|
Name => 'FrameInfo',
|
|
470
477
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
471
478
|
},
|
|
479
|
+
'dvtm_pm320_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
472
480
|
'dvtm_pm320_3-2-2-1' => { Name => 'ISO', Format => 'float' },
|
|
473
481
|
'dvtm_pm320_3-2-3-1' => {
|
|
474
482
|
Name => 'ShutterSpeed',
|
|
@@ -504,6 +512,7 @@ my %convFloat2 = (
|
|
|
504
512
|
Name => 'FrameInfo',
|
|
505
513
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
506
514
|
},
|
|
515
|
+
'dvtm_Mini4_Pro_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
507
516
|
'dvtm_Mini4_Pro_3-2-7-1' => { Name => 'ISO', Format => 'float' },
|
|
508
517
|
'dvtm_Mini4_Pro_3-2-10-1' => {
|
|
509
518
|
Name => 'ShutterSpeed',
|
|
@@ -546,7 +555,7 @@ my %convFloat2 = (
|
|
|
546
555
|
Name => 'FrameInfo',
|
|
547
556
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
548
557
|
},
|
|
549
|
-
|
|
558
|
+
'dvtm_dji_neo_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
550
559
|
'dvtm_dji_neo_3-1-2' => { # (also 3-2-1-6 and 3-4-1-6)
|
|
551
560
|
Name => 'TimeStamp',
|
|
552
561
|
Groups => { 2 => 'Time' },
|
|
@@ -586,6 +595,7 @@ my %convFloat2 = (
|
|
|
586
595
|
Name => 'FrameInfo',
|
|
587
596
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
588
597
|
},
|
|
598
|
+
'dvtm_Air3_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' }, # (NC)
|
|
589
599
|
'dvtm_Air3_3-1-2' => {
|
|
590
600
|
Name => 'TimeStamp',
|
|
591
601
|
Groups => { 2 => 'Time' },
|
|
@@ -626,6 +636,7 @@ my %convFloat2 = (
|
|
|
626
636
|
Name => 'FrameInfo',
|
|
627
637
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
628
638
|
},
|
|
639
|
+
'dvtm_Air3s_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' }, # (NC)
|
|
629
640
|
'dvtm_Air3s_3-1-2' => {
|
|
630
641
|
Name => 'TimeStamp',
|
|
631
642
|
Groups => { 2 => 'Time' },
|
|
@@ -659,10 +670,11 @@ my %convFloat2 = (
|
|
|
659
670
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GimbalInfo' },
|
|
660
671
|
},
|
|
661
672
|
#
|
|
662
|
-
# Osmo 360 (similar to Action 4/5)
|
|
673
|
+
# Osmo 360 (similar to Action 4/5/6)
|
|
663
674
|
#
|
|
664
675
|
'dvtm_oq101_1-1-5' => { Name => 'SerialNumber', Notes => 'Osmo 360' },
|
|
665
676
|
'dvtm_oq101_1-1-10' => 'Model',
|
|
677
|
+
'dvtm_oq101_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
666
678
|
'dvtm_oq101_3-1-2' => {
|
|
667
679
|
Name => 'TimeStamp',
|
|
668
680
|
Groups => { 2 => 'Time' },
|
|
@@ -706,6 +718,7 @@ my %convFloat2 = (
|
|
|
706
718
|
Name => 'FrameInfo',
|
|
707
719
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
708
720
|
},
|
|
721
|
+
'dvtm_PP-101_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
709
722
|
'dvtm_PP-101_3-1-2' => {
|
|
710
723
|
Name => 'TimeStamp',
|
|
711
724
|
Groups => { 2 => 'Time' },
|
|
@@ -728,6 +741,7 @@ my %convFloat2 = (
|
|
|
728
741
|
Name => 'FrameInfo',
|
|
729
742
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
730
743
|
},
|
|
744
|
+
'dvtm_wa345e_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
731
745
|
'dvtm_wa345e_3-1-2' => {
|
|
732
746
|
Name => 'TimeStamp',
|
|
733
747
|
Groups => { 2 => 'Time' },
|
|
@@ -765,6 +779,7 @@ my %convFloat2 = (
|
|
|
765
779
|
Name => 'FrameInfo',
|
|
766
780
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
767
781
|
},
|
|
782
|
+
'dvtm_wm261_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
768
783
|
'dvtm_wm261_3-1-2' => {
|
|
769
784
|
Name => 'TimeStamp',
|
|
770
785
|
Groups => { 2 => 'Time' },
|
|
@@ -815,6 +830,7 @@ my %convFloat2 = (
|
|
|
815
830
|
Name => 'FrameInfo',
|
|
816
831
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
817
832
|
},
|
|
833
|
+
'dvtm_Mavic4_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' },
|
|
818
834
|
'dvtm_Mavic4_3-1-2' => {
|
|
819
835
|
Name => 'TimeStamp',
|
|
820
836
|
Groups => { 2 => 'Time' },
|
|
@@ -849,6 +865,7 @@ my %convFloat2 = (
|
|
|
849
865
|
#
|
|
850
866
|
'dvtm_Mini5Pro_1-1-5' => { Name => 'SerialNumber', Notes => 'Mini 5 Pro' }, # (NC)
|
|
851
867
|
'dvtm_Mini5Pro_1-1-10' => 'Model', # (NC)
|
|
868
|
+
'dvtm_Mini5Pro_3-1-1' => { Name => 'FrameNumber', Format => 'unsigned' }, # (NC)
|
|
852
869
|
'dvtm_Mini5Pro_3-2-37-1' => { Name => 'Temperature', Format => 'float' }, # (NC)
|
|
853
870
|
'dvtm_Mini5Pro_3-3-4-1' => {
|
|
854
871
|
Name => 'GPSInfo',
|
|
@@ -57,7 +57,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
|
57
57
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
58
58
|
use Image::ExifTool::MakerNotes;
|
|
59
59
|
|
|
60
|
-
$VERSION = '4.
|
|
60
|
+
$VERSION = '4.65';
|
|
61
61
|
|
|
62
62
|
sub ProcessExif($$$);
|
|
63
63
|
sub WriteExif($$$);
|
|
@@ -5170,8 +5170,8 @@ my %subSecConv = (
|
|
|
5170
5170
|
0 => 'EXIF:DateTimeOriginal',
|
|
5171
5171
|
},
|
|
5172
5172
|
Desire => {
|
|
5173
|
-
1 => 'SubSecTimeOriginal',
|
|
5174
|
-
2 => 'OffsetTimeOriginal',
|
|
5173
|
+
1 => 'EXIF:SubSecTimeOriginal',
|
|
5174
|
+
2 => 'EXIF:OffsetTimeOriginal',
|
|
5175
5175
|
},
|
|
5176
5176
|
WriteAlso => {
|
|
5177
5177
|
'EXIF:DateTimeOriginal' => '($val and $val=~/^(\d{4}:\d{2}:\d{2} \d{2}:\d{2}:\d{2})/) ? $1 : undef',
|
|
@@ -5189,8 +5189,8 @@ my %subSecConv = (
|
|
|
5189
5189
|
0 => 'EXIF:CreateDate',
|
|
5190
5190
|
},
|
|
5191
5191
|
Desire => {
|
|
5192
|
-
1 => 'SubSecTimeDigitized',
|
|
5193
|
-
2 => 'OffsetTimeDigitized',
|
|
5192
|
+
1 => 'EXIF:SubSecTimeDigitized',
|
|
5193
|
+
2 => 'EXIF:OffsetTimeDigitized',
|
|
5194
5194
|
},
|
|
5195
5195
|
WriteAlso => {
|
|
5196
5196
|
'EXIF:CreateDate' => '($val and $val=~/^(\d{4}:\d{2}:\d{2} \d{2}:\d{2}:\d{2})/) ? $1 : undef',
|
|
@@ -5208,8 +5208,8 @@ my %subSecConv = (
|
|
|
5208
5208
|
0 => 'EXIF:ModifyDate',
|
|
5209
5209
|
},
|
|
5210
5210
|
Desire => {
|
|
5211
|
-
1 => 'SubSecTime',
|
|
5212
|
-
2 => 'OffsetTime',
|
|
5211
|
+
1 => 'EXIF:SubSecTime',
|
|
5212
|
+
2 => 'EXIF:OffsetTime',
|
|
5213
5213
|
},
|
|
5214
5214
|
WriteAlso => {
|
|
5215
5215
|
'EXIF:ModifyDate' => '($val and $val=~/^(\d{4}:\d{2}:\d{2} \d{2}:\d{2}:\d{2})/) ? $1 : undef',
|