exiftool_vendored 12.14.0 → 12.18.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 +52 -2
- data/bin/MANIFEST +2 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +39 -32
- data/bin/lib/Image/ExifTool.pm +30 -1
- data/bin/lib/Image/ExifTool.pod +7 -5
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -3
- data/bin/lib/Image/ExifTool/Canon.pm +21 -2
- data/bin/lib/Image/ExifTool/CanonCustom.pm +19 -1
- data/bin/lib/Image/ExifTool/DJI.pm +27 -1
- data/bin/lib/Image/ExifTool/DPX.pm +3 -3
- data/bin/lib/Image/ExifTool/Exif.pm +31 -15
- data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -1
- data/bin/lib/Image/ExifTool/GPS.pm +5 -5
- data/bin/lib/Image/ExifTool/H264.pm +20 -5
- data/bin/lib/Image/ExifTool/JPEG.pm +23 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +312 -36
- data/bin/lib/Image/ExifTool/NikonSettings.pm +2013 -0
- data/bin/lib/Image/ExifTool/PNG.pm +11 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +31 -19
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +22 -4
- data/bin/lib/Image/ExifTool/README +5 -4
- data/bin/lib/Image/ExifTool/RIFF.pm +8 -7
- data/bin/lib/Image/ExifTool/Sony.pm +20 -18
- data/bin/lib/Image/ExifTool/TagLookup.pm +3983 -3810
- data/bin/lib/Image/ExifTool/TagNames.pod +408 -22
- data/bin/lib/Image/ExifTool/WriteXMP.pl +9 -6
- data/bin/lib/Image/ExifTool/Writer.pl +6 -4
- data/bin/lib/Image/ExifTool/XMP.pm +28 -2
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +36 -3
@@ -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.56';
|
40
40
|
|
41
41
|
sub ProcessPNG_tEXt($$$);
|
42
42
|
sub ProcessPNG_iTXt($$$);
|
@@ -1422,8 +1422,16 @@ sub ProcessPNG($$)
|
|
1422
1422
|
next;
|
1423
1423
|
}
|
1424
1424
|
if ($datChunk) {
|
1425
|
-
#
|
1426
|
-
|
1425
|
+
my $chunkSizeLimit = 10000000; # largest chunk to read into memory
|
1426
|
+
if ($outfile) {
|
1427
|
+
# avoid loading very large data chunks into memory
|
1428
|
+
if ($len > $chunkSizeLimit) {
|
1429
|
+
Write($outfile, $hbuf) or $err = 1;
|
1430
|
+
Image::ExifTool::CopyBlock($raf, $outfile, $len+4) or $et->Error("Error copying $datChunk");
|
1431
|
+
next;
|
1432
|
+
}
|
1433
|
+
# skip over data chunks if possible/necessary
|
1434
|
+
} elsif (not $validate or $len > $chunkSizeLimit) {
|
1427
1435
|
$raf->Seek($len + 4, 1) or $et->Warn('Seek error'), last;
|
1428
1436
|
next;
|
1429
1437
|
}
|
@@ -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.58';
|
51
51
|
|
52
52
|
sub ProcessMOV($$;$);
|
53
53
|
sub ProcessKeys($$$);
|
@@ -258,11 +258,15 @@ my %unknownInfo = (
|
|
258
258
|
Unknown => 1,
|
259
259
|
ValueConv => '$val =~ /^([\x20-\x7e]*)\0*$/ ? $1 : \$val',
|
260
260
|
);
|
261
|
+
|
262
|
+
# multi-language text with 6-byte header
|
263
|
+
my %langText = ( IText => 6 );
|
264
|
+
|
261
265
|
# parsing for most of the 3gp udta language text boxes
|
262
|
-
my %
|
266
|
+
my %langText3gp = (
|
263
267
|
Notes => 'used in 3gp videos',
|
264
|
-
IText => 6,
|
265
268
|
Avoid => 1,
|
269
|
+
IText => 6,
|
266
270
|
);
|
267
271
|
|
268
272
|
# 4-character Vendor ID codes (ref PH)
|
@@ -424,7 +428,6 @@ my %eeBox = (
|
|
424
428
|
# (note: vide is only processed if specific atoms exist in the VideoSampleDesc)
|
425
429
|
vide => { %eeStd,
|
426
430
|
JPEG => 'stsd',
|
427
|
-
# avcC => 'stsd', # (uncomment to parse H264 stream)
|
428
431
|
},
|
429
432
|
text => { %eeStd },
|
430
433
|
meta => { %eeStd },
|
@@ -434,6 +437,10 @@ my %eeBox = (
|
|
434
437
|
ctbx => { %eeStd }, # (GM cars)
|
435
438
|
'' => { 'gps ' => 'moov', 'GPS ' => 'main' }, # (no handler -- in top level 'moov' box, and main)
|
436
439
|
);
|
440
|
+
# boxes to save when ExtractEmbedded is set to 2 or higher
|
441
|
+
my %eeBox2 = (
|
442
|
+
vide => { avcC => 'stsd' }, # (parses H264 video stream)
|
443
|
+
);
|
437
444
|
|
438
445
|
# QuickTime atoms
|
439
446
|
%Image::ExifTool::QuickTime::Main = (
|
@@ -1542,15 +1549,15 @@ my %eeBox = (
|
|
1542
1549
|
# the following are 3gp tags, references:
|
1543
1550
|
# http://atomicparsley.sourceforge.net
|
1544
1551
|
# http://www.3gpp.org/ftp/tsg_sa/WG4_CODEC/TSGS4_25/Docs/
|
1545
|
-
# (note that all %
|
1546
|
-
cprt => { Name => 'Copyright', %
|
1547
|
-
auth => { Name => 'Author', %
|
1548
|
-
titl => { Name => 'Title', %
|
1549
|
-
dscp => { Name => 'Description',%
|
1550
|
-
perf => { Name => 'Performer', %
|
1551
|
-
gnre => { Name => 'Genre', %
|
1552
|
-
albm => { Name => 'Album', %
|
1553
|
-
coll => { Name => 'CollectionName', %
|
1552
|
+
# (note that all %langText3gp tags are Avoid => 1)
|
1553
|
+
cprt => { Name => 'Copyright', %langText3gp, Groups => { 2 => 'Author' } },
|
1554
|
+
auth => { Name => 'Author', %langText3gp, Groups => { 2 => 'Author' } },
|
1555
|
+
titl => { Name => 'Title', %langText3gp },
|
1556
|
+
dscp => { Name => 'Description',%langText3gp },
|
1557
|
+
perf => { Name => 'Performer', %langText3gp },
|
1558
|
+
gnre => { Name => 'Genre', %langText3gp },
|
1559
|
+
albm => { Name => 'Album', %langText3gp },
|
1560
|
+
coll => { Name => 'CollectionName', %langText3gp }, #17
|
1554
1561
|
rtng => {
|
1555
1562
|
Name => 'Rating',
|
1556
1563
|
# (4-byte flags, 4-char entity, 4-char criteria, 2-byte lang, string)
|
@@ -1581,8 +1588,11 @@ my %eeBox = (
|
|
1581
1588
|
},
|
1582
1589
|
kywd => {
|
1583
1590
|
Name => 'Keywords',
|
1584
|
-
# (4 byte flags, 2-byte lang, 1-byte count, count x pascal strings)
|
1591
|
+
# (4 byte flags, 2-byte lang, 1-byte count, count x pascal strings, ref 17)
|
1592
|
+
# (but I have also seen a simple string written by iPhone)
|
1585
1593
|
RawConv => q{
|
1594
|
+
my $sep = $self->Options('ListSep');
|
1595
|
+
return join($sep, split /\0+/, $val) unless $val =~ /^\0/; # (iPhone)
|
1586
1596
|
return '<err>' unless length $val >= 7;
|
1587
1597
|
my $lang = Image::ExifTool::QuickTime::UnpackLang(Get16u(\$val, 4));
|
1588
1598
|
$lang = $lang ? "($lang) " : '';
|
@@ -1598,7 +1608,6 @@ my %eeBox = (
|
|
1598
1608
|
push @vals, $v;
|
1599
1609
|
$pos += $len;
|
1600
1610
|
}
|
1601
|
-
my $sep = $self->Options('ListSep');
|
1602
1611
|
return $lang . join($sep, @vals);
|
1603
1612
|
},
|
1604
1613
|
},
|
@@ -2034,7 +2043,7 @@ my %eeBox = (
|
|
2034
2043
|
SubDirectory => { TagTable => 'Image::ExifTool::Olympus::thmb' },
|
2035
2044
|
},{ #17 (format is in bytes 3-7)
|
2036
2045
|
Name => 'ThumbnailImage',
|
2037
|
-
Condition => '$$valPt =~ /^.{8}\xff\xd8\xff\xdb/s',
|
2046
|
+
Condition => '$$valPt =~ /^.{8}\xff\xd8\xff[\xdb\xe0]/s',
|
2038
2047
|
Groups => { 2 => 'Preview' },
|
2039
2048
|
RawConv => 'substr($val, 8)',
|
2040
2049
|
Binary => 1,
|
@@ -8884,7 +8893,7 @@ sub ProcessMOV($$;$)
|
|
8884
8893
|
my $dirID = $$dirInfo{DirID} || '';
|
8885
8894
|
my $charsetQuickTime = $et->Options('CharsetQuickTime');
|
8886
8895
|
my ($buff, $tag, $size, $track, $isUserData, %triplet, $doDefaultLang, $index);
|
8887
|
-
my ($dirEnd, $
|
8896
|
+
my ($dirEnd, $unkOpt, %saveOptions, $atomCount);
|
8888
8897
|
|
8889
8898
|
my $topLevel = not $$et{InQuickTime};
|
8890
8899
|
$$et{InQuickTime} = 1;
|
@@ -8948,8 +8957,8 @@ sub ProcessMOV($$;$)
|
|
8948
8957
|
}
|
8949
8958
|
$$raf{NoBuffer} = 1 if $et->Options('FastScan'); # disable buffering in FastScan mode
|
8950
8959
|
|
8951
|
-
|
8952
|
-
|
8960
|
+
my $ee = $$et{OPTIONS}{ExtractEmbedded};
|
8961
|
+
if ($ee) {
|
8953
8962
|
$unkOpt = $$et{OPTIONS}{Unknown};
|
8954
8963
|
require 'Image/ExifTool/QuickTimeStream.pl';
|
8955
8964
|
}
|
@@ -9032,6 +9041,9 @@ sub ProcessMOV($$;$)
|
|
9032
9041
|
} elsif ($handlerType ne 'vide' and not $$et{OPTIONS}{Validate}) {
|
9033
9042
|
EEWarn($et);
|
9034
9043
|
}
|
9044
|
+
} elsif ($ee and $ee > 1 and $eeBox2{$handlerType} and $eeBox2{$handlerType}{$tag}) {
|
9045
|
+
$eeTag = 1;
|
9046
|
+
$$et{OPTIONS}{Unknown} = 1;
|
9035
9047
|
}
|
9036
9048
|
my $tagInfo = $et->GetTagInfo($tagTablePtr, $tag);
|
9037
9049
|
|
@@ -96,7 +96,7 @@ my %insvLimit = (
|
|
96
96
|
NOTES => q{
|
97
97
|
Timed metadata extracted from QuickTime media data and some AVI videos when
|
98
98
|
the ExtractEmbedded option is used. Although most of these tags are
|
99
|
-
combined into the single table below, ExifTool currently reads
|
99
|
+
combined into the single table below, ExifTool currently reads 49 different
|
100
100
|
formats of timed GPS metadata from video files.
|
101
101
|
},
|
102
102
|
VARS => { NO_ID => 1 },
|
@@ -531,7 +531,10 @@ my %insvLimit = (
|
|
531
531
|
PROCESS_PROC => \&Process_tx3g,
|
532
532
|
GROUPS => { 2 => 'Location' },
|
533
533
|
FIRST_ENTRY => 0,
|
534
|
-
NOTES =>
|
534
|
+
NOTES => q{
|
535
|
+
Tags extracted from the tx3g sbtl timed metadata of Yuneec drones, and
|
536
|
+
subtitle text in some other videos.
|
537
|
+
},
|
535
538
|
Lat => {
|
536
539
|
Name => 'GPSLatitude',
|
537
540
|
RawConv => '$$self{FoundGPSLatitude} = 1; $val',
|
@@ -552,6 +555,11 @@ my %insvLimit = (
|
|
552
555
|
GimYaw => 'GimbalYaw',
|
553
556
|
GimPitch => 'GimbalPitch',
|
554
557
|
GimRoll => 'GimbalRoll',
|
558
|
+
DateTime => { # for date/time-format subtitle text
|
559
|
+
Groups => { 2 => 'Time' },
|
560
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
561
|
+
},
|
562
|
+
Text => { Groups => { 2 => 'Other' } },
|
555
563
|
);
|
556
564
|
|
557
565
|
%Image::ExifTool::QuickTime::INSV_MakerNotes = (
|
@@ -1195,6 +1203,10 @@ sub ProcessSamples($)
|
|
1195
1203
|
$pos += $hdrLen + $len;
|
1196
1204
|
last if $pos + $hdrLen >= length($buff);
|
1197
1205
|
}
|
1206
|
+
if ($$et{GotNAL06}) {
|
1207
|
+
my $eeOpt = $et->Options('ExtractEmbedded');
|
1208
|
+
last unless $eeOpt and $eeOpt > 2;
|
1209
|
+
}
|
1198
1210
|
next;
|
1199
1211
|
}
|
1200
1212
|
if ($verbose > 1) {
|
@@ -1981,7 +1993,13 @@ sub Process_tx3g($$$)
|
|
1981
1993
|
my $dataPt = $$dirInfo{DataPt};
|
1982
1994
|
return 0 if length $$dataPt < 2;
|
1983
1995
|
pos($$dataPt) = 2; # skip 2-byte length word
|
1984
|
-
$et->
|
1996
|
+
$et->VerboseDir('tx3g', undef, length($$dataPt)-2);
|
1997
|
+
$et->HandleTag($tagTablePtr, 'Text', substr($$dataPt, 2));
|
1998
|
+
if ($$dataPt =~ /^..\w{3} (\d{4})-(\d{2})-(\d{2}) (\d{2}:\d{2}:\d{2}) ?([-+])(\d{2}):?(\d{2})$/s) {
|
1999
|
+
$et->HandleTag($tagTablePtr, 'DateTime', "$1:$2:$3 $4$5$6:$7");
|
2000
|
+
} else {
|
2001
|
+
$et->HandleTag($tagTablePtr, $1, $2) while $$dataPt =~ /(\w+):([^:]*[^:\s])(\s|$)/sg;
|
2002
|
+
}
|
1985
2003
|
return 1;
|
1986
2004
|
}
|
1987
2005
|
|
@@ -2513,7 +2531,7 @@ sub ProcessInsta360($;$)
|
|
2513
2531
|
$et->HandleTag($tagTbl, GPSTrack => $a[9]);
|
2514
2532
|
$et->HandleTag($tagTbl, GPSTrackRef => 'T');
|
2515
2533
|
$et->HandleTag($tagTbl, GPSAltitude => $a[10]);
|
2516
|
-
$et->HandleTag($tagTbl, Unknown02 => "@a[1,2]") if $unknown;
|
2534
|
+
$et->HandleTag($tagTbl, Unknown02 => "@a[1,2]") if $unknown; # millisecond counter (https://exiftool.org/forum/index.php?topic=9884.msg65143#msg65143)
|
2517
2535
|
}
|
2518
2536
|
}
|
2519
2537
|
} elsif ($id == 0x101) {
|
@@ -62,10 +62,11 @@ key:
|
|
62
62
|
information about the source directory for tags to be copied to the output.
|
63
63
|
|
64
64
|
CHECK_PROC : Reference to a function which validates Raw values for writing.
|
65
|
-
The function takes
|
66
|
-
reference, 2) value reference, and
|
67
|
-
the input value) if successful, or an error
|
68
|
-
problem. May set ExifTool CHECK_WARN datamember
|
65
|
+
The function takes 3-4 arguments: 0) ExifTool object reference, 1) tagInfo
|
66
|
+
reference, 2) value reference, and 3) [optional] conversion type. It returns
|
67
|
+
undefined (and possibly modifies the input value) if successful, or an error
|
68
|
+
message if there was a format problem. May set ExifTool CHECK_WARN datamember
|
69
|
+
for success with a warning.
|
69
70
|
|
70
71
|
INIT_TABLE : Routine called to do any necessary initialization before the
|
71
72
|
first time the table is loaded. Argument is a reference to the table.
|
@@ -29,7 +29,7 @@ use strict;
|
|
29
29
|
use vars qw($VERSION);
|
30
30
|
use Image::ExifTool qw(:DataAccess :Utils);
|
31
31
|
|
32
|
-
$VERSION = '1.
|
32
|
+
$VERSION = '1.57';
|
33
33
|
|
34
34
|
sub ConvertTimecode($);
|
35
35
|
sub ProcessSGLT($$$);
|
@@ -1261,24 +1261,25 @@ my %code2charset = (
|
|
1261
1261
|
},
|
1262
1262
|
);
|
1263
1263
|
|
1264
|
-
# streamed USER txts written by
|
1264
|
+
# streamed USER txts written by Momento M6 dashcam (ref PH)
|
1265
1265
|
%Image::ExifTool::RIFF::UserText = (
|
1266
1266
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
1267
1267
|
GROUPS => { 2 => 'Location' },
|
1268
1268
|
NOTES => q{
|
1269
|
-
Tags decoded from the USER-format txts stream written by
|
1269
|
+
Tags decoded from the USER-format txts stream written by Momento M6 dashcam.
|
1270
1270
|
Extracted only if the ExtractEmbedded option is used.
|
1271
1271
|
},
|
1272
|
-
|
1272
|
+
# (little-endian)
|
1273
|
+
# 0 - int32u: 32
|
1273
1274
|
# 4 - int32u: sample number (starting from unknown offset)
|
1274
|
-
# 8 - int8u[4]: "
|
1275
|
+
# 8 - int8u[4]: "w x y z" ? (w 0=front cam, 1=rear cam, z mostly 5-8)
|
1275
1276
|
# 12 - int8u[4]: "0 x 1 0" ? (x incrementing once per second)
|
1276
1277
|
# 16 - int8u[4]: "0 32 0 x" ?
|
1277
1278
|
# 20 - int32u: 100-150(mostly), 250-300(once per second)
|
1278
1279
|
# 24 - int8u[4]: "0 x y 0" ?
|
1279
1280
|
28 => { Name => 'GPSAltitude', Format => 'int32u', ValueConv => '$val / 10' }, # (NC)
|
1280
1281
|
# 32 - int32u: 0(mostly), 23(once per second)
|
1281
|
-
# 36 - int32u:
|
1282
|
+
# 36 - int32u: 0
|
1282
1283
|
40 => { Name => 'Accelerometer', Format => 'float[3]' },
|
1283
1284
|
# 52 - int32u: 1
|
1284
1285
|
56 => { Name => 'GPSSpeed', Format => 'float' }, # km/h
|
@@ -1891,7 +1892,7 @@ sub ProcessRIFF($$)
|
|
1891
1892
|
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
1892
1893
|
}
|
1893
1894
|
my $tagInfo = $$tagTbl{$tag};
|
1894
|
-
if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF)$/)) {
|
1895
|
+
if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF|\d{2}(db|dc|wb))$/)) {
|
1895
1896
|
$raf->Read($buff, $len2) == $len2 or $err=1, last;
|
1896
1897
|
my $setGroups;
|
1897
1898
|
if ($tagInfo and ref $tagInfo eq 'HASH' and $$tagInfo{SetGroups}) {
|
@@ -34,7 +34,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
34
34
|
use Image::ExifTool::Exif;
|
35
35
|
use Image::ExifTool::Minolta;
|
36
36
|
|
37
|
-
$VERSION = '3.
|
37
|
+
$VERSION = '3.36';
|
38
38
|
|
39
39
|
sub ProcessSRF($$$);
|
40
40
|
sub ProcessSR2($$$);
|
@@ -71,8 +71,8 @@ sub PrintInvLensSpec($;$$);
|
|
71
71
|
'0.12' => 'Zeiss Loxia 35mm F2', # (firmware Ver.01)
|
72
72
|
1 => 'Sony LA-EA1 or Sigma MC-11 Adapter', # MC-11 with not-supported lenses
|
73
73
|
2 => 'Sony LA-EA2 Adapter',
|
74
|
-
3 => 'Sony LA-EA3 Adapter',
|
75
|
-
6 => 'Sony LA-EA4 Adapter',
|
74
|
+
3 => 'Sony LA-EA3 Adapter',
|
75
|
+
6 => 'Sony LA-EA4 Adapter',
|
76
76
|
7 => 'Sony LA-EA5 Adapter', #JR
|
77
77
|
# 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
|
78
78
|
44 => 'Metabones Canon EF Smart Adapter', #JR
|
@@ -80,6 +80,7 @@ sub PrintInvLensSpec($;$$);
|
|
80
80
|
184 => 'Metabones Canon EF Speed Booster Ultra', #JR ('Green' mode, LensMount reported as A-mount)
|
81
81
|
234 => 'Metabones Canon EF Smart Adapter Mark IV', #JR (LensMount reported as A-mount)
|
82
82
|
239 => 'Metabones Canon EF Speed Booster', #JR
|
83
|
+
24593 => 'LA-EA4r MonsterAdapter',
|
83
84
|
# Sony VX product code: (http://www.mi-fo.de/forum/index.php?s=7df1c8d3b1cd675f2abf4f4442e19cf2&showtopic=35035&view=findpost&p=303746)
|
84
85
|
32784 => 'Sony E 16mm F2.8', # VX9100
|
85
86
|
32785 => 'Sony E 18-55mm F3.5-5.6 OSS', # VX9101
|
@@ -146,6 +147,7 @@ sub PrintInvLensSpec($;$$);
|
|
146
147
|
32859 => 'Sony FE 20mm F1.8 G', #IB/JR
|
147
148
|
32860 => 'Sony FE 12-24mm F2.8 GM', #JR/IB
|
148
149
|
32864 => 'Sony FE 28-60mm F4-5.6', #JR
|
150
|
+
32865 => 'Sony FE 35mm F1.4 GM', #IB/JR
|
149
151
|
|
150
152
|
# (comment this out so LensID will report the LensModel, which is more useful)
|
151
153
|
# 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
|
@@ -185,6 +187,7 @@ sub PrintInvLensSpec($;$$);
|
|
185
187
|
49462 => 'Tamron 70-180mm F2.8 Di III VXD', #JR (Model A056)
|
186
188
|
49463 => 'Tamron 28-200mm F2.8-5.6 Di III RXD', #JR (Model A071)
|
187
189
|
49464 => 'Tamron 70-300mm F4.5-6.3 Di III RXD', #JR (Model A047)
|
190
|
+
49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
|
188
191
|
49473 => 'Tokina atx-m 85mm F1.8 FE', #JR
|
189
192
|
49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
|
190
193
|
49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
|
@@ -1536,7 +1539,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1536
1539
|
# from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
|
1537
1540
|
{
|
1538
1541
|
Name => 'Tag9050a',
|
1539
|
-
Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|7SM2|7SM3|9|9M2)|ILCA-99M2|ZV-)/',
|
1542
|
+
Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|7SM2|7SM3|9|9M2)|ILCA-99M2|ZV-)/',
|
1540
1543
|
SubDirectory => {
|
1541
1544
|
TagTable => 'Image::ExifTool::Sony::Tag9050a',
|
1542
1545
|
ByteOrder => 'LittleEndian',
|
@@ -1550,7 +1553,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1550
1553
|
},
|
1551
1554
|
},{
|
1552
1555
|
Name => 'Tag9050c',
|
1553
|
-
Condition => '$$self{Model} =~ /^(ILCE-7SM3)/',
|
1556
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3))/',
|
1554
1557
|
SubDirectory => {
|
1555
1558
|
TagTable => 'Image::ExifTool::Sony::Tag9050c',
|
1556
1559
|
ByteOrder => 'LittleEndian',
|
@@ -1570,8 +1573,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1570
1573
|
# 0x24 (e) for ILCA-99M2,ILCE-5100/6300/6500/7M2/7RM2/7S/7SM2/QX1, DSC-HX80/HX90V/QX30/RX0/RX100M3/RX100M4/RX100M5/RX10M2/RX10M3/RX1RM2/WX500
|
1571
1574
|
# 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
|
1572
1575
|
# 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1
|
1573
|
-
# 0x31 (e) for ILCE-7SM3
|
1574
|
-
# first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28 respectively
|
1576
|
+
# 0x31 (e) for ILCE-1, 7SM3
|
1577
|
+
# first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively
|
1575
1578
|
{
|
1576
1579
|
Name => 'Tag9400a',
|
1577
1580
|
Condition => q{
|
@@ -1955,6 +1958,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1955
1958
|
380 => 'ZV-1', #JR
|
1956
1959
|
381 => 'ILCE-7C', #JR
|
1957
1960
|
383 => 'ILCE-7SM3',
|
1961
|
+
384 => 'ILCE-1', #PH
|
1958
1962
|
},
|
1959
1963
|
},
|
1960
1964
|
0xb020 => { #2
|
@@ -7786,7 +7790,7 @@ my %isoSetting2010 = (
|
|
7786
7790
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
7787
7791
|
FORMAT => 'int8u',
|
7788
7792
|
NOTES => q{
|
7789
|
-
Valid from July 2020 for ILCE-7SM3.
|
7793
|
+
Valid from July 2020 for ILCE-1/7SM3.
|
7790
7794
|
},
|
7791
7795
|
WRITABLE => 1,
|
7792
7796
|
FIRST_ENTRY => 0,
|
@@ -7847,13 +7851,12 @@ my %isoSetting2010 = (
|
|
7847
7851
|
},
|
7848
7852
|
0x0050 => {
|
7849
7853
|
Name => 'ShutterCount2',
|
7850
|
-
Condition => '(
|
7854
|
+
Condition => '($$self{FlashFired} & 0x01) != 1',
|
7851
7855
|
Format => 'int32u',
|
7852
7856
|
RawConv => '$val & 0x00ffffff',
|
7853
7857
|
},
|
7854
7858
|
0x0066 => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes
|
7855
7859
|
Name => 'SonyExposureTime',
|
7856
|
-
Condition => '$$self{Model} =~ /^(ILCE-7SM3)/',
|
7857
7860
|
Format => 'int16u',
|
7858
7861
|
ValueConv => '$val ? 2 ** (16 - $val/256) : 0',
|
7859
7862
|
ValueConvInv => '$val ? int((16 - log($val) / log(2)) * 256 + 0.5) : 0',
|
@@ -7862,7 +7865,6 @@ my %isoSetting2010 = (
|
|
7862
7865
|
},
|
7863
7866
|
0x0068 => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes
|
7864
7867
|
Name => 'SonyFNumber',
|
7865
|
-
Condition => '$$self{Model} =~ /^(ILCE-7SM3)/',
|
7866
7868
|
Format => 'int16u',
|
7867
7869
|
ValueConv => '2 ** (($val/256 - 16) / 2)',
|
7868
7870
|
ValueConvInv => '(log($val)*2/log(2)+16)*256',
|
@@ -7871,7 +7873,6 @@ my %isoSetting2010 = (
|
|
7871
7873
|
},
|
7872
7874
|
0x006b => {
|
7873
7875
|
Name => 'ReleaseMode2',
|
7874
|
-
Condition => '$$self{Model} =~ /^(ILCE-7SM3)/',
|
7875
7876
|
%releaseMode2,
|
7876
7877
|
},
|
7877
7878
|
0x0088 => {
|
@@ -8050,7 +8051,7 @@ my %isoSetting2010 = (
|
|
8050
8051
|
NOTES => q{
|
8051
8052
|
Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/
|
8052
8053
|
RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/
|
8053
|
-
WX350/WX500, ILCE-7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
|
8054
|
+
WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
|
8054
8055
|
5100/6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
|
8055
8056
|
},
|
8056
8057
|
FIRST_ENTRY => 0,
|
@@ -8107,7 +8108,7 @@ my %isoSetting2010 = (
|
|
8107
8108
|
},
|
8108
8109
|
0x002a => {
|
8109
8110
|
Name => 'Quality2',
|
8110
|
-
Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/',
|
8111
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3))\b/',
|
8111
8112
|
PrintConv => {
|
8112
8113
|
0 => 'JPEG',
|
8113
8114
|
1 => 'RAW',
|
@@ -8117,13 +8118,13 @@ my %isoSetting2010 = (
|
|
8117
8118
|
},
|
8118
8119
|
0x0047 => {
|
8119
8120
|
Name => 'SonyImageHeight',
|
8120
|
-
Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/',
|
8121
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3))\b/',
|
8121
8122
|
Format => 'int16u',
|
8122
8123
|
PrintConv => '$val > 0 ? 8*$val : "n.a."',
|
8123
8124
|
},
|
8124
8125
|
0x0053 => {
|
8125
8126
|
Name => 'ModelReleaseYear',
|
8126
|
-
Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/',
|
8127
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3))\b/',
|
8127
8128
|
Format => 'int8u',
|
8128
8129
|
PrintConv => 'sprintf("20%.2d", $val)',
|
8129
8130
|
},
|
@@ -8142,7 +8143,7 @@ my %isoSetting2010 = (
|
|
8142
8143
|
0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
|
8143
8144
|
|
8144
8145
|
0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8145
|
-
0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401}
|
8146
|
+
0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8146
8147
|
0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8147
8148
|
0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8148
8149
|
0x0634 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 68', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
@@ -8900,6 +8901,7 @@ my %isoSetting2010 = (
|
|
8900
8901
|
# 1 0 0 0 for ILCE-5000/5100/6000/7/7M2/7R/7S/QX1
|
8901
8902
|
# 6 0 0 0 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2
|
8902
8903
|
# 9 . . . for ILCE-7SM3
|
8904
|
+
# 11 . . . for ILCE-1
|
8903
8905
|
# 0 2 0 0 for NEX/ILCE with LA-EA2/EA4 Phase-AF adapter
|
8904
8906
|
# 2 0 0 0 seen for a few NEX-5N images
|
8905
8907
|
# 2 2 0 0 seen for a few NEX-5N/7 images with LA-EA2 adapter
|
@@ -9409,7 +9411,7 @@ my %isoSetting2010 = (
|
|
9409
9411
|
WRITE_PROC => \&WriteEnciphered,
|
9410
9412
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
9411
9413
|
FORMAT => 'int8u',
|
9412
|
-
NOTES => 'Valid for the ILCE-7SM3.',
|
9414
|
+
NOTES => 'Valid for the ILCE-1/7SM3.',
|
9413
9415
|
FIRST_ENTRY => 0,
|
9414
9416
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
9415
9417
|
0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
|