exiftool_vendored 12.54.0 → 12.56.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 +34 -4
- data/bin/MANIFEST +5 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +19 -19
- data/bin/arg_files/xmp2exif.args +4 -1
- data/bin/exiftool +28 -28
- data/bin/fmt_files/kml.fmt +3 -0
- data/bin/fmt_files/kml_track.fmt +6 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
- data/bin/lib/Image/ExifTool/Canon.pm +8 -2
- data/bin/lib/Image/ExifTool/Exif.pm +31 -2
- data/bin/lib/Image/ExifTool/FlashPix.pm +69 -8
- data/bin/lib/Image/ExifTool/FujiFilm.pm +3 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +13 -4
- data/bin/lib/Image/ExifTool/InfiRay.pm +227 -0
- data/bin/lib/Image/ExifTool/JPEG.pm +40 -6
- data/bin/lib/Image/ExifTool/Matroska.pm +4 -4
- data/bin/lib/Image/ExifTool/Nikon.pm +187 -384
- data/bin/lib/Image/ExifTool/OpenEXR.pm +32 -15
- data/bin/lib/Image/ExifTool/PNG.pm +80 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +19 -4
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +127 -39
- data/bin/lib/Image/ExifTool/README +3 -0
- data/bin/lib/Image/ExifTool/Real.pm +2 -2
- data/bin/lib/Image/ExifTool/Sony.pm +5 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4544 -4525
- data/bin/lib/Image/ExifTool/TagNames.pod +229 -21
- data/bin/lib/Image/ExifTool/VCard.pm +19 -5
- data/bin/lib/Image/ExifTool.pm +56 -15
- data/bin/lib/Image/ExifTool.pod +51 -50
- data/bin/perl-Image-ExifTool.spec +18 -18
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -2
@@ -4,6 +4,7 @@
|
|
4
4
|
# Description: Read OpenEXR meta information
|
5
5
|
#
|
6
6
|
# Revisions: 2011/12/10 - P. Harvey Created
|
7
|
+
# 2023/01/31 - PH Added support for multipart images
|
7
8
|
#
|
8
9
|
# References: 1) http://www.openexr.com/
|
9
10
|
#------------------------------------------------------------------------------
|
@@ -15,7 +16,7 @@ use vars qw($VERSION);
|
|
15
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
17
|
use Image::ExifTool::GPS;
|
17
18
|
|
18
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.04';
|
19
20
|
|
20
21
|
# supported EXR value format types (other types are extracted as undef binary data)
|
21
22
|
my %formatType = (
|
@@ -47,14 +48,18 @@ my %formatType = (
|
|
47
48
|
%Image::ExifTool::OpenEXR::Main = (
|
48
49
|
GROUPS => { 2 => 'Image' },
|
49
50
|
NOTES => q{
|
50
|
-
Information extracted from EXR images.
|
51
|
-
|
51
|
+
Information extracted from EXR images. Use the ExtractEmbedded option to
|
52
|
+
extract information from all frames of a multipart image. See
|
53
|
+
L<http://www.openexr.com/> for the official specification.
|
52
54
|
},
|
53
|
-
_ver => { Name => 'EXRVersion' },
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
55
|
+
_ver => { Name => 'EXRVersion', Notes => 'low byte of Flags word' },
|
56
|
+
_flags => { Name => 'Flags',
|
57
|
+
PrintConv => { BITMASK => {
|
58
|
+
9 => 'Tiled',
|
59
|
+
10 => 'Long names',
|
60
|
+
11 => 'Deep data',
|
61
|
+
12 => 'Multipart',
|
62
|
+
}},
|
58
63
|
},
|
59
64
|
adoptedNeutral => { },
|
60
65
|
altitude => {
|
@@ -145,6 +150,10 @@ my %formatType = (
|
|
145
150
|
worldToNDC => { },
|
146
151
|
wrapmodes => { Name => 'WrapModes' },
|
147
152
|
xDensity => { Name => 'XResolution' },
|
153
|
+
name => { },
|
154
|
+
type => { },
|
155
|
+
version => { },
|
156
|
+
chunkCount => { },
|
148
157
|
# also observed:
|
149
158
|
# ilut
|
150
159
|
);
|
@@ -169,15 +178,22 @@ sub ProcessEXR($$)
|
|
169
178
|
my $tagTablePtr = GetTagTable('Image::ExifTool::OpenEXR::Main');
|
170
179
|
|
171
180
|
# extract information from header
|
172
|
-
my $
|
173
|
-
$et->HandleTag($tagTablePtr, '_ver', $
|
174
|
-
$et->HandleTag($tagTablePtr, '
|
175
|
-
my $maxLen = ($
|
181
|
+
my $flags = unpack('x4V', $buff);
|
182
|
+
$et->HandleTag($tagTablePtr, '_ver', $flags & 0xff);
|
183
|
+
$et->HandleTag($tagTablePtr, '_flags', $flags & 0xffffff00);
|
184
|
+
my $maxLen = ($flags & 0x400) ? 255 : 31;
|
185
|
+
my $multi = $flags & 0x1000;
|
176
186
|
|
177
187
|
# extract attributes
|
178
188
|
for (;;) {
|
179
|
-
$raf->Read($buff,
|
180
|
-
|
189
|
+
$raf->Read($buff, ($maxLen + 1) * 2 + 5) or last;
|
190
|
+
if ($buff =~ /^\0/) {
|
191
|
+
last unless $multi and $et->Options('ExtractEmbedded');
|
192
|
+
# remove null and process the next frame header as a sub-document
|
193
|
+
# (second null is end of all headers)
|
194
|
+
last if $buff =~ s/^(\0+)// and length($1) > 1;
|
195
|
+
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
196
|
+
}
|
181
197
|
unless ($buff =~ /^([^\0]{1,$maxLen})\0([^\0]{1,$maxLen})\0(.{4})/sg) {
|
182
198
|
$et->Warn('EXR format error');
|
183
199
|
last;
|
@@ -261,7 +277,7 @@ sub ProcessEXR($$)
|
|
261
277
|
|
262
278
|
# take image dimensions from dataWindow (with displayWindow as backup)
|
263
279
|
if (($tag eq 'dataWindow' or (not $dim and $tag eq 'displayWindow')) and
|
264
|
-
$val =~ /^(-?\d+) (-?\d+) (-?\d+) (-?\d+)$/)
|
280
|
+
$val =~ /^(-?\d+) (-?\d+) (-?\d+) (-?\d+)$/ and not $$et{DOC_NUM})
|
265
281
|
{
|
266
282
|
$dim = [$3 - $1 + 1, $4 - $2 + 1];
|
267
283
|
}
|
@@ -278,6 +294,7 @@ sub ProcessEXR($$)
|
|
278
294
|
}
|
279
295
|
$et->FoundTag($tagInfo, $val);
|
280
296
|
}
|
297
|
+
delete $$et{DOC_NUM};
|
281
298
|
if ($dim) {
|
282
299
|
$et->FoundTag('ImageWidth', $$dim[0]);
|
283
300
|
$et->FoundTag('ImageHeight', $$dim[1]);
|
@@ -36,7 +36,7 @@ use strict;
|
|
36
36
|
use vars qw($VERSION $AUTOLOAD %stdCase);
|
37
37
|
use Image::ExifTool qw(:DataAccess :Utils);
|
38
38
|
|
39
|
-
$VERSION = '1.
|
39
|
+
$VERSION = '1.62';
|
40
40
|
|
41
41
|
sub ProcessPNG_tEXt($$$);
|
42
42
|
sub ProcessPNG_iTXt($$$);
|
@@ -343,7 +343,12 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
|
|
343
343
|
Name => 'JUMBF',
|
344
344
|
SubDirectory => { TagTable => 'Image::ExifTool::Jpeg2000::Main' },
|
345
345
|
},
|
346
|
-
|
346
|
+
cICP => {
|
347
|
+
Name => 'CICodePoints',
|
348
|
+
SubDirectory => {
|
349
|
+
TagTable => 'Image::ExifTool::PNG::CICodePoints',
|
350
|
+
},
|
351
|
+
},
|
347
352
|
);
|
348
353
|
|
349
354
|
# PNG IHDR chunk
|
@@ -428,6 +433,79 @@ my %noLeapFrog = ( SAVE => 1, SEEK => 1, IHDR => 1, JHDR => 1, IEND => 1, MEND =
|
|
428
433
|
},
|
429
434
|
);
|
430
435
|
|
436
|
+
# PNG cICP chunk
|
437
|
+
%Image::ExifTool::PNG::CICodePoints = (
|
438
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
439
|
+
GROUPS => { 1 => 'PNG-cICP', 2 => 'Image' },
|
440
|
+
NOTES => q{
|
441
|
+
These tags are found in the PNG cICP chunk and belong to the PNG-cICP family
|
442
|
+
1 group.
|
443
|
+
},
|
444
|
+
# (same as tags in QuickTime::ColorRep)
|
445
|
+
0 => {
|
446
|
+
Name => 'ColorPrimaries',
|
447
|
+
PrintConv => {
|
448
|
+
1 => 'BT.709',
|
449
|
+
2 => 'Unspecified',
|
450
|
+
4 => 'BT.470 System M (historical)',
|
451
|
+
5 => 'BT.470 System B, G (historical)',
|
452
|
+
6 => 'BT.601',
|
453
|
+
7 => 'SMPTE 240',
|
454
|
+
8 => 'Generic film (color filters using illuminant C)',
|
455
|
+
9 => 'BT.2020, BT.2100',
|
456
|
+
10 => 'SMPTE 428 (CIE 1921 XYZ)',
|
457
|
+
11 => 'SMPTE RP 431-2',
|
458
|
+
12 => 'SMPTE EG 432-1',
|
459
|
+
22 => 'EBU Tech. 3213-E',
|
460
|
+
},
|
461
|
+
},
|
462
|
+
1 => {
|
463
|
+
Name => 'TransferCharacteristics',
|
464
|
+
PrintConv => {
|
465
|
+
0 => 'For future use (0)',
|
466
|
+
1 => 'BT.709',
|
467
|
+
2 => 'Unspecified',
|
468
|
+
3 => 'For future use (3)',
|
469
|
+
4 => 'BT.470 System M (historical)',
|
470
|
+
5 => 'BT.470 System B, G (historical)',
|
471
|
+
6 => 'BT.601',
|
472
|
+
7 => 'SMPTE 240 M',
|
473
|
+
8 => 'Linear',
|
474
|
+
9 => 'Logarithmic (100 : 1 range)',
|
475
|
+
10 => 'Logarithmic (100 * Sqrt(10) : 1 range)',
|
476
|
+
11 => 'IEC 61966-2-4',
|
477
|
+
12 => 'BT.1361',
|
478
|
+
13 => 'sRGB or sYCC',
|
479
|
+
14 => 'BT.2020 10-bit systems',
|
480
|
+
15 => 'BT.2020 12-bit systems',
|
481
|
+
16 => 'SMPTE ST 2084, ITU BT.2100 PQ',
|
482
|
+
17 => 'SMPTE ST 428',
|
483
|
+
18 => 'BT.2100 HLG, ARIB STD-B67',
|
484
|
+
},
|
485
|
+
},
|
486
|
+
2 => {
|
487
|
+
Name => 'MatrixCoefficients',
|
488
|
+
PrintConv => {
|
489
|
+
0 => 'Identity matrix',
|
490
|
+
1 => 'BT.709',
|
491
|
+
2 => 'Unspecified',
|
492
|
+
3 => 'For future use (3)',
|
493
|
+
4 => 'US FCC 73.628',
|
494
|
+
5 => 'BT.470 System B, G (historical)',
|
495
|
+
6 => 'BT.601',
|
496
|
+
7 => 'SMPTE 240 M',
|
497
|
+
8 => 'YCgCo',
|
498
|
+
9 => 'BT.2020 non-constant luminance, BT.2100 YCbCr',
|
499
|
+
10 => 'BT.2020 constant luminance',
|
500
|
+
11 => 'SMPTE ST 2085 YDzDx',
|
501
|
+
12 => 'Chromaticity-derived non-constant luminance',
|
502
|
+
13 => 'Chromaticity-derived constant luminance',
|
503
|
+
14 => 'BT.2100 ICtCp',
|
504
|
+
},
|
505
|
+
},
|
506
|
+
3 => 'VideoFullRangeFlag',
|
507
|
+
);
|
508
|
+
|
431
509
|
# PNG sCAL chunk
|
432
510
|
%Image::ExifTool::PNG::SubjectScale = (
|
433
511
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
@@ -47,7 +47,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
47
47
|
use Image::ExifTool::Exif;
|
48
48
|
use Image::ExifTool::GPS;
|
49
49
|
|
50
|
-
$VERSION = '2.
|
50
|
+
$VERSION = '2.83';
|
51
51
|
|
52
52
|
sub ProcessMOV($$;$);
|
53
53
|
sub ProcessKeys($$$);
|
@@ -62,6 +62,7 @@ sub Process_mebx($$$);
|
|
62
62
|
sub Process_3gf($$$);
|
63
63
|
sub Process_gps0($$$);
|
64
64
|
sub Process_gsen($$$);
|
65
|
+
sub ProcessKenwood($$$);
|
65
66
|
sub ProcessRIFFTrailer($$$);
|
66
67
|
sub ProcessTTAD($$$);
|
67
68
|
sub ProcessNMEA($$$);
|
@@ -652,10 +653,17 @@ my %eeBox2 = (
|
|
652
653
|
Name => 'HTCInfo',
|
653
654
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::HTCInfo' },
|
654
655
|
},
|
655
|
-
udta => {
|
656
|
-
Name => '
|
656
|
+
udta => [{
|
657
|
+
Name => 'KenwoodData',
|
658
|
+
Condition => '$$valPt =~ /^VIDEOUUUUUUUUUUUUUUUUUUUUUU/',
|
659
|
+
SubDirectory => {
|
660
|
+
TagTable => 'Image::ExifTool::QuickTime::Stream',
|
661
|
+
ProcessProc => \&ProcessKenwood,
|
662
|
+
},
|
663
|
+
},{
|
664
|
+
Name => 'FLIRData',
|
657
665
|
SubDirectory => { TagTable => 'Image::ExifTool::FLIR::UserData' },
|
658
|
-
},
|
666
|
+
}],
|
659
667
|
thum => { #PH
|
660
668
|
Name => 'ThumbnailImage',
|
661
669
|
Groups => { 2 => 'Preview' },
|
@@ -763,6 +771,13 @@ my %eeBox2 = (
|
|
763
771
|
SubDirectory => { TagTable => 'Image::ExifTool::Samsung::Trailer' },
|
764
772
|
},
|
765
773
|
# 'samn'? - seen in Vantrue N2S sample video
|
774
|
+
mpvd => {
|
775
|
+
Name => 'MotionPhotoVideo',
|
776
|
+
Notes => 'MP4-format video saved in Samsung motion-photo HEIC images.',
|
777
|
+
Binary => 1,
|
778
|
+
# note that this may be written and/or deleted, but can't currently be added back again
|
779
|
+
Writable => 1,
|
780
|
+
},
|
766
781
|
);
|
767
782
|
|
768
783
|
# stuff seen in 'skip' atom (70mai Pro Plus+ MP4 videos)
|