exiftool_vendored 13.04.0 → 13.06.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 +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
|