exiftool-vendored.pl 13.17.0 → 13.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/Changes +102 -7
- package/bin/MANIFEST +14 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +1 -1
- package/bin/README +46 -46
- package/bin/config_files/example.config +1 -1
- package/bin/exiftool +211 -121
- package/bin/lib/Image/ExifTool/Apple.pm +12 -2
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +2 -2
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/DJI.pm +190 -29
- package/bin/lib/Image/ExifTool/DarwinCore.pm +22 -11
- package/bin/lib/Image/ExifTool/EXE.pm +2 -9
- package/bin/lib/Image/ExifTool/GM.pm +1 -1
- package/bin/lib/Image/ExifTool/GPS.pm +3 -3
- package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/lib/Image/ExifTool/GoPro.pm +86 -48
- package/bin/lib/Image/ExifTool/ICO.pm +2 -2
- package/bin/lib/Image/ExifTool/JPEG.pm +5 -1
- package/bin/lib/Image/ExifTool/JSON.pm +5 -1
- package/bin/lib/Image/ExifTool/Kodak.pm +3 -2
- package/bin/lib/Image/ExifTool/Nikon.pm +943 -1237
- package/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- package/bin/lib/Image/ExifTool/PCAP.pm +462 -0
- package/bin/lib/Image/ExifTool/PDF.pm +10 -1
- package/bin/lib/Image/ExifTool/PLIST.pm +92 -29
- package/bin/lib/Image/ExifTool/PNG.pm +7 -1
- package/bin/lib/Image/ExifTool/Photoshop.pm +2 -2
- package/bin/lib/Image/ExifTool/Plot.pm +713 -0
- package/bin/lib/Image/ExifTool/Protobuf.pm +24 -11
- package/bin/lib/Image/ExifTool/Qualcomm.pm +78 -1
- package/bin/lib/Image/ExifTool/QuickTime.pm +347 -318
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +75 -27
- package/bin/lib/Image/ExifTool/Sony.pm +33 -14
- package/bin/lib/Image/ExifTool/TagLookup.pm +5056 -4967
- package/bin/lib/Image/ExifTool/TagNames.pod +443 -334
- package/bin/lib/Image/ExifTool/Trailer.pm +3 -3
- package/bin/lib/Image/ExifTool/Validate.pm +4 -4
- package/bin/lib/Image/ExifTool/WriteCanonRaw.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteExif.pl +9 -4
- package/bin/lib/Image/ExifTool/WritePDF.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +58 -5
- package/bin/lib/Image/ExifTool/Writer.pl +14 -13
- package/bin/lib/Image/ExifTool/XMP.pm +34 -6
- package/bin/lib/Image/ExifTool/XMP2.pl +2 -0
- package/bin/lib/Image/ExifTool.pm +63 -29
- package/bin/lib/Image/ExifTool.pod +83 -86
- package/bin/perl-Image-ExifTool.spec +45 -45
- package/bin/windows_exiftool.txt +95 -71
- package/package.json +3 -3
|
@@ -111,7 +111,7 @@ my %insvLimit = (
|
|
|
111
111
|
The tags below are extracted from timed metadata in QuickTime and other
|
|
112
112
|
formats of video files when the ExtractEmbedded option is used. Although
|
|
113
113
|
most of these tags are combined into the single table below, ExifTool
|
|
114
|
-
currently reads
|
|
114
|
+
currently reads 103 different types of timed GPS metadata from video files.
|
|
115
115
|
},
|
|
116
116
|
VARS => { NO_ID => 1 },
|
|
117
117
|
GPSLatitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', RawConv => '$$self{FoundGPSLatitude} = 1; $val' },
|
|
@@ -1446,7 +1446,6 @@ Sample: for ($i=0; ; ) {
|
|
|
1446
1446
|
$$et{ee} = $ee; # need ee information for 'keys'
|
|
1447
1447
|
$et->HandleTag($tagTbl, $metaFormat, undef,
|
|
1448
1448
|
DataPt => \$buff,
|
|
1449
|
-
DataPos => 0,
|
|
1450
1449
|
Base => $$start[$i], # (Base must be set for CR3 files)
|
|
1451
1450
|
TagInfo => $tagInfo,
|
|
1452
1451
|
);
|
|
@@ -1494,7 +1493,6 @@ Sample: for ($i=0; ; ) {
|
|
|
1494
1493
|
FoundSomething($et, $tagTbl, $time[$i], $dur[$i]);
|
|
1495
1494
|
$et->HandleTag($tagTbl, $type, undef,
|
|
1496
1495
|
DataPt => \$buff,
|
|
1497
|
-
DataPos => 0,
|
|
1498
1496
|
Base => $$start[$i], # (Base must be set for CR3 files)
|
|
1499
1497
|
TagInfo => $tagInfo,
|
|
1500
1498
|
);
|
|
@@ -1571,6 +1569,7 @@ sub ProcessFreeGPS($$$)
|
|
|
1571
1569
|
my $debug = $et->Options('Debug');
|
|
1572
1570
|
my $oldOrder = GetByteOrder();
|
|
1573
1571
|
SetByteOrder('II');
|
|
1572
|
+
$$et{FoundEmbedded} = 1;
|
|
1574
1573
|
|
|
1575
1574
|
if (substr($$dataPt,18,8) eq "\xaa\xaa\xf2\xe1\xf0\xee\x54\x54") {
|
|
1576
1575
|
|
|
@@ -2208,7 +2207,7 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
|
2208
2207
|
unpack('x48V6a1a1a1x1V4', $$dataPt);
|
|
2209
2208
|
if (substr($$dataPt, 16, 3) eq 'IQS') {
|
|
2210
2209
|
$debug and $et->FoundTag(GPSType => 16);
|
|
2211
|
-
#
|
|
2210
|
+
# IQS variant (ref PH)
|
|
2212
2211
|
# header looks like this in my sample:
|
|
2213
2212
|
# 0000: 00 00 80 00 66 72 65 65 47 50 53 20 4c 00 00 00 [....freeGPS L...]
|
|
2214
2213
|
# 0010: 49 51 53 5f 41 37 5f 32 30 31 35 30 34 31 37 00 [IQS_A7_20150417.]
|
|
@@ -2219,12 +2218,26 @@ ATCRec: for ($recPos = 0x30; $recPos + 52 < $dirLen; $recPos += 52) {
|
|
|
2219
2218
|
$spd = Get32s($dataPt, 0x54) / 100 * $mpsToKph;
|
|
2220
2219
|
$alt = GetFloat($dataPt, 0x58) / 1000; # (NC)
|
|
2221
2220
|
} else {
|
|
2222
|
-
$debug and $et->FoundTag(GPSType => 17);
|
|
2223
2221
|
$lat = GetFloat($dataPt, 0x4c);
|
|
2224
2222
|
$lon = GetFloat($dataPt, 0x50);
|
|
2225
2223
|
$spd = GetFloat($dataPt, 0x54) * $knotsToKph;
|
|
2226
|
-
$trk = GetFloat($dataPt, 0x58);
|
|
2227
|
-
#
|
|
2224
|
+
$trk = GetFloat($dataPt, 0x58); # (NC, may be GPSImageDirection)
|
|
2225
|
+
# Rexing V1-4k dashcam scales the lat/lon
|
|
2226
|
+
# (recognize this dashcam by the KodakVersion, "3.01.054" for my sample)
|
|
2227
|
+
# 0000: 00 00 80 00 66 72 65 65 47 50 53 20 4c 00 00 00 [....freeGPS L...]
|
|
2228
|
+
# 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
|
|
2229
|
+
# 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
|
|
2230
|
+
# 0030: 0e 00 00 00 22 00 00 00 28 00 00 00 14 00 00 00 [...."...(.......]
|
|
2231
|
+
# 0040: 02 00 00 00 16 00 00 00 41 4e 57 00 e9 7e 90 43 [........ANW..~.C]
|
|
2232
|
+
# 0050: 48 76 17 45 0c 02 48 42 14 6e 85 43 00 00 00 00 [Hv.E..HB.n.C....]
|
|
2233
|
+
if ($$et{KodakVersion} and $$et{KodakVersion} eq '3.01.054') {
|
|
2234
|
+
$debug and $et->FoundTag(GPSType => '17b');
|
|
2235
|
+
$lat = ($lat - 187.982162849635) / 3;
|
|
2236
|
+
$lon = ($lon - 2199.19873715495) / 2;
|
|
2237
|
+
$ddd = 1;
|
|
2238
|
+
} else {
|
|
2239
|
+
$debug and $et->FoundTag(GPSType => 17);
|
|
2240
|
+
}
|
|
2228
2241
|
}
|
|
2229
2242
|
if ($dirLen >= 0xb0) {
|
|
2230
2243
|
# lat/lon also stored as doubles by Transcend Driver Pro 230 (ref PH)
|
|
@@ -3534,50 +3547,85 @@ sub ProcessWolfbox($$$)
|
|
|
3534
3547
|
}
|
|
3535
3548
|
|
|
3536
3549
|
#------------------------------------------------------------------------------
|
|
3537
|
-
# Scan media data for "freeGPS" metadata if not found already (ref PH)
|
|
3550
|
+
# Scan media data for "freeGPS" and GoPro metadata if not found already (ref PH)
|
|
3538
3551
|
# Inputs: 0) ExifTool ref
|
|
3539
3552
|
sub ScanMediaData($)
|
|
3540
3553
|
{
|
|
3541
3554
|
my $et = shift;
|
|
3542
3555
|
my $raf = $$et{RAF} or return;
|
|
3543
|
-
my ($tagTbl, $verbose, $buff, $dataLen);
|
|
3544
|
-
my ($pos, $buf2) = (0, '');
|
|
3556
|
+
my ($tagTbl, $verbose, $buff, $dataLen, $found);
|
|
3545
3557
|
|
|
3546
3558
|
# don't rescan for freeGPS if we already found embedded metadata
|
|
3547
3559
|
my $dataPos = $$et{MediaDataOffset};
|
|
3548
|
-
if
|
|
3560
|
+
return if $$et{FoundEmbedded} or not $dataPos;
|
|
3561
|
+
|
|
3562
|
+
my ($pos, $buf2) = (0, '');
|
|
3563
|
+
my $ee = $et->Options('ExtractEmbedded');
|
|
3564
|
+
if ($ee > 2) { # scan entire file from start of mdat if ExtractEmbedded > 2
|
|
3565
|
+
$raf->Seek(0,2);
|
|
3566
|
+
$dataLen = $raf->Tell() - $$et{MediaDataOffset};
|
|
3567
|
+
} else {
|
|
3549
3568
|
$dataLen = $$et{MediaDataSize};
|
|
3550
|
-
if ($dataLen) {
|
|
3551
|
-
if ($raf->Seek($dataPos, 0)) {
|
|
3552
|
-
$$et{FreeGPS2} = { }; # initialize variable space for FreeGPS2()
|
|
3553
|
-
} else {
|
|
3554
|
-
undef $dataLen;
|
|
3555
|
-
}
|
|
3556
|
-
}
|
|
3557
3569
|
}
|
|
3570
|
+
return unless $dataLen and $raf->Seek($dataPos);
|
|
3558
3571
|
|
|
3559
3572
|
# loop through 'mdat' media data looking for GPS information
|
|
3560
3573
|
while ($dataLen) {
|
|
3561
|
-
|
|
3562
|
-
|
|
3574
|
+
my $n = $gpsBlockSize;
|
|
3575
|
+
$n = $dataLen - $pos if $n + $pos > $dataLen;
|
|
3576
|
+
last unless $n > length($buf2) and $raf->Read($buff, $n - length($buf2));
|
|
3563
3577
|
$buff = $buf2 . $buff if length $buf2;
|
|
3564
|
-
|
|
3565
|
-
#
|
|
3566
|
-
# (found on an absolute 0x8000-byte boundary in all of my samples,
|
|
3578
|
+
# look for "freeGPS " or GoPro record
|
|
3579
|
+
# (freeGPS found on an absolute 0x8000-byte boundary in all of my samples,
|
|
3567
3580
|
# but allow for any alignment when searching)
|
|
3568
|
-
if ($buff !~
|
|
3581
|
+
if ($buff !~ /(\0..\0freeGPS |GP\x06\0\0)/sg) {
|
|
3569
3582
|
$buf2 = substr($buff,-12);
|
|
3570
3583
|
$pos += length($buff)-12;
|
|
3571
3584
|
# in all of my samples the first freeGPS block is within 2 MB of the start
|
|
3572
3585
|
# of the mdat, so limit the scan to the first 20 MB to be fast and safe
|
|
3573
|
-
next if $
|
|
3586
|
+
next if $found or $pos < 20e6 or $ee > 1;
|
|
3574
3587
|
last;
|
|
3575
|
-
} elsif (
|
|
3588
|
+
} elsif ($1 eq "GP\x06\0\0") { # (GoPro GPS record header)
|
|
3589
|
+
# (found in Chigee Aio-5 Lite and some Insta360 videos)
|
|
3590
|
+
my $buffPos = pos($buff);
|
|
3591
|
+
my $filePos = $raf->Tell();
|
|
3592
|
+
my $start = $filePos - length($buff) + $buffPos - length($1);
|
|
3593
|
+
$raf->Seek($start) or last;
|
|
3594
|
+
unless (defined $found) {
|
|
3595
|
+
$et->VPrint(0, "---- Extract Embedded ----\n");
|
|
3596
|
+
$$et{INDENT} .= '| ';
|
|
3597
|
+
$found = 0;
|
|
3598
|
+
}
|
|
3599
|
+
my $maxLen = $dataLen - ($start - $$et{MediaDataOffset});
|
|
3600
|
+
require Image::ExifTool::GoPro;
|
|
3601
|
+
$et->VPrint(0, sprintf("Unreferenced GoPro record at 0x%x\n",$filePos));
|
|
3602
|
+
my $size = Image::ExifTool::GoPro::ProcessGP6($et, { RAF => $raf, DirLen => $maxLen });
|
|
3603
|
+
if ($size) {
|
|
3604
|
+
unless ($found) {
|
|
3605
|
+
# scan entire file if we found a valid GoPro record
|
|
3606
|
+
# (some records may exist in trailer)
|
|
3607
|
+
$raf->Seek(0, 2) and $dataLen = $raf->Tell() - $$et{MediaDataOffset};
|
|
3608
|
+
$found = 2;
|
|
3609
|
+
}
|
|
3610
|
+
$raf->Seek($start + $size) or last;
|
|
3611
|
+
$pos = $start + $size - $$et{MediaDataOffset};
|
|
3612
|
+
$buf2 = '';
|
|
3613
|
+
} else {
|
|
3614
|
+
# (could have been a random match -- continue with search)
|
|
3615
|
+
$raf->Seek($filePos) or last;
|
|
3616
|
+
$buf2 = substr($buff, $buffPos);
|
|
3617
|
+
$pos += $buffPos;
|
|
3618
|
+
}
|
|
3619
|
+
next;
|
|
3620
|
+
}
|
|
3621
|
+
last if length $buff < $gpsBlockSize;
|
|
3622
|
+
if (not $tagTbl) {
|
|
3576
3623
|
# initialize variables for extracting metadata from this block
|
|
3577
3624
|
$tagTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
|
3578
3625
|
$verbose = $$et{OPTIONS}{Verbose};
|
|
3579
3626
|
$et->VPrint(0, "---- Extract Embedded ----\n");
|
|
3580
3627
|
$$et{INDENT} .= '| ';
|
|
3628
|
+
$found = 1;
|
|
3581
3629
|
}
|
|
3582
3630
|
if (pos($buff) > 12) {
|
|
3583
3631
|
$pos += pos($buff) - 12;
|
|
@@ -3604,7 +3652,7 @@ sub ScanMediaData($)
|
|
|
3604
3652
|
$pos += $len;
|
|
3605
3653
|
$buf2 = substr($buff, $len);
|
|
3606
3654
|
}
|
|
3607
|
-
if ($
|
|
3655
|
+
if ($found) {
|
|
3608
3656
|
delete $$et{DOC_NUM}; # reset DOC_NUM after extracting embedded metadata
|
|
3609
3657
|
$et->VPrint(0, "--------------------------\n");
|
|
3610
3658
|
$$et{INDENT} = substr $$et{INDENT}, 0, -2;
|
|
@@ -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.73';
|
|
38
38
|
|
|
39
39
|
sub ProcessSRF($$$);
|
|
40
40
|
sub ProcessSR2($$$);
|
|
@@ -76,7 +76,9 @@ sub PrintInvLensSpec($;$$);
|
|
|
76
76
|
6 => 'Sony LA-EA4 Adapter',
|
|
77
77
|
7 => 'Sony LA-EA5 Adapter', #JR
|
|
78
78
|
13 => 'Samyang AF 35-150mm F2-2.8',
|
|
79
|
-
|
|
79
|
+
20 => 'Samyang AF 35mm F1.4 P FE', #JR
|
|
80
|
+
21 => 'Samyang AF 14-24mm F2.8', #JR
|
|
81
|
+
# 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
|
|
80
82
|
44 => 'Metabones Canon EF Smart Adapter', #JR
|
|
81
83
|
78 => 'Metabones Canon EF Smart Adapter Mark III or Other Adapter', #PH/JR (also Mark IV, Fotodiox and Viltrox)
|
|
82
84
|
184 => 'Metabones Canon EF Speed Booster Ultra', #JR ('Green' mode, LensMount reported as A-mount)
|
|
@@ -164,6 +166,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
164
166
|
32877 => 'Sony E 15mm F1.4 G', #JR
|
|
165
167
|
32878 => 'Sony FE 20-70mm F4 G', #JR
|
|
166
168
|
32879 => 'Sony FE 50mm F1.4 GM', #JR
|
|
169
|
+
32880 => 'Sony FE 16mm F1.8 G', #JR
|
|
167
170
|
32881 => 'Sony FE 24-50mm F2.8 G', #JR
|
|
168
171
|
32882 => 'Sony FE 16-25mm F2.8 G', #JR
|
|
169
172
|
32884 => 'Sony FE 70-200mm F4 Macro G OSS II', #JR
|
|
@@ -171,6 +174,8 @@ sub PrintInvLensSpec($;$$);
|
|
|
171
174
|
32886 => 'Sony FE 300mm F2.8 GM OSS', #JR
|
|
172
175
|
32887 => 'Sony E PZ 16-50mm F3.5-5.6 OSS II', #JR
|
|
173
176
|
32888 => 'Sony FE 85mm F1.4 GM II', #JR
|
|
177
|
+
32889 => 'Sony FE 28-70mm F2 GM',
|
|
178
|
+
32890 => 'Sony FE 400-800mm F6.3-8 G OSS', #JR
|
|
174
179
|
|
|
175
180
|
# (comment this out so LensID will report the LensModel, which is more useful)
|
|
176
181
|
# 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
|
|
@@ -193,6 +198,8 @@ sub PrintInvLensSpec($;$$);
|
|
|
193
198
|
33088 => 'Sony FE 70-200mm F4 Macro G OSS II + 2X Teleconverter', #JR
|
|
194
199
|
33089 => 'Sony FE 300mm F2.8 GM OSS + 1.4X Teleconverter', #JR (NC)
|
|
195
200
|
33090 => 'Sony FE 300mm F2.8 GM OSS + 2X Teleconverter', #JR
|
|
201
|
+
33091 => 'Sony FE 400-800mm F6.3-8 G OSS + 1.4X Teleconverter', #JR
|
|
202
|
+
33092 => 'Sony FE 400-800mm F6.3-8 G OSS + 2X Teleconverter', #JR
|
|
196
203
|
|
|
197
204
|
49201 => 'Zeiss Touit 12mm F2.8', #JR (lens firmware Ver.02)
|
|
198
205
|
49202 => 'Zeiss Touit 32mm F1.8', #JR (lens firmware Ver.02)
|
|
@@ -304,6 +311,11 @@ sub PrintInvLensSpec($;$$);
|
|
|
304
311
|
50549 => 'Sigma 50mm F1.2 DG DN | A', #JR (024)
|
|
305
312
|
50550 => 'Sigma 28-105mm F2.8 DG DN | A', #JR (024)
|
|
306
313
|
50551 => 'Sigma 28-45mm F1.8 DG DN | A', #JR (024)
|
|
314
|
+
50553 => 'Sigma 300-600mm F4 DG OS | S', #JR (025)
|
|
315
|
+
|
|
316
|
+
# lenses listed in the Sigma MC-11 list, but not yet seen:
|
|
317
|
+
# 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
|
|
318
|
+
# 504xx => 'Sigma 30mm F1.4 DC HSM | A + MC-11', # (013)
|
|
307
319
|
|
|
308
320
|
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
|
|
309
321
|
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
|
|
@@ -320,10 +332,10 @@ sub PrintInvLensSpec($;$$);
|
|
|
320
332
|
51006 => 'Voigtlander APO-LANTHAR 35mm F2 Aspherical', #JR
|
|
321
333
|
51007 => 'Voigtlander NOKTON 50mm F1 Aspherical', #JR
|
|
322
334
|
51008 => 'Voigtlander NOKTON 75mm F1.5 Aspherical', #JR
|
|
335
|
+
51009 => 'Voigtlander NOKTON 28mm F1.5 Aspherical', #JR
|
|
323
336
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
# 504xx => 'Sigma 30mm F1.4 DC HSM | A + MC-11', # (013)
|
|
337
|
+
51072 => 'ZEISS Otus ML 50mm F1.4', #JR
|
|
338
|
+
51073 => 'ZEISS Otus ML 85mm F1.4', #JR
|
|
327
339
|
|
|
328
340
|
# Note: For Samyang lenses, the "FE" designation isn't written to
|
|
329
341
|
# EXIF:LensModel, so it isn't included in these strings either - JR/PH
|
|
@@ -343,6 +355,8 @@ sub PrintInvLensSpec($;$$);
|
|
|
343
355
|
51518 => 'Samyang AF 135mm F1.8', #JR
|
|
344
356
|
|
|
345
357
|
61569 => 'LAOWA FFII 10mm F2.8 C&D Dreamer', #JR
|
|
358
|
+
|
|
359
|
+
61761 => 'Viltrox 28mm F4.5 FE', #JR
|
|
346
360
|
);
|
|
347
361
|
|
|
348
362
|
# ExposureProgram values (ref PH, mainly decoded from A200)
|
|
@@ -1226,6 +1240,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
1226
1240
|
9 => 'Center (LA-EA4)', # seen for ILCE-7RM2 with LA-EA4
|
|
1227
1241
|
11 => 'Zone',
|
|
1228
1242
|
12 => 'Expanded Flexible Spot',
|
|
1243
|
+
13 => 'Custom AF Area', # NC, new AFArea option for ILCE-9M3, ILCE-1M2
|
|
1229
1244
|
},
|
|
1230
1245
|
},{
|
|
1231
1246
|
Name => 'AFAreaModeSetting',
|
|
@@ -1726,7 +1741,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
1726
1741
|
},
|
|
1727
1742
|
},{
|
|
1728
1743
|
Name => 'Tag9050d',
|
|
1729
|
-
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ZV-(E1|E10M2))\b/',
|
|
1744
|
+
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ZV-(E1|E10M2))\b/ or ($$self{Model} =~ /^(ILCE-1M2)/ and $$valPt =~ /^\x00/)',
|
|
1730
1745
|
SubDirectory => {
|
|
1731
1746
|
TagTable => 'Image::ExifTool::Sony::Tag9050d',
|
|
1732
1747
|
ByteOrder => 'LittleEndian',
|
|
@@ -8208,14 +8223,17 @@ my %isoSetting2010 = (
|
|
|
8208
8223
|
WRITE_PROC => \&WriteEnciphered,
|
|
8209
8224
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
|
8210
8225
|
FORMAT => 'int8u',
|
|
8211
|
-
NOTES =>
|
|
8226
|
+
NOTES => q{
|
|
8227
|
+
Valid for ILCE-6700/7CM2/7CR/ZV-E1. Also for ILCE-1M2 when using mechanical
|
|
8228
|
+
shutter.
|
|
8229
|
+
},
|
|
8212
8230
|
WRITABLE => 1,
|
|
8213
8231
|
FIRST_ENTRY => 0,
|
|
8214
8232
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
|
8215
8233
|
0x000a => {
|
|
8216
8234
|
Name => 'ShutterCount',
|
|
8217
8235
|
# number of mechanical shutter actuations, does not increase during electronic shutter / Silent Shooting
|
|
8218
|
-
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR))/',
|
|
8236
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR))/',
|
|
8219
8237
|
Format => 'int32u',
|
|
8220
8238
|
Notes => 'total number of mechanical shutter actuations',
|
|
8221
8239
|
RawConv => '$val & 0x00ffffff',
|
|
@@ -8451,7 +8469,7 @@ my %isoSetting2010 = (
|
|
|
8451
8469
|
200 => 'Continuous - Sweep Panorama',
|
|
8452
8470
|
},
|
|
8453
8471
|
},
|
|
8454
|
-
0x001a => { %sequenceFileNumber },
|
|
8472
|
+
0x001a => { %sequenceFileNumber }, # ILCE-9M3/1M2 have sometimes deviating values.
|
|
8455
8473
|
0x001e => {
|
|
8456
8474
|
Name => 'SequenceLength',
|
|
8457
8475
|
PrintConv => {
|
|
@@ -8476,7 +8494,7 @@ my %isoSetting2010 = (
|
|
|
8476
8494
|
},
|
|
8477
8495
|
0x002a => [{
|
|
8478
8496
|
Name => 'Quality2',
|
|
8479
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
|
|
8497
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|1M2|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
|
|
8480
8498
|
PrintConv => {
|
|
8481
8499
|
0 => 'JPEG',
|
|
8482
8500
|
1 => 'RAW',
|
|
@@ -8544,7 +8562,7 @@ my %isoSetting2010 = (
|
|
|
8544
8562
|
0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
|
|
8545
8563
|
|
|
8546
8564
|
0x03e2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 181', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
|
8547
|
-
0x03f4 => { Name => 'ISOInfo', Condition => '$$self{Ver9401}
|
|
8565
|
+
0x03f4 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(185|186)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
|
8548
8566
|
0x044e => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 178', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
|
8549
8567
|
0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
|
8550
8568
|
0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167 and $$self{Software} !~ /^ILCE-7M4 (v2|v3)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
|
@@ -8619,6 +8637,7 @@ my %isoSetting2010 = (
|
|
|
8619
8637
|
10 => 'Selective (for Miniature effect)', # seen for DSC-HX30V,TX30,WX60,WX100
|
|
8620
8638
|
11 => 'Zone', #JR (ILCE-7 series)
|
|
8621
8639
|
12 => 'Expanded Flexible Spot', #JR (HX90V, ILCE-7 series)
|
|
8640
|
+
13 => 'Custom AF Area', # NC, new AFArea option for ILCE-9M3, ILCE-1M2
|
|
8622
8641
|
14 => 'Tracking',
|
|
8623
8642
|
15 => 'Face Tracking',
|
|
8624
8643
|
20 => 'Animal Eye Tracking',
|
|
@@ -10034,7 +10053,7 @@ my %isoSetting2010 = (
|
|
|
10034
10053
|
},
|
|
10035
10054
|
0x089d => { # Note: 32 values for these newer models, and 32 non-zero values present for new lenses like SEL2470GM2 and SEL2070G
|
|
10036
10055
|
Name => 'VignettingCorrParams',
|
|
10037
|
-
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
|
|
10056
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
|
|
10038
10057
|
Format => 'int16s[32]',
|
|
10039
10058
|
},
|
|
10040
10059
|
0x08b5 => {
|
|
@@ -10055,7 +10074,7 @@ my %isoSetting2010 = (
|
|
|
10055
10074
|
},
|
|
10056
10075
|
0x08e5 => {
|
|
10057
10076
|
Name => 'APS-CSizeCapture',
|
|
10058
|
-
Condition => '$$self{Model} =~ /^(ILCE-(7CM2|7CR|7RM5)|ZV-E1)\b/',
|
|
10077
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1M2|7CM2|7CR|7RM5)|ZV-E1)\b/',
|
|
10059
10078
|
PrintConv => {
|
|
10060
10079
|
0 => 'Off',
|
|
10061
10080
|
1 => 'On',
|
|
@@ -10073,7 +10092,7 @@ my %isoSetting2010 = (
|
|
|
10073
10092
|
},
|
|
10074
10093
|
0x0945 => {
|
|
10075
10094
|
Name => 'ChromaticAberrationCorrParams',
|
|
10076
|
-
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
|
|
10095
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1M2|6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
|
|
10077
10096
|
Format => 'int16s[32]',
|
|
10078
10097
|
},
|
|
10079
10098
|
);
|