exiftool_vendored 13.17.0 → 13.19.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 +33 -6
- 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 -1
- data/bin/exiftool +12 -8
- data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- data/bin/lib/Image/ExifTool/DJI.pm +99 -11
- data/bin/lib/Image/ExifTool/GoPro.pm +58 -48
- data/bin/lib/Image/ExifTool/ICO.pm +2 -2
- data/bin/lib/Image/ExifTool/Kodak.pm +3 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +45 -19
- data/bin/lib/Image/ExifTool/PDF.pm +10 -1
- data/bin/lib/Image/ExifTool/PLIST.pm +42 -4
- data/bin/lib/Image/ExifTool/Photoshop.pm +2 -2
- data/bin/lib/Image/ExifTool/Protobuf.pm +1 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +273 -262
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +19 -5
- data/bin/lib/Image/ExifTool/Sony.pm +16 -10
- data/bin/lib/Image/ExifTool/TagLookup.pm +712 -663
- data/bin/lib/Image/ExifTool/TagNames.pod +162 -64
- data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +49 -3
- data/bin/lib/Image/ExifTool/Writer.pl +5 -3
- data/bin/lib/Image/ExifTool/XMP.pm +17 -3
- data/bin/lib/Image/ExifTool/XMP2.pl +2 -0
- data/bin/lib/Image/ExifTool.pm +15 -16
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -25,7 +25,7 @@ use vars qw($VERSION);
|
|
25
25
|
use Image::ExifTool qw(:DataAccess :Utils);
|
26
26
|
use Image::ExifTool::Exif;
|
27
27
|
|
28
|
-
$VERSION = '1.
|
28
|
+
$VERSION = '1.48';
|
29
29
|
|
30
30
|
sub ProcessKodakIFD($$$);
|
31
31
|
sub ProcessKodakText($$$);
|
@@ -2983,7 +2983,8 @@ my %sceneModeUsed = (
|
|
2983
2983
|
Priority => 0, # (only integer seconds)
|
2984
2984
|
PrintConv => 'ConvertDuration($val)',
|
2985
2985
|
},
|
2986
|
-
|
2986
|
+
# (save KodakVersion to recognize Rexing Dashcam video for GPS scaling)
|
2987
|
+
'ver '=> { Name => 'KodakVersion', RawConv => '$$self{KodakVersion} = $val' },
|
2987
2988
|
thma => { Name => 'ThumbnailImage', Groups => { 2 => 'Preview' }, Binary => 1 },
|
2988
2989
|
scra => { Name => 'PreviewImage', Groups => { 2 => 'Preview' }, Binary => 1 },
|
2989
2990
|
);
|
@@ -65,7 +65,7 @@ use Image::ExifTool::Exif;
|
|
65
65
|
use Image::ExifTool::GPS;
|
66
66
|
use Image::ExifTool::XMP;
|
67
67
|
|
68
|
-
$VERSION = '4.
|
68
|
+
$VERSION = '4.43';
|
69
69
|
|
70
70
|
sub LensIDConv($$$);
|
71
71
|
sub ProcessNikonAVI($$$);
|
@@ -1370,6 +1370,25 @@ my %retouchValues = ( #PH
|
|
1370
1370
|
54 => 'Low Key', # (S3500)
|
1371
1371
|
);
|
1372
1372
|
|
1373
|
+
# AF points for models with 11 focus points (eg. D3400)
|
1374
|
+
my %afPoints11 = (
|
1375
|
+
0 => '(none)',
|
1376
|
+
0x7ff => 'All 11 Points',
|
1377
|
+
BITMASK => {
|
1378
|
+
0 => 'Center',
|
1379
|
+
1 => 'Top',
|
1380
|
+
2 => 'Bottom',
|
1381
|
+
3 => 'Mid-left',
|
1382
|
+
4 => 'Mid-right',
|
1383
|
+
5 => 'Upper-left',
|
1384
|
+
6 => 'Upper-right',
|
1385
|
+
7 => 'Lower-left',
|
1386
|
+
8 => 'Lower-right',
|
1387
|
+
9 => 'Far Left',
|
1388
|
+
10 => 'Far Right',
|
1389
|
+
},
|
1390
|
+
);
|
1391
|
+
|
1373
1392
|
# AF point indices for models with 51 focus points, eg. D3 (ref JD/PH)
|
1374
1393
|
# A1 A2 A3 A4 A5 A6 A7 A8 A9
|
1375
1394
|
# B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11
|
@@ -4027,23 +4046,7 @@ my %base64coord = (
|
|
4027
4046
|
Name => 'AFPointsInFocus',
|
4028
4047
|
Format => 'int16u',
|
4029
4048
|
PrintConvColumns => 2,
|
4030
|
-
PrintConv =>
|
4031
|
-
0 => '(none)',
|
4032
|
-
0x7ff => 'All 11 Points',
|
4033
|
-
BITMASK => {
|
4034
|
-
0 => 'Center',
|
4035
|
-
1 => 'Top',
|
4036
|
-
2 => 'Bottom',
|
4037
|
-
3 => 'Mid-left',
|
4038
|
-
4 => 'Mid-right',
|
4039
|
-
5 => 'Upper-left',
|
4040
|
-
6 => 'Upper-right',
|
4041
|
-
7 => 'Lower-left',
|
4042
|
-
8 => 'Lower-right',
|
4043
|
-
9 => 'Far Left',
|
4044
|
-
10 => 'Far Right',
|
4045
|
-
},
|
4046
|
-
},
|
4049
|
+
PrintConv => \%afPoints11,
|
4047
4050
|
},
|
4048
4051
|
);
|
4049
4052
|
|
@@ -4515,7 +4518,7 @@ my %base64coord = (
|
|
4515
4518
|
0x1c => [
|
4516
4519
|
{ #PH
|
4517
4520
|
Name => 'ContrastDetectAFInFocus',
|
4518
|
-
Condition => '$$self{AFInfo2Version} eq "0100"',
|
4521
|
+
Condition => '$$self{AFInfo2Version} eq "0100" and $$self{ContrastDetectAF}',
|
4519
4522
|
PrintConv => { 0 => 'No', 1 => 'Yes' },
|
4520
4523
|
},{ #PH (D500, see forum11190)
|
4521
4524
|
Name => 'AFPointsSelected',
|
@@ -4525,6 +4528,11 @@ my %base64coord = (
|
|
4525
4528
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
4526
4529
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
|
4527
4530
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
|
4531
|
+
},{ #PH (D3400) (NC "selected")
|
4532
|
+
Name => 'AFPointsSelected',
|
4533
|
+
Condition => '$$self{AFInfo2Version} eq "0101" and $$self{PhaseDetectAF} == 2',
|
4534
|
+
Format => 'int16u',
|
4535
|
+
PrintConv => \%afPoints11,
|
4528
4536
|
},
|
4529
4537
|
],
|
4530
4538
|
# 0x1d - always zero (with or without live view)
|
@@ -4573,6 +4581,14 @@ my %base64coord = (
|
|
4573
4581
|
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
4574
4582
|
PrintConv => sub { PrintAFPoints(shift, \%afPoints153); },
|
4575
4583
|
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints153); },
|
4584
|
+
},{ #PH (D7500) (NC "in focus")
|
4585
|
+
Name => 'AFPointsInFocus',
|
4586
|
+
Condition => '$$self{AFInfo2Version} eq "0101" and $$self{PhaseDetectAF} == 1',
|
4587
|
+
Format => 'undef[7]',
|
4588
|
+
ValueConv => 'join(" ", unpack("H2"x7, $val))',
|
4589
|
+
ValueConvInv => '$val=~tr/ //d; pack("H*",$val)',
|
4590
|
+
PrintConv => sub { PrintAFPoints(shift, \%afPoints51); },
|
4591
|
+
PrintConvInv => sub { PrintAFPointsInv(shift, \%afPoints51); },
|
4576
4592
|
},
|
4577
4593
|
],
|
4578
4594
|
0x31 => { #28 (Z7)
|
@@ -4639,6 +4655,16 @@ my %base64coord = (
|
|
4639
4655
|
11 => 'Far Right',
|
4640
4656
|
},
|
4641
4657
|
},
|
4658
|
+
{
|
4659
|
+
Name => 'PrimaryAFPoint',
|
4660
|
+
Condition => '$$self{PhaseDetectAF} == 1 and $$self{AFInfo2Version} eq "0101"',
|
4661
|
+
PrintConvColumns => 5,
|
4662
|
+
PrintConv => {
|
4663
|
+
0 => '(none)',
|
4664
|
+
%afPoints51,
|
4665
|
+
1 => 'C6 (Center)',
|
4666
|
+
},
|
4667
|
+
},
|
4642
4668
|
{
|
4643
4669
|
Name => 'PrimaryAFPoint',
|
4644
4670
|
Condition => '$$self{AFInfo2Version} eq "0101"',
|
@@ -21,7 +21,7 @@ use vars qw($VERSION $AUTOLOAD $lastFetched);
|
|
21
21
|
use Image::ExifTool qw(:DataAccess :Utils);
|
22
22
|
require Exporter;
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.61';
|
25
25
|
|
26
26
|
sub FetchObject($$$$);
|
27
27
|
sub ExtractObject($$;$$);
|
@@ -141,6 +141,15 @@ my %supportedFilter = (
|
|
141
141
|
PrintConv => '$self->ConvertDateTime($val)',
|
142
142
|
PrintConvInv => '$self->InverseDateTime($val)',
|
143
143
|
},
|
144
|
+
SourceModified => {
|
145
|
+
Name => 'SourceModified',
|
146
|
+
Writable => 'date',
|
147
|
+
PDF2 => 1,
|
148
|
+
Groups => { 2 => 'Time' },
|
149
|
+
Shift => 'Time',
|
150
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
151
|
+
PrintConvInv => '$self->InverseDateTime($val)',
|
152
|
+
},
|
144
153
|
Trapped => {
|
145
154
|
Protected => 1,
|
146
155
|
# remove leading '/' from '/True' or '/False'
|
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
21
21
|
use Image::ExifTool::XMP;
|
22
22
|
use Image::ExifTool::GPS;
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.14';
|
25
25
|
|
26
26
|
sub ExtractObject($$;$);
|
27
27
|
sub Get24u($$);
|
@@ -46,7 +46,7 @@ my %plistType = (
|
|
46
46
|
%Image::ExifTool::PLIST::Main = (
|
47
47
|
PROCESS_PROC => \&ProcessPLIST,
|
48
48
|
GROUPS => { 0 => 'PLIST', 1 => 'XML', 2 => 'Document' },
|
49
|
-
VARS => { LONG_TAGS =>
|
49
|
+
VARS => { LONG_TAGS => 12 },
|
50
50
|
NOTES => q{
|
51
51
|
Apple Property List tags. ExifTool reads both XML and binary-format PLIST
|
52
52
|
files, and will extract any existing tags even if they aren't listed below.
|
@@ -92,6 +92,35 @@ my %plistType = (
|
|
92
92
|
Name => 'GPSMapDatum',
|
93
93
|
Groups => { 2 => 'Location' },
|
94
94
|
},
|
95
|
+
# slow motion stuff found in AAE files
|
96
|
+
'slowMotion/regions/timeRange/start/flags' => {
|
97
|
+
Name => 'SlowMotionRegionsStartTimeFlags',
|
98
|
+
PrintConv => { BITMASK => {
|
99
|
+
0 => 'Valid',
|
100
|
+
1 => 'Has been rounded',
|
101
|
+
2 => 'Positive infinity',
|
102
|
+
3 => 'Negative infinity',
|
103
|
+
4 => 'Indefinite',
|
104
|
+
}},
|
105
|
+
},
|
106
|
+
'slowMotion/regions/timeRange/start/value' => 'SlowMotionRegionsStartTimeValue',
|
107
|
+
'slowMotion/regions/timeRange/start/timescale' => 'SlowMotionRegionsStartTimeScale',
|
108
|
+
'slowMotion/regions/timeRange/start/epoch' => 'SlowMotionRegionsStartTimeEpoch',
|
109
|
+
'slowMotion/regions/timeRange/duration/flags' => {
|
110
|
+
Name => 'SlowMotionRegionsDurationFlags',
|
111
|
+
PrintConv => { BITMASK => {
|
112
|
+
0 => 'Valid',
|
113
|
+
1 => 'Has been rounded',
|
114
|
+
2 => 'Positive infinity',
|
115
|
+
3 => 'Negative infinity',
|
116
|
+
4 => 'Indefinite',
|
117
|
+
}},
|
118
|
+
},
|
119
|
+
'slowMotion/regions/timeRange/duration/value' => 'SlowMotionRegionsDurationValue',
|
120
|
+
'slowMotion/regions/timeRange/duration/timescale' => 'SlowMotionRegionsDurationTimeScale',
|
121
|
+
'slowMotion/regions/timeRange/duration/epoch' => 'SlowMotionRegionsDurationEpoch',
|
122
|
+
'slowMotion/regions' => 'SlowMotionRegions',
|
123
|
+
'slowMotion/rate' => 'SlowMotionRate',
|
95
124
|
XMLFileType => {
|
96
125
|
# recognize MODD files by their content
|
97
126
|
RawConv => q{
|
@@ -101,6 +130,10 @@ my %plistType = (
|
|
101
130
|
return $val;
|
102
131
|
},
|
103
132
|
},
|
133
|
+
adjustmentData => { # AAE file
|
134
|
+
Name => 'AdjustmentData',
|
135
|
+
SubDirectory => { TagTable => 'Image::ExifTool::PLIST::Main' },
|
136
|
+
},
|
104
137
|
);
|
105
138
|
|
106
139
|
#------------------------------------------------------------------------------
|
@@ -404,8 +437,13 @@ sub ProcessPLIST($$;$)
|
|
404
437
|
|
405
438
|
unless ($result) {
|
406
439
|
my $buff;
|
407
|
-
my $raf = $$dirInfo{RAF}
|
408
|
-
|
440
|
+
my $raf = $$dirInfo{RAF};
|
441
|
+
if ($raf) {
|
442
|
+
$raf->Seek(0,0) and $raf->Read($buff, 64) or return 0;
|
443
|
+
} else {
|
444
|
+
return 0 unless $$dirInfo{DataPt};
|
445
|
+
$buff = ${$$dirInfo{DataPt}};
|
446
|
+
}
|
409
447
|
if ($buff =~ /^bplist0/) {
|
410
448
|
# binary PLIST file
|
411
449
|
my $tagTablePtr = GetTagTable('Image::ExifTool::PLIST::Main');
|
@@ -1165,7 +1165,7 @@ sub ProcessPSD($$)
|
|
1165
1165
|
$len = Set32u(length $data);
|
1166
1166
|
Write($outfile, $len, $data) or $err = 1;
|
1167
1167
|
# look for trailer and edit if necessary
|
1168
|
-
my $trailInfo =
|
1168
|
+
my $trailInfo = $et->IdentifyTrailer($raf);
|
1169
1169
|
if ($trailInfo) {
|
1170
1170
|
my $tbuf = '';
|
1171
1171
|
$$trailInfo{OutFile} = \$tbuf; # rewrite trailer(s)
|
@@ -1223,7 +1223,7 @@ sub ProcessPSD($$)
|
|
1223
1223
|
}
|
1224
1224
|
$$et{INDENT} = $oldIndent;
|
1225
1225
|
# process trailers if they exist
|
1226
|
-
my $trailInfo =
|
1226
|
+
my $trailInfo = $et->IdentifyTrailer($raf);
|
1227
1227
|
$et->ProcessTrailers($trailInfo) if $trailInfo;
|
1228
1228
|
}
|
1229
1229
|
return $rtnVal;
|
@@ -174,7 +174,7 @@ sub ProcessProtobuf($$$;$)
|
|
174
174
|
my $dir = { DataPt => \$buff, Pos => 0 };
|
175
175
|
my $num = VarInt($dir);
|
176
176
|
my $den = VarInt($dir);
|
177
|
-
$val = (defined $num and $den) ?
|
177
|
+
$val = (defined $num and $den) ? $num/$den : 'err';
|
178
178
|
} else {
|
179
179
|
$val = ReadValue(\$buff, 0, $$tagInfo{Format}, undef, length($buff));
|
180
180
|
}
|