exiftool_vendored 12.41.0 → 12.50.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/Changes +209 -6
- data/bin/MANIFEST +12 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +45 -44
- data/bin/config_files/acdsee.config +2 -1
- data/bin/config_files/frameCount.config +56 -0
- data/bin/config_files/tiff_version.config +1 -1
- data/bin/exiftool +115 -96
- data/bin/fmt_files/gpx.fmt +3 -0
- data/bin/fmt_files/gpx_wpt.fmt +3 -0
- data/bin/lib/Image/ExifTool/Apple.pm +16 -3
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +23 -12
- data/bin/lib/Image/ExifTool/Canon.pm +71 -33
- data/bin/lib/Image/ExifTool/CanonRaw.pm +8 -1
- data/bin/lib/Image/ExifTool/CanonVRD.pm +7 -8
- data/bin/lib/Image/ExifTool/DJI.pm +60 -1
- data/bin/lib/Image/ExifTool/DNG.pm +8 -2
- data/bin/lib/Image/ExifTool/DarwinCore.pm +13 -1
- data/bin/lib/Image/ExifTool/EXE.pm +9 -1
- data/bin/lib/Image/ExifTool/Exif.pm +26 -12
- data/bin/lib/Image/ExifTool/FLAC.pm +17 -3
- data/bin/lib/Image/ExifTool/FLIR.pm +4 -3
- data/bin/lib/Image/ExifTool/FlashPix.pm +26 -3
- data/bin/lib/Image/ExifTool/FujiFilm.pm +51 -4
- data/bin/lib/Image/ExifTool/GPS.pm +21 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +25 -5
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +12 -9
- data/bin/lib/Image/ExifTool/ICO.pm +143 -0
- data/bin/lib/Image/ExifTool/ID3.pm +11 -11
- data/bin/lib/Image/ExifTool/IPTC.pm +5 -1
- data/bin/lib/Image/ExifTool/LNK.pm +5 -2
- data/bin/lib/Image/ExifTool/M2TS.pm +98 -8
- data/bin/lib/Image/ExifTool/MIE.pm +9 -3
- data/bin/lib/Image/ExifTool/MISB.pm +494 -0
- data/bin/lib/Image/ExifTool/MakerNotes.pm +8 -1
- data/bin/lib/Image/ExifTool/Matroska.pm +24 -16
- data/bin/lib/Image/ExifTool/Motorola.pm +8 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +293 -122
- data/bin/lib/Image/ExifTool/NikonCustom.pm +4 -1
- data/bin/lib/Image/ExifTool/NikonSettings.pm +5 -3
- data/bin/lib/Image/ExifTool/Olympus.pm +22 -2
- data/bin/lib/Image/ExifTool/PDF.pm +2 -1
- data/bin/lib/Image/ExifTool/Panasonic.pm +30 -4
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +25 -5
- data/bin/lib/Image/ExifTool/Parrot.pm +96 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +8 -3
- data/bin/lib/Image/ExifTool/Photoshop.pm +35 -8
- data/bin/lib/Image/ExifTool/QuickTime.pm +163 -13
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +119 -13
- data/bin/lib/Image/ExifTool/README +13 -3
- data/bin/lib/Image/ExifTool/RIFF.pm +106 -9
- data/bin/lib/Image/ExifTool/Samsung.pm +234 -3
- data/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
- data/bin/lib/Image/ExifTool/Sigma.pm +27 -1
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +37 -13
- data/bin/lib/Image/ExifTool/Sony.pm +71 -43
- data/bin/lib/Image/ExifTool/TagInfoXML.pm +3 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4752 -4516
- data/bin/lib/Image/ExifTool/TagNames.pod +1885 -1434
- data/bin/lib/Image/ExifTool/Text.pm +3 -4
- data/bin/lib/Image/ExifTool/Torrent.pm +2 -3
- data/bin/lib/Image/ExifTool/Validate.pm +3 -3
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +7 -0
- data/bin/lib/Image/ExifTool/WriteExif.pl +100 -23
- data/bin/lib/Image/ExifTool/WriteIPTC.pl +2 -6
- data/bin/lib/Image/ExifTool/WritePhotoshop.pl +5 -5
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +359 -0
- data/bin/lib/Image/ExifTool/Writer.pl +14 -6
- data/bin/lib/Image/ExifTool/XMP.pm +78 -59
- data/bin/lib/Image/ExifTool/XMP2.pl +19 -4
- data/bin/lib/Image/ExifTool.pm +120 -33
- data/bin/lib/Image/ExifTool.pod +83 -69
- data/bin/perl-Image-ExifTool.spec +43 -43
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +9 -4
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
17
17
|
use Image::ExifTool::Sigma;
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.29';
|
20
20
|
|
21
21
|
sub ProcessX3FHeader($$$);
|
22
22
|
sub ProcessX3FDirectory($$$);
|
@@ -385,14 +385,14 @@ sub WriteX3F($$)
|
|
385
385
|
my ($et, $dirInfo) = @_;
|
386
386
|
my $raf = $$dirInfo{RAF};
|
387
387
|
my $outfile = $$dirInfo{OutFile};
|
388
|
-
my ($
|
388
|
+
my ($hdr, $buff, $ver, $entries, $dir, $outPos, $index, $didContain, %order, @order);
|
389
389
|
|
390
390
|
$raf->Seek($$dirInfo{DirStart}, 0) or return 'Error seeking to directory start';
|
391
391
|
|
392
392
|
# read the X3F directory header (will be copied directly to output)
|
393
|
-
$raf->Read($
|
394
|
-
$
|
395
|
-
($ver, $entries) = unpack('x4V2', $
|
393
|
+
$raf->Read($hdr, 12) == 12 or return 'Truncated X3F image';
|
394
|
+
$hdr =~ /^SECd/ or return 'Bad section header';
|
395
|
+
($ver, $entries) = unpack('x4V2', $hdr);
|
396
396
|
|
397
397
|
# do sanity check on number of entries in directory
|
398
398
|
return 'Invalid X3F directory count' unless $entries > 2 and $entries < 20;
|
@@ -400,12 +400,16 @@ sub WriteX3F($$)
|
|
400
400
|
unless ($raf->Read($dir, $entries * 12) == $entries * 12) {
|
401
401
|
return 'Truncated X3F directory';
|
402
402
|
}
|
403
|
-
# do a quick scan to determine the offset of the first data subsection
|
403
|
+
# do a quick scan to determine the offset of the first data subsection,
|
404
|
+
# and the order in which the actual data is stored in the file
|
404
405
|
for ($index=0; $index<$entries; ++$index) {
|
405
406
|
my $pos = $index * 12;
|
406
407
|
my ($offset, $len, $tag) = unpack("x${pos}V2a4", $dir);
|
407
408
|
# remember position of first data subsection
|
408
409
|
$outPos = $offset if not defined $outPos or $outPos > $offset;
|
410
|
+
# save the order of the data
|
411
|
+
$order{BAD} = 1 if defined $order{$offset};
|
412
|
+
$order{$offset} = $index;
|
409
413
|
}
|
410
414
|
# copy the file header up to the start of the first data subsection
|
411
415
|
unless ($raf->Seek(0,0) and $raf->Read($buff, $outPos) == $outPos) {
|
@@ -413,8 +417,25 @@ sub WriteX3F($$)
|
|
413
417
|
}
|
414
418
|
Write($outfile, $buff) or return -1;
|
415
419
|
|
416
|
-
#
|
417
|
-
|
420
|
+
# this is a bit tricky/unfortunate: the current version of Sigma Photo Pro
|
421
|
+
# (2022-10-18) is sensitive to the order of the data sections, and these may
|
422
|
+
# differ from the order of their respective entries in the footer. To patch
|
423
|
+
# this, instead of looping through the footer sections in order, we process
|
424
|
+
# them in the order of the offsets they contain, writing their referenced data
|
425
|
+
# sequentially as we go. This preserves both the order of the data sections
|
426
|
+
# and the order of the footer entries. (Note that the upcoming release of
|
427
|
+
# Sigma Photo Pro will fix this issue at their end, but this patch will remain
|
428
|
+
# to maintain backward compatibilty with older SPP versions.)
|
429
|
+
if ($order{BAD}) {
|
430
|
+
# (this could perhaps happen if any of the sections is ever zero-length)
|
431
|
+
$et->Error('Double-referenced data in footer directory!', 1);
|
432
|
+
@order = ( 0 .. $entries-1 );
|
433
|
+
} else {
|
434
|
+
@order = map $order{$_}, sort { $a <=> $b } keys %order;
|
435
|
+
}
|
436
|
+
|
437
|
+
# loop through footer directory, rewriting each section
|
438
|
+
foreach $index (@order) {
|
418
439
|
|
419
440
|
my $pos = $index * 12;
|
420
441
|
my ($offset, $len, $tag) = unpack("x${pos}V2a4", $dir);
|
@@ -450,6 +471,8 @@ sub WriteX3F($$)
|
|
450
471
|
return -1 if $success < 0;
|
451
472
|
# (this shouldn't happen unless someone tries to delete the EXIF...)
|
452
473
|
return 'EXIF segment must come first in X3F JpgFromRaw' unless $newData =~ /^\xff\xd8\xff\xe1/;
|
474
|
+
# trim off any extra null bytes (since section length includes padding -- silly Sigma)
|
475
|
+
$newData =~ s/\0+$//;
|
453
476
|
# write new data if anything changed, otherwise copy old image
|
454
477
|
my $outPt = $$et{CHANGED} ? \$newData : \$buff;
|
455
478
|
Write($outfile, $$outPt) or return -1;
|
@@ -468,20 +491,21 @@ sub WriteX3F($$)
|
|
468
491
|
# copy data for this subsection
|
469
492
|
Image::ExifTool::CopyBlock($raf, $outfile, $len) or return 'Corrupted X3F directory';
|
470
493
|
}
|
471
|
-
# add directory entry and update output file position
|
472
|
-
$outDir .= pack('V2a4', $outPos, $len, $tag);
|
473
|
-
$outPos += $len;
|
474
494
|
# pad data to an even 4-byte boundary
|
495
|
+
# (stored length includes padding! ref Sigma engineer Yuki Miyahara)
|
475
496
|
if ($len & 0x03) {
|
476
497
|
my $pad = 4 - ($len & 0x03);
|
477
498
|
Write($outfile, "\0" x $pad) or return -1;
|
478
|
-
$
|
499
|
+
$len += $pad;
|
479
500
|
}
|
501
|
+
# update footer entry with new offset/size
|
502
|
+
substr($dir, $pos, 8) = pack('V2', $outPos, $len);
|
503
|
+
$outPos += $len;
|
480
504
|
}
|
481
505
|
# warn if we couldn't add metadata to this image (should only be SD9 or SD10)
|
482
506
|
$didContain or $et->Warn("Can't yet write SD9 or SD10 X3F images");
|
483
507
|
# write out the directory and the directory pointer, and we are done
|
484
|
-
Write($outfile, $
|
508
|
+
Write($outfile, $hdr, $dir, pack('V', $outPos)) or return -1;
|
485
509
|
return undef;
|
486
510
|
}
|
487
511
|
|
@@ -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.55';
|
38
38
|
|
39
39
|
sub ProcessSRF($$$);
|
40
40
|
sub ProcessSR2($$$);
|
@@ -154,7 +154,12 @@ sub PrintInvLensSpec($;$$);
|
|
154
154
|
32866 => 'Sony FE 24mm F2.8 G', #IB
|
155
155
|
32867 => 'Sony FE 40mm F2.5 G', #IB
|
156
156
|
32868 => 'Sony FE 50mm F2.5 G', #IB
|
157
|
+
32871 => 'Sony FE PZ 16-35mm F4 G', #JR
|
158
|
+
32873 => 'Sony E PZ 10-20mm F4 G', #JR
|
157
159
|
32874 => 'Sony FE 70-200mm F2.8 GM OSS II', #IB
|
160
|
+
32875 => 'Sony FE 24-70mm F2.8 GM II', #JR
|
161
|
+
32876 => 'Sony E 11mm F1.8', #JR
|
162
|
+
32877 => 'Sony E 15mm F1.4 G', #JR
|
158
163
|
|
159
164
|
# (comment this out so LensID will report the LensModel, which is more useful)
|
160
165
|
# 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
|
@@ -200,12 +205,15 @@ sub PrintInvLensSpec($;$$);
|
|
200
205
|
49468 => 'Tamron 18-300mm F3.5-6.3 Di III-A VC VXD', #JR (Model B061)
|
201
206
|
49469 => 'Tamron 35-150mm F2-F2.8 Di III VXD', #JR (Model A058)
|
202
207
|
49470 => 'Tamron 28-75mm F2.8 Di III VXD G2', #JR (Model A063)
|
208
|
+
49471 => 'Tamron 50-400mm F4.5-6.3 Di III VC VXD', #JR (Model A067)
|
209
|
+
49472 => 'Tamron 20-40mm F2.8 Di III VXD', #JR (Model A062)
|
203
210
|
|
204
211
|
49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
|
205
212
|
49473.1 => 'Viltrox 23mm F1.4 E', #JR
|
206
213
|
49473.2 => 'Viltrox 56mm F1.4 E', #JR
|
207
214
|
49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
|
208
215
|
49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
|
216
|
+
49714 => 'Tokina atx-m 11-18mm F2.8 E', #JR
|
209
217
|
|
210
218
|
50480 => 'Sigma 30mm F1.4 DC DN | C', #IB/JR (016)
|
211
219
|
50481 => 'Sigma 50mm F1.4 DG HSM | A', #JR (014 + MC-11 or 018)
|
@@ -245,6 +253,9 @@ sub PrintInvLensSpec($;$$);
|
|
245
253
|
50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
|
246
254
|
50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
|
247
255
|
50532 => 'Sigma 20mm F2 DG DN | C', #JR (022)
|
256
|
+
50533 => 'Sigma 16-28mm F2.8 DG DN | C', #JR (022)
|
257
|
+
50534 => 'Sigma 20mm F1.4 DG DN | A', #JR (022)
|
258
|
+
50535 => 'Sigma 24mm F1.4 DG DN | A', #JR (022)
|
248
259
|
|
249
260
|
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
|
250
261
|
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
|
@@ -1042,7 +1053,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1042
1053
|
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
|
1043
1054
|
},{
|
1044
1055
|
Name => 'Tag2010i', # ?
|
1045
|
-
Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-(
|
1056
|
+
Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-(1F?|E10))\b/',
|
1046
1057
|
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
|
1047
1058
|
},{
|
1048
1059
|
Name => 'Tag_0x2010',
|
@@ -1618,7 +1629,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1618
1629
|
# from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
|
1619
1630
|
{
|
1620
1631
|
Name => 'Tag9050a',
|
1621
|
-
Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
|
1632
|
+
Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
|
1622
1633
|
SubDirectory => {
|
1623
1634
|
TagTable => 'Image::ExifTool::Sony::Tag9050a',
|
1624
1635
|
ByteOrder => 'LittleEndian',
|
@@ -1632,7 +1643,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1632
1643
|
},
|
1633
1644
|
},{
|
1634
1645
|
Name => 'Tag9050c',
|
1635
|
-
Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)/',
|
1646
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7RM5|7SM3)|ILME-FX3)/',
|
1636
1647
|
SubDirectory => {
|
1637
1648
|
TagTable => 'Image::ExifTool::Sony::Tag9050c',
|
1638
1649
|
ByteOrder => 'LittleEndian',
|
@@ -1652,8 +1663,9 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1652
1663
|
# 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
|
1653
1664
|
# 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
|
1654
1665
|
# 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/E10
|
1655
|
-
# 0x31 (e) for ILCE-1/7SM3, ILME-FX3
|
1656
|
-
#
|
1666
|
+
# 0x31 (e) for ILCE-1/7M4/7SM3, ILME-FX3
|
1667
|
+
# 0x32 (e) for ILCE-7RM5, ILME-FX30
|
1668
|
+
# first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106, 89 respectively
|
1657
1669
|
{
|
1658
1670
|
Name => 'Tag9400a',
|
1659
1671
|
Condition => q{
|
@@ -1667,7 +1679,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
1667
1679
|
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400b' },
|
1668
1680
|
},{
|
1669
1681
|
Name => 'Tag9400c',
|
1670
|
-
Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
|
1682
|
+
Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31\x32]/',
|
1671
1683
|
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400c' },
|
1672
1684
|
},{
|
1673
1685
|
Name => 'Sony_0x9400',
|
@@ -2043,6 +2055,9 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
2043
2055
|
386 => 'ILCE-7RM3A', #JR
|
2044
2056
|
387 => 'ILCE-7RM4A', #forum12542
|
2045
2057
|
388 => 'ILCE-7M4', #IB/JR
|
2058
|
+
389 => 'ZV-1F', #IB
|
2059
|
+
390 => 'ILCE-7RM5', #IB
|
2060
|
+
391 => 'ILME-FX30', #JR
|
2046
2061
|
},
|
2047
2062
|
},
|
2048
2063
|
0xb020 => { #2
|
@@ -7965,7 +7980,7 @@ my %isoSetting2010 = (
|
|
7965
7980
|
},
|
7966
7981
|
0x0088 => {
|
7967
7982
|
Name => 'InternalSerialNumber', #(NC)
|
7968
|
-
Condition => '$$self{Model} =~ /^(ILCE-(7M4|7SM3)|ILME-FX3)/',
|
7983
|
+
Condition => '$$self{Model} =~ /^(ILCE-(7M4|7RM5|7SM3)|ILME-FX3)/',
|
7969
7984
|
Format => 'int8u[6]',
|
7970
7985
|
PrintConv => 'unpack "H*", pack "C*", split " ", $val',
|
7971
7986
|
},
|
@@ -8203,7 +8218,7 @@ my %isoSetting2010 = (
|
|
8203
8218
|
},
|
8204
8219
|
0x002a => [{
|
8205
8220
|
Name => 'Quality2',
|
8206
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
|
8221
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7RM5|7SM3)|ILME-FX3)\b/',
|
8207
8222
|
PrintConv => {
|
8208
8223
|
0 => 'JPEG',
|
8209
8224
|
1 => 'RAW',
|
@@ -8212,7 +8227,7 @@ my %isoSetting2010 = (
|
|
8212
8227
|
},
|
8213
8228
|
},{
|
8214
8229
|
Name => 'Quality2',
|
8215
|
-
Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
|
8230
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7RM5|7SM3)|ILME-FX3)\b/',
|
8216
8231
|
PrintConv => {
|
8217
8232
|
1 => 'JPEG',
|
8218
8233
|
2 => 'RAW',
|
@@ -8223,13 +8238,13 @@ my %isoSetting2010 = (
|
|
8223
8238
|
}],
|
8224
8239
|
0x0047 => {
|
8225
8240
|
Name => 'SonyImageHeight',
|
8226
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
|
8241
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7RM5|7SM3)|ILME-FX3)\b/',
|
8227
8242
|
Format => 'int16u',
|
8228
8243
|
PrintConv => '$val > 0 ? 8*$val : "n.a."',
|
8229
8244
|
},
|
8230
8245
|
0x0053 => {
|
8231
8246
|
Name => 'ModelReleaseYear',
|
8232
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
|
8247
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7RM5|7SM3)|ILME-FX3)\b/',
|
8233
8248
|
Format => 'int8u',
|
8234
8249
|
PrintConv => 'sprintf("20%.2d", $val)',
|
8235
8250
|
},
|
@@ -8244,9 +8259,10 @@ my %isoSetting2010 = (
|
|
8244
8259
|
FIRST_ENTRY => 0,
|
8245
8260
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
8246
8261
|
DATAMEMBER => [ 0 ],
|
8247
|
-
IS_SUBDIR => [ 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
|
8262
|
+
IS_SUBDIR => [ 0x044e, 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
|
8248
8263
|
0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
|
8249
8264
|
|
8265
|
+
0x044e => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 178', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8250
8266
|
0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8251
8267
|
0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
8252
8268
|
0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
|
@@ -9517,7 +9533,7 @@ my %isoSetting2010 = (
|
|
9517
9533
|
WRITE_PROC => \&WriteEnciphered,
|
9518
9534
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
9519
9535
|
FORMAT => 'int8u',
|
9520
|
-
NOTES => 'Valid for the ILCE-1/7M4/7SM3, ILME-FX3.',
|
9536
|
+
NOTES => 'Valid for the ILCE-1/7M4/7RM5/7SM3, ILME-FX3.',
|
9521
9537
|
FIRST_ENTRY => 0,
|
9522
9538
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
9523
9539
|
0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
|
@@ -9644,7 +9660,7 @@ my %isoSetting2010 = (
|
|
9644
9660
|
},
|
9645
9661
|
0x088f => {
|
9646
9662
|
Name => 'VignettingCorrParams',
|
9647
|
-
Condition => '$$self{Model}
|
9663
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
|
9648
9664
|
Format => 'int16s[16]',
|
9649
9665
|
},
|
9650
9666
|
0x0891 => {
|
@@ -9652,9 +9668,14 @@ my %isoSetting2010 = (
|
|
9652
9668
|
Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
|
9653
9669
|
Format => 'int16s[16]',
|
9654
9670
|
},
|
9671
|
+
0x089b => {
|
9672
|
+
Name => 'VignettingCorrParams',
|
9673
|
+
Condition => '$$self{Model} =~ /^(ILCE-7RM5|ILME-FX30)\b/',
|
9674
|
+
Format => 'int16s[16]',
|
9675
|
+
},
|
9655
9676
|
0x0914 => {
|
9656
9677
|
Name => 'ChromaticAberrationCorrParams',
|
9657
|
-
Condition => '$$self{Model}
|
9678
|
+
Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
|
9658
9679
|
Format => 'int16s[32]',
|
9659
9680
|
},
|
9660
9681
|
0x0916 => {
|
@@ -9662,6 +9683,11 @@ my %isoSetting2010 = (
|
|
9662
9683
|
Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
|
9663
9684
|
Format => 'int16s[32]',
|
9664
9685
|
},
|
9686
|
+
0x0945 => {
|
9687
|
+
Name => 'ChromaticAberrationCorrParams',
|
9688
|
+
Condition => '$$self{Model} =~ /^(ILCE-7RM5|ILME-FX30)\b/',
|
9689
|
+
Format => 'int16s[32]',
|
9690
|
+
},
|
9665
9691
|
);
|
9666
9692
|
|
9667
9693
|
%Image::ExifTool::Sony::FaceInfo1 = (
|
@@ -9937,20 +9963,22 @@ my %isoSetting2010 = (
|
|
9937
9963
|
WRITE_PROC => \&Image::ExifTool::Exif::WriteExif,
|
9938
9964
|
CHECK_PROC => \&Image::ExifTool::Exif::CheckExif,
|
9939
9965
|
GROUPS => { 0 => 'MakerNotes', 1 => 'SR2SubIFD', 2 => 'Camera' },
|
9966
|
+
WRITE_GROUP => 'SR2SubIFD',
|
9967
|
+
PERMANENT => 1,
|
9940
9968
|
SET_GROUP1 => 1, # set group1 name to directory name for all tags in table
|
9941
9969
|
NOTES => 'Tags in the encrypted SR2SubIFD',
|
9942
|
-
0x7300 => 'BlackLevel',
|
9943
|
-
0x7302 => 'WB_GRBGLevelsAuto', #IB (R1)
|
9944
|
-
0x7303 => 'WB_GRBGLevels', #1 (R1 "as shot", ref IB)
|
9945
|
-
0x7310 => 'BlackLevel', #IB (divide by 4)
|
9946
|
-
0x7312 => 'WB_RGGBLevelsAuto', #IB
|
9947
|
-
0x7313 => 'WB_RGGBLevels', #6
|
9948
|
-
0x7480 => 'WB_RGBLevelsDaylight', #IB (R1)
|
9949
|
-
0x7481 => 'WB_RGBLevelsCloudy', #IB (R1)
|
9950
|
-
0x7482 => 'WB_RGBLevelsTungsten', #IB (R1)
|
9951
|
-
0x7483 => 'WB_RGBLevelsFlash', #IB (R1)
|
9952
|
-
0x7484 => 'WB_RGBLevels4500K', #IB (R1)
|
9953
|
-
0x7486 => 'WB_RGBLevelsFluorescent', #IB (R1)
|
9970
|
+
0x7300 => { Name => 'BlackLevel', Writable => 'int16u', Count => 4, Protected => 1 },
|
9971
|
+
0x7302 => { Name => 'WB_GRBGLevelsAuto', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
9972
|
+
0x7303 => { Name => 'WB_GRBGLevels', Writable => 'int16s', Count => 4, Protected => 1 }, #1 (R1 "as shot", ref IB)
|
9973
|
+
0x7310 => { Name => 'BlackLevel', Writable => 'int16u', Count => 4, Protected => 1 }, #IB (divide by 4)
|
9974
|
+
0x7312 => { Name => 'WB_RGGBLevelsAuto', Writable => 'int16s', Count => 4, Protected => 1 }, #IB
|
9975
|
+
0x7313 => { Name => 'WB_RGGBLevels', Writable => 'int16s', Count => 4, Protected => 1 }, #6
|
9976
|
+
0x7480 => { Name => 'WB_RGBLevelsDaylight', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
9977
|
+
0x7481 => { Name => 'WB_RGBLevelsCloudy', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
9978
|
+
0x7482 => { Name => 'WB_RGBLevelsTungsten', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
9979
|
+
0x7483 => { Name => 'WB_RGBLevelsFlash', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
9980
|
+
0x7484 => { Name => 'WB_RGBLevels4500K', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
9981
|
+
0x7486 => { Name => 'WB_RGBLevelsFluorescent', Writable => 'int16s', Count => 4, Protected => 1 }, #IB (R1)
|
9954
9982
|
0x74a0 => 'MaxApertureAtMaxFocal', #PH
|
9955
9983
|
0x74a1 => 'MaxApertureAtMinFocal', #PH
|
9956
9984
|
0x74a2 => { #IB (R1)
|
@@ -9972,21 +10000,21 @@ my %isoSetting2010 = (
|
|
9972
10000
|
},
|
9973
10001
|
},
|
9974
10002
|
0x7800 => 'ColorMatrix', #IB (divide by 1024)
|
9975
|
-
0x7820 => 'WB_RGBLevelsDaylight', #6 (or 5300K, ref IB)
|
9976
|
-
0x7821 => 'WB_RGBLevelsCloudy', #6 (or 6100K, ref IB)
|
9977
|
-
0x7822 => 'WB_RGBLevelsTungsten', #6
|
9978
|
-
0x7823 => 'WB_RGBLevelsFlash', #IB
|
9979
|
-
0x7824 => 'WB_RGBLevels4500K', #IB
|
9980
|
-
0x7825 => 'WB_RGBLevelsShade', #6 (or 7500K, ref IB)
|
9981
|
-
0x7826 => 'WB_RGBLevelsFluorescent', #6 (~4000K)
|
9982
|
-
0x7827 => 'WB_RGBLevelsFluorescentP1', #IB (~5000K)
|
9983
|
-
0x7828 => 'WB_RGBLevelsFluorescentP2', #IB (~6500K) (was Flash, ref 6)
|
9984
|
-
0x7829 => 'WB_RGBLevelsFluorescentM1', #IB (~3500K)
|
9985
|
-
0x782a => 'WB_RGBLevels8500K', #IB
|
9986
|
-
0x782b => 'WB_RGBLevels6000K', #IB
|
9987
|
-
0x782c => 'WB_RGBLevels3200K', #IB
|
9988
|
-
0x782d => 'WB_RGBLevels2500K', #IB
|
9989
|
-
0x787f => 'WhiteLevel', #IB (divide by 4)
|
10003
|
+
0x7820 => { Name => 'WB_RGBLevelsDaylight', Writable => 'int16s', Count => 3, Protected => 1 }, #6 (or 5300K, ref IB)
|
10004
|
+
0x7821 => { Name => 'WB_RGBLevelsCloudy', Writable => 'int16s', Count => 3, Protected => 1 }, #6 (or 6100K, ref IB)
|
10005
|
+
0x7822 => { Name => 'WB_RGBLevelsTungsten', Writable => 'int16s', Count => 3, Protected => 1 }, #6
|
10006
|
+
0x7823 => { Name => 'WB_RGBLevelsFlash', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
10007
|
+
0x7824 => { Name => 'WB_RGBLevels4500K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
10008
|
+
0x7825 => { Name => 'WB_RGBLevelsShade', Writable => 'int16s', Count => 3, Protected => 1 }, #6 (or 7500K, ref IB)
|
10009
|
+
0x7826 => { Name => 'WB_RGBLevelsFluorescent', Writable => 'int16s', Count => 3, Protected => 1 }, #6 (~4000K)
|
10010
|
+
0x7827 => { Name => 'WB_RGBLevelsFluorescentP1', Writable => 'int16s', Count => 3, Protected => 1 }, #IB (~5000K)
|
10011
|
+
0x7828 => { Name => 'WB_RGBLevelsFluorescentP2', Writable => 'int16s', Count => 3, Protected => 1 }, #IB (~6500K) (was Flash, ref 6)
|
10012
|
+
0x7829 => { Name => 'WB_RGBLevelsFluorescentM1', Writable => 'int16s', Count => 3, Protected => 1 }, #IB (~3500K)
|
10013
|
+
0x782a => { Name => 'WB_RGBLevels8500K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
10014
|
+
0x782b => { Name => 'WB_RGBLevels6000K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
10015
|
+
0x782c => { Name => 'WB_RGBLevels3200K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
10016
|
+
0x782d => { Name => 'WB_RGBLevels2500K', Writable => 'int16s', Count => 3, Protected => 1 }, #IB
|
10017
|
+
0x787f => { Name => 'WhiteLevel', Writable => 'int16u', Count => 3, Protected => 1 }, #IB (divide by 4)
|
9990
10018
|
0x797d => 'VignettingCorrParams', #forum7640
|
9991
10019
|
0x7980 => 'ChromaticAberrationCorrParams', #forum6509 (Sony A7 ARW)
|
9992
10020
|
0x7982 => 'DistortionCorrParams', #forum6509 (Sony A7 ARW)
|
@@ -15,7 +15,7 @@ use vars qw($VERSION @ISA $makeMissing);
|
|
15
15
|
use Image::ExifTool qw(:Utils :Vars);
|
16
16
|
use Image::ExifTool::XMP;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.33';
|
19
19
|
@ISA = qw(Exporter);
|
20
20
|
|
21
21
|
# set this to a language code to generate Lang module with 'MISSING' entries
|
@@ -204,6 +204,8 @@ PTILoop: for ($index=0; $index<@infoArray; ++$index) {
|
|
204
204
|
push @flags, 'Permanent' if $$tagInfo{Permanent} or
|
205
205
|
($groups[0] eq 'MakerNotes' and not defined $$tagInfo{Permanent});
|
206
206
|
$grp = " flags='" . join(',', sort @flags) . "'$grp" if @flags;
|
207
|
+
# add parent structure tag ID
|
208
|
+
$grp .= " struct='$$tagInfo{ParentTagInfo}{TagID}'" if $$tagInfo{ParentTagInfo};
|
207
209
|
}
|
208
210
|
print $fp " <tag id='${xmlID}' name='${name}'$ind type='${format}'$count writable='${writable}'$grp";
|
209
211
|
if ($opts{NoDesc}) {
|