exiftool_vendored 13.04.0 → 13.06.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 +22 -0
- data/bin/MANIFEST +1 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +27 -21
- data/bin/lib/Image/ExifTool/DJI.pm +90 -28
- data/bin/lib/Image/ExifTool/Geolocation.pm +2 -1
- data/bin/lib/Image/ExifTool/GoPro.pm +3 -3
- data/bin/lib/Image/ExifTool/JPEG.pm +19 -4
- data/bin/lib/Image/ExifTool/Protobuf.pm +242 -0
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +66 -25
- data/bin/lib/Image/ExifTool/Sony.pm +2 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +2336 -2324
- data/bin/lib/Image/ExifTool/TagNames.pod +61 -2
- data/bin/lib/Image/ExifTool/Writer.pl +1 -1
- data/bin/lib/Image/ExifTool/XMP.pm +11 -1
- data/bin/lib/Image/ExifTool/XMP2.pl +38 -0
- data/bin/lib/Image/ExifTool.pm +54 -28
- data/bin/lib/Image/ExifTool.pod +7 -6
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
12
12
|
=head1 TAG TABLES
|
13
13
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
15
|
-
They contain a total of
|
15
|
+
They contain a total of 28212 tags, with 17509 unique tag names.
|
16
16
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
@@ -115,6 +115,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
|
|
115
115
|
FPXR FlashPix
|
116
116
|
MPF MPF
|
117
117
|
InfiRayVersion InfiRay Version
|
118
|
+
UniformResourceName no
|
118
119
|
PreviewImage no
|
119
120
|
'APP3' Meta Kodak Meta
|
120
121
|
Stim Stim
|
@@ -152,6 +153,7 @@ L<https://www.w3.org/Graphics/JPEG/jfif3.pdf> for the JPEG specification.
|
|
152
153
|
InfiRaySensor InfiRay Sensor
|
153
154
|
SEAL XMP SEAL
|
154
155
|
'APP10' Comment no
|
156
|
+
HDRGainCurve no
|
155
157
|
'APP11' JPEG-HDR JPEG HDR
|
156
158
|
JUMBF Jpeg2000
|
157
159
|
'APP12' PictureInfo APP12 PictureInfo
|
@@ -1370,6 +1372,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
|
|
1370
1372
|
acdsee XMP acdsee
|
1371
1373
|
acdsee-rs XMP ACDSeeRegions
|
1372
1374
|
album XMP Album
|
1375
|
+
apdi XMP apdi
|
1373
1376
|
apple-fi XMP apple_fi
|
1374
1377
|
ast Nikon ast
|
1375
1378
|
aux XMP aux
|
@@ -1402,6 +1405,7 @@ L<http://www.adobe.com/devnet/xmp/> for the official XMP specification.
|
|
1402
1405
|
GPano XMP GPano
|
1403
1406
|
GSpherical XMP GSpherical
|
1404
1407
|
hdr XMP hdr
|
1408
|
+
HDRGainMap XMP HDRGainMap
|
1405
1409
|
hdrgm XMP hdrgm
|
1406
1410
|
ics XMP ics
|
1407
1411
|
iptcCore XMP iptcCore
|
@@ -1584,6 +1588,18 @@ These tags belong to the ExifTool XMP-album family 1 group.
|
|
1584
1588
|
-------- --------
|
1585
1589
|
Notes string
|
1586
1590
|
|
1591
|
+
=head3 XMP apdi Tags
|
1592
|
+
|
1593
|
+
Used in Apple HDR GainMap images.
|
1594
|
+
|
1595
|
+
These tags belong to the ExifTool XMP-apdi family 1 group.
|
1596
|
+
|
1597
|
+
Tag Name Writable
|
1598
|
+
-------- --------
|
1599
|
+
AuxiliaryImageType string
|
1600
|
+
NativeFormat string
|
1601
|
+
StoredFormat string
|
1602
|
+
|
1587
1603
|
=head3 XMP apple_fi Tags
|
1588
1604
|
|
1589
1605
|
Face information tags written by the Apple iPhone 5 inside the mwg-rs
|
@@ -5030,6 +5046,16 @@ These tags belong to the ExifTool XMP-hdr family 1 group.
|
|
5030
5046
|
CCVWhiteXY string
|
5031
5047
|
SceneReferred boolean
|
5032
5048
|
|
5049
|
+
=head3 XMP HDRGainMap Tags
|
5050
|
+
|
5051
|
+
Used in Apple HDR GainMap images.
|
5052
|
+
|
5053
|
+
These tags belong to the ExifTool XMP-HDRGainMap family 1 group.
|
5054
|
+
|
5055
|
+
Tag Name Writable
|
5056
|
+
-------- --------
|
5057
|
+
HDRGainMapVersion string
|
5058
|
+
|
5033
5059
|
=head3 XMP hdrgm Tags
|
5034
5060
|
|
5035
5061
|
Tags used in Adobe gain map images.
|
@@ -12912,6 +12938,35 @@ Thermal parameters extracted from APP4 of some DJI RJPEG files.
|
|
12912
12938
|
8 Emissivity no
|
12913
12939
|
10 ReflectedTemperature no
|
12914
12940
|
|
12941
|
+
=head3 DJI Protobuf Tags
|
12942
|
+
|
12943
|
+
Tags found in protobuf-format DJI meta djmd and dbgi timed metadata. Only a
|
12944
|
+
few tags are currently known, but unknown djmd tags may be extracted by
|
12945
|
+
setting the Unknown option to 1 (or 2 to also extract unknown dbgi debug
|
12946
|
+
tags). Tag ID's are composed of the corresponding .proto file name combined
|
12947
|
+
with the hierarchical protobuf field numbers. The "dvtm_AVATA2.proto" file
|
12948
|
+
is used by the DJI Avanta 2, and "dvtm_ac203.proto" by the OsmoAction4.
|
12949
|
+
|
12950
|
+
Tag ID Tag Name Writable
|
12951
|
+
------ -------- --------
|
12952
|
+
'Protocol' Protocol no
|
12953
|
+
'dvtm_AVATA2_1-1-10' Model no
|
12954
|
+
'dvtm_AVATA2_2-2-3-1' SerialNumber no
|
12955
|
+
'dvtm_AVATA2_2-3-1' FrameWidth no
|
12956
|
+
'dvtm_AVATA2_2-3-2' FrameHeight no
|
12957
|
+
'dvtm_AVATA2_2-3-3' FrameRate no
|
12958
|
+
'dvtm_AVATA2_3-1-2' TimeStamp no
|
12959
|
+
'dvtm_AVATA2_3-4-4-1-2' GPSLatitude no
|
12960
|
+
'dvtm_AVATA2_3-4-4-1-3' GPSLongitude no
|
12961
|
+
'dvtm_ac203_1-1-10' Model no
|
12962
|
+
'dvtm_ac203_2-3-1' FrameWidth no
|
12963
|
+
'dvtm_ac203_2-3-2' FrameHeight no
|
12964
|
+
'dvtm_ac203_2-3-3' FrameRate no
|
12965
|
+
'dvtm_ac203_3-4-2-1-2' GPSLatitude no
|
12966
|
+
'dvtm_ac203_3-4-2-1-3' GPSLongitude no
|
12967
|
+
'dvtm_ac203_3-4-2-2' GPSAltitude no
|
12968
|
+
'dvtm_ac203_3-4-2-6-1' GPSDateTime no
|
12969
|
+
|
12915
12970
|
=head2 FLIR Tags
|
12916
12971
|
|
12917
12972
|
Information extracted from the maker notes of JPEG images from thermal
|
@@ -24770,7 +24825,9 @@ L<https://github.com/gopro/gpmf-parser> for details about this format.
|
|
24770
24825
|
'UNIT' Units? no
|
24771
24826
|
'VERS' MetadataVersion no
|
24772
24827
|
'VFOV' FieldOfView no
|
24828
|
+
'VFPS' VideoFrameRate no
|
24773
24829
|
'VFRH' VisualFlightRulesHUD no
|
24830
|
+
'VRES' VideoFrameSize no
|
24774
24831
|
'WBAL' ColorTemperatures no
|
24775
24832
|
'WNDM' WindProcessing no
|
24776
24833
|
'WRGB' WhiteBalanceRGB no
|
@@ -29962,7 +30019,7 @@ for the official QuickTime specification.
|
|
29962
30019
|
The tags below are extracted from timed metadata in QuickTime and other
|
29963
30020
|
formats of video files when the ExtractEmbedded option is used. Although
|
29964
30021
|
most of these tags are combined into the single table below, ExifTool
|
29965
|
-
currently reads
|
30022
|
+
currently reads 85 different formats of timed GPS metadata from video files.
|
29966
30023
|
|
29967
30024
|
Tag Name Writable
|
29968
30025
|
-------- --------
|
@@ -29973,6 +30030,8 @@ currently reads 82 different formats of timed GPS metadata from video files.
|
|
29973
30030
|
CameraDateTime no
|
29974
30031
|
CameraModel no
|
29975
30032
|
Car no
|
30033
|
+
DJIDebug? DJI Protobuf
|
30034
|
+
DJIMetadata DJI Protobuf
|
29976
30035
|
DateTimeOriginal no
|
29977
30036
|
DateTimeStamp no
|
29978
30037
|
Distance no
|
@@ -2194,7 +2194,7 @@ sub SetSystemTags($$)
|
|
2194
2194
|
} elsif (ref $file) {
|
2195
2195
|
$self->Warn('Writing ZoneIdentifer requires a file name');
|
2196
2196
|
} elsif (defined $self->GetNewValue('ZoneIdentifier', \$zhash)) {
|
2197
|
-
$self->Warn('ZoneIndentifier may only be
|
2197
|
+
$self->Warn('ZoneIndentifier may only be deleted');
|
2198
2198
|
} elsif (not eval { require Win32API::File }) {
|
2199
2199
|
$self->Warn('Install Win32API::File to write ZoneIdentifier');
|
2200
2200
|
} else {
|
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
|
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
require Exporter;
|
52
52
|
|
53
|
-
$VERSION = '3.
|
53
|
+
$VERSION = '3.70';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -207,6 +207,8 @@ my %xmpNS = (
|
|
207
207
|
# Note: Google uses a prefix of 'Container', but this conflicts with the
|
208
208
|
# Device Container namespace, also by Google. So call this one GContainer
|
209
209
|
GContainer=> 'http://ns.google.com/photos/1.0/container/',
|
210
|
+
HDRGainMap=> 'http://ns.apple.com/HDRGainMap/1.0/',
|
211
|
+
apdi => 'http://ns.apple.com/pixeldatainfo/1.0/',
|
210
212
|
);
|
211
213
|
|
212
214
|
# build reverse namespace lookup
|
@@ -934,6 +936,14 @@ my %sRangeMask = (
|
|
934
936
|
Name => 'xmpDSA',
|
935
937
|
SubDirectory => { TagTable => 'Image::ExifTool::Panasonic::DSA' },
|
936
938
|
},
|
939
|
+
HDRGainMap => {
|
940
|
+
Name => 'HDRGainMap',
|
941
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::HDRGainMap' },
|
942
|
+
},
|
943
|
+
apdi => {
|
944
|
+
Name => 'apdi',
|
945
|
+
SubDirectory => { TagTable => 'Image::ExifTool::XMP::apdi' },
|
946
|
+
},
|
937
947
|
seal => {
|
938
948
|
Name => 'seal',
|
939
949
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::seal' },
|
@@ -2250,6 +2250,44 @@ my %sACDSeeRegionStruct = (
|
|
2250
2250
|
Gamma => { Writable => 'real', List => 'Seq', Avoid => 1 },
|
2251
2251
|
);
|
2252
2252
|
|
2253
|
+
%Image::ExifTool::XMP::HDRGainMap = (
|
2254
|
+
%xmpTableDefaults,
|
2255
|
+
GROUPS => { 1 => 'XMP-HDRGainMap', 2 => 'Unknown' },
|
2256
|
+
NAMESPACE => 'HDRGainMap',
|
2257
|
+
NOTES => 'Used in Apple HDR GainMap images.',
|
2258
|
+
HDRGainMapVersion => {
|
2259
|
+
PrintConv => 'IsInt($val) ? join(".",unpack("C*", pack "N", $val)) : $val',
|
2260
|
+
PrintConvInv => q{
|
2261
|
+
return $val unless $val =~ /^\d+\.\d+\.\d+\.\d+$/;
|
2262
|
+
return unpack('N', pack('C*', split /\./, $val));
|
2263
|
+
},
|
2264
|
+
},
|
2265
|
+
);
|
2266
|
+
|
2267
|
+
%Image::ExifTool::XMP::apdi = (
|
2268
|
+
%xmpTableDefaults,
|
2269
|
+
GROUPS => { 1 => 'XMP-apdi', 2 => 'Image' },
|
2270
|
+
NAMESPACE => 'apdi',
|
2271
|
+
NOTES => 'Used in Apple HDR GainMap images.',
|
2272
|
+
NativeFormat => {
|
2273
|
+
PrintConv => q{
|
2274
|
+
return $val unless IsInt($val);
|
2275
|
+
my $tmp = pack("N", $val);
|
2276
|
+
$tmp =~ /^\w{4}$/ ? $tmp : $val;
|
2277
|
+
},
|
2278
|
+
PrintConvInv => '$val =~ /^\w{4}$/ ? unpack("N", $val) : $val',
|
2279
|
+
},
|
2280
|
+
AuxiliaryImageType => { },
|
2281
|
+
StoredFormat => {
|
2282
|
+
PrintConv => q{
|
2283
|
+
return $val unless IsInt($val);
|
2284
|
+
my $tmp = pack("N", $val);
|
2285
|
+
$tmp =~ /^\w{4}$/ ? $tmp : $val;
|
2286
|
+
},
|
2287
|
+
PrintConvInv => '$val =~ /^\w{4}$/ ? unpack("N", $val) : $val',
|
2288
|
+
},
|
2289
|
+
);
|
2290
|
+
|
2253
2291
|
# SVG namespace properties (ref 9)
|
2254
2292
|
%Image::ExifTool::XMP::SVG = (
|
2255
2293
|
GROUPS => { 0 => 'SVG', 1 => 'SVG', 2 => 'Image' },
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -29,7 +29,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exeDir
|
30
30
|
%static_vars $advFmtSelf);
|
31
31
|
|
32
|
-
$VERSION = '13.
|
32
|
+
$VERSION = '13.06';
|
33
33
|
$RELEASE = '';
|
34
34
|
@ISA = qw(Exporter);
|
35
35
|
%EXPORT_TAGS = (
|
@@ -2763,10 +2763,16 @@ sub ExtractInfo($;@)
|
|
2763
2763
|
if ($$req{filepath} or
|
2764
2764
|
($reqAll and not $$self{EXCL_TAG_LOOKUP}{filepath}))
|
2765
2765
|
{
|
2766
|
+
my $path;
|
2766
2767
|
local $SIG{'__WARN__'} = \&SetWarning;
|
2767
|
-
if (
|
2768
|
-
|
2769
|
-
|
2768
|
+
if ($^O eq 'MSWin32' and $$options{WindowsLongPath}) {
|
2769
|
+
$path = $self->WindowsLongPath($filename);
|
2770
|
+
} elsif (eval { require Cwd }) {
|
2771
|
+
$path = eval { Cwd::abs_path($filename) };
|
2772
|
+
}
|
2773
|
+
if (defined $path) {
|
2774
|
+
$path =~ tr/\\/\// if $^O eq 'MSWin32'; # return forward slashes
|
2775
|
+
$self->FoundTag('FilePath', $path);
|
2770
2776
|
} elsif ($$req{filepath}) {
|
2771
2777
|
$self->WarnOnce('The Perl Cwd module must be installed to use FilePath');
|
2772
2778
|
}
|
@@ -4633,8 +4639,7 @@ sub EncodeFileName($$;$)
|
|
4633
4639
|
}
|
4634
4640
|
}
|
4635
4641
|
}
|
4636
|
-
$
|
4637
|
-
if ($hasSpecialChars or $force) {
|
4642
|
+
if ($hasSpecialChars or $force or $$self{OPTIONS}{WindowsLongPath} or $$self{OPTIONS}{WindowsWideFile}) {
|
4638
4643
|
$enc or $enc = 'UTF8';
|
4639
4644
|
if ($^O eq 'MSWin32') {
|
4640
4645
|
local $SIG{'__WARN__'} = \&SetWarning;
|
@@ -4655,8 +4660,8 @@ sub EncodeFileName($$;$)
|
|
4655
4660
|
|
4656
4661
|
#------------------------------------------------------------------------------
|
4657
4662
|
# Rebuild a path as an absolute long path to be usable in Windows system calls
|
4658
|
-
# Inputs: 0) ExifTool ref, 1) path string
|
4659
|
-
# Returns: normalized long path
|
4663
|
+
# Inputs: 0) ExifTool ref, 1) path string (CharsetFileName)
|
4664
|
+
# Returns: normalized long path (CharsetFileName)
|
4660
4665
|
# Note: this should only be called for Windows systems
|
4661
4666
|
# References:
|
4662
4667
|
# - https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats
|
@@ -4675,12 +4680,25 @@ sub WindowsLongPath($$)
|
|
4675
4680
|
my ($self, $path) = @_;
|
4676
4681
|
my $debug = $$self{OPTIONS}{Debug};
|
4677
4682
|
my $out = $$self{OPTIONS}{TextOut};
|
4683
|
+
my $suffix = '';
|
4684
|
+
my $longPath;
|
4685
|
+
|
4686
|
+
# remove common suffixes to make cache more effective
|
4687
|
+
if ($path =~ s/(_original|_exiftool_tmp|:Zone\.Identifier)$//) {
|
4688
|
+
$suffix = $1;
|
4689
|
+
if (not length $path or $path =~ m([:./\\]$)) {
|
4690
|
+
# don't remove suffix if it could be the whole file name
|
4691
|
+
$path .= $suffix;
|
4692
|
+
$suffix = '';
|
4693
|
+
}
|
4694
|
+
}
|
4695
|
+
return $$self{LONG_PATH_OUT}.$suffix if defined $$self{LONG_PATH_IN} and $$self{LONG_PATH_IN} eq $path;
|
4678
4696
|
|
4679
|
-
$debug and print $out "WindowsLongPath input : $path\n";
|
4697
|
+
$debug and print $out "WindowsLongPath input : $path$suffix\n";
|
4680
4698
|
|
4681
4699
|
for (;;) { # (cheap goto)
|
4682
|
-
$path =~ tr(/)(\\); # convert slashes to backslashes
|
4683
|
-
last if $
|
4700
|
+
($longPath = $path) =~ tr(/)(\\); # convert slashes to backslashes
|
4701
|
+
last if $longPath =~ /^\\\\\?\\/; # already a device path in the format we want
|
4684
4702
|
|
4685
4703
|
unless ($k32GetFullPathName) { # need to import (once) GetFullPathNameW
|
4686
4704
|
last if defined $k32GetFullPathName;
|
@@ -4696,23 +4714,27 @@ sub WindowsLongPath($$)
|
|
4696
4714
|
}
|
4697
4715
|
}
|
4698
4716
|
my $enc = $$self{OPTIONS}{CharsetFileName};
|
4699
|
-
my $encPath = $self->Encode($
|
4717
|
+
my $encPath = $self->Encode($longPath, 'UTF16', 'II', $enc);# need to encode to UTF16
|
4700
4718
|
my $lenReq = $k32GetFullPathName->Call($encPath,0,0,0) + 1; # first pass gets length required, +1 for safety (null?)
|
4701
4719
|
my $fullPath = "\0" x $lenReq x 2; # create buffer to hold full path
|
4702
4720
|
$k32GetFullPathName->Call($encPath, $lenReq, $fullPath, 0); # fullPath is UTF16 now
|
4703
|
-
$
|
4721
|
+
$longPath = $self->Decode($fullPath, 'UTF16', 'II', $enc);
|
4704
4722
|
|
4705
|
-
last if length($
|
4723
|
+
last if length($longPath) <= 247 - length($suffix);
|
4706
4724
|
|
4707
|
-
if ($
|
4708
|
-
$
|
4725
|
+
if ($longPath =~ /^\\\\/) {
|
4726
|
+
$longPath = '\\\\?\\UNC' . substr($longPath, 1);
|
4709
4727
|
} else {
|
4710
|
-
$
|
4728
|
+
$longPath = '\\\\?\\' . $longPath;
|
4711
4729
|
}
|
4712
4730
|
last;
|
4713
4731
|
}
|
4714
|
-
|
4715
|
-
return
|
4732
|
+
# this may be called repeatedly for the same file file (exists, stat, open),
|
4733
|
+
# so cache the last return value (without any of the suffixes that we use)
|
4734
|
+
$$self{LONG_PATH_IN} = $path;
|
4735
|
+
$$self{LONG_PATH_OUT} = $longPath;
|
4736
|
+
$debug and print $out "WindowsLongPath return: $longPath$suffix\n";
|
4737
|
+
return $longPath . $suffix;
|
4716
4738
|
}
|
4717
4739
|
|
4718
4740
|
#------------------------------------------------------------------------------
|
@@ -7433,7 +7455,7 @@ sub ProcessJPEG($$;$)
|
|
7433
7455
|
}
|
7434
7456
|
# handle all other markers
|
7435
7457
|
my $dumpType = '';
|
7436
|
-
my ($desc, $tip, $xtra);
|
7458
|
+
my ($desc, $tip, $xtra, $useJpegMain);
|
7437
7459
|
$length = length $$segDataPt;
|
7438
7460
|
$appBytes += $length + 4 if ($marker & 0xf0) == 0xe0; # total size of APP segments
|
7439
7461
|
if ($verbose) {
|
@@ -7653,7 +7675,7 @@ sub ProcessJPEG($$;$)
|
|
7653
7675
|
$self->Warn("Ignored APP1 segment length $length (unknown header)");
|
7654
7676
|
}
|
7655
7677
|
}
|
7656
|
-
} elsif ($marker == 0xe2) { # APP2 (ICC Profile, FPXR, MPF, InfiRay, PreviewImage)
|
7678
|
+
} elsif ($marker == 0xe2) { # APP2 (ICC Profile, FPXR, MPF, InfiRay, URN, PreviewImage)
|
7657
7679
|
if ($$segDataPt =~ /^ICC_PROFILE\0/ and $length >= 14) {
|
7658
7680
|
$dumpType = 'ICC_Profile';
|
7659
7681
|
# must concatenate profile chunks (note: handle the case where
|
@@ -7726,6 +7748,9 @@ sub ProcessJPEG($$;$)
|
|
7726
7748
|
# Digilife DDC-690/Rollei="BGTH"
|
7727
7749
|
$dumpType = 'Preview Image';
|
7728
7750
|
$preview = substr($$segDataPt, length($1));
|
7751
|
+
} elsif ($$segDataPt =~ /^urn:/) { # (found in Apple HDR images)
|
7752
|
+
$dumpType = 'URN';
|
7753
|
+
$useJpegMain = 1;
|
7729
7754
|
} elsif ($preview) {
|
7730
7755
|
$dumpType = 'Preview Image';
|
7731
7756
|
$preview .= $$segDataPt;
|
@@ -7995,17 +8020,14 @@ sub ProcessJPEG($$;$)
|
|
7995
8020
|
DirStart(\%dirInfo, 5);
|
7996
8021
|
$self->ProcessDirectory(\%dirInfo, GetTagTable("Image::ExifTool::XMP::SEAL"));
|
7997
8022
|
}
|
7998
|
-
} elsif ($marker == 0xea) { # APP10 (PhotoStudio Unicode comments)
|
8023
|
+
} elsif ($marker == 0xea) { # APP10 (PhotoStudio Unicode comments, HDR gain curve)
|
7999
8024
|
if ($$segDataPt =~ /^UNICODE\0/) {
|
8000
8025
|
$dumpType = 'PhotoStudio';
|
8001
8026
|
my $comment = $self->Decode(substr($$segDataPt,8), 'UCS2', 'MM');
|
8002
8027
|
$self->FoundTag('Comment', $comment);
|
8003
|
-
} elsif ($$segDataPt =~ /^AROT\0/
|
8004
|
-
|
8005
|
-
|
8006
|
-
# "Absolute ROTational difference between two frames"
|
8007
|
-
# (see https://www.hackerfactor.com/blog/index.php?/archives/822-Apple-Rot.html)
|
8008
|
-
$xtra = 'segment (N=' . unpack('x6N', $$segDataPt) . ')';
|
8028
|
+
} elsif ($$segDataPt =~ /^AROT\0\0.{4}/s) {
|
8029
|
+
$dumpType = 'AROT', # (HDR gain curve? PH guess)
|
8030
|
+
$useJpegMain = 1;
|
8009
8031
|
}
|
8010
8032
|
} elsif ($marker == 0xeb) { # APP11 (JPEG-HDR, JUMBF)
|
8011
8033
|
if ($$segDataPt =~ /^HDR_RI /) {
|
@@ -8172,6 +8194,10 @@ sub ProcessJPEG($$;$)
|
|
8172
8194
|
$desc = "[JPEG $markerName]"; # (other known JPEG segments)
|
8173
8195
|
}
|
8174
8196
|
if (defined $dumpType) {
|
8197
|
+
if ($useJpegMain) {
|
8198
|
+
my $tagTablePtr = GetTagTable('Image::ExifTool::JPEG::Main');
|
8199
|
+
$self->HandleTag($tagTablePtr, $markerName, $$segDataPt);
|
8200
|
+
}
|
8175
8201
|
if (not $dumpType and ($$options{Unknown} or $$options{Validate})) {
|
8176
8202
|
my $str = ($$segDataPt =~ /^([\x20-\x7e]{1,20})\0/) ? " '${1}'" : '';
|
8177
8203
|
$xtra = 'segment' unless $xtra;
|
data/bin/lib/Image/ExifTool.pod
CHANGED
@@ -1197,14 +1197,15 @@ on tag values and JPEG segment data respectively.
|
|
1197
1197
|
=item WindowsLongPath
|
1198
1198
|
|
1199
1199
|
Support long path names in Windows. Enabling this option automatically
|
1200
|
-
enables the WindowsWideFile feature.
|
1200
|
+
enables the WindowsWideFile feature. Default is 1.
|
1201
1201
|
|
1202
1202
|
=item WindowsWideFile
|
1203
1203
|
|
1204
1204
|
Force the use of wide-character Windows I/O functions. This may be
|
1205
1205
|
necessary when files are on a network drive and the current directory name
|
1206
|
-
contains Unicode characters.
|
1207
|
-
used only if the specified file path contains Unicode
|
1206
|
+
contains Unicode characters. Without this option the wide-character
|
1207
|
+
functions are used only if the specified file path contains Unicode
|
1208
|
+
characters.
|
1208
1209
|
|
1209
1210
|
=item WriteMode
|
1210
1211
|
|
@@ -2545,9 +2546,9 @@ GoPro, H264, HTML, ICC_Profile, ID3, IPTC, ISO, ITC, JFIF, JPEG, JSON,
|
|
2545
2546
|
JUMBF, Jpeg2000, LNK, Leaf, Lytro, M2TS, MIE, MIFF, MISB, MNG, MOI, MPC,
|
2546
2547
|
MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, OpenEXR, Opus, PDF, PICT,
|
2547
2548
|
PLIST, PNG, PSP, Palm, PanasonicRaw, Parrot, PhotoCD, PhotoMechanic,
|
2548
|
-
Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC, RTF,
|
2549
|
-
Rawzor, Real, Red, SVG, SigmaRaw, Sony, Stim, Theora, Torrent,
|
2550
|
-
VCard, Vorbis, WTV, XML, XMP, ZIP
|
2549
|
+
Photoshop, PostScript, PrintIM, Protobuf, QuickTime, RAF, RIFF, RSRC, RTF,
|
2550
|
+
Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Sony, Stim, Theora, Torrent,
|
2551
|
+
Trailer, VCard, Vorbis, WTV, XML, XMP, ZIP
|
2551
2552
|
|
2552
2553
|
=item Family 1 (Specific Location):
|
2553
2554
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exiftool_vendored
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 13.
|
4
|
+
version: 13.06.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew McEachen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2024-
|
12
|
+
date: 2024-12-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|
@@ -257,6 +257,7 @@ files:
|
|
257
257
|
- bin/lib/Image/ExifTool/Photoshop.pm
|
258
258
|
- bin/lib/Image/ExifTool/PostScript.pm
|
259
259
|
- bin/lib/Image/ExifTool/PrintIM.pm
|
260
|
+
- bin/lib/Image/ExifTool/Protobuf.pm
|
260
261
|
- bin/lib/Image/ExifTool/Qualcomm.pm
|
261
262
|
- bin/lib/Image/ExifTool/QuickTime.pm
|
262
263
|
- bin/lib/Image/ExifTool/QuickTimeStream.pl
|