exiftool_vendored 12.14.0 → 12.18.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.
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' },
|