exiftool_vendored 11.49.0 → 11.50.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 +16 -1
- data/bin/MANIFEST +2 -0
- data/bin/META.json +4 -3
- data/bin/META.yml +15 -14
- data/bin/README +7 -5
- data/bin/config_files/rotate_regions.config +173 -0
- data/bin/config_files/tiff_version.config +121 -0
- data/bin/exiftool +16 -15
- data/bin/lib/Image/ExifTool.pm +26 -19
- data/bin/lib/Image/ExifTool.pod +5 -2
- data/bin/lib/Image/ExifTool/Audible.pm +2 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +25 -21
- data/bin/lib/Image/ExifTool/Canon.pm +13 -9
- data/bin/lib/Image/ExifTool/CanonVRD.pm +4 -4
- data/bin/lib/Image/ExifTool/DjVu.pm +1 -2
- data/bin/lib/Image/ExifTool/EXE.pm +1 -1
- data/bin/lib/Image/ExifTool/Exif.pm +44 -6
- data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
- data/bin/lib/Image/ExifTool/FlashPix.pm +12 -9
- data/bin/lib/Image/ExifTool/GPS.pm +3 -3
- data/bin/lib/Image/ExifTool/GoPro.pm +4 -4
- data/bin/lib/Image/ExifTool/H264.pm +2 -2
- data/bin/lib/Image/ExifTool/HP.pm +1 -1
- data/bin/lib/Image/ExifTool/Kodak.pm +1 -1
- data/bin/lib/Image/ExifTool/MIE.pm +3 -3
- data/bin/lib/Image/ExifTool/MPF.pm +2 -2
- data/bin/lib/Image/ExifTool/MWG.pm +1 -1
- data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
- data/bin/lib/Image/ExifTool/Matroska.pm +1 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +58 -56
- data/bin/lib/Image/ExifTool/Nikon.pm +1 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -2
- data/bin/lib/Image/ExifTool/OpenEXR.pm +2 -2
- data/bin/lib/Image/ExifTool/PDF.pm +4 -4
- data/bin/lib/Image/ExifTool/PICT.pm +3 -3
- data/bin/lib/Image/ExifTool/PNG.pm +2 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +1 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +1 -2
- data/bin/lib/Image/ExifTool/PostScript.pm +4 -4
- data/bin/lib/Image/ExifTool/QuickTime.pm +37 -15
- data/bin/lib/Image/ExifTool/RIFF.pm +3 -2
- data/bin/lib/Image/ExifTool/RSRC.pm +1 -1
- data/bin/lib/Image/ExifTool/Samsung.pm +1 -1
- data/bin/lib/Image/ExifTool/Sony.pm +4 -2
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +2 -2
- data/bin/lib/Image/ExifTool/TagLookup.pm +9 -7
- data/bin/lib/Image/ExifTool/TagNames.pod +31 -21
- data/bin/lib/Image/ExifTool/VCard.pm +1 -1
- data/bin/lib/Image/ExifTool/Validate.pm +2 -2
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +11 -6
- data/bin/lib/Image/ExifTool/XMP.pm +3 -7
- data/bin/lib/Image/ExifTool/XMPStruct.pl +2 -1
- data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
- data/bin/lib/Image/ExifTool/iWork.pm +1 -1
- data/bin/perl-Image-ExifTool.spec +3 -3
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +4 -2
@@ -150,8 +150,8 @@ my $blankFooter = "CANON OPTIONAL DATA\0" . ("\0" x 42) . "\xff\xd9";
|
|
150
150
|
},{
|
151
151
|
Name => 'IHL_EXIF',
|
152
152
|
Notes => q{
|
153
|
-
extracted as a block if the Unknown option is used, or processed as the
|
154
|
-
first sub-document with the ExtractEmbedded option
|
153
|
+
extracted as a block if the L<Unknown|../ExifTool.html#Unknown> option is used, or processed as the
|
154
|
+
first sub-document with the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option
|
155
155
|
},
|
156
156
|
Binary => 1,
|
157
157
|
Unknown => 1,
|
@@ -1818,7 +1818,7 @@ sub ProcessDR4($$;$)
|
|
1818
1818
|
if (not $format) {
|
1819
1819
|
$val = unpack 'H*', substr($$dataPt, $off, $len);
|
1820
1820
|
$format = 'undef';
|
1821
|
-
} elsif ($format eq 'double' and $len
|
1821
|
+
} elsif ($format eq 'double' and $len == 8) {
|
1822
1822
|
# avoid teeny weeny values
|
1823
1823
|
$val = ReadValue($dataPt, $off, $format, undef, $len);
|
1824
1824
|
$val = 0 if abs($val) < 1e-100;
|
@@ -2134,7 +2134,7 @@ sub ProcessCanonVRD($$;$)
|
|
2134
2134
|
$blockType = Get32u($dataPt, $pos);
|
2135
2135
|
$blockLen = Get32u($dataPt, $pos + 4);
|
2136
2136
|
}
|
2137
|
-
$vrdType = 'DR4' if $blockType
|
2137
|
+
$vrdType = 'DR4' if $blockType == 0xffff00f7;
|
2138
2138
|
$pos += 8; # move to start of block
|
2139
2139
|
if ($pos + $blockLen > $end) {
|
2140
2140
|
$et->Warn('Possibly corrupt CanonVRD block');
|
@@ -235,8 +235,7 @@ Tok: for (;;) {
|
|
235
235
|
pos($$dataPt) = pos($$dataPt) - 1;
|
236
236
|
# allow anything in key but whitespace, braces and double quotes
|
237
237
|
# (this is one of those assumptions I mentioned)
|
238
|
-
$$dataPt =~ /([^\s()"]+)/sg;
|
239
|
-
$tok = $1;
|
238
|
+
$tok = $$dataPt =~ /([^\s()"]+)/sg ? $1 : undef;
|
240
239
|
}
|
241
240
|
push @toks, $tok if defined $tok;
|
242
241
|
}
|
@@ -55,7 +55,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
55
55
|
use Image::ExifTool qw(:DataAccess :Utils);
|
56
56
|
use Image::ExifTool::MakerNotes;
|
57
57
|
|
58
|
-
$VERSION = '4.
|
58
|
+
$VERSION = '4.16';
|
59
59
|
|
60
60
|
sub ProcessExif($$$);
|
61
61
|
sub WriteExif($$$);
|
@@ -4834,7 +4834,7 @@ sub ConvertExifText($$;$$)
|
|
4834
4834
|
$type = $1;
|
4835
4835
|
$str = $et->Decode($str, 'JIS', 'Unknown');
|
4836
4836
|
} else {
|
4837
|
-
$tag = $asciiFlex if $asciiFlex and $asciiFlex ne 1;
|
4837
|
+
$tag = $asciiFlex if $asciiFlex and $asciiFlex ne '1';
|
4838
4838
|
$et->Warn('Invalid EXIF text encoding' . ($tag ? " for $tag" : ''));
|
4839
4839
|
$str = $id . $str;
|
4840
4840
|
}
|
@@ -5064,6 +5064,37 @@ sub GetLensInfo($;$)
|
|
5064
5064
|
return @a;
|
5065
5065
|
}
|
5066
5066
|
|
5067
|
+
#------------------------------------------------------------------------------
|
5068
|
+
# Match lens in list of possbilities based on value of LensModel
|
5069
|
+
# Inputs: 0) reference to list of possible models, 1) LensModel string
|
5070
|
+
# - updates list on return; guaranteed not to remove all list entries
|
5071
|
+
sub MatchLensModel($$)
|
5072
|
+
{
|
5073
|
+
my ($try, $lensModel) = @_;
|
5074
|
+
if (@$try > 1 and $lensModel) {
|
5075
|
+
my (@filt, $pat);
|
5076
|
+
# filter by focal length
|
5077
|
+
if ($lensModel =~ /((\d+-)?\d+mm)/) {
|
5078
|
+
my $focal = $1;
|
5079
|
+
@filt = grep /$focal/, @$try;
|
5080
|
+
@$try = @filt if @filt and @filt < @$try;
|
5081
|
+
}
|
5082
|
+
# filter by aperture
|
5083
|
+
if (@$try > 1 and $lensModel =~ m{(?:F/?|1:)(\d+(\.\d+)?)}i) {
|
5084
|
+
my $fnum = $1;
|
5085
|
+
@filt = grep m{(F/?|1:)$fnum\b}i, @$try;
|
5086
|
+
@$try = @filt if @filt and @filt < @$try;
|
5087
|
+
}
|
5088
|
+
# filter by model version, and other lens parameters
|
5089
|
+
foreach $pat ('I+', 'USM') {
|
5090
|
+
next unless @$try > 1 and $lensModel =~ /\b($pat)\b/;
|
5091
|
+
my $val = $1;
|
5092
|
+
@filt = grep /\b$val\b/, @$try;
|
5093
|
+
@$try = @filt if @filt and @filt < @$try;
|
5094
|
+
}
|
5095
|
+
}
|
5096
|
+
}
|
5097
|
+
|
5067
5098
|
#------------------------------------------------------------------------------
|
5068
5099
|
# Attempt to identify the specific lens if multiple lenses have the same LensType
|
5069
5100
|
# Inputs: 0) ExifTool object ref, 1) LensType print value, 2) PrintConv hash ref,
|
@@ -5222,9 +5253,12 @@ sub PrintLensID($$@)
|
|
5222
5253
|
}
|
5223
5254
|
return join(' or ', @user);
|
5224
5255
|
}
|
5225
|
-
# return the best match(es) from the possible lenses
|
5226
|
-
|
5227
|
-
|
5256
|
+
# return the best match(es) from the possible lenses, after checking against LensModel
|
5257
|
+
@best = @matches unless @best;
|
5258
|
+
if (@best) {
|
5259
|
+
MatchLensModel(\@best, $lensModel);
|
5260
|
+
return join(' or ', @best);
|
5261
|
+
}
|
5228
5262
|
$lens = $$printConv{$lensType};
|
5229
5263
|
return $lensModel if $lensModel and $lens =~ / or /; # (eg. Sony NEX-5N)
|
5230
5264
|
return $lens;
|
@@ -5462,6 +5496,7 @@ sub ProcessExif($$$)
|
|
5462
5496
|
my $raf = $$dirInfo{RAF};
|
5463
5497
|
my $verbose = $et->Options('Verbose');
|
5464
5498
|
my $validate = $et->Options('Validate');
|
5499
|
+
my $saveFormat = $et->Options('SaveFormat');
|
5465
5500
|
my $htmlDump = $$et{HTML_DUMP};
|
5466
5501
|
my $success = 1;
|
5467
5502
|
my ($tagKey, $dirSize, $makerAddr, $strEnc, %offsetInfo, $offName, $nextOffName);
|
@@ -5639,6 +5674,8 @@ sub ProcessExif($$$)
|
|
5639
5674
|
my $valuePtr = $entry + 8; # pointer to value within $$dataPt
|
5640
5675
|
my $tagInfo = $et->GetTagInfo($tagTablePtr, $tagID);
|
5641
5676
|
my ($origFormStr, $bad, $rational, $subOffName);
|
5677
|
+
# save the EXIF format codes if requested
|
5678
|
+
$$et{SaveFormat}{$saveFormat = $formatStr} = 1 if $saveFormat;
|
5642
5679
|
# hack to patch incorrect count in Kodak SubIFD3 tags
|
5643
5680
|
if ($count < 2 and ref $$tagTablePtr{$tagID} eq 'HASH' and $$tagTablePtr{$tagID}{FixCount}) {
|
5644
5681
|
$offList or ($offList, $offHash) = GetOffList($dataPt, $dirStart, $dataPos,
|
@@ -5904,7 +5941,7 @@ sub ProcessExif($$$)
|
|
5904
5941
|
# (avoids long delays when processing some corrupted files)
|
5905
5942
|
if ($count > 100000 and $formatStr !~ /^(undef|string|binary)$/) {
|
5906
5943
|
my $tagName = $tagInfo ? $$tagInfo{Name} : sprintf('tag 0x%.4x', $tagID);
|
5907
|
-
if ($tagName ne 'TransferFunction' or $count
|
5944
|
+
if ($tagName ne 'TransferFunction' or $count != 196608) {
|
5908
5945
|
my $minor = $count > 2000000 ? 0 : 2;
|
5909
5946
|
next if $et->Warn("Ignoring $dirName $tagName with excessive count", $minor);
|
5910
5947
|
}
|
@@ -6295,6 +6332,7 @@ sub ProcessExif($$$)
|
|
6295
6332
|
$et->SetGroup($tagKey, $dirName) if $$tagTablePtr{SET_GROUP1};
|
6296
6333
|
# save original components of rational numbers (used when copying)
|
6297
6334
|
$$et{RATIONAL}{$tagKey} = $rational if defined $rational;
|
6335
|
+
$$et{TAG_EXTRA}{$tagKey}{G6} = $saveFormat if $saveFormat;
|
6298
6336
|
}
|
6299
6337
|
}
|
6300
6338
|
|
@@ -1341,7 +1341,7 @@ sub GetImageType($$$)
|
|
1341
1341
|
sub UnescapeFLIR($)
|
1342
1342
|
{
|
1343
1343
|
my $char = shift;
|
1344
|
-
return $char unless length $char
|
1344
|
+
return $char unless length $char == 4; # escaped ASCII char (eg. '\\')
|
1345
1345
|
my $val = hex $char;
|
1346
1346
|
return chr($val) if $val < 0x80; # simple ASCII
|
1347
1347
|
return pack('C0U', $val) if $] >= 5.006001;
|
@@ -21,7 +21,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
21
21
|
use Image::ExifTool::Exif;
|
22
22
|
use Image::ExifTool::ASF; # for GetGUID()
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.37';
|
25
25
|
|
26
26
|
sub ProcessFPX($$);
|
27
27
|
sub ProcessFPXR($$$);
|
@@ -125,7 +125,7 @@ my @dirEntryType = qw(INVALID STORAGE STREAM LOCKBYTES PROPERTY ROOT);
|
|
125
125
|
# list of code pages used by Microsoft
|
126
126
|
# (ref http://msdn.microsoft.com/en-us/library/dd317756(VS.85).aspx)
|
127
127
|
my %codePage = (
|
128
|
-
|
128
|
+
37 => 'IBM EBCDIC US-Canada',
|
129
129
|
437 => 'DOS United States',
|
130
130
|
500 => 'IBM EBCDIC International',
|
131
131
|
708 => 'Arabic (ASMO 708)',
|
@@ -1175,11 +1175,11 @@ my %fpxFileType = (
|
|
1175
1175
|
VARS => { NO_ID => 1 },
|
1176
1176
|
CommentBy => {
|
1177
1177
|
Groups => { 2 => 'Author' },
|
1178
|
-
Notes => 'enable Duplicates option to extract all entries',
|
1178
|
+
Notes => 'enable L<Duplicates|../ExifTool.html#Duplicates> option to extract all entries',
|
1179
1179
|
},
|
1180
1180
|
LastSavedBy => {
|
1181
1181
|
Groups => { 2 => 'Author' },
|
1182
|
-
Notes => 'enable Duplicates option to extract history of up to 10 entries',
|
1182
|
+
Notes => 'enable L<Duplicates|../ExifTool.html#Duplicates> option to extract history of up to 10 entries',
|
1183
1183
|
},
|
1184
1184
|
DOP => { SubDirectory => { TagTable => 'Image::ExifTool::FlashPix::DOP' } },
|
1185
1185
|
ModifyDate => {
|
@@ -1439,7 +1439,7 @@ sub ReadFPXValue($$$$$;$$)
|
|
1439
1439
|
my $charset = $Image::ExifTool::charsetName{"cp$codePage"};
|
1440
1440
|
if ($charset) {
|
1441
1441
|
$val = $et->Decode($val, $charset);
|
1442
|
-
} elsif ($codePage
|
1442
|
+
} elsif ($codePage == 1200) { # UTF-16, little endian
|
1443
1443
|
$val = $et->Decode($val, 'UCS2', 'II');
|
1444
1444
|
}
|
1445
1445
|
}
|
@@ -1577,14 +1577,16 @@ sub ProcessDocumentTable($)
|
|
1577
1577
|
my $key = 'TableOffsets' . ($i ? " ($i)" : '');
|
1578
1578
|
my $offsets = $$value{$key};
|
1579
1579
|
last unless defined $offsets;
|
1580
|
-
my $doc
|
1580
|
+
my $doc;
|
1581
|
+
$doc = $$extra{$key}{G3} if $$extra{$key};
|
1581
1582
|
$doc = '' unless $doc;
|
1582
1583
|
# get DocFlags for this sub-document
|
1583
1584
|
my ($docFlags, $docTable);
|
1584
1585
|
for ($j=0; ; ++$j) {
|
1585
1586
|
my $key = 'DocFlags' . ($j ? " ($j)" : '');
|
1586
1587
|
last unless defined $$value{$key};
|
1587
|
-
my $tmp
|
1588
|
+
my $tmp;
|
1589
|
+
$tmp = $$extra{$key}{G3} if $$extra{$key};
|
1588
1590
|
$tmp = '' unless $tmp;
|
1589
1591
|
if ($tmp eq $doc) {
|
1590
1592
|
$docFlags = $$value{$key};
|
@@ -1597,7 +1599,8 @@ sub ProcessDocumentTable($)
|
|
1597
1599
|
for ($j=0; ; ++$j) {
|
1598
1600
|
my $key = $tag . ($j ? " ($j)" : '');
|
1599
1601
|
last unless defined $$value{$key};
|
1600
|
-
my $tmp
|
1602
|
+
my $tmp;
|
1603
|
+
$tmp = $$extra{$key}{G3} if $$extra{$key};
|
1601
1604
|
$tmp = '' unless $tmp;
|
1602
1605
|
if ($tmp eq $doc) {
|
1603
1606
|
$docTable = \$$value{$key};
|
@@ -1995,7 +1998,7 @@ sub ProcessFPXR($$$)
|
|
1995
1998
|
$et->Warn("Unlisted FPXR segment (index $index)") if $index != 255;
|
1996
1999
|
}
|
1997
2000
|
|
1998
|
-
} elsif ($type
|
2001
|
+
} elsif ($type != 3) { # not a "Reserved" segment
|
1999
2002
|
|
2000
2003
|
$et->Warn("Unknown FPXR segment (type $type)");
|
2001
2004
|
|
@@ -383,11 +383,11 @@ my %coordConv = (
|
|
383
383
|
my $alt = $val[0];
|
384
384
|
$alt = $val[2] unless defined $alt;
|
385
385
|
return undef unless defined $alt and IsFloat($alt);
|
386
|
-
return
|
386
|
+
return(($val[1] || $val[3]) ? -$alt : $alt);
|
387
387
|
},
|
388
388
|
PrintConv => q{
|
389
389
|
$val = int($val * 10) / 10;
|
390
|
-
return
|
390
|
+
return(($val =~ s/^-// ? "$val m Below" : "$val m Above") . " Sea Level");
|
391
391
|
},
|
392
392
|
},
|
393
393
|
GPSDestLatitude => {
|
@@ -459,7 +459,7 @@ sub ToDMS($$;$$)
|
|
459
459
|
|
460
460
|
unless (length $val) {
|
461
461
|
# don't convert an empty value
|
462
|
-
return $val if $doPrintConv and $doPrintConv eq 1; # avoid hiding existing tag when extracting
|
462
|
+
return $val if $doPrintConv and $doPrintConv eq '1'; # avoid hiding existing tag when extracting
|
463
463
|
return undef; # avoid writing empty value
|
464
464
|
}
|
465
465
|
if ($ref) {
|
@@ -66,9 +66,9 @@ my %addUnits = (
|
|
66
66
|
GROUPS => { 2 => 'Camera' },
|
67
67
|
NOTES => q{
|
68
68
|
Tags extracted from the GPMF box of GoPro MP4 videos, the APP6 "GoPro" segment
|
69
|
-
of JPEG files, and from the "gpmd" timed metadata if the ExtractEmbedded option
|
69
|
+
of JPEG files, and from the "gpmd" timed metadata if the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> option
|
70
70
|
is enabled. Many more tags exist, but are currently unknown and extracted only
|
71
|
-
with the -u option. Please let me know if you discover the meaning of any of
|
71
|
+
with the L<Unknown|../ExifTool.html#Unknown> (-u) option. Please let me know if you discover the meaning of any of
|
72
72
|
these unknown tags. See L<https://github.com/gopro/gpmf-parser> for details
|
73
73
|
about this format.
|
74
74
|
},
|
@@ -468,7 +468,7 @@ my %addUnits = (
|
|
468
468
|
GROUPS => { 2 => 'Camera' },
|
469
469
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
470
470
|
NOTES => q{
|
471
|
-
Tags extracted from the MP4 "fdsc" timed metadata when the ExtractEmbedded
|
471
|
+
Tags extracted from the MP4 "fdsc" timed metadata when the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded>
|
472
472
|
option is used.
|
473
473
|
},
|
474
474
|
0x08 => { Name => 'FirmwareVersion', Format => 'string[15]' },
|
@@ -613,7 +613,7 @@ sub ProcessGoPro($$$)
|
|
613
613
|
next unless $size or $verbose; # don't save empty values unless verbose
|
614
614
|
my $format = $goProFmt{$fmt} || 'undef';
|
615
615
|
my ($val, $i, $j, $p, @v);
|
616
|
-
if ($fmt
|
616
|
+
if ($fmt == 0x3f and defined $type) {
|
617
617
|
# decode structure with format given by previous 'TYPE'
|
618
618
|
for ($i=0; $i<$count; ++$i) {
|
619
619
|
my (@s, $l);
|
@@ -64,7 +64,7 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
|
|
64
64
|
Information (SEI). I<[Yes, this description is confusing, but nothing
|
65
65
|
compared to the challenge of actually decoding the data!]> This information
|
66
66
|
may exist at regular intervals through the entire video, but only the first
|
67
|
-
occurrence is extracted unless the ExtractEmbedded (-ee) option is used (in
|
67
|
+
occurrence is extracted unless the L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> (-ee) option is used (in
|
68
68
|
which case subsequent occurrences are extracted as sub-documents).
|
69
69
|
},
|
70
70
|
# (Note: all these are explained in IEC 61834-4, but it costs money so it is useless to me)
|
@@ -458,7 +458,7 @@ my $parsePictureTiming; # flag to enable parsing of picture timing information (
|
|
458
458
|
ValueConv => '$val == 0xff ? undef : $val',
|
459
459
|
PrintConv => q{
|
460
460
|
my $foc = ($val & 0x7e) / (($val & 0x01) ? 40 : 400);
|
461
|
-
return
|
461
|
+
return(($val & 0x80 ? 'Manual' : 'Auto') . " ($foc)");
|
462
462
|
},
|
463
463
|
},
|
464
464
|
);
|
@@ -119,7 +119,7 @@ sub ProcessTDHD($$$);
|
|
119
119
|
NOTES => q{
|
120
120
|
These tags are extracted from the APP6 "TDHD" segment of Photosmart R837
|
121
121
|
JPEG images. Many other unknown tags exist in is data, and can be seen with
|
122
|
-
the Unknown (-u) option.
|
122
|
+
the L<Unknown|../ExifTool.html#Unknown> (-u) option.
|
123
123
|
},
|
124
124
|
# (all subdirectories except TDHD and LSLV are automatically recognized
|
125
125
|
# by their "type" word of 0x10001)
|
@@ -3005,7 +3005,7 @@ my %sceneModeUsed = (
|
|
3005
3005
|
PROCESS_PROC => \&ProcessPose,
|
3006
3006
|
NOTES => q{
|
3007
3007
|
Streamed orientation information from the PixPro 4KVR360, extracted as
|
3008
|
-
sub-documents when the Duplicates option is used.
|
3008
|
+
sub-documents when the L<Duplicates|../ExifTool.html#Duplicates> option is used.
|
3009
3009
|
},
|
3010
3010
|
Accelerometer => { }, # up, back, left? units of g
|
3011
3011
|
AngularVelocity => { } # left, up, ccw? units?
|
@@ -152,7 +152,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
152
152
|
(eg. C<55(mi/h)>). If no units are specified, the default units are
|
153
153
|
written.
|
154
154
|
|
155
|
-
4) ExifTool writes compressed metadata to MIE files if the Compress (-z)
|
155
|
+
4) ExifTool writes compressed metadata to MIE files if the L<Compress|../ExifTool.html#Compress> (-z)
|
156
156
|
option is used and Compress::Zlib is available.
|
157
157
|
|
158
158
|
See L<http://owl.phy.queensu.ca/~phil/exiftool/MIE1.1-20070121.pdf> for the
|
@@ -1001,10 +1001,10 @@ sub WriteMIEGroup($$$)
|
|
1001
1001
|
}
|
1002
1002
|
}
|
1003
1003
|
# don't rewrite free bytes or information in deleted groups
|
1004
|
-
if ($format
|
1004
|
+
if ($format == 0x80 or ($delGroup and $tagLen and ($format & 0xf0) != 0x10)) {
|
1005
1005
|
$raf->Seek($valLen, 1) or $msg = 'Seek error', last;
|
1006
1006
|
if ($verbose > 1) {
|
1007
|
-
my $free = ($format
|
1007
|
+
my $free = ($format == 0x80) ? ' free' : '';
|
1008
1008
|
print $out " - $grp1:$tag ($valLen$free bytes)\n";
|
1009
1009
|
}
|
1010
1010
|
++$$et{CHANGED} if $delGroup;
|
@@ -97,7 +97,7 @@ sub ProcessMPImageList($$$);
|
|
97
97
|
NOTES => q{
|
98
98
|
The first MPF "Large Thumbnail" image is extracted as PreviewImage, and the
|
99
99
|
rest of the embedded MPF images are extracted as MPImage#. The
|
100
|
-
ExtractEmbedded (-ee) option may be used to extract information from these
|
100
|
+
L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded> (-ee) option may be used to extract information from these
|
101
101
|
embedded images.
|
102
102
|
},
|
103
103
|
0.1 => {
|
@@ -163,7 +163,7 @@ sub ProcessMPImageList($$$);
|
|
163
163
|
},
|
164
164
|
Notes => q{
|
165
165
|
the first MPF "Large Thumbnail" is extracted as PreviewImage, and the rest
|
166
|
-
of the embedded MPF images are extracted as MPImage#. The ExtractEmbedded
|
166
|
+
of the embedded MPF images are extracted as MPImage#. The L<ExtractEmbedded|../ExifTool.html#ExtractEmbedded>
|
167
167
|
option may be used to extract information from these embedded images.
|
168
168
|
},
|
169
169
|
# extract all MPF images (not just one)
|
@@ -59,7 +59,7 @@ my $mwgLoaded; # flag set if we alreaded Load()ed the MWG tags
|
|
59
59
|
string values be stored as UTF-8. To honour this, the exiftool application
|
60
60
|
sets the default internal EXIF string encoding to "UTF8" when the MWG module
|
61
61
|
is loaded, but via the API this must be done manually by setting the
|
62
|
-
CharsetEXIF option.
|
62
|
+
L<CharsetEXIF|../ExifTool.html#CharsetEXIF> option.
|
63
63
|
|
64
64
|
A complication of the MWG specification is that although the MWG:Creator
|
65
65
|
property may consist of multiple values, the associated EXIF tag
|
@@ -28,7 +28,7 @@ my %mdDateInfo = (
|
|
28
28
|
NOTES => q{
|
29
29
|
MDItem tags are extracted using the "mdls" utility. They are extracted if
|
30
30
|
any "MDItem*" tag or the MacOS group is specifically requested, or by
|
31
|
-
setting the L<MDItemTags
|
31
|
+
setting the L<MDItemTags|../ExifTool.html#MDItemTags> API option to 1 or the L<RequestAll|../ExifTool.html#RequestAll> API option to 2 or
|
32
32
|
higher. Note that these tags do not necessarily reflect the current
|
33
33
|
metadata of a file -- it may take some time for the MacOS mdworker daemon to
|
34
34
|
index the file after a metadata change.
|
@@ -220,7 +220,7 @@ my %mdDateInfo = (
|
|
220
220
|
NOTES => q{
|
221
221
|
XAttr tags are extracted using the "xattr" utility. They are extracted if
|
222
222
|
any "XAttr*" tag or the MacOS group is specifically requested, or by setting
|
223
|
-
the L<XAttrTags
|
223
|
+
the L<XAttrTags|../ExifTool.html#XAttrTags> API option to 1 or the L<RequestAll|../ExifTool.html#RequestAll> API option to 2 or higher.
|
224
224
|
},
|
225
225
|
'com.apple.FinderInfo' => {
|
226
226
|
Name => 'XAttrFinderInfo',
|
@@ -28,7 +28,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
28
28
|
The following tags are extracted from Matroska multimedia container files.
|
29
29
|
This container format is used by file types such as MKA, MKV, MKS and WEBM.
|
30
30
|
For speed, ExifTool extracts tags only up to the first Cluster unless the
|
31
|
-
Verbose (-v) or Unknown = 2 (-U) option is used. See
|
31
|
+
L<Verbose|../ExifTool.html#Verbose> (-v) or L<Unknown|../ExifTool.html#Unknown> = 2 (-U) option is used. See
|
32
32
|
L<http://www.matroska.org/technical/specs/index.html> for the official
|
33
33
|
Matroska specification.
|
34
34
|
},
|
@@ -49,7 +49,7 @@ use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode
|
|
49
49
|
use Image::ExifTool qw(:DataAccess :Utils);
|
50
50
|
use Image::ExifTool::Exif;
|
51
51
|
|
52
|
-
$VERSION = '2.
|
52
|
+
$VERSION = '2.75';
|
53
53
|
|
54
54
|
# Full list of product codes for Sony-compatible Minolta lenses
|
55
55
|
# (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
|
@@ -589,67 +589,69 @@ $VERSION = '2.74';
|
|
589
589
|
'65535.45' => 'Sony FE 400mm F2.8 GM OSS', #IB (32848 - SEL400F28GM)
|
590
590
|
'65535.46' => 'Sony E 18-135mm F3.5-5.6 OSS', #JR (32849 - SEL18135)
|
591
591
|
'65535.47' => 'Sony FE 135mm F1.8 GM', #IB (32850 - SEL135F18GM)
|
592
|
-
'65535.48' => 'Sony FE
|
593
|
-
'65535.49' => 'Sony FE
|
594
|
-
'65535.50' => 'Sony FE
|
595
|
-
'65535.51' => 'Sony FE
|
596
|
-
'65535.52' => 'Sony FE 400mm
|
597
|
-
'65535.53' => 'Sony FE 400mm
|
592
|
+
'65535.48' => 'Sony FE 200-600mm F5.6-6.3 G OSS',#IB (32851 - SEL200600G)
|
593
|
+
'65535.49' => 'Sony FE 600mm F4 GM OSS', #IB (32852 - SEL600F4GM)
|
594
|
+
'65535.50' => 'Sony FE 70-200mm F2.8 GM OSS + 1.4X Teleconverter', #JR (33072 - SEL70200GM + SEL14TC)
|
595
|
+
'65535.51' => 'Sony FE 70-200mm F2.8 GM OSS + 2X Teleconverter', #JR (33073 - SEL70200GM + SEL20TC)
|
596
|
+
'65535.52' => 'Sony FE 100-400mm F4.5-5.6 GM OSS + 1.4X Teleconverter', #JR (33077 - SEL100400GM + SEL14TC)
|
597
|
+
'65535.53' => 'Sony FE 100-400mm F4.5-5.6 GM OSS + 2X Teleconverter', #JR (33078 - SEL100400GM + SEL20TC)
|
598
|
+
'65535.54' => 'Sony FE 400mm F2.8 GM OSS + 1.4X Teleconverter', #IB (33079 - SEL400F28GM + SEL14TC)
|
599
|
+
'65535.55' => 'Sony FE 400mm F2.8 GM OSS + 2X Teleconverter', #JR (33080 - SEL400F28GM + SEL20TC)
|
598
600
|
#
|
599
601
|
# 3rd party E lenses
|
600
602
|
#
|
601
|
-
'65535.
|
602
|
-
'65535.
|
603
|
-
'65535.
|
604
|
-
'65535.
|
605
|
-
'65535.
|
606
|
-
'65535.
|
607
|
-
'65535.
|
608
|
-
'65535.
|
609
|
-
'65535.
|
610
|
-
'65535.
|
611
|
-
'65535.
|
612
|
-
'65535.
|
613
|
-
'65535.
|
614
|
-
'65535.
|
615
|
-
'65535.
|
616
|
-
'65535.
|
617
|
-
'65535.
|
618
|
-
'65535.
|
619
|
-
'65535.
|
620
|
-
'65535.
|
621
|
-
'65535.
|
622
|
-
'65535.
|
623
|
-
'65535.
|
624
|
-
'65535.
|
625
|
-
'65535.
|
626
|
-
'65535.
|
627
|
-
'65535.
|
628
|
-
'65535.
|
629
|
-
'65535.
|
630
|
-
'65535.
|
631
|
-
'65535.
|
632
|
-
'65535.
|
633
|
-
'65535.
|
634
|
-
'65535.
|
635
|
-
'65535.
|
636
|
-
'65535.
|
637
|
-
'65535.
|
638
|
-
'65535.
|
639
|
-
'65535.
|
640
|
-
'65535.
|
641
|
-
'65535.
|
642
|
-
'65535.
|
603
|
+
'65535.56' => 'Samyang AF 50mm F1.4 FE', #JR (32789)
|
604
|
+
'65535.57' => 'Samyang AF 14mm F2.8 FE', #JR (32790 and 51505)
|
605
|
+
'65535.58' => 'Samyang AF 24mm F2.8', #JR (32794)
|
606
|
+
'65535.59' => 'Samyang AF 35mm F2.8 FE', #PH (51505)
|
607
|
+
'65535.60' => 'Samyang AF 35mm F1.4', #IB (51507)
|
608
|
+
'65535.61' => 'Sigma 19mm F2.8 [EX] DN', #JR (0)
|
609
|
+
'65535.62' => 'Sigma 30mm F2.8 [EX] DN', #JR (0)
|
610
|
+
'65535.63' => 'Sigma 60mm F2.8 DN', #JR (0)
|
611
|
+
'65535.64' => 'Sigma 30mm F1.4 DC DN | C', #IB (50480) (016)
|
612
|
+
'65535.65' => 'Sigma 85mm F1.4 DG HSM | A', #JR (50499) (018)
|
613
|
+
'65535.66' => 'Sigma 16mm F1.4 DC DN | C', #JR (50503) (017)
|
614
|
+
'65535.67' => 'Sigma 105mm F1.4 DG HSM | A', #IB (50507) (018)
|
615
|
+
'65535.68' => 'Sigma 56mm F1.4 DC DN | C', #JR (50508) (018)
|
616
|
+
'65535.69' => 'Sigma 70-200mm F2.8 DG OS HSM | S',#IB (50512) (018)
|
617
|
+
'65535.70' => 'Sigma 70mm F2.8 DG MACRO | A', #JR (50513) (018)
|
618
|
+
'65535.71' => 'Tamron 18-200mm F3.5-6.3 Di III VC', #JR (0 - Model B011)
|
619
|
+
'65535.72' => 'Tamron 28-75mm F2.8 Di III RXD', #JR (49457 - Model A036)
|
620
|
+
'65535.73' => 'Tokina FiRIN 20mm F2 FE MF', #JR (0)
|
621
|
+
'65535.74' => 'Tokina FiRIN 20mm F2 FE AF', #JR (49712 or 0)
|
622
|
+
'65535.75' => 'Tokina FiRIN 100mm F2.8 FE MACRO',#JR (49713)
|
623
|
+
'65535.76' => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR (50992)
|
624
|
+
'65535.77' => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB (50993)
|
625
|
+
'65535.78' => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB (50994)
|
626
|
+
'65535.79' => 'Voigtlander MACRO APO-LANTHAR 65mm F2 Aspherical', #JR (50995)
|
627
|
+
'65535.80' => 'Voigtlander NOKTON 40mm F1.2 Aspherical', #JR (50996)
|
628
|
+
'65535.81' => 'Voigtlander NOKTON classic 35mm F1.4', #JR (50997)
|
629
|
+
'65535.82' => 'Voigtlander MACRO APO-LANTHAR 110mm F2.5', #JR (50998)
|
630
|
+
'65535.83' => 'Voigtlander COLOR-SKOPAR 21mm F3.5 Aspherical', #IB (50999)
|
631
|
+
'65535.84' => 'Voigtlander NOKTON 50mm F1.2 Aspherical', #JR (51000)
|
632
|
+
'65535.85' => 'Zeiss Touit 12mm F2.8', #JR (49201 or 0)
|
633
|
+
'65535.86' => 'Zeiss Touit 32mm F1.8', #JR (49202 or 0)
|
634
|
+
'65535.87' => 'Zeiss Touit 50mm F2.8 Macro', #JR (49203 or 0)
|
635
|
+
'65535.88' => 'Zeiss Batis 25mm F2', #JR (49216)
|
636
|
+
'65535.89' => 'Zeiss Batis 85mm F1.8', #JR (49217)
|
637
|
+
'65535.90' => 'Zeiss Batis 18mm F2.8', #IB (49218)
|
638
|
+
'65535.91' => 'Zeiss Batis 135mm F2.8', #IB (49219)
|
639
|
+
'65535.92' => 'Zeiss Batis 40mm F2 CF', #JR (49220)
|
640
|
+
'65535.93' => 'Zeiss Loxia 50mm F2', #JR (49232 or 0)
|
641
|
+
'65535.94' => 'Zeiss Loxia 35mm F2', #JR (49233 or 0)
|
642
|
+
'65535.95' => 'Zeiss Loxia 21mm F2.8', #JR (49234)
|
643
|
+
'65535.96' => 'Zeiss Loxia 85mm F2.4', #JR (49235)
|
644
|
+
'65535.97' => 'Zeiss Loxia 25mm F2.4', #JR (49236)
|
643
645
|
#
|
644
646
|
# other lenses
|
645
647
|
#
|
646
|
-
'65535.
|
647
|
-
'65535.
|
648
|
-
'65535.
|
649
|
-
'65535.
|
650
|
-
'65535.
|
651
|
-
'65535.
|
652
|
-
'65535.
|
648
|
+
'65535.98' => 'Arax MC 35mm F2.8 Tilt+Shift', #JD
|
649
|
+
'65535.99' => 'Arax MC 80mm F2.8 Tilt+Shift', #JD
|
650
|
+
'65535.100' => 'Zenitar MF 16mm F2.8 Fisheye M42', #JD
|
651
|
+
'65535.101' => 'Samyang 500mm Mirror F8.0', #19
|
652
|
+
'65535.102' => 'Pentacon Auto 135mm F2.8', #19
|
653
|
+
'65535.103' => 'Pentacon Auto 29mm F2.8', #19
|
654
|
+
'65535.104' => 'Helios 44-2 58mm F2.0', #19
|
653
655
|
);
|
654
656
|
|
655
657
|
%minoltaTeleconverters = (
|