exiftool_vendored 11.98.0 → 11.99.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +14 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +2 -2
- data/bin/lib/Image/ExifTool.pm +1 -1
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/ID3.pm +6 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +18 -18
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +11 -10
- data/bin/lib/Image/ExifTool/Nikon.pm +22 -4
- data/bin/lib/Image/ExifTool/Pentax.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +53 -4
- data/bin/lib/Image/ExifTool/README +1 -1
- data/bin/lib/Image/ExifTool/RTF.pm +12 -7
- data/bin/lib/Image/ExifTool/Sony.pm +3 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +7 -2
- data/bin/lib/Image/ExifTool/TagNames.pod +15 -2
- data/bin/lib/Image/ExifTool/WriteExif.pl +2 -2
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 01eeff66f9e45f6f726a4e44141317b4eac1becc2ae9eb079f4a9aad0b05291f
|
4
|
+
data.tar.gz: 4a26cd2011a6c4d1fb4aeb9b696b190d5fb83d8d61bd35cd24a90b2c00e7480a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8d2f03f98474b2af36bf5fa1b1163228c61727d374273fddf69209443d72c6fd952a4ae82350897573fab244e79d12151de5e4a6648bd30296b59b0c98203930
|
7
|
+
data.tar.gz: dbe7f778f5a9d034303b738bd3258d05bdccbeb0ba44fb897095d987952c4461580b092be2e3a1bd71ac0b546a97bd901293f2adc10904ad2aaad3d28e483a47
|
data/bin/Changes
CHANGED
@@ -7,6 +7,20 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 11.85. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to CPAN.)
|
9
9
|
|
10
|
+
May 11, 2020 - Version 11.99
|
11
|
+
|
12
|
+
- Added a new Nikon LensID (thanks Mykyta Kozlov)
|
13
|
+
- Added a new Canon LensType
|
14
|
+
- Added a newn PentaxModelID
|
15
|
+
- Decode a few new QuickTime tags
|
16
|
+
- Decode new ID3 Grouping tag
|
17
|
+
- Decode a few more MinoltaRaw tags (thanks LibRaw)
|
18
|
+
- Fixed runtime warning which could occur when reading corrupted RTF files
|
19
|
+
- Fixed another potential pitfall in M2TS Duration calculation
|
20
|
+
- Fixed problem extracting some unknown QuickTime:Keys tags
|
21
|
+
- Fixed problem decoding Nikon D850 orientation tags
|
22
|
+
- Fixed bug where TIFF image data may not be padded to an even number of bytes
|
23
|
+
|
10
24
|
May 1, 2020 - Version 11.98
|
11
25
|
|
12
26
|
- Added a new Nikon LensID (thanks Warren Hatch)
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -105,8 +105,8 @@ your home directory, then you would type the following commands in a
|
|
105
105
|
terminal window to extract and run ExifTool:
|
106
106
|
|
107
107
|
cd ~/Desktop
|
108
|
-
gzip -dc Image-ExifTool-11.
|
109
|
-
cd Image-ExifTool-11.
|
108
|
+
gzip -dc Image-ExifTool-11.99.tar.gz | tar -xf -
|
109
|
+
cd Image-ExifTool-11.99
|
110
110
|
./exiftool t/images/ExifTool.jpg
|
111
111
|
|
112
112
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
use strict;
|
11
11
|
require 5.004;
|
12
12
|
|
13
|
-
my $version = '11.
|
13
|
+
my $version = '11.99';
|
14
14
|
|
15
15
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
16
16
|
my $exeDir;
|
@@ -5286,7 +5286,7 @@ with this command:
|
|
5286
5286
|
|
5287
5287
|
produces output like this:
|
5288
5288
|
|
5289
|
-
-- Generated by ExifTool 11.
|
5289
|
+
-- Generated by ExifTool 11.99 --
|
5290
5290
|
File: a.jpg - 2003:10:31 15:44:19
|
5291
5291
|
(f/5.6, 1/60s, ISO 100)
|
5292
5292
|
File: b.jpg - 2006:05:23 11:57:38
|
data/bin/lib/Image/ExifTool.pm
CHANGED
@@ -28,7 +28,7 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
|
|
28
28
|
%mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
|
29
29
|
%jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
|
30
30
|
|
31
|
-
$VERSION = '11.
|
31
|
+
$VERSION = '11.99';
|
32
32
|
$RELEASE = '';
|
33
33
|
@ISA = qw(Exporter);
|
34
34
|
%EXPORT_TAGS = (
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.38';
|
92
92
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
@@ -474,8 +474,9 @@ $VERSION = '4.37';
|
|
474
474
|
253.1 => 'Canon EF 70-200mm f/2.8L IS III USM + 2x', #PH (NC)
|
475
475
|
# 253.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD G2 (A025) + 2x', #forum9367
|
476
476
|
254 => 'Canon EF 100mm f/2.8L Macro IS USM', #42
|
477
|
-
255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other
|
477
|
+
255 => 'Sigma 24-105mm f/4 DG OS HSM | A or Other Lens', #50
|
478
478
|
255.1 => 'Sigma 180mm f/2.8 EX DG OS HSM APO Macro', #50
|
479
|
+
255.2 => 'Tamron SP 70-200mm f/2.8 Di VC USD', #exiv issue 1202 (A009)
|
479
480
|
368 => 'Sigma 14-24mm f/2.8 DG HSM | A or other Sigma Lens', #IB (A018)
|
480
481
|
368.1 => 'Sigma 20mm f/1.4 DG HSM | A', #50 (newer firmware)
|
481
482
|
368.2 => 'Sigma 50mm f/1.4 DG HSM | A', #50
|
@@ -16,7 +16,7 @@ use strict;
|
|
16
16
|
use vars qw($VERSION);
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.54';
|
20
20
|
|
21
21
|
sub ProcessID3v2($$$);
|
22
22
|
sub ProcessPrivate($$$);
|
@@ -613,6 +613,9 @@ my %id3v2_common = (
|
|
613
613
|
Name => 'OlympusDSS',
|
614
614
|
SubDirectory => { TagTable => 'Image::ExifTool::Olympus::DSS' },
|
615
615
|
},
|
616
|
+
GRP1 => 'Grouping',
|
617
|
+
MVNM => 'MovementName', # (NC)
|
618
|
+
MVIN => 'MovementNumber', # (NC)
|
616
619
|
);
|
617
620
|
|
618
621
|
# Tags for ID3v2.3 (http://www.id3.org/id3v2.3.0)
|
@@ -1318,6 +1321,8 @@ sub ProcessID3v2($$$)
|
|
1318
1321
|
} elsif ($$tagInfo{Format} or $$tagInfo{SubDirectory}) {
|
1319
1322
|
$et->HandleTag($tagTablePtr, $id, undef, DataPt => \$val);
|
1320
1323
|
next;
|
1324
|
+
} elsif ($id eq 'GRP1' or $id eq 'MVNM' or $id eq 'MVIN') {
|
1325
|
+
$val =~ s/(^\0+|\0+$)//g; # (PH guess)
|
1321
1326
|
} elsif (not $$tagInfo{Binary}) {
|
1322
1327
|
$et->Warn("Don't know how to handle $id frame");
|
1323
1328
|
next;
|
@@ -31,7 +31,7 @@ use strict;
|
|
31
31
|
use vars qw($VERSION);
|
32
32
|
use Image::ExifTool qw(:DataAccess :Utils);
|
33
33
|
|
34
|
-
$VERSION = '1.
|
34
|
+
$VERSION = '1.18';
|
35
35
|
|
36
36
|
# program map table "stream_type" lookup (ref 6/1)
|
37
37
|
my %streamType = (
|
@@ -359,23 +359,26 @@ sub ProcessM2TS($$)
|
|
359
359
|
last unless defined $startTime;
|
360
360
|
# reconfigure to seek backwards for last PCR
|
361
361
|
unless (defined $backScan) {
|
362
|
-
$
|
363
|
-
$verbose and print "[Starting backscan for last PCR]\n";
|
364
|
-
$fwdTime = $endTime;
|
362
|
+
my $saveTime = $endTime;
|
365
363
|
undef $endTime;
|
364
|
+
last if $et->Options('FastScan');
|
365
|
+
$verbose and print $out "[Starting backscan for last PCR]\n";
|
366
366
|
# remember how far we got when reading forward through the file
|
367
367
|
my $fwdPos = $raf->Tell() - length($buff) + $pEnd;
|
368
|
-
# determine the
|
368
|
+
# determine the position of the last packet relative to the EOF
|
369
369
|
$raf->Seek(0, 2) or last;
|
370
370
|
my $fsize = $raf->Tell();
|
371
|
-
|
372
|
-
$backScan = $nPack * $pLen - $fsize;
|
371
|
+
$backScan = int($fsize / $pLen) * $pLen - $fsize;
|
373
372
|
# set limit on how far back we will go
|
374
373
|
$maxBack = $fwdPos - $fsize;
|
375
374
|
# scan back a maximum of 512k (have seen last PCR at -276k)
|
376
|
-
my $nMax = int(512000 / $pLen); # max packets to
|
377
|
-
|
378
|
-
|
375
|
+
my $nMax = int(512000 / $pLen); # max packets to backscan
|
376
|
+
if ($nMax < int(-$maxBack / $pLen)) {
|
377
|
+
$maxBack = $backScan - $nMax * $pLen;
|
378
|
+
} else {
|
379
|
+
# use this time if none found in all remaining packets
|
380
|
+
$fwdTime = $saveTime;
|
381
|
+
}
|
379
382
|
$pEnd = 0;
|
380
383
|
}
|
381
384
|
}
|
@@ -387,15 +390,12 @@ sub ProcessM2TS($$)
|
|
387
390
|
if ($pos < 0) {
|
388
391
|
# read another buffer from end of file
|
389
392
|
last if $backScan <= $maxBack;
|
390
|
-
my $
|
391
|
-
$
|
392
|
-
|
393
|
-
$readThis = $readSize - ($maxBack - $backScan);
|
394
|
-
$backScan = $maxBack;
|
395
|
-
}
|
393
|
+
my $buffLen = $backScan - $maxBack;
|
394
|
+
$buffLen = $readSize if $buffLen > $readSize;
|
395
|
+
$backScan -= $buffLen;
|
396
396
|
$raf->Seek($backScan, 2) or last;
|
397
|
-
$raf->Read($buff, $
|
398
|
-
$pos = $pEnd = $
|
397
|
+
$raf->Read($buff, $buffLen) == $buffLen or last;
|
398
|
+
$pos = $pEnd = $buffLen - $pLen;
|
399
399
|
}
|
400
400
|
} else {
|
401
401
|
$pos = $pEnd;
|
@@ -17,7 +17,7 @@ use vars qw($VERSION);
|
|
17
17
|
use Image::ExifTool qw(:DataAccess :Utils);
|
18
18
|
use Image::ExifTool::Minolta;
|
19
19
|
|
20
|
-
$VERSION = '1.
|
20
|
+
$VERSION = '1.16';
|
21
21
|
|
22
22
|
sub ProcessMRW($$;$);
|
23
23
|
sub WriteMRW($$;$);
|
@@ -59,10 +59,12 @@ sub WriteMRW($$;$);
|
|
59
59
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
60
60
|
WRITABLE => 1,
|
61
61
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
62
|
+
DATAMEMBER => [ 0 ],
|
62
63
|
FIRST_ENTRY => 0,
|
63
64
|
0 => {
|
64
65
|
Name => 'FirmwareID',
|
65
66
|
Format => 'string[8]',
|
67
|
+
RawConv => '$$self{MinoltaPRD} = 1 if $$self{FILE_TYPE} eq "MRW"; $val', # used in decoding RIF info
|
66
68
|
},
|
67
69
|
8 => {
|
68
70
|
Name => 'SensorHeight',
|
@@ -214,38 +216,37 @@ sub WriteMRW($$;$);
|
|
214
216
|
PrintConv => \%Image::ExifTool::Minolta::sonyColorMode,
|
215
217
|
},
|
216
218
|
],
|
217
|
-
# NOTE:
|
219
|
+
# NOTE: WB_RBLevels up to Custom also apply to Minolta models which write PRD info (ref IB)
|
218
220
|
8 => { #3
|
219
221
|
Name => 'WB_RBLevelsTungsten',
|
220
|
-
Condition => '$$self{Model} eq "DSLR-A100"',
|
222
|
+
Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
|
221
223
|
Format => 'int16u[2]',
|
222
224
|
Notes => 'these WB_RBLevels currently decoded only for the Sony A100',
|
223
225
|
},
|
224
226
|
12 => { #3
|
225
227
|
Name => 'WB_RBLevelsDaylight',
|
226
|
-
Condition => '$$self{Model} eq "DSLR-A100"',
|
228
|
+
Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
|
227
229
|
Format => 'int16u[2]',
|
228
230
|
},
|
229
231
|
16 => { #3
|
230
232
|
Name => 'WB_RBLevelsCloudy',
|
231
|
-
Condition => '$$self{Model} eq "DSLR-A100"',
|
233
|
+
Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
|
232
234
|
Format => 'int16u[2]',
|
233
235
|
},
|
234
236
|
20 => { #3
|
235
237
|
Name => 'WB_RBLevelsCoolWhiteF',
|
236
|
-
Condition => '$$self{Model} eq "DSLR-A100"',
|
238
|
+
Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
|
237
239
|
Format => 'int16u[2]',
|
238
240
|
},
|
239
241
|
24 => { #3
|
240
242
|
Name => 'WB_RBLevelsFlash',
|
241
|
-
Condition => '$$self{Model} eq "DSLR-A100"',
|
243
|
+
Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
|
242
244
|
Format => 'int16u[2]',
|
243
245
|
},
|
244
246
|
28 => { #3
|
245
|
-
Name => '
|
246
|
-
Condition => '$$self{Model} eq "DSLR-A100"',
|
247
|
+
Name => 'WB_RBLevelsCustom', #IB
|
248
|
+
Condition => '$$self{Model} eq "DSLR-A100" or $$self{MinoltaPRD}',
|
247
249
|
Format => 'int16u[2]',
|
248
|
-
Unknown => 1,
|
249
250
|
},
|
250
251
|
32 => { #3
|
251
252
|
Name => 'WB_RBLevelsShade',
|
@@ -62,7 +62,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
62
62
|
use Image::ExifTool::Exif;
|
63
63
|
use Image::ExifTool::GPS;
|
64
64
|
|
65
|
-
$VERSION = '3.
|
65
|
+
$VERSION = '3.83';
|
66
66
|
|
67
67
|
sub LensIDConv($$$);
|
68
68
|
sub ProcessNikonAVI($$$);
|
@@ -653,6 +653,7 @@ sub GetAFPointGrid($$;$);
|
|
653
653
|
'00 40 64 64 2C 2C 00 00' => 'Voigtlander APO-Lanthar 90mm F3.5 SLII Close Focus',
|
654
654
|
#
|
655
655
|
'00 40 2D 2D 2C 2C 00 00' => 'Carl Zeiss Distagon T* 3.5/18 ZF.2',
|
656
|
+
'00 48 27 27 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/15 ZF.2', #MykytaKozlov
|
656
657
|
'00 48 32 32 24 24 00 00' => 'Carl Zeiss Distagon T* 2.8/21 ZF.2',
|
657
658
|
'00 54 38 38 18 18 00 00' => 'Carl Zeiss Distagon T* 2/25 ZF.2',
|
658
659
|
'00 54 3C 3C 18 18 00 00' => 'Carl Zeiss Distagon T* 2/28 ZF.2',
|
@@ -1694,7 +1695,8 @@ my %binaryDataAttrs = (
|
|
1694
1695
|
SubDirectory => {
|
1695
1696
|
TagTable => 'Image::ExifTool::Nikon::ShotInfoD850',
|
1696
1697
|
DecryptStart => 4,
|
1697
|
-
DecryptLen =>
|
1698
|
+
DecryptLen => 0x2efb + 12,
|
1699
|
+
DecryptMore => 'Get32u(\$data, 0xa0) + 12',
|
1698
1700
|
ByteOrder => 'LittleEndian',
|
1699
1701
|
},
|
1700
1702
|
},
|
@@ -6250,7 +6252,7 @@ my %nikonFocalConversions = (
|
|
6250
6252
|
# 3 => 'Rotate 180',
|
6251
6253
|
# },
|
6252
6254
|
#},
|
6253
|
-
0x2ea4 => {
|
6255
|
+
0x2ea4 => { #PH
|
6254
6256
|
Name => 'NikonMeteringMode',
|
6255
6257
|
Condition => '$$self{Model} =~ /\bD500\b/', # (didn't seem to work for D5, but I need more samples)
|
6256
6258
|
Notes => 'D500 only',
|
@@ -6627,7 +6629,7 @@ my %nikonFocalConversions = (
|
|
6627
6629
|
WRITE_PROC => \&Image::ExifTool::Nikon::ProcessNikonEncrypted,
|
6628
6630
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
6629
6631
|
VARS => { ID_LABEL => 'Index' },
|
6630
|
-
DATAMEMBER => [ 0x04, 0x58, 0x0fbf ],
|
6632
|
+
DATAMEMBER => [ 0x04, 0x58, 0xa0, 0x0fbf, 0x2efa ],
|
6631
6633
|
IS_SUBDIR => [ 0x1038 ],
|
6632
6634
|
WRITABLE => 1,
|
6633
6635
|
FIRST_ENTRY => 0,
|
@@ -6653,6 +6655,14 @@ my %nikonFocalConversions = (
|
|
6653
6655
|
Hidden => 1,
|
6654
6656
|
RawConv => '$$self{CustomSettingsOffset} = $val || 0x10000000; undef',
|
6655
6657
|
},
|
6658
|
+
0xa0 => {
|
6659
|
+
Name => 'OrientationOffset',
|
6660
|
+
DataMember => 'OrientationOffset',
|
6661
|
+
Format => 'int32u',
|
6662
|
+
Writable => 0,
|
6663
|
+
Hidden => 1,
|
6664
|
+
RawConv => '$$self{OrientationOffset} = $val || 0x10000000; undef',
|
6665
|
+
},
|
6656
6666
|
0x0791 => {
|
6657
6667
|
Name => 'PhotoShootingMenuBankImageArea',
|
6658
6668
|
Mask => 0x07,
|
@@ -6692,6 +6702,14 @@ my %nikonFocalConversions = (
|
|
6692
6702
|
TagTable => 'Image::ExifTool::NikonCustom::SettingsD850',
|
6693
6703
|
},
|
6694
6704
|
},
|
6705
|
+
### 0x2efb - OrientationInfo start (D850 firmware 1.01a)
|
6706
|
+
0x2efa => {
|
6707
|
+
Name => 'Hook1',
|
6708
|
+
Hidden => 1,
|
6709
|
+
RawConv => 'undef',
|
6710
|
+
# account for variable location of OrientationInfo data
|
6711
|
+
Hook => '$varSize = $$self{OrientationOffset} - 0x2efb',
|
6712
|
+
},
|
6695
6713
|
0x2efb => { #28
|
6696
6714
|
Name => 'RollAngle',
|
6697
6715
|
Format => 'fixed32u',
|
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
|
|
58
58
|
use Image::ExifTool::GPS;
|
59
59
|
use Image::ExifTool::HP;
|
60
60
|
|
61
|
-
$VERSION = '3.
|
61
|
+
$VERSION = '3.32';
|
62
62
|
|
63
63
|
sub CryptShutterCount($$);
|
64
64
|
sub PrintFilter($$$);
|
@@ -546,6 +546,7 @@ my %pentaxModelID = (
|
|
546
546
|
0x13222 => 'K-70', #29 (Ricoh)
|
547
547
|
0x1322c => 'KP', #29 (Ricoh)
|
548
548
|
0x13240 => 'K-1 Mark II', # (Ricoh)
|
549
|
+
0x13290 => 'WG-70', # (Ricoh)
|
549
550
|
);
|
550
551
|
|
551
552
|
# Pentax city codes - (PH, Optio WP)
|
@@ -46,7 +46,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
46
46
|
use Image::ExifTool::Exif;
|
47
47
|
use Image::ExifTool::GPS;
|
48
48
|
|
49
|
-
$VERSION = '2.
|
49
|
+
$VERSION = '2.49';
|
50
50
|
|
51
51
|
sub ProcessMOV($$;$);
|
52
52
|
sub ProcessKeys($$$);
|
@@ -5908,6 +5908,24 @@ my %eeBox = (
|
|
5908
5908
|
PrintConv => \&PrintGPSCoordinates,
|
5909
5909
|
PrintConvInv => \&PrintInvGPSCoordinates,
|
5910
5910
|
},
|
5911
|
+
# the following tags written by iTunes 12.5.1.21
|
5912
|
+
# (ref https://www.ventismedia.com/mantis/view.php?id=14963
|
5913
|
+
# https://community.mp3tag.de/t/x-mp4-new-tag-problems/19488)
|
5914
|
+
"\xa9wrk" => 'Work', #PH
|
5915
|
+
"\xa9mvn" => 'MovementName', #PH
|
5916
|
+
"\xa9mvi" => { #PH
|
5917
|
+
Name => 'MovementNumber',
|
5918
|
+
Format => 'int16s',
|
5919
|
+
},
|
5920
|
+
"\xa9mvc" => { #PH
|
5921
|
+
Name => 'MovementCount',
|
5922
|
+
Format => 'int16s',
|
5923
|
+
},
|
5924
|
+
shwm => { #PH
|
5925
|
+
Name => 'ShowMovement',
|
5926
|
+
Format => 'int8s',
|
5927
|
+
PrintConv => { 0 => 'No', 1 => 'Yes' },
|
5928
|
+
},
|
5911
5929
|
);
|
5912
5930
|
|
5913
5931
|
# tag decoded from timed face records
|
@@ -6127,6 +6145,21 @@ my %eeBox = (
|
|
6127
6145
|
'detected-face.roll-angle' => { Name => 'DetectedFaceRollAngle', Writable => 0 },
|
6128
6146
|
# (fiel)com.apple.quicktime.detected-face.yaw-angle (dtyp=23, float)
|
6129
6147
|
'detected-face.yaw-angle' => { Name => 'DetectedFaceYawAngle', Writable => 0 },
|
6148
|
+
#
|
6149
|
+
# seen in Apple ProRes RAW file
|
6150
|
+
#
|
6151
|
+
# (mdta)com.apple.proapps.manufacturer (eg. "Sony")
|
6152
|
+
# (mdta)com.apple.proapps.exif.{Exif}.FNumber (float, eg. 1.0)
|
6153
|
+
# (mdta)org.smpte.rdd18.lens.irisfnumber (eg. "F1.0")
|
6154
|
+
# (mdta)com.apple.proapps.exif.{Exif}.ShutterSpeedValue (float, eg. 1.006)
|
6155
|
+
# (mdta)org.smpte.rdd18.camera.shutterspeed_angle (eg. "179.2deg")
|
6156
|
+
# (mdta)org.smpte.rdd18.camera.neutraldensityfilterwheelsetting (eg. "ND1")
|
6157
|
+
# (mdta)org.smpte.rdd18.camera.whitebalance (eg. "4300K")
|
6158
|
+
# (mdta)com.apple.proapps.exif.{Exif}.ExposureIndex (float, eg. 4000)
|
6159
|
+
# (mdta)org.smpte.rdd18.camera.isosensitivity (eg. "4000")
|
6160
|
+
# (mdta)com.apple.proapps.image.{TIFF}.Make (eg. "Atmos")
|
6161
|
+
# (mdta)com.apple.proapps.image.{TIFF}.Model (eg. "ShogunInferno")
|
6162
|
+
# (mdta)com.apple.proapps.image.{TIFF}.Software (eg. "9.0")
|
6130
6163
|
);
|
6131
6164
|
|
6132
6165
|
# iTunes info ('----') atoms
|
@@ -6734,13 +6767,28 @@ my %eeBox = (
|
|
6734
6767
|
Name => 'SchemeInfo',
|
6735
6768
|
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::SchemeInfo' },
|
6736
6769
|
},
|
6770
|
+
enda => {
|
6771
|
+
Name => 'Endianness',
|
6772
|
+
Format => 'int16u',
|
6773
|
+
PrintConv => {
|
6774
|
+
0 => 'Big-endian (Motorola, MM)',
|
6775
|
+
1 => 'Little-endian (Intel, II)',
|
6776
|
+
},
|
6777
|
+
},
|
6737
6778
|
# skcr
|
6738
|
-
# enda
|
6739
6779
|
);
|
6740
6780
|
|
6741
6781
|
%Image::ExifTool::QuickTime::Wave = (
|
6742
6782
|
PROCESS_PROC => \&ProcessMOV,
|
6743
6783
|
frma => 'PurchaseFileFormat',
|
6784
|
+
enda => {
|
6785
|
+
Name => 'Endianness',
|
6786
|
+
Format => 'int16u',
|
6787
|
+
PrintConv => {
|
6788
|
+
0 => 'Big-endian (Motorola, MM)',
|
6789
|
+
1 => 'Little-endian (Intel, II)',
|
6790
|
+
},
|
6791
|
+
},
|
6744
6792
|
# "ms\0\x11" - 20 bytes
|
6745
6793
|
);
|
6746
6794
|
|
@@ -8564,9 +8612,10 @@ sub ProcessKeys($$$)
|
|
8564
8612
|
$$newInfo{Groups} = $groups ? { %$groups } : { };
|
8565
8613
|
$$newInfo{Groups}{$_} or $$newInfo{Groups}{$_} = $$tagTablePtr{GROUPS}{$_} foreach 0..2;
|
8566
8614
|
$$newInfo{Groups}{1} = 'Keys';
|
8567
|
-
} elsif ($tag =~ /^[-\w. ]+$/) {
|
8615
|
+
} elsif ($tag =~ /^[-\w. ]+$/ or $tag =~ /\w{4}/) {
|
8568
8616
|
# create info for tags with reasonable id's
|
8569
8617
|
my $name = ucfirst $tag;
|
8618
|
+
$name =~ tr/-0-9a-zA-Z_. //dc;
|
8570
8619
|
$name =~ s/[. ]+(.?)/\U$1/g;
|
8571
8620
|
$name =~ s/_([a-z])/_\U$1/g;
|
8572
8621
|
$name =~ s/([a-z])_([A-Z])/$1$2/g;
|
@@ -8587,7 +8636,7 @@ sub ProcessKeys($$$)
|
|
8587
8636
|
if ($newInfo) {
|
8588
8637
|
AddTagToTable($itemList, $id, $newInfo);
|
8589
8638
|
$msg or $msg = '';
|
8590
|
-
$out and print $out "$$et{INDENT}Added ItemList Tag $id = $tag$msg\n";
|
8639
|
+
$out and print $out "$$et{INDENT}Added ItemList Tag $id = ($ns) $tag$msg\n";
|
8591
8640
|
}
|
8592
8641
|
$pos += $len;
|
8593
8642
|
++$index;
|
@@ -1083,7 +1083,7 @@ The contained structure field information hashes are similar to tag information
|
|
1083
1083
|
hashes, except that only the following elements are used:
|
1084
1084
|
|
1085
1085
|
Raw/Value/PrintConv (and their inverses), TagID (optional), Groups, List,
|
1086
|
-
Writable, Struct, Namespace, LangCode, PropertyPath, Notes.
|
1086
|
+
Writable, Struct, Namespace, FlatName, LangCode, PropertyPath, Notes.
|
1087
1087
|
|
1088
1088
|
But note that for PropertyPath, only the element of the path corresponding to
|
1089
1089
|
the specific field is stored (including any necessary list properties). The
|
@@ -15,7 +15,7 @@ use strict;
|
|
15
15
|
use vars qw($VERSION);
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.04';
|
19
19
|
|
20
20
|
sub ProcessUserProps($$$);
|
21
21
|
|
@@ -181,12 +181,17 @@ sub UnescapeRTF($$$)
|
|
181
181
|
if ($1 eq 'uc') { # \ucN
|
182
182
|
$skip = $2;
|
183
183
|
} elsif ($1 eq 'u') { # \uN
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
184
|
+
if ($2 < 0) {
|
185
|
+
$et->WarnOnce('Invalid Unicode character(s) in text');
|
186
|
+
$rtnVal .= '?';
|
187
|
+
} else {
|
188
|
+
require Image::ExifTool::Charset;
|
189
|
+
$rtnVal .= Image::ExifTool::Charset::Recompose($et, [$2]);
|
190
|
+
if ($skip) {
|
191
|
+
# must skip the specified number of characters
|
192
|
+
# (not simple because RTF control words count as a single character)
|
193
|
+
last unless $val =~ /\G([^\\]|\\([a-zA-Z]+)(-?\d+)? ?|\\'.{2}|\\.){$skip}/g;
|
194
|
+
}
|
190
195
|
}
|
191
196
|
} elsif ($rtfEntity{$1}) {
|
192
197
|
require Image::ExifTool::Charset;
|
@@ -226,13 +226,15 @@ sub PrintInvLensSpec($;$$);
|
|
226
226
|
# 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
|
227
227
|
# 504xx => 'Sigma 30mm F1.4 DC HSM | A + MC-11', # (013)
|
228
228
|
|
229
|
+
# Note: For Samyang lenses, the "FE" designation isn't written to
|
230
|
+
# EXIF:LensModel, so it isn't included in these strings either - JR/PH
|
229
231
|
51504 => 'Samyang AF 50mm F1.4', #IB
|
230
232
|
51505 => 'Samyang AF 14mm F2.8 or Samyang AF 35mm F2.8', #forum3833
|
231
233
|
51505.1 => 'Samyang AF 35mm F2.8', #PH (also 32794)
|
232
234
|
51507 => 'Samyang AF 35mm F1.4', #IB
|
233
235
|
51508 => 'Samyang AF 45mm F1.8',
|
234
236
|
51510 => 'Samyang AF 18mm F2.8', #JR
|
235
|
-
51512 => 'Samyang AF 75mm F1.8
|
237
|
+
51512 => 'Samyang AF 75mm F1.8', #IB/JR
|
236
238
|
);
|
237
239
|
|
238
240
|
# ExposureProgram values (ref PH, mainly decoded from A200)
|
@@ -4002,6 +4002,9 @@ my %tagLookup = (
|
|
4002
4002
|
'moonphase' => { 367 => 0x12, 368 => 0x43, 369 => 0x4c },
|
4003
4003
|
'morepermissions' => { 460 => 'morePermissions' },
|
4004
4004
|
'motionsensitivity' => { 367 => 0x29, 369 => 0x60 },
|
4005
|
+
'movementcount' => { 358 => "\xa9mvc" },
|
4006
|
+
'movementname' => { 358 => "\xa9mvn" },
|
4007
|
+
'movementnumber' => { 358 => "\xa9mvi" },
|
4005
4008
|
'movieaelockbuttonassignment' => { 279 => '40.1' },
|
4006
4009
|
'moviefunc1button' => { 269 => '41.1', 270 => '41.1', 280 => '41.1' },
|
4007
4010
|
'moviefunctionbutton' => { 267 => '41.1', 279 => '41.1' },
|
@@ -5276,6 +5279,7 @@ my %tagLookup = (
|
|
5276
5279
|
'shotnumbersincepowerup' => { 410 => 0x44e, 426 => 0x1a, 427 => 0x16, 428 => 0xa },
|
5277
5280
|
'shotnumbersincepowerup2' => { 395 => 0x200 },
|
5278
5281
|
'shotsize' => { 488 => 'shotSize' },
|
5282
|
+
'showmovement' => { 358 => 'shwm' },
|
5279
5283
|
'shownevent' => { 474 => 'EventExt' },
|
5280
5284
|
'showneventidentifier' => { 474 => [\'EventExt','EventExtIdentifier'] },
|
5281
5285
|
'showneventname' => { 474 => [\'EventExt','EventExtName'] },
|
@@ -6027,7 +6031,7 @@ my %tagLookup = (
|
|
6027
6031
|
'wb_rblevelscloudy' => { 182 => 0x3f0, 184 => 0x10, 196 => 0x296, 291 => 0x121 },
|
6028
6032
|
'wb_rblevelscoolwhitef' => { 182 => 0x308, 184 => 0x14 },
|
6029
6033
|
'wb_rblevelscoolwhitefluor' => { 291 => 0x132 },
|
6030
|
-
'wb_rblevelscustom' => { 182 => 0x424 },
|
6034
|
+
'wb_rblevelscustom' => { 182 => 0x424, 184 => 0x1c },
|
6031
6035
|
'wb_rblevelscwb1' => { 287 => 0x10e },
|
6032
6036
|
'wb_rblevelscwb2' => { 287 => 0x10f },
|
6033
6037
|
'wb_rblevelscwb3' => { 287 => 0x110 },
|
@@ -6044,7 +6048,6 @@ my %tagLookup = (
|
|
6044
6048
|
'wb_rblevelsincandescent' => { 196 => 0x282 },
|
6045
6049
|
'wb_rblevelsshade' => { 182 => 0x418, 184 => 0x20, 196 => 0x2b2, 291 => 0x120 },
|
6046
6050
|
'wb_rblevelstungsten' => { 182 => 0x3e8, 184 => 0x8, 291 => 0x123 },
|
6047
|
-
'wb_rblevelsunknown' => { 184 => 0x1c },
|
6048
6051
|
'wb_rblevelsused' => { 291 => 0x100 },
|
6049
6052
|
'wb_rblevelswhitef' => { 184 => 0x2c },
|
6050
6053
|
'wb_rblevelswhitefluorescent' => { 291 => 0x133 },
|
@@ -6222,6 +6225,7 @@ my %tagLookup = (
|
|
6222
6225
|
'windowsatominvocationflags' => { 463 => [\'windowsAtom','windowsAtomInvocationFlags'] },
|
6223
6226
|
'windowsatomuncprojectpath' => { 463 => [\'windowsAtom','windowsAtomUncProjectPath'] },
|
6224
6227
|
'wordcount' => { 478 => 'wordCount' },
|
6228
|
+
'work' => { 358 => "\xa9wrk" },
|
6225
6229
|
'workcolorspace' => { 100 => 0x10200, 105 => 0x270 },
|
6226
6230
|
'workflowtag' => { 474 => 'WorkflowTag' },
|
6227
6231
|
'workflowtagcvid' => { 474 => [\'WorkflowTag','WorkflowTagCvId'] },
|
@@ -7640,6 +7644,7 @@ my %tagExists = (
|
|
7640
7644
|
'encrypt' => 1,
|
7641
7645
|
'encryption' => 1,
|
7642
7646
|
'enddate' => 1,
|
7647
|
+
'endianness' => 1,
|
7643
7648
|
'endpoints' => 1,
|
7644
7649
|
'endtime' => 1,
|
7645
7650
|
'endtimecode' => 1,
|
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
12
12
|
=head1 TAG TABLES
|
13
13
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
15
|
-
They contain a total of
|
15
|
+
They contain a total of 23378 tags, with 15312 unique tag names.
|
16
16
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
@@ -18950,7 +18950,7 @@ These tags are used in Minolta RAW format (MRW) images.
|
|
18950
18950
|
16 WB_RBLevelsCloudy int16u[2]
|
18951
18951
|
20 WB_RBLevelsCoolWhiteF int16u[2]
|
18952
18952
|
24 WB_RBLevelsFlash int16u[2]
|
18953
|
-
28
|
18953
|
+
28 WB_RBLevelsCustom int16u[2]
|
18954
18954
|
32 WB_RBLevelsShade int16u[2]
|
18955
18955
|
36 WB_RBLevelsDaylightF int16u[2]
|
18956
18956
|
40 WB_RBLevelsDayWhiteF int16u[2]
|
@@ -24260,9 +24260,12 @@ software.
|
|
24260
24260
|
'APIC-2' PictureType no
|
24261
24261
|
'APIC-3' PictureDescription no
|
24262
24262
|
'COMM' Comment no
|
24263
|
+
'GRP1' Grouping no
|
24263
24264
|
'IPLS' InvolvedPeople no
|
24264
24265
|
'ITNU' iTunesU? no
|
24265
24266
|
'MCDI' MusicCDIdentifier no
|
24267
|
+
'MVIN' MovementNumber no
|
24268
|
+
'MVNM' MovementName no
|
24266
24269
|
'OWNE' Ownership no
|
24267
24270
|
'PCNT' PlayCounter no
|
24268
24271
|
'PCST' Podcast? no
|
@@ -24362,8 +24365,11 @@ software.
|
|
24362
24365
|
'APIC-2' PictureType no
|
24363
24366
|
'APIC-3' PictureDescription no
|
24364
24367
|
'COMM' Comment no
|
24368
|
+
'GRP1' Grouping no
|
24365
24369
|
'ITNU' iTunesU? no
|
24366
24370
|
'MCDI' MusicCDIdentifier no
|
24371
|
+
'MVIN' MovementNumber no
|
24372
|
+
'MVNM' MovementName no
|
24367
24373
|
'OWNE' Ownership no
|
24368
24374
|
'PCNT' PlayCounter no
|
24369
24375
|
'PCST' Podcast? no
|
@@ -25466,6 +25472,7 @@ API QuickTimeHandler option may be used to include an 'mdir' Handler box.
|
|
25466
25472
|
'rldt' ReleaseDate string
|
25467
25473
|
'rtng' Rating int8u
|
25468
25474
|
'sfID' AppleStoreCountry int32u
|
25475
|
+
'shwm' ShowMovement int8s
|
25469
25476
|
'soaa' SortAlbumArtist string
|
25470
25477
|
'soal' SortAlbum string
|
25471
25478
|
'soar' SortArtist string
|
@@ -25494,11 +25501,15 @@ API QuickTimeHandler option may be used to include an 'mdir' Handler box.
|
|
25494
25501
|
"\xa9gen" Genre string
|
25495
25502
|
"\xa9grp" Grouping string
|
25496
25503
|
"\xa9lyr" Lyrics string
|
25504
|
+
"\xa9mvc" MovementCount int16s
|
25505
|
+
"\xa9mvi" MovementNumber int16s
|
25506
|
+
"\xa9mvn" MovementName string
|
25497
25507
|
"\xa9nam" Title string
|
25498
25508
|
"\xa9nrt" Narrator string
|
25499
25509
|
"\xa9pub" Publisher string
|
25500
25510
|
"\xa9too" Encoder string
|
25501
25511
|
"\xa9trk" Track string
|
25512
|
+
"\xa9wrk" Work string
|
25502
25513
|
"\xa9wrt" Composer string
|
25503
25514
|
"\xa9xyz" GPSCoordinates string
|
25504
25515
|
|
@@ -25858,6 +25869,7 @@ Child atoms found in "sinf" and/or "pinf" atoms.
|
|
25858
25869
|
|
25859
25870
|
Tag ID Tag Name Writable
|
25860
25871
|
------ -------- --------
|
25872
|
+
'enda' Endianness no
|
25861
25873
|
'frma' OriginalFormat no
|
25862
25874
|
'schi' SchemeInfo QuickTime SchemeInfo
|
25863
25875
|
'schm' SchemeType QuickTime SchemeType
|
@@ -25898,6 +25910,7 @@ Child atoms found in "sinf" and/or "pinf" atoms.
|
|
25898
25910
|
|
25899
25911
|
Tag ID Tag Name Writable
|
25900
25912
|
------ -------- --------
|
25913
|
+
'enda' Endianness no
|
25901
25914
|
'frma' PurchaseFileFormat no
|
25902
25915
|
|
25903
25916
|
=head3 QuickTime ImageDesc Tags
|
@@ -2297,8 +2297,8 @@ NoOverwrite: next if $isNew > 0;
|
|
2297
2297
|
} elsif ($ifd < 0) {
|
2298
2298
|
# pad if necessary (but don't pad contiguous image blocks)
|
2299
2299
|
my $pad = 0;
|
2300
|
-
++$pad if $size & 0x01 and ($n+1 >= $count or
|
2301
|
-
$oldEnd != $$oldOffset[$n+1]);
|
2300
|
+
++$pad if ($blockSize + $size) & 0x01 and ($n+1 >= $count or
|
2301
|
+
not $oldEnd or $oldEnd != $$oldOffset[$n+1]);
|
2302
2302
|
# preserve original image padding if specified
|
2303
2303
|
if ($$origDirInfo{PreserveImagePadding} and $n+1 < $count and
|
2304
2304
|
$oldEnd and $$oldOffset[$n+1] > $oldEnd)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exiftool_vendored
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 11.
|
4
|
+
version: 11.99.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew McEachen
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2020-05-
|
12
|
+
date: 2020-05-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: exiftool
|
@@ -450,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
450
450
|
- !ruby/object:Gem::Version
|
451
451
|
version: '0'
|
452
452
|
requirements: []
|
453
|
-
rubygems_version: 3.1.
|
453
|
+
rubygems_version: 3.1.3
|
454
454
|
signing_key:
|
455
455
|
specification_version: 4
|
456
456
|
summary: Vendored version of exiftool
|