exiftool_vendored 12.41.0 → 12.50.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.
- 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}) {
|