exiftool-vendored.exe 12.54.0 → 12.56.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/exiftool_files/Changes +34 -4
- package/bin/exiftool_files/README +19 -19
- package/bin/exiftool_files/arg_files/xmp2exif.args +4 -1
- package/bin/exiftool_files/exiftool.pl +29 -29
- package/bin/exiftool_files/fmt_files/kml.fmt +3 -0
- package/bin/exiftool_files/fmt_files/kml_track.fmt +6 -3
- package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +7 -5
- package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +8 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +31 -2
- package/bin/exiftool_files/lib/Image/ExifTool/FlashPix.pm +69 -8
- package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +3 -1
- package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -4
- package/bin/exiftool_files/lib/Image/ExifTool/InfiRay.pm +227 -0
- package/bin/exiftool_files/lib/Image/ExifTool/JPEG.pm +40 -6
- package/bin/exiftool_files/lib/Image/ExifTool/Matroska.pm +4 -4
- package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +187 -384
- package/bin/exiftool_files/lib/Image/ExifTool/OpenEXR.pm +32 -15
- package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +80 -2
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +19 -4
- package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +127 -39
- package/bin/exiftool_files/lib/Image/ExifTool/README +3 -0
- package/bin/exiftool_files/lib/Image/ExifTool/Real.pm +2 -2
- package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +5 -1
- package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +4544 -4525
- package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +229 -21
- package/bin/exiftool_files/lib/Image/ExifTool/VCard.pm +19 -5
- package/bin/exiftool_files/lib/Image/ExifTool.pm +56 -15
- package/bin/exiftool_files/lib/Image/ExifTool.pod +51 -50
- package/package.json +2 -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)
|