exiftool_vendored 13.50.0 → 13.52.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 +28 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/exiftool +3 -3
- data/bin/lib/Image/ExifTool/APP12.pm +5 -5
- data/bin/lib/Image/ExifTool/ASF.pm +9 -9
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +28 -10
- data/bin/lib/Image/ExifTool/Canon.pm +107 -4
- data/bin/lib/Image/ExifTool/Charset.pm +2 -2
- data/bin/lib/Image/ExifTool/DJI.pm +70 -8
- data/bin/lib/Image/ExifTool/EXE.pm +3 -3
- data/bin/lib/Image/ExifTool/Flash.pm +2 -8
- data/bin/lib/Image/ExifTool/FlashPix.pm +9 -9
- data/bin/lib/Image/ExifTool/Font.pm +2 -2
- data/bin/lib/Image/ExifTool/ID3.pm +3 -3
- data/bin/lib/Image/ExifTool/LIF.pm +3 -3
- data/bin/lib/Image/ExifTool/LNK.pm +382 -43
- data/bin/lib/Image/ExifTool/M2TS.pm +5 -3
- data/bin/lib/Image/ExifTool/MIE.pm +2 -2
- data/bin/lib/Image/ExifTool/MXF.pm +2 -2
- data/bin/lib/Image/ExifTool/Matroska.pm +2 -4
- data/bin/lib/Image/ExifTool/Microsoft.pm +3 -3
- data/bin/lib/Image/ExifTool/Nikon.pm +51 -6
- data/bin/lib/Image/ExifTool/PDF.pm +2 -2
- data/bin/lib/Image/ExifTool/PLIST.pm +2 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +2 -2
- data/bin/lib/Image/ExifTool/Photoshop.pm +5 -5
- data/bin/lib/Image/ExifTool/QuickTime.pm +13 -10
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +3 -20
- data/bin/lib/Image/ExifTool/README +12 -10
- data/bin/lib/Image/ExifTool/Reconyx.pm +3 -3
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +45 -11
- data/bin/lib/Image/ExifTool/TagNames.pod +112 -10
- data/bin/lib/Image/ExifTool/WTV.pm +4 -4
- data/bin/lib/Image/ExifTool/XMP.pm +29 -3
- data/bin/lib/Image/ExifTool.pm +12 -9
- data/bin/lib/Image/ExifTool.pod +3 -2
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f1432f9788115500c5dc934cf7a08f704b8ac43891cd615e31613b08b296d6e4
|
|
4
|
+
data.tar.gz: 64a324bd2b96853ea8324c43fe1af74a4aa8b57fcda53253d5ec84b28371b59c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3712cd77765affd98d21ec3a8602dc4a2d2f86ccff56c3eb44f437cd7711182e9c7aaaccef566f3bfd045499f72a3641d01b05dec5891cf34059b7d76444892f
|
|
7
|
+
data.tar.gz: 248b84f36b0dc2f2cc653ef1ee0832adbcbce7d386dc482941a85db67fa2704a23d7a0724cb3d10527aac782a5ee32a11aaca2f0da3277b4180862a5fdf6b7f0
|
data/bin/Changes
CHANGED
|
@@ -7,6 +7,34 @@ RSS feed: https://exiftool.org/rss.xml
|
|
|
7
7
|
Note: The most recent production release is Version 13.50. (Other versions are
|
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
|
9
9
|
|
|
10
|
+
Feb. 27, 2026 - Version 13.52
|
|
11
|
+
|
|
12
|
+
- Added a number of new XMP tags written by Adobe software
|
|
13
|
+
- Added UTF-16 support for a few different metadata types in which only UCS-2
|
|
14
|
+
was previously implemented (github #396)
|
|
15
|
+
- Added a few more Canon FlashModel values and decode FlashModel for the
|
|
16
|
+
5DmkII (thanks Peter Wem, github #390)
|
|
17
|
+
- Added a new Canon LensType (github #395)
|
|
18
|
+
- Added some missing file attribute bits to two of the new LNK tags
|
|
19
|
+
- Decode internal serial number for the 5DmkII (thanks Peter Wem, github #398)
|
|
20
|
+
- Decode another OwnerName for the 5DmkII (thanks Peter Wem, github #397)
|
|
21
|
+
- Decode some timed GPS for a couple of new DJI drones
|
|
22
|
+
- Enable WindowsLongPath by default only if Win32::API is available
|
|
23
|
+
- Renamed the Pentax K3III AFInfo tag to AFInfoK3III
|
|
24
|
+
|
|
25
|
+
Feb. 19, 2026 - Version 13.51
|
|
26
|
+
|
|
27
|
+
- Added a new Nikon LensID (thanks Johan)
|
|
28
|
+
- Decode more tags from Windows LNK files
|
|
29
|
+
- Decode another LIGOGPSINFO variant (github #394)
|
|
30
|
+
- Decode some new Canon tags (thanks Peter Wem, github #389, #390, #393)
|
|
31
|
+
- Decode some new Nikon tags
|
|
32
|
+
- Split decoding on Nikon BurstGroupID into separate tags
|
|
33
|
+
- Fixed round-off error in GPSDateTime seconds for camm6 metadata in MP4
|
|
34
|
+
videos introduced in 13.45
|
|
35
|
+
- Fixed bug generating the default-language version of
|
|
36
|
+
QuickTime:LocationInformation (github #391)
|
|
37
|
+
|
|
10
38
|
Feb. 7, 2026 - Version 13.50 (production release)
|
|
11
39
|
|
|
12
40
|
- Added a few new Sony lenses (thanks Jos Roost)
|
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.52.tar.gz | tar -xf -
|
|
115
|
+
cd Image-ExifTool-13.52
|
|
116
116
|
./exiftool t/images/ExifTool.jpg
|
|
117
117
|
|
|
118
118
|
Note: These commands extract meta information from one of the test images.
|
|
@@ -158,7 +158,7 @@ for calculating digest values and providing other features listed below:
|
|
|
158
158
|
POSIX::strptime (for inverse date/time conversion)
|
|
159
159
|
Time::Piece (alternative to POSIX::strptime)
|
|
160
160
|
Unicode::LineBreak (for column alignment of alternate-language output)
|
|
161
|
-
Win32::API (for proper handling of Windows file times)
|
|
161
|
+
Win32::API (for proper handling of Windows file names/times)
|
|
162
162
|
Win32::FindFile (for Windows Unicode directory support, app only)
|
|
163
163
|
Win32API::File (for Windows Unicode file names and file times)
|
|
164
164
|
Compress::Raw::Lzma (for reading encoded 7z files)
|
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.52';
|
|
15
15
|
|
|
16
16
|
$^W = 1; # enable global warnings
|
|
17
17
|
|
|
@@ -5530,7 +5530,7 @@ C<E<lt>> to avoid confusion with the C<E<lt>=> operator which sets the tag
|
|
|
5530
5530
|
value from the contents of a file. A single space at the start of the
|
|
5531
5531
|
string is removed if it exists, but all other whitespace in the string is
|
|
5532
5532
|
preserved. See note 8 below about using the redirection feature with
|
|
5533
|
-
list-type
|
|
5533
|
+
list-type tags, shortcuts or when using wildcards in tag names.
|
|
5534
5534
|
|
|
5535
5535
|
See L</COPYING EXAMPLES> for examples using B<-tagsFromFile>.
|
|
5536
5536
|
|
|
@@ -6136,7 +6136,7 @@ with this command:
|
|
|
6136
6136
|
|
|
6137
6137
|
produces output like this:
|
|
6138
6138
|
|
|
6139
|
-
-- Generated by ExifTool 13.
|
|
6139
|
+
-- Generated by ExifTool 13.52 --
|
|
6140
6140
|
File: a.jpg - 2003:10:31 15:44:19
|
|
6141
6141
|
(f/5.6, 1/60s, ISO 100)
|
|
6142
6142
|
File: b.jpg - 2006:05:23 11:57:38
|
|
@@ -14,7 +14,7 @@ use strict;
|
|
|
14
14
|
use vars qw($VERSION);
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
16
16
|
|
|
17
|
-
$VERSION = '1.
|
|
17
|
+
$VERSION = '1.15';
|
|
18
18
|
|
|
19
19
|
sub ProcessAPP12($$$);
|
|
20
20
|
sub ProcessDucky($$$);
|
|
@@ -114,8 +114,8 @@ sub WriteDucky($$$);
|
|
|
114
114
|
Priority => 0,
|
|
115
115
|
Avoid => 1,
|
|
116
116
|
# (ignore 4-byte character count at start of value)
|
|
117
|
-
ValueConv => '$self->Decode(substr($val,4),"
|
|
118
|
-
ValueConvInv => 'pack("N",length $val) . $self->Encode($val,"
|
|
117
|
+
ValueConv => '$self->Decode(substr($val,4),"UTF16","MM")',
|
|
118
|
+
ValueConvInv => 'pack("N",length $val) . $self->Encode($val,"UTF16","MM")',
|
|
119
119
|
},
|
|
120
120
|
3 => { #PH
|
|
121
121
|
Name => 'Copyright',
|
|
@@ -123,8 +123,8 @@ sub WriteDucky($$$);
|
|
|
123
123
|
Avoid => 1,
|
|
124
124
|
Groups => { 2 => 'Author' },
|
|
125
125
|
# (ignore 4-byte character count at start of value)
|
|
126
|
-
ValueConv => '$self->Decode(substr($val,4),"
|
|
127
|
-
ValueConvInv => 'pack("N",length $val) . $self->Encode($val,"
|
|
126
|
+
ValueConv => '$self->Decode(substr($val,4),"UTF16","MM")',
|
|
127
|
+
ValueConvInv => 'pack("N",length $val) . $self->Encode($val,"UTF16","MM")',
|
|
128
128
|
},
|
|
129
129
|
);
|
|
130
130
|
|
|
@@ -17,7 +17,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
|
17
17
|
use Image::ExifTool::Exif;
|
|
18
18
|
use Image::ExifTool::RIFF;
|
|
19
19
|
|
|
20
|
-
$VERSION = '1.
|
|
20
|
+
$VERSION = '1.27';
|
|
21
21
|
|
|
22
22
|
sub ProcessASF($$;$);
|
|
23
23
|
sub ProcessContentDescription($$$);
|
|
@@ -549,7 +549,7 @@ sub ProcessContentDescription($$$)
|
|
|
549
549
|
my $len = shift @len;
|
|
550
550
|
next unless $len;
|
|
551
551
|
return 0 if $pos + $len > $dirLen;
|
|
552
|
-
my $val = $et->Decode(substr($$dataPt,$pos,$len),'
|
|
552
|
+
my $val = $et->Decode(substr($$dataPt,$pos,$len),'UTF16','II');
|
|
553
553
|
$et->HandleTag($tagTablePtr, $tag, $val);
|
|
554
554
|
$pos += $len;
|
|
555
555
|
}
|
|
@@ -594,7 +594,7 @@ sub ReadASF($$$$$)
|
|
|
594
594
|
my ($et, $dataPt, $pos, $format, $size) = @_;
|
|
595
595
|
my @vals;
|
|
596
596
|
if ($format == 0) { # unicode string
|
|
597
|
-
$vals[0] = $et->Decode(substr($$dataPt,$pos,$size),'
|
|
597
|
+
$vals[0] = $et->Decode(substr($$dataPt,$pos,$size),'UTF16','II');
|
|
598
598
|
} elsif ($format == 2) { # 4-byte boolean
|
|
599
599
|
@vals = ReadValue($dataPt, $pos, 'int32u', undef, $size);
|
|
600
600
|
foreach (@vals) {
|
|
@@ -631,7 +631,7 @@ sub ProcessExtendedContentDescription($$$)
|
|
|
631
631
|
my $nameLen = unpack("x${pos}v", $$dataPt);
|
|
632
632
|
$pos += 2;
|
|
633
633
|
return 0 if $pos + $nameLen + 4 > $dirLen;
|
|
634
|
-
my $tag = Image::ExifTool::Decode(undef,substr($$dataPt,$pos,$nameLen),'
|
|
634
|
+
my $tag = Image::ExifTool::Decode(undef,substr($$dataPt,$pos,$nameLen),'UTF16','II','Latin');
|
|
635
635
|
$tag =~ s/^WM\///; # remove leading "WM/"
|
|
636
636
|
$pos += $nameLen;
|
|
637
637
|
my ($dType, $dLen) = unpack("x${pos}v2", $$dataPt);
|
|
@@ -667,7 +667,7 @@ sub ProcessMetadata($$$)
|
|
|
667
667
|
my ($index, $stream, $nameLen, $dType, $dLen) = unpack("x${pos}v4V", $$dataPt);
|
|
668
668
|
$pos += 12;
|
|
669
669
|
return 0 if $pos + $nameLen + $dLen > $dirLen;
|
|
670
|
-
my $tag = Image::ExifTool::Decode(undef,substr($$dataPt,$pos,$nameLen),'
|
|
670
|
+
my $tag = Image::ExifTool::Decode(undef,substr($$dataPt,$pos,$nameLen),'UTF16','II','Latin');
|
|
671
671
|
$tag =~ s/^WM\///; # remove leading "WM/"
|
|
672
672
|
$pos += $nameLen;
|
|
673
673
|
my $val = ReadASF($et,$dataPt,$pos,$dType,$dLen);
|
|
@@ -702,8 +702,8 @@ sub ProcessPicture($$$)
|
|
|
702
702
|
my $str = substr($$dataPt, $dirStart+5, $n);
|
|
703
703
|
if ($str =~ /^((?:..)*?)\0\0((?:..)*?)\0\0/s) {
|
|
704
704
|
my ($mime, $desc) = ($1, $2);
|
|
705
|
-
$et->HandleTag($tagTablePtr, 1, $et->Decode($mime,'
|
|
706
|
-
$et->HandleTag($tagTablePtr, 2, $et->Decode($desc,'
|
|
705
|
+
$et->HandleTag($tagTablePtr, 1, $et->Decode($mime,'UTF16','II'));
|
|
706
|
+
$et->HandleTag($tagTablePtr, 2, $et->Decode($desc,'UTF16','II')) if length $desc;
|
|
707
707
|
}
|
|
708
708
|
$et->HandleTag($tagTablePtr, 3, substr($$dataPt, $dirStart+5+$n, $picLen));
|
|
709
709
|
return 1;
|
|
@@ -731,12 +731,12 @@ sub ProcessCodecList($$$)
|
|
|
731
731
|
my $nameLen = Get16u($dataPt, $pos + 2) * 2;
|
|
732
732
|
$pos += 4;
|
|
733
733
|
return 0 if $pos + $nameLen + 2 > $dirLen;
|
|
734
|
-
my $name = $et->Decode(substr($$dataPt,$pos,$nameLen),'
|
|
734
|
+
my $name = $et->Decode(substr($$dataPt,$pos,$nameLen),'UTF16','II');
|
|
735
735
|
$et->HandleTag($tagTablePtr, "${type}Name", $name);
|
|
736
736
|
my $descLen = Get16u($dataPt, $pos + $nameLen) * 2;
|
|
737
737
|
$pos += $nameLen + 2;
|
|
738
738
|
return 0 if $pos + $descLen + 2 > $dirLen;
|
|
739
|
-
my $desc = $et->Decode(substr($$dataPt,$pos,$descLen),'
|
|
739
|
+
my $desc = $et->Decode(substr($$dataPt,$pos,$descLen),'UTF16','II');
|
|
740
740
|
$et->HandleTag($tagTablePtr, "${type}Description", $desc);
|
|
741
741
|
my $infoLen = Get16u($dataPt, $pos + $descLen);
|
|
742
742
|
$pos += $descLen + 2 + $infoLen;
|
|
@@ -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.66';
|
|
39
39
|
@ISA = qw(Exporter);
|
|
40
40
|
|
|
41
41
|
sub NumbersFirst($$);
|
|
@@ -2262,22 +2262,33 @@ sub WriteTagNames($$)
|
|
|
2262
2262
|
print HTMLFILE "<table class='inner sep' cellspacing=1>\n";
|
|
2263
2263
|
my $align = ' class=r';
|
|
2264
2264
|
my $wid = 0;
|
|
2265
|
-
my @keys;
|
|
2265
|
+
my (@keys, @bits);
|
|
2266
2266
|
foreach (sort { NumbersFirst($a,$b) } keys %$printConv) {
|
|
2267
|
-
next if /^(Notes|PrintHex|PrintInt|PrintString|OTHER)$/;
|
|
2267
|
+
next if /^(Notes|PrintHex|PrintInt|PrintString|OTHER|BITMASK)$/;
|
|
2268
2268
|
$align = '' if $align and /[^\d]/;
|
|
2269
2269
|
my $w = length($_) + length($$printConv{$_});
|
|
2270
2270
|
$wid = $w if $wid < $w;
|
|
2271
2271
|
push @keys, $_;
|
|
2272
|
-
|
|
2273
|
-
|
|
2272
|
+
next unless $$printConv{$_} =~ /[\0-\x1f\x7f-\xff]/;
|
|
2273
|
+
warn "Warning: Special characters in $tableName PrintConv ($$printConv{$_})\n";
|
|
2274
|
+
}
|
|
2275
|
+
my $bits = $$printConv{BITMASK};
|
|
2276
|
+
if ($bits) {
|
|
2277
|
+
$align = '';
|
|
2278
|
+
foreach (sort { NumbersFirst($a,$b) } keys %$bits) {
|
|
2279
|
+
my $w = length($_) + length($$bits{$_}) + 4;
|
|
2280
|
+
$wid = $w if $wid < $w;
|
|
2281
|
+
push @bits, $_;
|
|
2282
|
+
next unless $$bits{$_} =~ /[\0-\x1f\x7f-\xff]/;
|
|
2283
|
+
warn "Warning: Special characters in $tableName PrintConv BITMASK ($$bits{$_})\n";
|
|
2274
2284
|
}
|
|
2275
2285
|
}
|
|
2276
2286
|
$wid = length($tableName)+7 if $wid < length($tableName)+7;
|
|
2277
2287
|
# print in multiple columns if there is room
|
|
2278
2288
|
my $cols = int(110 / ($wid + 4));
|
|
2279
|
-
$
|
|
2280
|
-
|
|
2289
|
+
my $items = @keys + @bits;
|
|
2290
|
+
$cols = 1 if $cols < 1 or $cols > $items or $items < 4;
|
|
2291
|
+
my $rows = int(($items + $cols - 1) / $cols);
|
|
2281
2292
|
my ($r, $c);
|
|
2282
2293
|
print HTMLFILE '<tr class=h>';
|
|
2283
2294
|
for ($c=0; $c<$cols; ++$c) {
|
|
@@ -2287,11 +2298,18 @@ sub WriteTagNames($$)
|
|
|
2287
2298
|
for ($r=0; $r<$rows; ++$r) {
|
|
2288
2299
|
print HTMLFILE '<tr>';
|
|
2289
2300
|
for ($c=0; $c<$cols; ++$c) {
|
|
2290
|
-
my $key
|
|
2291
|
-
my
|
|
2301
|
+
my ($key, $val, $index, $prt);
|
|
2302
|
+
my $n = $r + $c * $rows;
|
|
2303
|
+
if ($n < @keys) {
|
|
2304
|
+
$key = $keys[$n];
|
|
2305
|
+
$val = $$printConv{$key};
|
|
2306
|
+
} elsif ($n < $items) {
|
|
2307
|
+
$key = 'Bit ' . $bits[$n - @keys];
|
|
2308
|
+
$val = $$bits{$bits[$n - @keys]};
|
|
2309
|
+
}
|
|
2292
2310
|
if (defined $key) {
|
|
2293
2311
|
$index = $key;
|
|
2294
|
-
$prt = '= ' . EscapeHTML(
|
|
2312
|
+
$prt = '= ' . EscapeHTML($val);
|
|
2295
2313
|
$index =~ s/\.\d+$// if $$printConv{PrintInt};
|
|
2296
2314
|
if ($$printConv{PrintHex}) {
|
|
2297
2315
|
$index =~ s/(\.\d+)$//; # remove decimal
|
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
|
88
88
|
sub ProcessExifInfo($$$);
|
|
89
89
|
sub SwapWords($);
|
|
90
90
|
|
|
91
|
-
$VERSION = '5.
|
|
91
|
+
$VERSION = '5.05';
|
|
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)
|
|
@@ -540,6 +540,8 @@ $VERSION = '5.03';
|
|
|
540
540
|
757 => 'Canon EF 400mm f/2.8L IS III USM', #IB
|
|
541
541
|
758 => 'Canon EF 600mm f/4L IS III USM', #IB
|
|
542
542
|
|
|
543
|
+
923 => 'Meike/SKY 85mm f/1.8 DCM', #github395
|
|
544
|
+
|
|
543
545
|
1136 => 'Sigma 24-70mm f/2.8 DG OS HSM | A', #IB (017)
|
|
544
546
|
# (STM lenses - 0x10xx)
|
|
545
547
|
4142 => 'Canon EF-S 18-135mm f/3.5-5.6 IS STM',
|
|
@@ -1022,6 +1024,29 @@ $VERSION = '5.03';
|
|
|
1022
1024
|
0x80000560 => 'EOS D6000C', #PH (guess)
|
|
1023
1025
|
);
|
|
1024
1026
|
|
|
1027
|
+
# flash models (github390)
|
|
1028
|
+
my %flashModel = (
|
|
1029
|
+
0 => 'n/a',
|
|
1030
|
+
# 1 - seen this for various PowerShot/IXUS models
|
|
1031
|
+
4 => 'Speedlite 540EZ',
|
|
1032
|
+
5 => 'Speedlite 380EX',
|
|
1033
|
+
6 => 'Speedlite 550EX',
|
|
1034
|
+
8 => 'Speedlite ST-E2',
|
|
1035
|
+
9 => 'Speedlite MR-14EX',
|
|
1036
|
+
12 => 'Speedlite 580EX',
|
|
1037
|
+
13 => 'Speedlite 430EX',
|
|
1038
|
+
17 => 'Speedlite 580EX II',
|
|
1039
|
+
18 => 'Speedlite 430EX II',
|
|
1040
|
+
22 => 'Speedlite 600EX-RT',
|
|
1041
|
+
23 => 'Speedlite 600EX II-RT',
|
|
1042
|
+
24 => 'Speedlite 90EX',
|
|
1043
|
+
25 => 'Speedlite 430EX III-RT',
|
|
1044
|
+
31 => 'Speedlite EL-1 ver2',
|
|
1045
|
+
33 => 'Speedlite EL-5',
|
|
1046
|
+
34 => 'Speedlite EL-10',
|
|
1047
|
+
# 127 - seen a lot, currently ignored
|
|
1048
|
+
);
|
|
1049
|
+
|
|
1025
1050
|
my %canonQuality = (
|
|
1026
1051
|
-1 => 'n/a', # (PH, EOS M MOV video)
|
|
1027
1052
|
1 => 'Economy',
|
|
@@ -2526,8 +2551,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
|
2526
2551
|
PrintConvInv => '$val',
|
|
2527
2552
|
},
|
|
2528
2553
|
28 => {
|
|
2529
|
-
Name => '
|
|
2530
|
-
|
|
2554
|
+
Name => 'FlashModel', #github390
|
|
2555
|
+
# (don't know what bit 7 is for, but it is set for most models except 1Ds)
|
|
2556
|
+
Mask => 0x7f,
|
|
2557
|
+
RawConv => '$val == 127 ? undef : $val',
|
|
2558
|
+
PrintConv => \%flashModel,
|
|
2531
2559
|
},
|
|
2532
2560
|
29 => {
|
|
2533
2561
|
Name => 'FlashBits',
|
|
@@ -3969,6 +3997,7 @@ my %ciMaxFocal = (
|
|
|
3969
3997
|
Name => 'HighlightTonePriority',
|
|
3970
3998
|
PrintConv => \%offOn,
|
|
3971
3999
|
},
|
|
4000
|
+
0x13 => { Name => 'FlashModel', Mask => 0x7f, PrintConv => \%flashModel }, #github390
|
|
3972
4001
|
0x1b => { %ciMacroMagnification }, #PH
|
|
3973
4002
|
0x15 => { #PH (580 EX II)
|
|
3974
4003
|
Name => 'FlashMeteringMode',
|
|
@@ -4053,6 +4082,11 @@ my %ciMaxFocal = (
|
|
|
4053
4082
|
# some firmwares have a null instead of a space after the version number
|
|
4054
4083
|
RawConv => '$val=~/^\d+\.\d+\.\d+\s*$/ ? $val : undef',
|
|
4055
4084
|
},
|
|
4085
|
+
0x18e => { #github397
|
|
4086
|
+
Name => 'OwnerName',
|
|
4087
|
+
Priority => 0,
|
|
4088
|
+
Format => 'string[32]',
|
|
4089
|
+
},
|
|
4056
4090
|
0x1bb => {
|
|
4057
4091
|
Name => 'FileIndex',
|
|
4058
4092
|
Groups => { 2 => 'Image' },
|
|
@@ -4787,6 +4821,14 @@ my %ciMaxFocal = (
|
|
|
4787
4821
|
NOTES => 'CameraInfo tags for the EOS R5 and R6.',
|
|
4788
4822
|
# (see forum16111 for more notes on these tags)
|
|
4789
4823
|
# 0x0a5d - some sort of sequence number starting from 1 (ref forum16111)
|
|
4824
|
+
0x09da => { #github393
|
|
4825
|
+
Name => 'CameraTemperature',
|
|
4826
|
+
Groups => { 2 => 'Camera' },
|
|
4827
|
+
ValueConv => '$val - 128',
|
|
4828
|
+
ValueConvInv => '$val + 128',
|
|
4829
|
+
PrintConv => '"$val C"',
|
|
4830
|
+
PrintConvInv => '$val=~s/ ?C//; $val',
|
|
4831
|
+
},
|
|
4790
4832
|
0x0af1 => { #forum15210/15579
|
|
4791
4833
|
Name => 'ShutterCount',
|
|
4792
4834
|
Format => 'int32u',
|
|
@@ -5588,6 +5630,7 @@ my %ciMaxFocal = (
|
|
|
5588
5630
|
0x03 => { %ciFNumber }, #PH
|
|
5589
5631
|
0x04 => { %ciExposureTime }, #PH
|
|
5590
5632
|
0x06 => { %ciISO }, #PH
|
|
5633
|
+
0x13 => { Name => 'FlashModel', Mask => 0x7f, PrintConv => \%flashModel }, #github390
|
|
5591
5634
|
0x15 => { #PH (580 EX II)
|
|
5592
5635
|
Name => 'FlashMeteringMode',
|
|
5593
5636
|
PrintConv => {
|
|
@@ -7095,9 +7138,17 @@ my %ciMaxFocal = (
|
|
|
7095
7138
|
%binaryDataAttrs,
|
|
7096
7139
|
FIRST_ENTRY => 0,
|
|
7097
7140
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
7098
|
-
|
|
7141
|
+
0 => { #github398 (5DmkII,5DmkIII,5DmkIV,5DS,5DSR)
|
|
7142
|
+
Name => 'InternalSerialNumber2',
|
|
7143
|
+
Format => 'string[9]',
|
|
7144
|
+
Notes => 'could be the number on a barcode sticker of the main circuit board',
|
|
7145
|
+
RawConv => '$val =~ /^\w{6}/ ? $val : undef',
|
|
7146
|
+
|
|
7147
|
+
},
|
|
7148
|
+
9 => { # (other models)
|
|
7099
7149
|
Name => 'InternalSerialNumber',
|
|
7100
7150
|
Format => 'string',
|
|
7151
|
+
RawConv => '$val =~ /^\w{6}/ ? $val : undef',
|
|
7101
7152
|
},
|
|
7102
7153
|
);
|
|
7103
7154
|
|
|
@@ -7626,6 +7677,19 @@ my %ciMaxFocal = (
|
|
|
7626
7677
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' }
|
|
7627
7678
|
},
|
|
7628
7679
|
0x0e7 => { Name => 'AverageBlackLevel', Format => 'int16u[4]' }, #IB
|
|
7680
|
+
0x26b => { #github389
|
|
7681
|
+
Name => 'FlashOutput',
|
|
7682
|
+
ValueConv => '$val >= 255 ? 255 : exp(($val-200)/16*log(2))',
|
|
7683
|
+
ValueConvInv => '$val == 255 ? 255 : 200 + log($val)*16/log(2)',
|
|
7684
|
+
PrintConv => '$val == 255 ? "Strobe or Misfire" : sprintf("%.0f%%", $val * 100)',
|
|
7685
|
+
PrintConvInv => '$val =~ /^(\d(\.?\d*))/ ? $1 / 100 : 255',
|
|
7686
|
+
},
|
|
7687
|
+
0x26c => { #github389
|
|
7688
|
+
Name => 'FlashBatteryLevel',
|
|
7689
|
+
# calibration taken from ColorData3
|
|
7690
|
+
PrintConv => '$val ? sprintf("%.2fV", $val * 5 / 186) : "n/a"',
|
|
7691
|
+
PrintConvInv => '$val=~/^(\d+\.\d+)\s*V?$/i ? int($val*186/5+0.5) : 0',
|
|
7692
|
+
},
|
|
7629
7693
|
0x280 => { #PH
|
|
7630
7694
|
Name => 'RawMeasuredRGGB',
|
|
7631
7695
|
Format => 'int32u[4]',
|
|
@@ -8115,6 +8179,19 @@ my %ciMaxFocal = (
|
|
|
8115
8179
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' }
|
|
8116
8180
|
},
|
|
8117
8181
|
0x114 => { Name => 'AverageBlackLevel', Format => 'int16u[4]' }, #IB
|
|
8182
|
+
0x198 => { #github389
|
|
8183
|
+
Name => 'FlashOutput',
|
|
8184
|
+
ValueConv => '$val >= 255 ? 255 : exp(($val-200)/16*log(2))',
|
|
8185
|
+
ValueConvInv => '$val == 255 ? 255 : 200 + log($val)*16/log(2)',
|
|
8186
|
+
PrintConv => '$val == 255 ? "Strobe or Misfire" : sprintf("%.0f%%", $val * 100)',
|
|
8187
|
+
PrintConvInv => '$val =~ /^(\d(\.?\d*))/ ? $1 / 100 : 255',
|
|
8188
|
+
},
|
|
8189
|
+
0x199 => { #github389
|
|
8190
|
+
Name => 'FlashBatteryLevel',
|
|
8191
|
+
# calibration taken from ColorData3
|
|
8192
|
+
PrintConv => '$val ? sprintf("%.2fV", $val * 5 / 186) : "n/a"',
|
|
8193
|
+
PrintConvInv => '$val=~/^(\d+\.\d+)\s*V?$/i ? int($val*186/5+0.5) : 0',
|
|
8194
|
+
},
|
|
8118
8195
|
0x1ad => {
|
|
8119
8196
|
Name => 'RawMeasuredRGGB',
|
|
8120
8197
|
Condition => '$$self{ColorDataVersion} == 10',
|
|
@@ -8570,6 +8647,19 @@ my %ciMaxFocal = (
|
|
|
8570
8647
|
Name => 'PerChannelBlackLevel',
|
|
8571
8648
|
Format => 'int16u[4]',
|
|
8572
8649
|
},
|
|
8650
|
+
0x299 => { #github389
|
|
8651
|
+
Name => 'FlashOutput',
|
|
8652
|
+
ValueConv => '$val >= 255 ? 255 : exp(($val-200)/16*log(2))',
|
|
8653
|
+
ValueConvInv => '$val == 255 ? 255 : 200 + log($val)*16/log(2)',
|
|
8654
|
+
PrintConv => '$val == 255 ? "Strobe or Misfire" : sprintf("%.0f%%", $val * 100)',
|
|
8655
|
+
PrintConvInv => '$val =~ /^(\d(\.?\d*))/ ? $1 / 100 : 255',
|
|
8656
|
+
},
|
|
8657
|
+
0x29a => { #github389
|
|
8658
|
+
Name => 'FlashBatteryLevel',
|
|
8659
|
+
# calibration taken from ColorData3
|
|
8660
|
+
PrintConv => '$val ? sprintf("%.2fV", $val * 5 / 186) : "n/a"',
|
|
8661
|
+
PrintConvInv => '$val=~/^(\d+\.\d+)\s*V?$/i ? int($val*186/5+0.5) : 0',
|
|
8662
|
+
},
|
|
8573
8663
|
# 0x326 - PerChannelBlackLevel again
|
|
8574
8664
|
0x32a => {
|
|
8575
8665
|
Name => 'NormalWhiteLevel',
|
|
@@ -8812,6 +8902,19 @@ my %ciMaxFocal = (
|
|
|
8812
8902
|
Name => 'PerChannelBlackLevel',
|
|
8813
8903
|
Format => 'int16u[4]',
|
|
8814
8904
|
},
|
|
8905
|
+
0x203 => { #github389
|
|
8906
|
+
Name => 'FlashOutput',
|
|
8907
|
+
ValueConv => '$val >= 255 ? 255 : exp(($val-200)/16*log(2))',
|
|
8908
|
+
ValueConvInv => '$val == 255 ? 255 : 200 + log($val)*16/log(2)',
|
|
8909
|
+
PrintConv => '$val == 255 ? "Strobe or Misfire" : sprintf("%.0f%%", $val * 100)',
|
|
8910
|
+
PrintConvInv => '$val =~ /^(\d(\.?\d*))/ ? $1 / 100 : 255',
|
|
8911
|
+
},
|
|
8912
|
+
0x204 => { #github389
|
|
8913
|
+
Name => 'FlashBatteryLevel',
|
|
8914
|
+
# calibration taken from ColorData3
|
|
8915
|
+
PrintConv => '$val ? sprintf("%.2fV", $val * 5 / 186) : "n/a"',
|
|
8916
|
+
PrintConvInv => '$val=~/^(\d+\.\d+)\s*V?$/i ? int($val*186/5+0.5) : 0',
|
|
8917
|
+
},
|
|
8815
8918
|
# 0x290 - PerChannelBlackLevel again
|
|
8816
8919
|
0x294 => {
|
|
8817
8920
|
Name => 'NormalWhiteLevel',
|
|
@@ -77,10 +77,10 @@ my %unicode2byte = (
|
|
|
77
77
|
PDFDoc => 0x181,
|
|
78
78
|
Unicode => 0x200, # (UCS2)
|
|
79
79
|
UCS2 => 0x200,
|
|
80
|
-
UTF16 => 0x200,
|
|
80
|
+
UTF16 => 0x200, # (UCS2 with surrogate pairs added)
|
|
81
81
|
Symbol => 0x201,
|
|
82
82
|
JIS => 0x201,
|
|
83
|
-
UCS4 => 0x400,
|
|
83
|
+
UCS4 => 0x400, # (UTF32)
|
|
84
84
|
MacChineseCN => 0x803,
|
|
85
85
|
MacChineseTW => 0x803,
|
|
86
86
|
MacHebrew => 0x803, # (directional characters not supported)
|
|
@@ -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.17';
|
|
22
22
|
|
|
23
23
|
sub ProcessDJIInfo($$$);
|
|
24
24
|
sub ProcessSettings($$$);
|
|
@@ -36,7 +36,9 @@ sub ProcessSettings($$$);
|
|
|
36
36
|
'dvtm_PP-101.proto' => 1, # Osmo Pocket 3
|
|
37
37
|
'dvtm_oq101.proto' => 1, # Osmo 360
|
|
38
38
|
'dvtm_wa345e.proto' => 1, # Matrice 4E
|
|
39
|
-
'dvtm_wm261.proto' => 1, # Mavic Pro
|
|
39
|
+
'dvtm_wm261.proto' => 1, # Mavic 3 Pro
|
|
40
|
+
'dvtm_Mavic4.proto' => 1, # Mavic 4 Pro
|
|
41
|
+
'dvtm_Mini5Pro.proto' => 1, # Mini 5 Pro
|
|
40
42
|
# dvtm_wm169.proto seems to be DJI O3 but the structure is unknown
|
|
41
43
|
);
|
|
42
44
|
|
|
@@ -246,8 +248,9 @@ my %convFloat2 = (
|
|
|
246
248
|
dvtm_wm265e.proto (Mavic 3), dvtm_pm320.proto (Matrice 30),
|
|
247
249
|
dvtm_Mini4_Pro.proto (Mini 4 Pro), dvtm_dji_neo.proto (DJI Neo),
|
|
248
250
|
dvtm_Air3.proto (Air 3), dvtm_Air3s.proto (Air 3s), dvtm_PP-101.proto (Osmo
|
|
249
|
-
Pocket 3), dvtm_oq101.proto (Osmo 360), dvtm_wa345e.proto (Matrice 4E)
|
|
250
|
-
dvtm_wm261.proto (Mavic Pro
|
|
251
|
+
Pocket 3), dvtm_oq101.proto (Osmo 360), dvtm_wa345e.proto (Matrice 4E),
|
|
252
|
+
dvtm_wm261.proto (Mavic 3 Pro), dvtm_Mavic4.proto (Mavic 4 Pro) and
|
|
253
|
+
dvtm_Mini5Pro.proto (Mini 5 Pro).
|
|
251
254
|
|
|
252
255
|
Note that with the protobuf format, numerical tags missing from the output
|
|
253
256
|
for a given protocol should be considered to have the default value of 0.
|
|
@@ -255,7 +258,7 @@ my %convFloat2 = (
|
|
|
255
258
|
Protocol => {
|
|
256
259
|
Notes => "typically protobuf field 1-1-1, but ExifTool doesn't rely on this",
|
|
257
260
|
RawConv => q{
|
|
258
|
-
unless ($Image::ExifTool::DJI::knownProtocol{$val}) {
|
|
261
|
+
unless ($Image::ExifTool::DJI::knownProtocol{$val} or $val =~ /^dbginfo/) {
|
|
259
262
|
$self->Warn("Unknown protocol $val (please submit sample for testing)");
|
|
260
263
|
}
|
|
261
264
|
return $val;
|
|
@@ -473,7 +476,7 @@ my %convFloat2 = (
|
|
|
473
476
|
PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
|
|
474
477
|
},
|
|
475
478
|
'dvtm_Mini4_Pro_3-2-32-1' => { Name => 'ColorTemperature', Format => 'unsigned' },
|
|
476
|
-
|
|
479
|
+
'dvtm_Mini4_Pro_3-2-37-1' => { Name => 'Temperature', Format => 'float' }, # (NC)
|
|
477
480
|
'dvtm_Mini4_Pro_3-3-4-1' => {
|
|
478
481
|
Name => 'GPSInfo',
|
|
479
482
|
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
|
|
@@ -714,9 +717,9 @@ my %convFloat2 = (
|
|
|
714
717
|
PrintConv => '$self->ConvertDateTime($val)',
|
|
715
718
|
},
|
|
716
719
|
#
|
|
717
|
-
# Mavic Pro
|
|
720
|
+
# Mavic 3 Pro
|
|
718
721
|
#
|
|
719
|
-
'dvtm_wm261_1-1-5' => { Name => 'SerialNumber', Notes => 'Mavic Pro
|
|
722
|
+
'dvtm_wm261_1-1-5' => { Name => 'SerialNumber', Notes => 'Mavic 3 Pro' },
|
|
720
723
|
'dvtm_wm261_1-1-10' => 'Model',
|
|
721
724
|
'dvtm_wm261_2-3' => {
|
|
722
725
|
Name => 'FrameInfo',
|
|
@@ -761,8 +764,67 @@ my %convFloat2 = (
|
|
|
761
764
|
ValueConv => '$val =~ tr/-/:/; $val',
|
|
762
765
|
PrintConv => '$self->ConvertDateTime($val)',
|
|
763
766
|
},
|
|
767
|
+
#
|
|
768
|
+
# Mavic 4 Pro
|
|
769
|
+
#
|
|
770
|
+
'dvtm_Mavic4_1-1-5' => { Name => 'SerialNumber', Notes => 'Mavic 4 Pro' },
|
|
771
|
+
'dvtm_Mavic4_1-1-10' => 'Model',
|
|
772
|
+
# dvtm_Mavic4_2-2-1-4 - model code?
|
|
773
|
+
# dvtm_Mavic4_2-2-1-5 - frame rate again
|
|
774
|
+
'dvtm_Mavic4_2-3' => {
|
|
775
|
+
Name => 'FrameInfo',
|
|
776
|
+
SubDirectory => { TagTable => 'Image::ExifTool::DJI::FrameInfo' },
|
|
777
|
+
},
|
|
778
|
+
'dvtm_Mavic4_3-1-2' => {
|
|
779
|
+
Name => 'TimeStamp',
|
|
780
|
+
Groups => { 2 => 'Time' },
|
|
781
|
+
Format => 'unsigned',
|
|
782
|
+
ValueConv => '$val / 1e6',
|
|
783
|
+
},
|
|
784
|
+
# dvtm_Mavic4_3-2-1-4 - string: model code?
|
|
785
|
+
# dvtm_Mavic4_3-2-1-5 - float: frame rate again
|
|
786
|
+
'dvtm_Mavic4_3-2-9-1' => { Name => 'ISO', Format => 'float' },
|
|
787
|
+
'dvtm_Mavic4_3-2-10-1' => {
|
|
788
|
+
Name => 'ShutterSpeed',
|
|
789
|
+
Format => 'rational',
|
|
790
|
+
PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
|
|
791
|
+
},
|
|
792
|
+
'dvtm_Mavic4_3-2-24-1' => { Name => 'ColorTemperature', Format => 'unsigned' },
|
|
793
|
+
# dvtm_Mavic4_3-2-32-1 - unsigned: color temperature again
|
|
794
|
+
'dvtm_Mavic4_3-2-37-1' => { Name => 'Temperature', Format => 'float' }, # (NC)
|
|
795
|
+
'dvtm_Mavic4_3-3-3' => { # (NC)
|
|
796
|
+
Name => 'DroneInfo',
|
|
797
|
+
SubDirectory => { TagTable => 'Image::ExifTool::DJI::DroneInfo' },
|
|
798
|
+
},
|
|
799
|
+
'dvtm_Mavic4_3-3-4-1' => {
|
|
800
|
+
Name => 'GPSInfo',
|
|
801
|
+
Condition => '$$self{CoordUnits} = 1', # (stores in degrees)
|
|
802
|
+
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
|
|
803
|
+
},
|
|
804
|
+
'dvtm_Mavic4_3-3-4-2' => { Name => 'AbsoluteAltitude', Format => 'int64s', ValueConv => '$val / 1000' }, # (NC)
|
|
805
|
+
'dvtm_Mavic4_3-3-5-1' => { Name => 'RelativeAltitude', Format => 'float', ValueConv => '$val / 1000' }, # (NC)
|
|
806
|
+
# dvtm_Mavic4_3-4-1-4 - string: model code?
|
|
807
|
+
#
|
|
808
|
+
# Mini 5 Pro
|
|
809
|
+
#
|
|
810
|
+
'dvtm_Mini5Pro_1-1-5' => { Name => 'SerialNumber', Notes => 'Mini 5 Pro' }, # (NC)
|
|
811
|
+
'dvtm_Mini5Pro_1-1-10' => 'Model', # (NC)
|
|
812
|
+
'dvtm_Mini5Pro_3-2-37-1' => { Name => 'Temperature', Format => 'float' }, # (NC)
|
|
813
|
+
'dvtm_Mini5Pro_3-3-4-1' => {
|
|
814
|
+
Name => 'GPSInfo',
|
|
815
|
+
Condition => '$$self{CoordUnits} = 1', # (NC)
|
|
816
|
+
SubDirectory => { TagTable => 'Image::ExifTool::DJI::GPSInfo' },
|
|
817
|
+
},
|
|
818
|
+
'dvtm_Mini5Pro_3-3-4-2' => { Name => 'AbsoluteAltitude', Format => 'int64s', ValueConv => '$val / 1000' }, # (NC)
|
|
764
819
|
);
|
|
765
820
|
|
|
821
|
+
# debug info (not yet extracted)
|
|
822
|
+
# Mavic 4 Pro (ref forum17855)
|
|
823
|
+
# dbginfo_wa341_2-1-29-12 - Absolute Altitude
|
|
824
|
+
# dbginfo_wa341_2-1-29-14 - Relative Altitude
|
|
825
|
+
# dbginfo_wa341_2-1-29-16 - VPS Height (Ultrasonic)
|
|
826
|
+
# dbginfo_wa341_2-1-4-200-198 - Sensor Temperature
|
|
827
|
+
|
|
766
828
|
%Image::ExifTool::DJI::DroneInfo = (
|
|
767
829
|
GROUPS => { 0 => 'Protobuf', 1 => 'DJI', 2 => 'Camera' },
|
|
768
830
|
PROCESS_PROC => \&Image::ExifTool::Protobuf::ProcessProtobuf,
|
|
@@ -22,7 +22,7 @@ use strict;
|
|
|
22
22
|
use vars qw($VERSION);
|
|
23
23
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
24
24
|
|
|
25
|
-
$VERSION = '1.
|
|
25
|
+
$VERSION = '1.26';
|
|
26
26
|
|
|
27
27
|
sub ProcessPEResources($$);
|
|
28
28
|
sub ProcessPEVersion($$);
|
|
@@ -942,7 +942,7 @@ sub ReadUnicodeStr($$$;$)
|
|
|
942
942
|
}
|
|
943
943
|
$pos += 2 if $pos & 0x03;
|
|
944
944
|
my $to = $et ? $et->Options('Charset') : 'UTF8';
|
|
945
|
-
return (Image::ExifTool::Decode(undef,$str,'
|
|
945
|
+
return (Image::ExifTool::Decode(undef,$str,'UTF16','II',$to), $pos);
|
|
946
946
|
}
|
|
947
947
|
|
|
948
948
|
#------------------------------------------------------------------------------
|
|
@@ -1355,7 +1355,7 @@ sub ProcessEXE($$)
|
|
|
1355
1355
|
} else { # misc debug info
|
|
1356
1356
|
next unless $n > 12;
|
|
1357
1357
|
my $exe = substr($buf2,12);
|
|
1358
|
-
$exe = $et->Decode($exe, '
|
|
1358
|
+
$exe = $et->Decode($exe, 'UTF16') if Get32u(\$buf2,8);
|
|
1359
1359
|
$exe =~ s/\0.*//; # truncate at null
|
|
1360
1360
|
$tagTablePtr = GetTagTable('Image::ExifTool::EXE::Misc');
|
|
1361
1361
|
$et->HandleTag($tagTablePtr, 12, $exe, DataPt => \$buf2, DataPos => $of);
|