exiftool-vendored.pl 13.17.0 → 13.25.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.
- package/bin/Changes +102 -7
- package/bin/MANIFEST +14 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +46 -46
- package/bin/config_files/example.config +1 -1
- package/bin/exiftool +211 -121
- package/bin/lib/Image/ExifTool/Apple.pm +12 -2
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +2 -2
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/DJI.pm +190 -29
- package/bin/lib/Image/ExifTool/DarwinCore.pm +22 -11
- package/bin/lib/Image/ExifTool/EXE.pm +2 -9
- package/bin/lib/Image/ExifTool/GM.pm +1 -1
- package/bin/lib/Image/ExifTool/GPS.pm +3 -3
- package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/lib/Image/ExifTool/GoPro.pm +86 -48
- package/bin/lib/Image/ExifTool/ICO.pm +2 -2
- package/bin/lib/Image/ExifTool/JPEG.pm +5 -1
- package/bin/lib/Image/ExifTool/JSON.pm +5 -1
- package/bin/lib/Image/ExifTool/Kodak.pm +3 -2
- package/bin/lib/Image/ExifTool/Nikon.pm +943 -1237
- package/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- package/bin/lib/Image/ExifTool/PCAP.pm +462 -0
- package/bin/lib/Image/ExifTool/PDF.pm +10 -1
- package/bin/lib/Image/ExifTool/PLIST.pm +92 -29
- package/bin/lib/Image/ExifTool/PNG.pm +7 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +2 -2
- package/bin/lib/Image/ExifTool/Plot.pm +713 -0
- package/bin/lib/Image/ExifTool/Protobuf.pm +24 -11
- package/bin/lib/Image/ExifTool/Qualcomm.pm +78 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +347 -318
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +75 -27
- package/bin/lib/Image/ExifTool/Sony.pm +33 -14
- package/bin/lib/Image/ExifTool/TagLookup.pm +5056 -4967
- package/bin/lib/Image/ExifTool/TagNames.pod +443 -334
- package/bin/lib/Image/ExifTool/Trailer.pm +3 -3
- package/bin/lib/Image/ExifTool/Validate.pm +4 -4
- package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteExif.pl +9 -4
- package/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +58 -5
- package/bin/lib/Image/ExifTool/Writer.pl +14 -13
- package/bin/lib/Image/ExifTool/XMP.pm +34 -6
- package/bin/lib/Image/ExifTool/XMP2.pl +2 -0
- package/bin/lib/Image/ExifTool.pm +63 -29
- package/bin/lib/Image/ExifTool.pod +83 -86
- package/bin/perl-Image-ExifTool.spec +45 -45
- package/bin/windows_exiftool.txt +95 -71
- package/package.json +3 -3
|
@@ -18,7 +18,7 @@ use strict;
|
|
|
18
18
|
use vars qw($VERSION);
|
|
19
19
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
20
20
|
|
|
21
|
-
$VERSION = '1.
|
|
21
|
+
$VERSION = '1.03';
|
|
22
22
|
|
|
23
23
|
sub ProcessProtobuf($$$;$);
|
|
24
24
|
|
|
@@ -174,11 +174,11 @@ 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
|
}
|
|
181
|
-
} elsif ($type == 0) {
|
|
181
|
+
} elsif ($type == 0) { # varInt
|
|
182
182
|
$val = $buff;
|
|
183
183
|
my $hex = sprintf('%x', $val);
|
|
184
184
|
if (length($hex) == 16 and $hex =~ /^ffffffff/) {
|
|
@@ -188,9 +188,9 @@ sub ProcessProtobuf($$$;$)
|
|
|
188
188
|
my $signed = ($val & 1) ? -($val >> 1)-1 : ($val >> 1);
|
|
189
189
|
$val .= " (0x$hex, signed $signed)";
|
|
190
190
|
}
|
|
191
|
-
} elsif ($type == 1) {
|
|
191
|
+
} elsif ($type == 1) { # 64-bit number
|
|
192
192
|
$val = '0x' . unpack('H*', $buff) . ' (double ' . GetDouble(\$buff,0) . ')';
|
|
193
|
-
} elsif ($type == 2) {
|
|
193
|
+
} elsif ($type == 2) { # string, bytes or protobuf
|
|
194
194
|
if ($$tagInfo{SubDirectory}) {
|
|
195
195
|
# (fall through to process known SubDirectory)
|
|
196
196
|
} elsif ($$tagInfo{IsProtobuf}) {
|
|
@@ -203,14 +203,27 @@ sub ProcessProtobuf($$$;$)
|
|
|
203
203
|
ProcessProtobuf($et, \%subdir, $tagTbl, "$prefix$id-");
|
|
204
204
|
$$et{INDENT} = substr($$et{INDENT}, 0, -2);
|
|
205
205
|
next;
|
|
206
|
-
} elsif ($buff !~ /[^\x20-\x7e]/) {
|
|
207
|
-
$val = $buff; # assume this is an ASCII string
|
|
208
|
-
} elsif (length($buff) % 4) {
|
|
209
|
-
$val = '0x' . unpack('H*', $buff);
|
|
210
206
|
} else {
|
|
211
|
-
|
|
207
|
+
# check for rational value (2 varInt values)
|
|
208
|
+
my $rat;
|
|
209
|
+
my %dir = ( DataPt => \$buff, Pos => 0 );
|
|
210
|
+
my $num = VarInt(\%dir);
|
|
211
|
+
if (defined $num) {
|
|
212
|
+
my $denom = VarInt(\%dir);
|
|
213
|
+
$rat = " (rational $num/$denom)" if $denom and $dir{Pos} == length($buff);
|
|
214
|
+
}
|
|
215
|
+
if ($buff !~ /[^\x20-\x7e]/) {
|
|
216
|
+
$val = $buff; # assume this is an ASCII string
|
|
217
|
+
} elsif (length($buff) % 4) {
|
|
218
|
+
$val = '0x' . unpack('H*', $buff);
|
|
219
|
+
} else {
|
|
220
|
+
my $n = length($buff) / 4;
|
|
221
|
+
# (do this instead of '(H8)*' because older Perl version didn't support this)
|
|
222
|
+
$val = '0x' . join(' ', unpack("(H8)$n", $buff)); # (group in 4-byte blocks)
|
|
223
|
+
}
|
|
224
|
+
$val .= $rat if $rat;
|
|
212
225
|
}
|
|
213
|
-
} elsif ($type == 5) {
|
|
226
|
+
} elsif ($type == 5) { # 32-bit number
|
|
214
227
|
$val = '0x' . unpack('H*', $buff) . ' (int32u ' . Get32u(\$buff, 0);
|
|
215
228
|
$val .= ', int32s ' . Get32s(\$buff, 0) if ord(substr($buff,3,1)) & 0x80;
|
|
216
229
|
$val .= ', float ' . GetFloat(\$buff, 0) . ')';
|
|
@@ -12,9 +12,10 @@ use strict;
|
|
|
12
12
|
use vars qw($VERSION);
|
|
13
13
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
14
14
|
|
|
15
|
-
$VERSION = '1.
|
|
15
|
+
$VERSION = '1.02';
|
|
16
16
|
|
|
17
17
|
sub ProcessQualcomm($$$);
|
|
18
|
+
sub ProcessDualCamera($$$);
|
|
18
19
|
sub MakeNameAndDesc($$);
|
|
19
20
|
|
|
20
21
|
# Qualcomm format codes (ref PH (NC))
|
|
@@ -1224,6 +1225,59 @@ my @qualcommFormat = (
|
|
|
1224
1225
|
'HJR_texture_threshold' => { },
|
|
1225
1226
|
);
|
|
1226
1227
|
|
|
1228
|
+
%Image::ExifTool::Qualcomm::DualCamera = (
|
|
1229
|
+
PROCESS_PROC => \&ProcessDualCamera,
|
|
1230
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
1231
|
+
VARS => { NO_ID => 1, NO_LOOKUP => 1 }, # too long, too many, and too obscure
|
|
1232
|
+
NOTES => q{
|
|
1233
|
+
Found in JPEG APP4 "Qualcomm Dual Camera Attributes" written by some Nokia
|
|
1234
|
+
phones.
|
|
1235
|
+
},
|
|
1236
|
+
'Sensor Crop left' => 'SensorCropLeft',
|
|
1237
|
+
'Sensor Crop top' => 'SensorCropTop',
|
|
1238
|
+
'Sensor Crop width' => 'SensorCropWidth',
|
|
1239
|
+
'Sensor Crop height' => 'SensorCropHeight',
|
|
1240
|
+
'Sensor ROI Map left' => 'SensorROIMapLeft',
|
|
1241
|
+
'Sensor ROI Map top' => 'SensorROIMapTop',
|
|
1242
|
+
'Sensor ROI Map width' => 'SensorROIMapWidth',
|
|
1243
|
+
'Sensor ROI Map height' => 'SensorROIMapHeight',
|
|
1244
|
+
'CAMIF Crop left' => 'CAMIFCropLeft',
|
|
1245
|
+
'CAMIF Crop top' => 'CAMIFCropTop',
|
|
1246
|
+
'CAMIF Crop width' => 'CAMIFCropWidth',
|
|
1247
|
+
'CAMIF Crop height' => 'CAMIFCropHeight',
|
|
1248
|
+
'CAMIF ROI Map left' => 'CAMIF_ROIMapLeft',
|
|
1249
|
+
'CAMIF ROI Map top' => 'CAMIF_ROIMapTop',
|
|
1250
|
+
'CAMIF ROI Map width' => 'CAMIF_ROIMapWidth',
|
|
1251
|
+
'CAMIF ROI Map height' => 'CAMIF_ROIMapHeight',
|
|
1252
|
+
'ISP Crop left' => 'ISPCropLeft',
|
|
1253
|
+
'ISP Crop top' => 'ISPCropTop',
|
|
1254
|
+
'ISP Crop width' => 'ISPCropWidth',
|
|
1255
|
+
'ISP Crop height' => 'ISPCropHeight',
|
|
1256
|
+
'ISP ROI Map left' => 'ISP_ROIMapLeft',
|
|
1257
|
+
'ISP ROI Map top' => 'ISP_ROIMapTop',
|
|
1258
|
+
'ISP ROI Map width' => 'ISP_ROIMapWidth',
|
|
1259
|
+
'ISP ROI Map height' => 'ISP_ROIMapHeight',
|
|
1260
|
+
'CPP Crop left' => 'CPPCropLeft',
|
|
1261
|
+
'CPP Crop top' => 'CPPCropTop',
|
|
1262
|
+
'CPP Crop width' => 'CPPCropWidth',
|
|
1263
|
+
'CPP Crop height' => 'CPPCropHeight',
|
|
1264
|
+
'CPP ROI Map left' => 'CPP_ROIMapLeft',
|
|
1265
|
+
'CPP ROI Map top' => 'CPP_ROIMapTop',
|
|
1266
|
+
'CPP ROI Map width' => 'CPP_ROIMapWidth',
|
|
1267
|
+
'CPP ROI Map height' => 'CPP_ROIMapHeight',
|
|
1268
|
+
'DDM Crop left' => 'DDMCropLeft',
|
|
1269
|
+
'DDM Crop top' => 'DDMCropTop',
|
|
1270
|
+
'DDM Crop width' => 'DDMCropWidth',
|
|
1271
|
+
'DDM Crop height' => 'DDMCropHeight',
|
|
1272
|
+
'Focal length Ratio' => 'FocalLengthRatio',
|
|
1273
|
+
'Current pipeline mirror flip setting' => 'CurrentPipelineMirrorFlipSetting',
|
|
1274
|
+
'Current pipeline rotation setting' => 'CurrentPipelineRotationSetting',
|
|
1275
|
+
'AF ROI left' => 'AF_ROILeft',
|
|
1276
|
+
'AF ROI top' => 'AF_ROITop',
|
|
1277
|
+
'AF ROI width' => 'AF_ROIWidth',
|
|
1278
|
+
'AF ROI height' => 'AF_ROIHeight',
|
|
1279
|
+
);
|
|
1280
|
+
|
|
1227
1281
|
# generate tag names and descriptions
|
|
1228
1282
|
{
|
|
1229
1283
|
local $_;
|
|
@@ -1258,6 +1312,29 @@ sub MakeNameAndDesc($$)
|
|
|
1258
1312
|
return 1;
|
|
1259
1313
|
}
|
|
1260
1314
|
|
|
1315
|
+
#------------------------------------------------------------------------------
|
|
1316
|
+
# Process Qualcomm Dual Camera APP4 metadata (ref PH)
|
|
1317
|
+
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|
|
1318
|
+
# Returns: 1 on success
|
|
1319
|
+
sub ProcessDualCamera($$$)
|
|
1320
|
+
{
|
|
1321
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
|
1322
|
+
my $dataPt = $$dirInfo{DataPt};
|
|
1323
|
+
my $dataPos = $$dirInfo{DataPos};
|
|
1324
|
+
my $pos = $$dirInfo{DirStart};
|
|
1325
|
+
|
|
1326
|
+
$et->VerboseDir('Qualcomm Dual Camera', undef, $$dirInfo{DirLen});
|
|
1327
|
+
pos($$dataPt) = $pos;
|
|
1328
|
+
while ($$dataPt =~ /\x0a/g) {
|
|
1329
|
+
my $str = substr($$dataPt, $pos, pos($$dataPt) - $pos - 1);
|
|
1330
|
+
next unless $str =~ /^(.*?)\s*=\s*(.*)/;
|
|
1331
|
+
my ($tag, $val) = ($1, $2);
|
|
1332
|
+
$et->HandleTag($tagTablePtr, $tag, $val, MakeTagInfo => 1);
|
|
1333
|
+
$pos = pos($$dataPt);
|
|
1334
|
+
}
|
|
1335
|
+
return 1;
|
|
1336
|
+
}
|
|
1337
|
+
|
|
1261
1338
|
#------------------------------------------------------------------------------
|
|
1262
1339
|
# Process Qualcomm APP7 metadata (ref PH)
|
|
1263
1340
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|