exiftool_vendored 13.36.0 → 13.38.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 +39 -1
- data/bin/MANIFEST +9 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +47 -47
- data/bin/build_geolocation +7 -3
- data/bin/exiftool +65 -63
- data/bin/lib/Image/ExifTool/Audible.pm +1 -1
- data/bin/lib/Image/ExifTool/BMP.pm +2 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +16 -9
- data/bin/lib/Image/ExifTool/CBOR.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +59 -5
- data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
- data/bin/lib/Image/ExifTool/CaptureOne.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +5 -5
- data/bin/lib/Image/ExifTool/DSF.pm +138 -0
- data/bin/lib/Image/ExifTool/DV.pm +1 -1
- data/bin/lib/Image/ExifTool/EXE.pm +5 -2
- data/bin/lib/Image/ExifTool/FLIF.pm +1 -1
- data/bin/lib/Image/ExifTool/FLIR.pm +3 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
- data/bin/lib/Image/ExifTool/FujiFilm.pm +5 -4
- data/bin/lib/Image/ExifTool/GIF.pm +1 -1
- data/bin/lib/Image/ExifTool/GM.pm +1 -1
- data/bin/lib/Image/ExifTool/Geolocation.pm +3 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -3
- data/bin/lib/Image/ExifTool/GoPro.pm +11 -8
- data/bin/lib/Image/ExifTool/Google.pm +814 -0
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -1
- data/bin/lib/Image/ExifTool/ID3.pm +14 -13
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/JSON.pm +1 -1
- data/bin/lib/Image/ExifTool/LIF.pm +1 -1
- data/bin/lib/Image/ExifTool/LNK.pm +2 -2
- data/bin/lib/Image/ExifTool/Lytro.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +34 -25
- data/bin/lib/Image/ExifTool/MIEUnits.pod +1 -1
- data/bin/lib/Image/ExifTool/MPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
- data/bin/lib/Image/ExifTool/MakerNotes.pm +30 -7
- data/bin/lib/Image/ExifTool/Microsoft.pm +4 -4
- data/bin/lib/Image/ExifTool/Nikon.pm +4 -4
- data/bin/lib/Image/ExifTool/OOXML.pm +1 -1
- data/bin/lib/Image/ExifTool/Ogg.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/Other.pm +1 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +1 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +18 -7
- data/bin/lib/Image/ExifTool/Protobuf.pm +12 -6
- data/bin/lib/Image/ExifTool/Qualcomm.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +30 -8
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -0
- data/bin/lib/Image/ExifTool/README +7 -6
- data/bin/lib/Image/ExifTool/Rawzor.pm +1 -1
- data/bin/lib/Image/ExifTool/Reconyx.pm +375 -91
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Shortcuts.pm +8 -5
- data/bin/lib/Image/ExifTool/Sony.pm +22 -7
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +5753 -5696
- data/bin/lib/Image/ExifTool/TagNames.pod +707 -518
- data/bin/lib/Image/ExifTool/Text.pm +1 -1
- data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
- data/bin/lib/Image/ExifTool/WPG.pm +1 -1
- data/bin/lib/Image/ExifTool/WTV.pm +1 -1
- data/bin/lib/Image/ExifTool/WavPack.pm +144 -0
- data/bin/lib/Image/ExifTool/XMP.pm +43 -37
- data/bin/lib/Image/ExifTool/XMP2.pl +0 -482
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/lib/Image/ExifTool.pm +42 -27
- data/bin/lib/Image/ExifTool.pod +60 -59
- data/bin/perl-Image-ExifTool.spec +46 -46
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +6 -6
@@ -19,7 +19,7 @@ $VERSION = '1.05';
|
|
19
19
|
|
20
20
|
# Text tags
|
21
21
|
%Image::ExifTool::Text::Main = (
|
22
|
-
VARS => {
|
22
|
+
VARS => { ID_FMT => 'none' },
|
23
23
|
GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Document' },
|
24
24
|
NOTES => q{
|
25
25
|
Although basic text files contain no metadata, the following tags are
|
@@ -16,7 +16,7 @@ $VERSION = '1.01';
|
|
16
16
|
|
17
17
|
%Image::ExifTool::Trailer::Vivo = (
|
18
18
|
GROUPS => { 0 => 'Trailer', 1 => 'Vivo', 2 => 'Image' },
|
19
|
-
VARS => {
|
19
|
+
VARS => { ID_FMT => 'none' },
|
20
20
|
NOTES => 'Information written in JPEG trailer by some Vivo phones.',
|
21
21
|
# (don't know for sure what type of image this is, but it is in JPEG format)
|
22
22
|
HDRImage => {
|
@@ -23,7 +23,7 @@ sub PrintRecord($$$);
|
|
23
23
|
# WPG metadata
|
24
24
|
%Image::ExifTool::WPG::Main = (
|
25
25
|
GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Image' },
|
26
|
-
VARS => {
|
26
|
+
VARS => { ID_FMT => 'none' },
|
27
27
|
NOTES => 'Tags extracted from WordPerfect Graphics (WPG) images.',
|
28
28
|
WPGVersion => { },
|
29
29
|
ImageWidthInches => { PrintConv => 'sprintf("%.2f",$val)' },
|
@@ -52,7 +52,7 @@ my %bool = ( PrintConv => { 0 => 'No', 1 => 'Yes' }, PrintConvColumns => 2 );
|
|
52
52
|
GROUPS => { 0 => 'WTV', 1 => 'WTV', 2 => 'Video' },
|
53
53
|
PROCESS_PROC => \&ProcessMetadata,
|
54
54
|
NOTES => 'ExifTool will extract any tag found, even if not in this table.',
|
55
|
-
VARS => {
|
55
|
+
VARS => { ID_FMT => 'none' },
|
56
56
|
'Duration' => {
|
57
57
|
Name => 'Duration',
|
58
58
|
ValueConv => '$val/1e7',
|
@@ -0,0 +1,144 @@
|
|
1
|
+
#------------------------------------------------------------------------------
|
2
|
+
# File: WavPack.pm
|
3
|
+
#
|
4
|
+
# Description: Read metadata from WavPack audio files
|
5
|
+
#
|
6
|
+
# Revisions: 2025-09-24 - P. Harvey Created
|
7
|
+
#
|
8
|
+
# References: 1) https://www.wavpack.com/WavPack5FileFormat.pdf
|
9
|
+
#------------------------------------------------------------------------------
|
10
|
+
|
11
|
+
package Image::ExifTool::WavPack;
|
12
|
+
|
13
|
+
use strict;
|
14
|
+
use vars qw($VERSION);
|
15
|
+
use Image::ExifTool qw(:DataAccess :Utils);
|
16
|
+
use Image::ExifTool::RIFF;
|
17
|
+
use Image::ExifTool::APE;
|
18
|
+
|
19
|
+
$VERSION = '1.00';
|
20
|
+
|
21
|
+
%Image::ExifTool::WavPack::Main = (
|
22
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
23
|
+
GROUPS => { 0 => 'File', 1 => 'File', 2 => 'Audio' },
|
24
|
+
FORMAT => 'int32u',
|
25
|
+
NOTES => q{
|
26
|
+
Tags extracted from the header of WavPack (WV and WVP) audio files. These
|
27
|
+
files may also contain RIFF, ID3 and/or APE metadata which is also extracted
|
28
|
+
by ExifTool. See L<https://www.wavpack.com/WavPack5FileFormat.pdf> for the
|
29
|
+
WavPack specification.
|
30
|
+
},
|
31
|
+
6.1 => {
|
32
|
+
Name => 'BytesPerSample',
|
33
|
+
Mask => 0x03,
|
34
|
+
ValueConv => '$val + 1',
|
35
|
+
},
|
36
|
+
6.2 => {
|
37
|
+
Name => 'AudioType',
|
38
|
+
Mask => 0x04,
|
39
|
+
PrintConv => { 0 => 'Stereo', 1 => 'Mono' },
|
40
|
+
},
|
41
|
+
6.3 => {
|
42
|
+
Name => 'Compression',
|
43
|
+
Mask => 0x08,
|
44
|
+
PrintConv => { 0 => 'Lossless', 1 => 'Hybrid' },
|
45
|
+
},
|
46
|
+
6.4 => {
|
47
|
+
Name => 'DataFormat',
|
48
|
+
Mask => 0x80,
|
49
|
+
PrintConv => { 0 => 'Integer', 1 => 'Floating Point' },
|
50
|
+
},
|
51
|
+
6.5 => {
|
52
|
+
Name => 'SampleRate',
|
53
|
+
Mask => 0x07800000,
|
54
|
+
Priority => 0, # ("Custom" is not very useful)
|
55
|
+
PrintConv => { # (NC)
|
56
|
+
0 => 6000,
|
57
|
+
1 => 8000,
|
58
|
+
2 => 9600,
|
59
|
+
3 => 11025,
|
60
|
+
4 => 12000,
|
61
|
+
5 => 16000,
|
62
|
+
6 => 22050,
|
63
|
+
7 => 24000,
|
64
|
+
8 => 32000,
|
65
|
+
9 => 44100,
|
66
|
+
10 => 48000,
|
67
|
+
11 => 64000,
|
68
|
+
12 => 88200,
|
69
|
+
13 => 96000,
|
70
|
+
14 => 192000,
|
71
|
+
15 => 'Custom',
|
72
|
+
},
|
73
|
+
},
|
74
|
+
);
|
75
|
+
|
76
|
+
#------------------------------------------------------------------------------
|
77
|
+
# Extract metadata from a WavPack file
|
78
|
+
# Inputs: 0) ExifTool object reference, 1) dirInfo reference
|
79
|
+
# Returns: 1 on success, 0 if this wasn't a valid WavPack file
|
80
|
+
sub ProcessWV($$)
|
81
|
+
{
|
82
|
+
my ($et, $dirInfo) = @_;
|
83
|
+
my $raf = $$dirInfo{RAF};
|
84
|
+
my $buff;
|
85
|
+
|
86
|
+
# verify this is a valid WavPack file
|
87
|
+
return 0 unless $raf->Read($buff, 32) == 32;
|
88
|
+
return 0 unless $buff =~ /^wvpk.{4}[\x02\x10]\x04/s;
|
89
|
+
$et->SetFileType();
|
90
|
+
my %dirInfo = (
|
91
|
+
DataPt => \$buff,
|
92
|
+
DirStart => 0,
|
93
|
+
DirLen => length($buff),
|
94
|
+
);
|
95
|
+
$et->ProcessBinaryData(\%dirInfo, GetTagTable('Image::ExifTool::WavPack::Main'));
|
96
|
+
# historically, the RIFF module has handled RIFF-type WavPack files
|
97
|
+
$raf->Seek(0,0);
|
98
|
+
push @{$$et{PATH}}, 'RIFF'; # update metadata path
|
99
|
+
Image::ExifTool::RIFF::ProcessRIFF($et, $dirInfo);
|
100
|
+
# also look for ID3 and APE trailers (ProcessAPE also checks for ID3)
|
101
|
+
$$et{PATH}[-1] = 'APE';
|
102
|
+
Image::ExifTool::APE::ProcessAPE($et, $dirInfo);
|
103
|
+
pop @{$$et{PATH}};
|
104
|
+
return 1;
|
105
|
+
}
|
106
|
+
|
107
|
+
1; # end
|
108
|
+
|
109
|
+
__END__
|
110
|
+
|
111
|
+
=head1 NAME
|
112
|
+
|
113
|
+
Image::ExifTool::WavPack - Read metadata from WavPack audio files
|
114
|
+
|
115
|
+
=head1 SYNOPSIS
|
116
|
+
|
117
|
+
This module is used by Image::ExifTool
|
118
|
+
|
119
|
+
=head1 DESCRIPTION
|
120
|
+
|
121
|
+
This module contains definitions required by Image::ExifTool to read metadata
|
122
|
+
from WavPack audio files.
|
123
|
+
|
124
|
+
=head1 AUTHOR
|
125
|
+
|
126
|
+
Copyright 2003-2025, Phil Harvey (philharvey66 at gmail.com)
|
127
|
+
|
128
|
+
This library is free software; you can redistribute it and/or modify it
|
129
|
+
under the same terms as Perl itself.
|
130
|
+
|
131
|
+
=head1 REFERENCES
|
132
|
+
|
133
|
+
=over 4
|
134
|
+
|
135
|
+
=item L<https://www.wavpack.com/WavPack5FileFormat.pdf>
|
136
|
+
|
137
|
+
=back
|
138
|
+
|
139
|
+
=head1 SEE ALSO
|
140
|
+
|
141
|
+
L<Image::ExifTool::TagNames/WavPack Tags>,
|
142
|
+
L<Image::ExifTool(3pm)|Image::ExifTool>
|
143
|
+
|
144
|
+
=cut
|
@@ -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.75';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -862,35 +862,43 @@ my %sRangeMask = (
|
|
862
862
|
},
|
863
863
|
GAudio => {
|
864
864
|
Name => 'GAudio',
|
865
|
-
SubDirectory => { TagTable => 'Image::ExifTool::
|
865
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GAudio' },
|
866
866
|
},
|
867
867
|
GImage => {
|
868
868
|
Name => 'GImage',
|
869
|
-
SubDirectory => { TagTable => 'Image::ExifTool::
|
869
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GImage' },
|
870
870
|
},
|
871
871
|
GPano => {
|
872
872
|
Name => 'GPano',
|
873
|
-
SubDirectory => { TagTable => 'Image::ExifTool::
|
873
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GPano' },
|
874
|
+
},
|
875
|
+
GContainer => {
|
876
|
+
Name => 'GContainer',
|
877
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GContainer' },
|
874
878
|
},
|
875
879
|
GSpherical => {
|
876
880
|
Name => 'GSpherical',
|
877
|
-
SubDirectory => { TagTable => 'Image::ExifTool::
|
881
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GSpherical' },
|
878
882
|
},
|
879
883
|
GDepth => {
|
880
884
|
Name => 'GDepth',
|
881
|
-
SubDirectory => { TagTable => 'Image::ExifTool::
|
885
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GDepth' },
|
882
886
|
},
|
883
887
|
GFocus => {
|
884
888
|
Name => 'GFocus',
|
885
|
-
SubDirectory => { TagTable => 'Image::ExifTool::
|
889
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GFocus' },
|
886
890
|
},
|
887
891
|
GCamera => {
|
888
892
|
Name => 'GCamera',
|
889
|
-
SubDirectory => { TagTable => 'Image::ExifTool::
|
893
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GCamera' },
|
890
894
|
},
|
891
895
|
GCreations => {
|
892
896
|
Name => 'GCreations',
|
893
|
-
SubDirectory => { TagTable => 'Image::ExifTool::
|
897
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::GCreations' },
|
898
|
+
},
|
899
|
+
Device => {
|
900
|
+
Name => 'Device',
|
901
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Google::Device' },
|
894
902
|
},
|
895
903
|
dwc => {
|
896
904
|
Name => 'dwc',
|
@@ -908,10 +916,6 @@ my %sRangeMask = (
|
|
908
916
|
Name => 'LImage',
|
909
917
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::LImage' },
|
910
918
|
},
|
911
|
-
Device => {
|
912
|
-
Name => 'Device',
|
913
|
-
SubDirectory => { TagTable => 'Image::ExifTool::XMP::Device' },
|
914
|
-
},
|
915
919
|
sdc => {
|
916
920
|
Name => 'sdc',
|
917
921
|
SubDirectory => { TagTable => 'Image::ExifTool::Nikon::sdc' },
|
@@ -948,10 +952,6 @@ my %sRangeMask = (
|
|
948
952
|
Name => 'seal',
|
949
953
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::seal' },
|
950
954
|
},
|
951
|
-
GContainer => {
|
952
|
-
Name => 'GContainer',
|
953
|
-
SubDirectory => { TagTable => 'Image::ExifTool::XMP::GContainer' },
|
954
|
-
},
|
955
955
|
);
|
956
956
|
|
957
957
|
# hack to allow XML containing Dublin Core metadata to be handled like XMP (eg. EPUB - see ZIP.pm)
|
@@ -3665,6 +3665,10 @@ NoLoop:
|
|
3665
3665
|
# protect against large binary data in unknown tags
|
3666
3666
|
$$tagInfo{Binary} = 1 if $new and length($val) > 65536;
|
3667
3667
|
}
|
3668
|
+
if ($$et{OPTIONS}{Verbose}) {
|
3669
|
+
my $tagID = join('/',@$props);
|
3670
|
+
$et->VerboseInfo($tagID, $tagInfo, Value => $rawVal || $val);
|
3671
|
+
}
|
3668
3672
|
# store the value for this tag
|
3669
3673
|
my $key = $et->FoundTag($tagInfo, $val) or return 0;
|
3670
3674
|
# save original components of rational numbers (used when copying)
|
@@ -3683,21 +3687,17 @@ NoLoop:
|
|
3683
3687
|
# set group1 dynamically according to the namespace
|
3684
3688
|
$et->SetGroup($key, "$$tagTablePtr{GROUPS}{0}-$ns");
|
3685
3689
|
}
|
3686
|
-
if ($$et{OPTIONS}{Verbose}) {
|
3687
|
-
|
3688
|
-
|
3689
|
-
|
3690
|
-
|
3691
|
-
|
3692
|
-
|
3693
|
-
|
3694
|
-
$props = '';
|
3695
|
-
}
|
3696
|
-
my $g1 = $et->GetGroup($key, 1);
|
3697
|
-
$et->VPrint(0, $$et{INDENT}, "[adding $g1:$tag]$props\n");
|
3690
|
+
if ($added and $$et{OPTIONS}{Verbose}) {
|
3691
|
+
my $props;
|
3692
|
+
if (@$added > 1) {
|
3693
|
+
$$tagInfo{Flat} = 0; # this is a flattened tag
|
3694
|
+
my @props = map { $$_[0] } @$added;
|
3695
|
+
$props = ' (' . join('/',@props) . ')';
|
3696
|
+
} else {
|
3697
|
+
$props = '';
|
3698
3698
|
}
|
3699
|
-
my $
|
3700
|
-
$et->
|
3699
|
+
my $g1 = $et->GetGroup($key, 1);
|
3700
|
+
$et->VPrint(0, $$et{INDENT}, "[adding $g1:$tag]$props\n");
|
3701
3701
|
}
|
3702
3702
|
# allow read-only subdirectories (eg. embedded base64 XMP/IPTC in NKSC files)
|
3703
3703
|
if ($$tagInfo{SubDirectory} and not $$et{IsWriting}) {
|
@@ -3710,6 +3710,7 @@ NoLoop:
|
|
3710
3710
|
DirName => $$subdir{DirName} || $$tagInfo{Name},
|
3711
3711
|
DataPt => $dataPt,
|
3712
3712
|
DirLen => length $$dataPt,
|
3713
|
+
TagInfo => $tagInfo,
|
3713
3714
|
IgnoreProp => $$subdir{IgnoreProp}, # (allow XML to ignore specified properties)
|
3714
3715
|
IsExtended => 1, # (hack to avoid Duplicate warning for embedded XMP)
|
3715
3716
|
NoStruct => 1, # (don't try to build structures since this isn't true XMP)
|
@@ -4435,7 +4436,7 @@ sub ProcessXMP($$;$)
|
|
4435
4436
|
$buf2 = pack('C*', unpack("$fmt*",$buff));
|
4436
4437
|
}
|
4437
4438
|
if (Image::ExifTool::GetWarning()) {
|
4438
|
-
$et->Warn('Superfluous BOM at start of XMP');
|
4439
|
+
$et->Warn('Superfluous BOM at start of XMP') unless $$dirInfo{RAF};
|
4439
4440
|
$dataPt = \$buff; # use XMP with the BOM removed
|
4440
4441
|
} else {
|
4441
4442
|
$et->Warn('XMP is double UTF-encoded');
|
@@ -4486,13 +4487,16 @@ sub ProcessXMP($$;$)
|
|
4486
4487
|
$begin = join "\0", split //, $begin;
|
4487
4488
|
# must reset pos because it was killed by previous unsuccessful //g match
|
4488
4489
|
pos($$dataPt) = $dirStart;
|
4490
|
+
my $badEnc;
|
4489
4491
|
if ($$dataPt =~ /\G(\0)?\Q$begin\E\0./sg) {
|
4490
4492
|
# validate byte ordering by checking for U+FEFF character
|
4491
4493
|
if ($1) {
|
4492
4494
|
# should be big-endian since we had a leading \0
|
4493
|
-
$fmt = 'n'
|
4495
|
+
$fmt = 'n';
|
4496
|
+
$badEnc = 1 unless $$dataPt =~ /\G\xfe\xff/g;
|
4494
4497
|
} else {
|
4495
|
-
$fmt = 'v'
|
4498
|
+
$fmt = 'v';
|
4499
|
+
$badEnc = 1 unless $$dataPt =~ /\G\0\xff\xfe/g;
|
4496
4500
|
}
|
4497
4501
|
} else {
|
4498
4502
|
# check for UTF-32 encoding (with three \0's between characters)
|
@@ -4502,12 +4506,14 @@ sub ProcessXMP($$;$)
|
|
4502
4506
|
$fmt = 0; # set format to zero as indication we didn't find encoded XMP
|
4503
4507
|
} elsif ($1) {
|
4504
4508
|
# should be big-endian
|
4505
|
-
$fmt = 'N'
|
4509
|
+
$fmt = 'N';
|
4510
|
+
$badEnc = 1 unless $$dataPt =~ /\G\0\0\xfe\xff/g;
|
4506
4511
|
} else {
|
4507
|
-
$fmt = 'V'
|
4512
|
+
$fmt = 'V';
|
4513
|
+
$badEnc = 1 unless $$dataPt =~ /\G\0\0\0\xff\xfe\0\0/g;
|
4508
4514
|
}
|
4509
4515
|
}
|
4510
|
-
|
4516
|
+
$badEnc and $et->Warn('Invalid XMP encoding marker');
|
4511
4517
|
}
|
4512
4518
|
# warn if standard XMP is missing xpacket wrapper
|
4513
4519
|
if ($$et{XMP_NO_XPACKET} and $$et{OPTIONS}{Validate} and
|