exiftool_vendored 12.17.1 → 12.32.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 +225 -1
- data/bin/MANIFEST +23 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +45 -43
- data/bin/arg_files/xmp2exif.args +2 -1
- data/bin/config_files/acdsee.config +193 -6
- data/bin/config_files/convert_regions.config +25 -14
- data/bin/config_files/cuepointlist.config +70 -0
- data/bin/config_files/example.config +2 -9
- data/bin/exiftool +142 -87
- data/bin/fmt_files/gpx.fmt +2 -2
- data/bin/fmt_files/gpx_wpt.fmt +2 -2
- data/bin/fmt_files/kml.fmt +1 -1
- data/bin/fmt_files/kml_track.fmt +1 -1
- data/bin/lib/Image/ExifTool/Apple.pm +3 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +30 -12
- data/bin/lib/Image/ExifTool/CBOR.pm +277 -0
- data/bin/lib/Image/ExifTool/Canon.pm +49 -18
- data/bin/lib/Image/ExifTool/DJI.pm +6 -6
- data/bin/lib/Image/ExifTool/DPX.pm +13 -2
- data/bin/lib/Image/ExifTool/DjVu.pm +6 -5
- data/bin/lib/Image/ExifTool/Exif.pm +28 -11
- data/bin/lib/Image/ExifTool/FITS.pm +13 -2
- data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
- data/bin/lib/Image/ExifTool/FujiFilm.pm +19 -8
- data/bin/lib/Image/ExifTool/GPS.pm +22 -11
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -2
- data/bin/lib/Image/ExifTool/GoPro.pm +16 -1
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +2 -2
- data/bin/lib/Image/ExifTool/ID3.pm +15 -3
- data/bin/lib/Image/ExifTool/JPEG.pm +74 -4
- data/bin/lib/Image/ExifTool/JSON.pm +27 -4
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +393 -16
- data/bin/lib/Image/ExifTool/LIF.pm +153 -0
- data/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
- data/bin/lib/Image/ExifTool/M2TS.pm +137 -5
- data/bin/lib/Image/ExifTool/MIE.pm +4 -3
- data/bin/lib/Image/ExifTool/MRC.pm +341 -0
- data/bin/lib/Image/ExifTool/MWG.pm +3 -3
- data/bin/lib/Image/ExifTool/MXF.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
- data/bin/lib/Image/ExifTool/Microsoft.pm +298 -82
- data/bin/lib/Image/ExifTool/Nikon.pm +19 -8
- data/bin/lib/Image/ExifTool/NikonSettings.pm +28 -11
- data/bin/lib/Image/ExifTool/Olympus.pm +6 -3
- data/bin/lib/Image/ExifTool/Other.pm +93 -0
- data/bin/lib/Image/ExifTool/PDF.pm +9 -12
- data/bin/lib/Image/ExifTool/PNG.pm +8 -7
- data/bin/lib/Image/ExifTool/Panasonic.pm +28 -3
- data/bin/lib/Image/ExifTool/Pentax.pm +28 -5
- data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -3
- data/bin/lib/Image/ExifTool/Photoshop.pm +6 -0
- data/bin/lib/Image/ExifTool/QuickTime.pm +247 -88
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +283 -141
- data/bin/lib/Image/ExifTool/README +3 -0
- data/bin/lib/Image/ExifTool/RIFF.pm +89 -12
- data/bin/lib/Image/ExifTool/Samsung.pm +48 -10
- data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -0
- data/bin/lib/Image/ExifTool/Sony.pm +237 -78
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +1 -0
- data/bin/lib/Image/ExifTool/TagLookup.pm +4125 -4028
- data/bin/lib/Image/ExifTool/TagNames.pod +644 -286
- data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
- data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
- data/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
- data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -0
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +55 -21
- data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -3
- data/bin/lib/Image/ExifTool/Writer.pl +47 -10
- data/bin/lib/Image/ExifTool/XMP.pm +39 -14
- data/bin/lib/Image/ExifTool/XMP2.pl +2 -1
- data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +121 -2
- data/bin/lib/Image/ExifTool.pm +223 -72
- data/bin/lib/Image/ExifTool.pod +114 -93
- data/bin/perl-Image-ExifTool.spec +43 -42
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +28 -13
|
@@ -11,7 +11,7 @@ use strict;
|
|
|
11
11
|
use vars qw($VERSION);
|
|
12
12
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
13
13
|
|
|
14
|
-
$VERSION = '1.
|
|
14
|
+
$VERSION = '1.32';
|
|
15
15
|
|
|
16
16
|
sub ProcessOcad($$$);
|
|
17
17
|
sub ProcessJPEG_HDR($$$);
|
|
@@ -96,6 +96,10 @@ sub ProcessJPEG_HDR($$$);
|
|
|
96
96
|
Name => 'Stim',
|
|
97
97
|
Condition => '$$valPt =~ /^Stim\0/',
|
|
98
98
|
SubDirectory => { TagTable => 'Image::ExifTool::Stim::Main' },
|
|
99
|
+
}, {
|
|
100
|
+
Name => 'JPS',
|
|
101
|
+
Condition => '$$valPt =~ /^_JPSJPS_/',
|
|
102
|
+
SubDirectory => { TagTable => 'Image::ExifTool::JPEG::JPS' },
|
|
99
103
|
}, {
|
|
100
104
|
Name => 'ThermalData', # (written by DJI FLIR models)
|
|
101
105
|
Condition => '$$self{Make} eq "DJI"',
|
|
@@ -193,11 +197,15 @@ sub ProcessJPEG_HDR($$$);
|
|
|
193
197
|
Condition => '$$valPt =~ /^UNICODE\0/',
|
|
194
198
|
Notes => 'PhotoStudio Unicode comment',
|
|
195
199
|
},
|
|
196
|
-
APP11 => {
|
|
200
|
+
APP11 => [{
|
|
197
201
|
Name => 'JPEG-HDR',
|
|
198
202
|
Condition => '$$valPt =~ /^HDR_RI /',
|
|
199
203
|
SubDirectory => { TagTable => 'Image::ExifTool::JPEG::HDR' },
|
|
200
|
-
},
|
|
204
|
+
},{
|
|
205
|
+
Name => 'JUMBF',
|
|
206
|
+
Condition => '$$valPt =~ /^JP/',
|
|
207
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Jpeg2000::Main' },
|
|
208
|
+
}],
|
|
201
209
|
APP12 => [{
|
|
202
210
|
Name => 'PictureInfo',
|
|
203
211
|
Condition => '$$valPt =~ /(\[picture info\]|Type=)/',
|
|
@@ -283,6 +291,68 @@ sub ProcessJPEG_HDR($$$);
|
|
|
283
291
|
}],
|
|
284
292
|
);
|
|
285
293
|
|
|
294
|
+
# JPS APP3 segment (ref http://paulbourke.net/stereographics/stereoimage/)
|
|
295
|
+
%Image::ExifTool::JPEG::JPS = (
|
|
296
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
|
297
|
+
GROUPS => { 0 => 'APP3', 1 => 'JPS', 2 => 'Image' },
|
|
298
|
+
NOTES => 'Tags found in JPEG Stereo (JPS) images.',
|
|
299
|
+
0x0a => {
|
|
300
|
+
Name => 'JPSSeparation',
|
|
301
|
+
Format => 'int32u', # (just so we can look ahead to MediaType);
|
|
302
|
+
Notes => 'stereo only',
|
|
303
|
+
RawConv => q{
|
|
304
|
+
$$self{MediaType} = $val & 0xff;
|
|
305
|
+
return undef unless $$self{MediaType} == 1;
|
|
306
|
+
return(($val >> 24) & 0xff);
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
0x08 => {
|
|
310
|
+
Name => 'HdrLength',
|
|
311
|
+
Format => 'int16u',
|
|
312
|
+
Hidden => 1,
|
|
313
|
+
RawConv => '$$self{HdrLength} = $val; undef',
|
|
314
|
+
},
|
|
315
|
+
0x0b => {
|
|
316
|
+
Name => 'JPSFlags',
|
|
317
|
+
PrintConv => { BITMASK => {
|
|
318
|
+
0 => 'Half height',
|
|
319
|
+
1 => 'Half width',
|
|
320
|
+
2 => 'Left field first',
|
|
321
|
+
}},
|
|
322
|
+
},
|
|
323
|
+
0x0c => [{
|
|
324
|
+
Name => 'JPSLayout',
|
|
325
|
+
Condition => '$$self{MediaType} == 0',
|
|
326
|
+
Notes => 'mono',
|
|
327
|
+
PrintConv => {
|
|
328
|
+
0 => 'Both Eyes',
|
|
329
|
+
1 => 'Left Eye',
|
|
330
|
+
2 => 'Right Eye',
|
|
331
|
+
},
|
|
332
|
+
},{
|
|
333
|
+
Name => 'JPSLayout',
|
|
334
|
+
Condition => '$$self{MediaType} == 1',
|
|
335
|
+
Notes => 'stereo',
|
|
336
|
+
PrintConv => {
|
|
337
|
+
1 => 'Interleaved',
|
|
338
|
+
2 => 'Side By Side',
|
|
339
|
+
3 => 'Over Under',
|
|
340
|
+
4 => 'Anaglyph',
|
|
341
|
+
},
|
|
342
|
+
}],
|
|
343
|
+
0x0d => {
|
|
344
|
+
Name => 'JPSType',
|
|
345
|
+
Hook => '$varSize += $$self{HdrLength} - 4', # comment starts after header block
|
|
346
|
+
PrintConv => { 0 => 'Mono', 1 => 'Stereo' },
|
|
347
|
+
},
|
|
348
|
+
# 0x0e - in16u comment length (ignored -- assume the remainder is all comment)
|
|
349
|
+
# (this is offset if we had a 4-byte JPS header block)
|
|
350
|
+
0x10 => {
|
|
351
|
+
Name => 'JPSComment',
|
|
352
|
+
Format => 'string',
|
|
353
|
+
},
|
|
354
|
+
);
|
|
355
|
+
|
|
286
356
|
# EPPIM APP6 (Toshiba PrintIM) segment (ref PH, from PDR-M700 samples)
|
|
287
357
|
%Image::ExifTool::JPEG::EPPIM = (
|
|
288
358
|
GROUPS => { 0 => 'APP6', 1 => 'EPPIM', 2 => 'Image' },
|
|
@@ -541,7 +611,7 @@ sub ProcessJPEG_HDR($$$);
|
|
|
541
611
|
},
|
|
542
612
|
2 => {
|
|
543
613
|
Name => 'ImageFormat',
|
|
544
|
-
ValueConv => 'chr($val)',
|
|
614
|
+
ValueConv => 'chr($val & 0xff)',
|
|
545
615
|
PrintConv => { B => 'IMode B' },
|
|
546
616
|
},
|
|
547
617
|
3 => {
|
|
@@ -14,13 +14,15 @@ use vars qw($VERSION);
|
|
|
14
14
|
use Image::ExifTool qw(:DataAccess :Utils);
|
|
15
15
|
use Image::ExifTool::Import;
|
|
16
16
|
|
|
17
|
-
$VERSION = '1.
|
|
17
|
+
$VERSION = '1.04';
|
|
18
18
|
|
|
19
|
+
sub ProcessJSON($$);
|
|
19
20
|
sub ProcessTag($$$$%);
|
|
20
21
|
|
|
21
22
|
%Image::ExifTool::JSON::Main = (
|
|
22
23
|
GROUPS => { 0 => 'JSON', 1 => 'JSON', 2 => 'Other' },
|
|
23
24
|
VARS => { NO_ID => 1 },
|
|
25
|
+
PROCESS_PROC => \&ProcessJSON,
|
|
24
26
|
NOTES => q{
|
|
25
27
|
Other than a few tags in the table below, JSON tags have not been
|
|
26
28
|
pre-defined. However, ExifTool will read any existing tags from basic
|
|
@@ -81,7 +83,9 @@ sub ProcessTag($$$$%)
|
|
|
81
83
|
FoundTag($et, $tagTablePtr, $tag, $val, %flags, Struct => 1);
|
|
82
84
|
return unless $et->Options('Struct') > 1;
|
|
83
85
|
}
|
|
84
|
-
|
|
86
|
+
# support hashes with ordered keys
|
|
87
|
+
my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
|
|
88
|
+
foreach (@keys) {
|
|
85
89
|
ProcessTag($et, $tagTablePtr, $tag . ucfirst, $$val{$_}, %flags, Flat => 1);
|
|
86
90
|
}
|
|
87
91
|
} elsif (ref $val eq 'ARRAY') {
|
|
@@ -103,7 +107,26 @@ sub ProcessJSON($$)
|
|
|
103
107
|
my ($et, $dirInfo) = @_;
|
|
104
108
|
my $raf = $$dirInfo{RAF};
|
|
105
109
|
my $structOpt = $et->Options('Struct');
|
|
106
|
-
my (%database, $key, $tag);
|
|
110
|
+
my (%database, $key, $tag, $dataPt);
|
|
111
|
+
|
|
112
|
+
unless ($raf) {
|
|
113
|
+
$dataPt = $$dirInfo{DataPt};
|
|
114
|
+
if ($$dirInfo{DirStart} or ($$dirInfo{DirLen} and $$dirInfo{DirLen} ne length($$dataPt))) {
|
|
115
|
+
my $buff = substr(${$$dirInfo{DataPt}}, $$dirInfo{DirStart}, $$dirInfo{DirLen});
|
|
116
|
+
$dataPt = \$buff;
|
|
117
|
+
}
|
|
118
|
+
$raf = new File::RandomAccess($dataPt);
|
|
119
|
+
# extract as a block if requested
|
|
120
|
+
my $blockName = $$dirInfo{BlockInfo} ? $$dirInfo{BlockInfo}{Name} : '';
|
|
121
|
+
my $blockExtract = $et->Options('BlockExtract');
|
|
122
|
+
if ($blockName and ($blockExtract or $$et{REQ_TAG_LOOKUP}{lc $blockName} or
|
|
123
|
+
($$et{TAGS_FROM_FILE} and not $$et{EXCL_TAG_LOOKUP}{lc $blockName})))
|
|
124
|
+
{
|
|
125
|
+
$et->FoundTag($$dirInfo{BlockInfo}, $$dataPt);
|
|
126
|
+
return 1 if $blockExtract and $blockExtract > 1;
|
|
127
|
+
}
|
|
128
|
+
$et->VerboseDir('JSON');
|
|
129
|
+
}
|
|
107
130
|
|
|
108
131
|
# read information from JSON file into database structure
|
|
109
132
|
my $err = Image::ExifTool::Import::ReadJSON($raf, \%database,
|
|
@@ -111,7 +134,7 @@ sub ProcessJSON($$)
|
|
|
111
134
|
|
|
112
135
|
return 0 if $err or not %database;
|
|
113
136
|
|
|
114
|
-
$et->SetFileType();
|
|
137
|
+
$et->SetFileType() unless $dataPt;
|
|
115
138
|
|
|
116
139
|
my $tagTablePtr = GetTagTable('Image::ExifTool::JSON::Main');
|
|
117
140
|
|