exiftool_vendored 12.22.0 → 12.34.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +201 -5
- data/bin/MANIFEST +22 -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 +1 -1
- data/bin/exiftool +89 -70
- data/bin/fmt_files/gpx.fmt +1 -1
- data/bin/fmt_files/gpx_wpt.fmt +1 -1
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +17 -4
- data/bin/lib/Image/ExifTool/CBOR.pm +331 -0
- data/bin/lib/Image/ExifTool/Canon.pm +53 -21
- data/bin/lib/Image/ExifTool/Charset.pm +2 -0
- 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 +120 -12
- data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
- data/bin/lib/Image/ExifTool/FujiFilm.pm +19 -8
- 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 +96 -4
- 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 +30 -5
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +395 -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 +103 -7
- data/bin/lib/Image/ExifTool/MIE.pm +2 -1
- 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 +3 -3
- data/bin/lib/Image/ExifTool/Microsoft.pm +5 -3
- data/bin/lib/Image/ExifTool/Nikon.pm +17 -5
- data/bin/lib/Image/ExifTool/NikonSettings.pm +19 -2
- data/bin/lib/Image/ExifTool/Olympus.pm +9 -2
- data/bin/lib/Image/ExifTool/Other.pm +93 -0
- data/bin/lib/Image/ExifTool/PDF.pm +11 -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 +210 -65
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +280 -139
- data/bin/lib/Image/ExifTool/README +9 -2
- data/bin/lib/Image/ExifTool/RIFF.pm +89 -12
- data/bin/lib/Image/ExifTool/Samsung.pm +48 -10
- data/bin/lib/Image/ExifTool/Sony.pm +204 -61
- data/bin/lib/Image/ExifTool/TagLookup.pm +206 -19
- data/bin/lib/Image/ExifTool/TagNames.pod +634 -195
- data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
- 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 +58 -16
- data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -3
- data/bin/lib/Image/ExifTool/Writer.pl +44 -0
- data/bin/lib/Image/ExifTool/XMP.pm +51 -18
- data/bin/lib/Image/ExifTool/XMP2.pl +4 -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 +188 -61
- data/bin/lib/Image/ExifTool.pod +89 -68
- data/bin/perl-Image-ExifTool.spec +43 -42
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +10 -9
@@ -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.05';
|
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,8 +83,12 @@ sub ProcessTag($$$$%)
|
|
81
83
|
FoundTag($et, $tagTablePtr, $tag, $val, %flags, Struct => 1);
|
82
84
|
return unless $et->Options('Struct') > 1;
|
83
85
|
}
|
84
|
-
|
85
|
-
|
86
|
+
# support hashes with ordered keys
|
87
|
+
my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
|
88
|
+
foreach (@keys) {
|
89
|
+
my $tg = $tag . ((/^\d/ and $tag =~ /\d$/) ? '_' : '') . ucfirst;
|
90
|
+
$tg =~ s/([^a-zA-Z])([a-z])/$1\U$2/g;
|
91
|
+
ProcessTag($et, $tagTablePtr, $tg, $$val{$_}, %flags, Flat => 1);
|
86
92
|
}
|
87
93
|
} elsif (ref $val eq 'ARRAY') {
|
88
94
|
foreach (@$val) {
|
@@ -103,7 +109,26 @@ sub ProcessJSON($$)
|
|
103
109
|
my ($et, $dirInfo) = @_;
|
104
110
|
my $raf = $$dirInfo{RAF};
|
105
111
|
my $structOpt = $et->Options('Struct');
|
106
|
-
my (%database, $key, $tag);
|
112
|
+
my (%database, $key, $tag, $dataPt);
|
113
|
+
|
114
|
+
unless ($raf) {
|
115
|
+
$dataPt = $$dirInfo{DataPt};
|
116
|
+
if ($$dirInfo{DirStart} or ($$dirInfo{DirLen} and $$dirInfo{DirLen} ne length($$dataPt))) {
|
117
|
+
my $buff = substr(${$$dirInfo{DataPt}}, $$dirInfo{DirStart}, $$dirInfo{DirLen});
|
118
|
+
$dataPt = \$buff;
|
119
|
+
}
|
120
|
+
$raf = new File::RandomAccess($dataPt);
|
121
|
+
# extract as a block if requested
|
122
|
+
my $blockName = $$dirInfo{BlockInfo} ? $$dirInfo{BlockInfo}{Name} : '';
|
123
|
+
my $blockExtract = $et->Options('BlockExtract');
|
124
|
+
if ($blockName and ($blockExtract or $$et{REQ_TAG_LOOKUP}{lc $blockName} or
|
125
|
+
($$et{TAGS_FROM_FILE} and not $$et{EXCL_TAG_LOOKUP}{lc $blockName})))
|
126
|
+
{
|
127
|
+
$et->FoundTag($$dirInfo{BlockInfo}, $$dataPt);
|
128
|
+
return 1 if $blockExtract and $blockExtract > 1;
|
129
|
+
}
|
130
|
+
$et->VerboseDir('JSON');
|
131
|
+
}
|
107
132
|
|
108
133
|
# read information from JSON file into database structure
|
109
134
|
my $err = Image::ExifTool::Import::ReadJSON($raf, \%database,
|
@@ -111,7 +136,7 @@ sub ProcessJSON($$)
|
|
111
136
|
|
112
137
|
return 0 if $err or not %database;
|
113
138
|
|
114
|
-
$et->SetFileType();
|
139
|
+
$et->SetFileType() unless $dataPt;
|
115
140
|
|
116
141
|
my $tagTablePtr = GetTagTable('Image::ExifTool::JSON::Main');
|
117
142
|
|