exiftool_vendored 12.18.0 → 12.22.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.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +54 -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/config_files/example.config +1 -8
- data/bin/exiftool +70 -32
- data/bin/fmt_files/gpx.fmt +1 -1
- data/bin/fmt_files/gpx_wpt.fmt +1 -1
- data/bin/fmt_files/kml.fmt +1 -1
- data/bin/fmt_files/kml_track.fmt +1 -1
- data/bin/lib/Image/ExifTool.pm +74 -24
- data/bin/lib/Image/ExifTool.pod +33 -25
- data/bin/lib/Image/ExifTool/Apple.pm +3 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +20 -10
- data/bin/lib/Image/ExifTool/Canon.pm +6 -1
- data/bin/lib/Image/ExifTool/DJI.pm +6 -6
- data/bin/lib/Image/ExifTool/Exif.pm +5 -2
- data/bin/lib/Image/ExifTool/FITS.pm +13 -2
- data/bin/lib/Image/ExifTool/GPS.pm +22 -11
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +2 -2
- data/bin/lib/Image/ExifTool/M2TS.pm +40 -4
- data/bin/lib/Image/ExifTool/MIE.pm +2 -2
- data/bin/lib/Image/ExifTool/Microsoft.pm +296 -82
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +28 -12
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +6 -5
- data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -0
- data/bin/lib/Image/ExifTool/Sony.pm +51 -17
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4031 -4022
- data/bin/lib/Image/ExifTool/TagNames.pod +130 -95
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +7 -5
- data/bin/lib/Image/ExifTool/Writer.pl +43 -10
- data/bin/lib/Image/ExifTool/XMP.pm +4 -4
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +20 -6
@@ -17,6 +17,7 @@ my %movMap = (
|
|
17
17
|
Keys => 'Movie', # MOV-Movie-Meta-Keys !! (hack due to different Meta location)
|
18
18
|
Meta => 'UserData',
|
19
19
|
XMP => 'UserData', # MOV-Movie-UserData-XMP
|
20
|
+
Microsoft => 'UserData', # MOV-Movie-UserData-Microsoft
|
20
21
|
UserData => 'Movie', # MOV-Movie-UserData
|
21
22
|
Movie => 'MOV',
|
22
23
|
GSpherical => 'SphericalVideoXML', # MOV-Movie-Track-SphericalVideoXML
|
@@ -30,6 +31,7 @@ my %mp4Map = (
|
|
30
31
|
Keys => 'Movie', # MOV-Movie-Meta-Keys !! (hack due to different Meta location)
|
31
32
|
Meta => 'UserData',
|
32
33
|
UserData => 'Movie', # MOV-Movie-UserData
|
34
|
+
Microsoft => 'UserData', # MOV-Movie-UserData-Microsoft
|
33
35
|
Movie => 'MOV',
|
34
36
|
XMP => 'MOV', # MOV-XMP
|
35
37
|
GSpherical => 'SphericalVideoXML', # MOV-Movie-Track-SphericalVideoXML
|
@@ -76,8 +78,8 @@ my %dirMap = (
|
|
76
78
|
# convert ExifTool Format to QuickTime type
|
77
79
|
my %qtFormat = (
|
78
80
|
'undef' => 0x00, string => 0x01,
|
79
|
-
int8s => 0x15, int16s => 0x15, int32s => 0x15,
|
80
|
-
int8u => 0x16, int16u => 0x16, int32u => 0x16,
|
81
|
+
int8s => 0x15, int16s => 0x15, int32s => 0x15, int64s => 0x15,
|
82
|
+
int8u => 0x16, int16u => 0x16, int32u => 0x16, int64u => 0x16,
|
81
83
|
float => 0x17, double => 0x18,
|
82
84
|
);
|
83
85
|
my $undLang = 0x55c4; # numeric code for default ('und') language
|
@@ -294,7 +296,7 @@ sub GetLangInfo($$)
|
|
294
296
|
sub CheckQTValue($$$)
|
295
297
|
{
|
296
298
|
my ($et, $tagInfo, $valPtr) = @_;
|
297
|
-
my $format = $$tagInfo{Format} || $$tagInfo{Table}{FORMAT};
|
299
|
+
my $format = $$tagInfo{Format} || $$tagInfo{Writable} || $$tagInfo{Table}{FORMAT};
|
298
300
|
return undef unless $format;
|
299
301
|
return Image::ExifTool::CheckValue($valPtr, $format, $$tagInfo{Count});
|
300
302
|
}
|
@@ -307,8 +309,8 @@ sub FormatQTValue($$;$$)
|
|
307
309
|
{
|
308
310
|
my ($et, $valPt, $format, $writable) = @_;
|
309
311
|
my $flags;
|
310
|
-
if ($format and $format ne 'string') {
|
311
|
-
$$valPt = WriteValue($$valPt, $format);
|
312
|
+
if ($format and $format ne 'string' or not $format and $writable and $writable ne 'string') {
|
313
|
+
$$valPt = WriteValue($$valPt, $format || $writable);
|
312
314
|
if ($writable and $qtFormat{$writable}) {
|
313
315
|
$flags = $qtFormat{$writable};
|
314
316
|
} else {
|
@@ -135,10 +135,10 @@ my %rawType = (
|
|
135
135
|
my @delGroups = qw(
|
136
136
|
Adobe AFCP APP0 APP1 APP2 APP3 APP4 APP5 APP6 APP7 APP8 APP9 APP10 APP11
|
137
137
|
APP12 APP13 APP14 APP15 CanonVRD CIFF Ducky EXIF ExifIFD File FlashPix
|
138
|
-
FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD
|
139
|
-
ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD MIE
|
140
|
-
PDF-update PhotoMechanic Photoshop PNG PNG-pHYs
|
141
|
-
SubIFD Trailer UserData XML XML-* XMP XMP-*
|
138
|
+
FotoStation GlobParamIFD GPS ICC_Profile IFD0 IFD1 Insta360 InteropIFD
|
139
|
+
IPTC ItemList JFIF Jpeg2000 Keys MakerNotes Meta MetaIFD Microsoft MIE
|
140
|
+
MPF NikonCapture PDF PDF-update PhotoMechanic Photoshop PNG PNG-pHYs
|
141
|
+
PrintIM QuickTime RMETA RSRC SubIFD Trailer UserData XML XML-* XMP XMP-*
|
142
142
|
);
|
143
143
|
# family 2 group names that we can delete
|
144
144
|
my @delGroup2 = qw(
|
@@ -2639,12 +2639,14 @@ GWTInfo: foreach $tagInfo (@infoArray) {
|
|
2639
2639
|
|
2640
2640
|
#------------------------------------------------------------------------------
|
2641
2641
|
# Get list of all group names
|
2642
|
-
# Inputs: 0) Group family number
|
2642
|
+
# Inputs: 0) [optional] ExifTool ref, 1) Group family number
|
2643
2643
|
# Returns: List of group names (sorted alphabetically)
|
2644
|
-
sub GetAllGroups(
|
2644
|
+
sub GetAllGroups($;$)
|
2645
2645
|
{
|
2646
2646
|
local $_;
|
2647
2647
|
my $family = shift || 0;
|
2648
|
+
my $self;
|
2649
|
+
ref $family and $self = $family, $family = shift || 0;
|
2648
2650
|
|
2649
2651
|
$family == 3 and return('Doc#', 'Main');
|
2650
2652
|
$family == 4 and return('Copy#');
|
@@ -2663,9 +2665,23 @@ sub GetAllGroups($)
|
|
2663
2665
|
$allGroups{$grp} = 1 if ($grps = $$table{GROUPS}) and ($grp = $$grps{$family});
|
2664
2666
|
foreach $tag (TagTableKeys($table)) {
|
2665
2667
|
my @infoArray = GetTagInfoList($table, $tag);
|
2666
|
-
|
2667
|
-
|
2668
|
-
|
2668
|
+
if ($family == 7) {
|
2669
|
+
foreach $tagInfo (@infoArray) {
|
2670
|
+
my $id = $$tagInfo{TagID};
|
2671
|
+
if (not defined $id) {
|
2672
|
+
$id = ''; # (just to be safe)
|
2673
|
+
} elsif ($id =~ /^\d+$/) {
|
2674
|
+
$id = sprintf('0x%x', $id) if $self and $$self{OPTIONS}{HexTagIDs};
|
2675
|
+
} else {
|
2676
|
+
$id =~ s/([^-_A-Za-z0-9])/sprintf('%.2x',ord $1)/ge;
|
2677
|
+
}
|
2678
|
+
$allGroups{'ID-' . $id} = 1;
|
2679
|
+
}
|
2680
|
+
} else {
|
2681
|
+
foreach $tagInfo (@infoArray) {
|
2682
|
+
next unless ($grps = $$tagInfo{Groups}) and ($grp = $$grps{$family});
|
2683
|
+
$allGroups{$grp} = 1;
|
2684
|
+
}
|
2669
2685
|
}
|
2670
2686
|
}
|
2671
2687
|
}
|
@@ -4935,6 +4951,12 @@ sub Set64u(@)
|
|
4935
4951
|
$_[1] and substr(${$_[1]}, $_[2], length($val)) = $val;
|
4936
4952
|
return $val;
|
4937
4953
|
}
|
4954
|
+
sub Set64s(@)
|
4955
|
+
{
|
4956
|
+
my $val = shift;
|
4957
|
+
$val < 0 and $val += 4294967296 * 4294967296; # (temporary hack won't really work due to round-off errors)
|
4958
|
+
return Set64u($val, @_);
|
4959
|
+
}
|
4938
4960
|
sub SetRational64u(@) {
|
4939
4961
|
my ($numer,$denom) = Rationalize($_[0],0xffffffff);
|
4940
4962
|
my $val = Set32u($numer) . Set32u($denom);
|
@@ -4996,6 +5018,7 @@ my %writeValueProc = (
|
|
4996
5018
|
int16uRev => \&Set16uRev,
|
4997
5019
|
int32s => \&Set32s,
|
4998
5020
|
int32u => \&Set32u,
|
5021
|
+
int64s => \&Set64s,
|
4999
5022
|
int64u => \&Set64u,
|
5000
5023
|
rational32s => \&SetRational32s,
|
5001
5024
|
rational32u => \&SetRational32u,
|
@@ -6632,7 +6655,17 @@ sub SetFileTime($$;$$$$)
|
|
6632
6655
|
# open file by name if necessary
|
6633
6656
|
unless (ref $file) {
|
6634
6657
|
# (file will be automatically closed when *FH goes out of scope)
|
6635
|
-
$self->Open(\*FH, $file, '+<')
|
6658
|
+
unless ($self->Open(\*FH, $file, '+<')) {
|
6659
|
+
my $success;
|
6660
|
+
if (defined $atime or defined $mtime) {
|
6661
|
+
my ($a, $m, $c) = $self->GetFileTime($file);
|
6662
|
+
$atime = $a unless defined $atime;
|
6663
|
+
$mtime = $m unless defined $mtime;
|
6664
|
+
$success = eval { utime($atime, $mtime, $file) } if defined $atime and defined $mtime;
|
6665
|
+
}
|
6666
|
+
$self->Warn('Error opening file for update') unless $success;
|
6667
|
+
return $success;
|
6668
|
+
}
|
6636
6669
|
$saveFile = $file;
|
6637
6670
|
$file = \*FH;
|
6638
6671
|
}
|
@@ -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.39';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -201,13 +201,13 @@ my %uri2ns = ( 'http://ns.exiftool.org/1.0/' => 'et' ); # (allow exiftool.org as
|
|
201
201
|
ValueConv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
202
202
|
ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 2, "N")',
|
203
203
|
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
204
|
-
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
204
|
+
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")',
|
205
205
|
);
|
206
206
|
%longConv = (
|
207
207
|
ValueConv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
208
208
|
ValueConvInv => 'Image::ExifTool::GPS::ToDMS($self, $val, 2, "E")',
|
209
209
|
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
210
|
-
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1)',
|
210
|
+
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")',
|
211
211
|
);
|
212
212
|
%dateTimeInfo = (
|
213
213
|
# NOTE: Do NOT put "Groups" here because Groups hash must not be common!
|
@@ -2280,7 +2280,7 @@ my %sPantryItem = (
|
|
2280
2280
|
Priority => 0,
|
2281
2281
|
# prevent this from getting set from a LensID that has been converted
|
2282
2282
|
ValueConvInv => q{
|
2283
|
-
warn "Expected one or more integer values" if $val =~ /[
|
2283
|
+
warn "Expected one or more integer values" if $val =~ /[^-\d ]/;
|
2284
2284
|
return $val;
|
2285
2285
|
},
|
2286
2286
|
},
|
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: 12.
|
4
|
+
version: 12.22.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: 2021-
|
12
|
+
date: 2021-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|
@@ -155,16 +155,16 @@ dependencies:
|
|
155
155
|
name: simplecov
|
156
156
|
requirement: !ruby/object:Gem::Requirement
|
157
157
|
requirements:
|
158
|
-
- - "
|
158
|
+
- - ">="
|
159
159
|
- !ruby/object:Gem::Version
|
160
|
-
version: 0
|
160
|
+
version: '0'
|
161
161
|
type: :development
|
162
162
|
prerelease: false
|
163
163
|
version_requirements: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
|
-
- - "
|
165
|
+
- - ">="
|
166
166
|
- !ruby/object:Gem::Version
|
167
|
-
version: 0
|
167
|
+
version: '0'
|
168
168
|
- !ruby/object:Gem::Dependency
|
169
169
|
name: simplecov-console
|
170
170
|
requirement: !ruby/object:Gem::Requirement
|
@@ -179,6 +179,20 @@ dependencies:
|
|
179
179
|
- - ">="
|
180
180
|
- !ruby/object:Gem::Version
|
181
181
|
version: '0'
|
182
|
+
- !ruby/object:Gem::Dependency
|
183
|
+
name: simplecov_json_formatter
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - ">="
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '0'
|
189
|
+
type: :development
|
190
|
+
prerelease: false
|
191
|
+
version_requirements: !ruby/object:Gem::Requirement
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
version: '0'
|
182
196
|
- !ruby/object:Gem::Dependency
|
183
197
|
name: yard
|
184
198
|
requirement: !ruby/object:Gem::Requirement
|