exiftool-vendored.exe 12.28.0 → 12.34.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.
Files changed (49) hide show
  1. package/bin/exiftool_files/Changes +108 -5
  2. package/bin/exiftool_files/README +2 -2
  3. package/bin/exiftool_files/arg_files/xmp2exif.args +2 -1
  4. package/bin/exiftool_files/config_files/example.config +1 -1
  5. package/bin/exiftool_files/exiftool.pl +40 -26
  6. package/bin/exiftool_files/fmt_files/gpx.fmt +1 -1
  7. package/bin/exiftool_files/fmt_files/gpx_wpt.fmt +1 -1
  8. package/bin/exiftool_files/lib/Image/ExifTool/BuildTagLookup.pm +16 -3
  9. package/bin/exiftool_files/lib/Image/ExifTool/CBOR.pm +331 -0
  10. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +35 -5
  11. package/bin/exiftool_files/lib/Image/ExifTool/Charset.pm +2 -0
  12. package/bin/exiftool_files/lib/Image/ExifTool/DPX.pm +13 -2
  13. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +98 -4
  14. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +1 -0
  15. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +13 -2
  16. package/bin/exiftool_files/lib/Image/ExifTool/GoPro.pm +16 -1
  17. package/bin/exiftool_files/lib/Image/ExifTool/ICC_Profile.pm +96 -4
  18. package/bin/exiftool_files/lib/Image/ExifTool/ID3.pm +15 -3
  19. package/bin/exiftool_files/lib/Image/ExifTool/JSON.pm +7 -3
  20. package/bin/exiftool_files/lib/Image/ExifTool/Jpeg2000.pm +60 -26
  21. package/bin/exiftool_files/lib/Image/ExifTool/Lang/nl.pm +60 -59
  22. package/bin/exiftool_files/lib/Image/ExifTool/M2TS.pm +81 -14
  23. package/bin/exiftool_files/lib/Image/ExifTool/MacOS.pm +2 -2
  24. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +12 -3
  25. package/bin/exiftool_files/lib/Image/ExifTool/NikonSettings.pm +10 -2
  26. package/bin/exiftool_files/lib/Image/ExifTool/Olympus.pm +8 -1
  27. package/bin/exiftool_files/lib/Image/ExifTool/Other.pm +93 -0
  28. package/bin/exiftool_files/lib/Image/ExifTool/PDF.pm +11 -12
  29. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +7 -6
  30. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +2 -2
  31. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +2 -1
  32. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +67 -9
  33. package/bin/exiftool_files/lib/Image/ExifTool/QuickTimeStream.pl +133 -119
  34. package/bin/exiftool_files/lib/Image/ExifTool/README +9 -2
  35. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +6 -1
  36. package/bin/exiftool_files/lib/Image/ExifTool/Samsung.pm +47 -10
  37. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +80 -32
  38. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +139 -4
  39. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +224 -30
  40. package/bin/exiftool_files/lib/Image/ExifTool/WritePDF.pl +1 -0
  41. package/bin/exiftool_files/lib/Image/ExifTool/WritePNG.pl +2 -0
  42. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +17 -3
  43. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +43 -0
  44. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +21 -8
  45. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +4 -1
  46. package/bin/exiftool_files/lib/Image/ExifTool/XMPStruct.pl +3 -1
  47. package/bin/exiftool_files/lib/Image/ExifTool.pm +8892 -8839
  48. package/bin/exiftool_files/lib/Image/ExifTool.pod +24 -15
  49. package/package.json +3 -3
@@ -22,12 +22,13 @@ use vars qw($VERSION %samsungLensTypes);
22
22
  use Image::ExifTool qw(:DataAccess :Utils);
23
23
  use Image::ExifTool::Exif;
24
24
 
25
- $VERSION = '1.49';
25
+ $VERSION = '1.50';
26
26
 
27
27
  sub WriteSTMN($$$);
28
28
  sub ProcessINFO($$$);
29
29
  sub ProcessSamsungMeta($$$);
30
30
  sub ProcessSamsungIFD($$$);
31
+ sub ProcessSamsung($$$);
31
32
 
32
33
  # Samsung LensType lookup
33
34
  %samsungLensTypes = (
@@ -940,14 +941,31 @@ my %formatMinMax = (
940
941
  %Image::ExifTool::Samsung::Trailer = (
941
942
  GROUPS => { 0 => 'MakerNotes', 2 => 'Other' },
942
943
  VARS => { NO_ID => 1, HEX_ID => 0 },
944
+ PROCESS_PROC => \&ProcessSamsung,
943
945
  PRIORITY => 0, # (first one takes priority so DepthMapWidth/Height match first DepthMapData)
944
946
  NOTES => q{
945
947
  Tags extracted from the trailer of JPEG images written when using certain
946
948
  features (such as "Sound & Shot" or "Shot & More") from Samsung models such
947
- as the Galaxy S4 and Tab S.
948
- },
949
- '0x0001-name' => 'EmbeddedImageName', # ("DualShot_1","DualShot_2")
950
- '0x0001' => { Name => 'EmbeddedImage', Groups => { 2 => 'Preview' }, Binary => 1 },
949
+ as the Galaxy S4 and Tab S, and from the 'sefd' atom in HEIC images from the
950
+ Samsung S10+.
951
+ },
952
+ '0x0001-name' => {
953
+ Name => 'EmbeddedImageName', # ("DualShot_1","DualShot_2")
954
+ RawConv => '$$self{EmbeddedImageName} = $val',
955
+ },
956
+ '0x0001' => [
957
+ {
958
+ Name => 'EmbeddedImage',
959
+ Condition => '$$self{EmbeddedImageName} eq "DualShot_1"',
960
+ Groups => { 2 => 'Preview' },
961
+ Binary => 1,
962
+ },
963
+ {
964
+ Name => 'EmbeddedImage2',
965
+ Groups => { 2 => 'Preview' },
966
+ Binary => 1,
967
+ },
968
+ ],
951
969
  '0x0100-name' => 'EmbeddedAudioFileName', # ("SoundShot_000")
952
970
  '0x0100' => { Name => 'EmbeddedAudioFile', Groups => { 2 => 'Audio' }, Binary => 1 },
953
971
  '0x0201-name' => 'SurroundShotVideoName', # ("Interactive_Panorama_000")
@@ -977,10 +995,24 @@ my %formatMinMax = (
977
995
  '0x0a30-name' => 'EmbeddedVideoType', # ("MotionPhoto_Data")
978
996
  '0x0a30' => { Name => 'EmbeddedVideoFile', Groups => { 2 => 'Video' }, Binary => 1 }, #forum7161
979
997
  # 0x0aa1-name - seen 'MCC_Data'
980
- # 0x0aa1 - seen '234','222','429'
998
+ # 0x0aa1 - seen '204','222','234','302','429'
999
+ '0x0aa1' => 'MCCData', # (unknown meaning)
981
1000
  # 0x0ab0-name - seen 'DualShot_Meta_Info'
982
- '0x0ab1-name' => 'DepthMapName', # seen 'DualShot_DepthMap_1' (SM-N950U)
983
- '0x0ab1' => { Name => 'DepthMapData', Binary => 1 },
1001
+ '0x0ab1-name' => {
1002
+ Name => 'DepthMapName',
1003
+ # seen 'DualShot_DepthMap_1' (SM-N950U), DualShot_DepthMap_5 (SM-G998W)
1004
+ RawConv => '$$self{DepthMapName} = $val',
1005
+ },
1006
+ '0x0ab1' => [
1007
+ {
1008
+ Name => 'DepthMapData',
1009
+ Condition => '$$self{DepthMapName} eq "DualShot_DepthMap_1"',
1010
+ Binary => 1,
1011
+ },{
1012
+ Name => 'DepthMapData2',
1013
+ Binary => 1,
1014
+ },
1015
+ ],
984
1016
  # 0x0ab3-name - seen 'DualShot_Extra_Info' (SM-N950U)
985
1017
  '0x0ab3' => { # (SM-N950U)
986
1018
  Name => 'DualShotExtra',
@@ -1015,7 +1047,8 @@ my %formatMinMax = (
1015
1047
  Hook => q{
1016
1048
  if ($size >= 96) {
1017
1049
  my $tmp = substr($$dataPt, $pos, 64);
1018
- if ($tmp =~ /\x01\0\xff\xff/g and not pos($tmp) % 4) {
1050
+ # (have seen 0x01,0x03 and 0x07)
1051
+ if ($tmp =~ /[\x01-\x09]\0\xff\xff/g and not pos($tmp) % 4) {
1019
1052
  $$self{DepthMapTagPos} = pos($tmp);
1020
1053
  $varSize += $$self{DepthMapTagPos} - 32;
1021
1054
  }
@@ -1274,6 +1307,10 @@ sub ProcessSamsung($$$)
1274
1307
  my $unknown = $et->Options('Unknown');
1275
1308
  my ($buff, $buf2, $index, $offsetPos, $audioNOff, $audioSize);
1276
1309
 
1310
+ unless ($raf) {
1311
+ $raf = new File::RandomAccess($$dirInfo{DataPt});
1312
+ $et->VerboseDir('SamsungTrailer');
1313
+ }
1277
1314
  return 0 unless $raf->Seek(-6-$offset, 2) and $raf->Read($buff, 6) == 6 and
1278
1315
  ($buff eq 'QDIOBS' or $buff eq "\0\0SEFT");
1279
1316
  my $endPos = $raf->Tell();
@@ -1328,7 +1365,7 @@ SamBlock:
1328
1365
  # save trailer position and length
1329
1366
  my $dataPos = $$dirInfo{DataPos} = $dirPos - $firstBlock;
1330
1367
  my $dirLen = $$dirInfo{DirLen} = $endPos - $dataPos;
1331
- if (($verbose or $$et{HTML_DUMP}) and not $outfile) {
1368
+ if (($verbose or $$et{HTML_DUMP}) and not $outfile and $$dirInfo{RAF}) {
1332
1369
  $et->DumpTrailer($dirInfo);
1333
1370
  return 1 if $$et{HTML_DUMP};
1334
1371
  }
@@ -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.43';
37
+ $VERSION = '3.47';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -154,6 +154,7 @@ 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
+ 32874 => 'Sony FE 70-200mm F2.8 GM OSS II', #IB
157
158
 
158
159
  # (comment this out so LensID will report the LensModel, which is more useful)
159
160
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -196,6 +197,8 @@ sub PrintInvLensSpec($;$$);
196
197
  49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
197
198
  49466 => 'Tamron 150-500mm F5-6.7 Di III VC VXD', #JR (Model A057)
198
199
  49467 => 'Tamron 11-20mm F2.8 Di III-A RXD', #JR (Model B060)
200
+ 49468 => 'Tamron 18-300mm F3.5-6.3 Di III-A VC VXD', #JR (Model B061)
201
+
199
202
  49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
200
203
  49473.1 => 'Viltrox 23mm F1.4 E', #JR
201
204
  49473.2 => 'Viltrox 56mm F1.4 E', #JR
@@ -234,8 +237,12 @@ sub PrintInvLensSpec($;$$);
234
237
  50524 => 'Sigma 35mm F2 DG DN | C', #IB (020)
235
238
  50525 => 'Sigma 24mm F3.5 DG DN | C', #JR (021)
236
239
  50526 => 'Sigma 28-70mm F2.8 DG DN | C', #JR (021)
240
+ 50527 => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #JR (021)
237
241
  50528 => 'Sigma 35mm F1.4 DG DN | A', #IB/JR (021)
238
-
242
+ 50529 => 'Sigma 90mm F2.8 DG DN | C', #JR (021)
243
+ 50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
244
+ 50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
245
+
239
246
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
240
247
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
241
248
  50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
@@ -264,7 +271,7 @@ sub PrintInvLensSpec($;$$);
264
271
  51510 => 'Samyang AF 18mm F2.8 or Samyang AF 35mm F1.8', #JR
265
272
  51510.1 => 'Samyang AF 35mm F1.8', #JR
266
273
  51512 => 'Samyang AF 75mm F1.8', #IB/JR
267
- 51514 => 'Samyang AF 24mm F1.8 FE', #IB
274
+ 51514 => 'Samyang AF 24mm F1.8', #IB
268
275
  );
269
276
 
270
277
  # ExposureProgram values (ref PH, mainly decoded from A200)
@@ -1027,7 +1034,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1027
1034
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
1028
1035
  },{
1029
1036
  Name => 'Tag2010i', # ?
1030
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-1)\b/',
1037
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-(1|E10))\b/',
1031
1038
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
1032
1039
  },{
1033
1040
  Name => 'Tag_0x2010',
@@ -1574,6 +1581,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1574
1581
  65535 => 'n/a',
1575
1582
  },
1576
1583
  },
1584
+ # 0x203a - 0x2041: first seen October 2021 for ILCE-7M4
1577
1585
  0x3000 => {
1578
1586
  Name => 'ShotInfo',
1579
1587
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
@@ -1602,21 +1610,21 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1602
1610
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1603
1611
  {
1604
1612
  Name => 'Tag9050a',
1605
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
1613
+ 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-)/',
1606
1614
  SubDirectory => {
1607
1615
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1608
1616
  ByteOrder => 'LittleEndian',
1609
1617
  },
1610
1618
  },{
1611
1619
  Name => 'Tag9050b',
1612
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|9|9M2)|ILCA-99M2)/',
1620
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|9|9M2)|ILCA-99M2|ZV-E10)/',
1613
1621
  SubDirectory => {
1614
1622
  TagTable => 'Image::ExifTool::Sony::Tag9050b',
1615
1623
  ByteOrder => 'LittleEndian',
1616
1624
  },
1617
1625
  },{
1618
1626
  Name => 'Tag9050c',
1619
- Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)/',
1627
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)/',
1620
1628
  SubDirectory => {
1621
1629
  TagTable => 'Image::ExifTool::Sony::Tag9050c',
1622
1630
  ByteOrder => 'LittleEndian',
@@ -1635,7 +1643,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1635
1643
  # 0x23 (e) for DSC-RX10/HX60V/HX350/HX400V/WX220/WX350, ILCE-7/7R/5000/6000, ILCA-68/77M2
1636
1644
  # 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
1637
1645
  # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
1638
- # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1
1646
+ # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/E10
1639
1647
  # 0x31 (e) for ILCE-1/7SM3, ILME-FX3
1640
1648
  # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively
1641
1649
  {
@@ -1651,7 +1659,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1651
1659
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400b' },
1652
1660
  },{
1653
1661
  Name => 'Tag9400c',
1654
- Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
1662
+ Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
1655
1663
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400c' },
1656
1664
  },{
1657
1665
  Name => 'Sony_0x9400',
@@ -1810,7 +1818,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1810
1818
  # 142 var (0x25 = 37 var enc.) DSC-HX80/HX90V/RX1RM2/RX10M2/RX10M3/RX100M4/WX500, ILCE-6300/7RM2/7SM2
1811
1819
  # 144 var (0xe1 = 225 var enc.) DSC-RX100M5
1812
1820
  # 145 var (0x76 = 118 var enc.) ILCA-99M2, ILCE-6500, DSC-RX0
1813
- # 163 var (0x8b = 139 var enc.) ILCE-6100/6400/6600/7C/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/RX100M7/HX99, ZV-1
1821
+ # 163 var (0x8b = 139 var enc.) ILCE-6100/6400/6600/7C/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/RX100M7/HX99, ZV-1/E10
1814
1822
  # July 2020: ILCE-7SM3 doesn't write this tag anymore, but writes 0x9416
1815
1823
  0x9405 => [{
1816
1824
  Name => 'Tag9405a',
@@ -1864,7 +1872,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1864
1872
  },
1865
1873
  0x940c => [{
1866
1874
  Name => 'Tag940c',
1867
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar)\b/',
1875
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar|ZV-E10)\b/',
1868
1876
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag940c' },
1869
1877
  },{
1870
1878
  Name => 'Sony_0x940c',
@@ -2020,10 +2028,13 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2020
2028
  379 => 'ILCE-6100', #IB/JR
2021
2029
  380 => 'ZV-1', #JR
2022
2030
  381 => 'ILCE-7C', #JR
2031
+ 382 => 'ZV-E10', #JR
2023
2032
  383 => 'ILCE-7SM3',
2024
2033
  384 => 'ILCE-1', #PH
2025
2034
  385 => 'ILME-FX3', #JR
2035
+ 386 => 'ILCE-7RM3A', #JR
2026
2036
  387 => 'ILCE-7RM4A', #forum12542
2037
+ 388 => 'ILCE-7M4', #IB/JR
2027
2038
  },
2028
2039
  },
2029
2040
  0xb020 => { #2
@@ -6182,7 +6193,7 @@ my %isoSetting2010 = (
6182
6193
  43 => 160000,
6183
6194
  44 => 204800,
6184
6195
  45 => 256000,
6185
- 46 => 320000,
6196
+ 46 => 320000,
6186
6197
  47 => 409600,
6187
6198
  );
6188
6199
 
@@ -7610,7 +7621,7 @@ my %isoSetting2010 = (
7610
7621
  # March 2019: ILCE-9 with v5.0x firmware follows ILCE-6400 in many tags ...
7611
7622
  0x0050 => {
7612
7623
  Name => 'ShutterCount2',
7613
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4A?|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/)',
7624
+ Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4A?|9M2)|ZV-E10)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/)',
7614
7625
  Format => 'int32u',
7615
7626
  RawConv => '$val & 0x00ffffff',
7616
7627
  },
@@ -7627,13 +7638,13 @@ my %isoSetting2010 = (
7627
7638
  # 0x0058, 0x0061: E-Mount: ShutterCount and dateTime
7628
7639
  0x0058 => { # appears not valid when flash is used ... not for ILCA-99M2
7629
7640
  Name => 'ShutterCount2',
7630
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2))/) and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7641
+ Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/) and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7631
7642
  Format => 'int32u',
7632
7643
  RawConv => '$val & 0x00ffffff',
7633
7644
  },
7634
7645
  0x0061 => { # only minutes-seconds, not for ILCA-99M2, ILCE-9
7635
7646
  Name => 'SonyTimeMinSec',
7636
- Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2))/',
7647
+ Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
7637
7648
  Format => 'undef[2]',
7638
7649
  ValueConv => q{
7639
7650
  my @v = unpack('C*', $val);
@@ -7642,7 +7653,7 @@ my %isoSetting2010 = (
7642
7653
  },
7643
7654
  0x006b => {
7644
7655
  Name => 'ReleaseMode2',
7645
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4A?|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7656
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4A?|9M2)|ZV-E10)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7646
7657
  %releaseMode2,
7647
7658
  },
7648
7659
  0x006d => {
@@ -7652,7 +7663,7 @@ my %isoSetting2010 = (
7652
7663
  },
7653
7664
  0x0073 => {
7654
7665
  Name => 'ReleaseMode2',
7655
- Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2))/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7666
+ Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7656
7667
  %releaseMode2,
7657
7668
  },
7658
7669
  0x0088 => {
@@ -7731,7 +7742,7 @@ my %isoSetting2010 = (
7731
7742
  #
7732
7743
  0x019f => {
7733
7744
  Name => 'ShutterCount3',
7734
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2))\b/',
7745
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)\b/',
7735
7746
  Format => 'int32u',
7736
7747
  RawConv => '$val == 0 ? undef : $val',
7737
7748
  },
@@ -7749,7 +7760,7 @@ my %isoSetting2010 = (
7749
7760
  },
7750
7761
  0x01eb => {
7751
7762
  Name => 'APS-CSizeCapture',
7752
- Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7763
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7753
7764
  PrintConv => {
7754
7765
  0 => 'Off',
7755
7766
  1 => 'On',
@@ -7757,7 +7768,7 @@ my %isoSetting2010 = (
7757
7768
  },
7758
7769
  0x01ed => {
7759
7770
  Name => 'LensSpecFeatures',
7760
- Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7771
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7761
7772
  Priority => 0,
7762
7773
  Format => 'undef[2]',
7763
7774
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7946,7 +7957,7 @@ my %isoSetting2010 = (
7946
7957
  },
7947
7958
  0x0088 => {
7948
7959
  Name => 'InternalSerialNumber', #(NC)
7949
- Condition => '$$self{Model} =~ /^(ILCE-7SM3|ILME-FX3)/',
7960
+ Condition => '$$self{Model} =~ /^(ILCE-(7M4|7SM3)|ILME-FX3)/',
7950
7961
  Format => 'int8u[6]',
7951
7962
  PrintConv => 'unpack "H*", pack "C*", split " ", $val',
7952
7963
  },
@@ -8184,7 +8195,7 @@ my %isoSetting2010 = (
8184
8195
  },
8185
8196
  0x002a => [{
8186
8197
  Name => 'Quality2',
8187
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8198
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8188
8199
  PrintConv => {
8189
8200
  0 => 'JPEG',
8190
8201
  1 => 'RAW',
@@ -8193,7 +8204,7 @@ my %isoSetting2010 = (
8193
8204
  },
8194
8205
  },{
8195
8206
  Name => 'Quality2',
8196
- Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8207
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8197
8208
  PrintConv => {
8198
8209
  1 => 'JPEG',
8199
8210
  2 => 'RAW',
@@ -8204,13 +8215,13 @@ my %isoSetting2010 = (
8204
8215
  }],
8205
8216
  0x0047 => {
8206
8217
  Name => 'SonyImageHeight',
8207
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8218
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8208
8219
  Format => 'int16u',
8209
8220
  PrintConv => '$val > 0 ? 8*$val : "n.a."',
8210
8221
  },
8211
8222
  0x0053 => {
8212
8223
  Name => 'ModelReleaseYear',
8213
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8224
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8214
8225
  Format => 'int8u',
8215
8226
  PrintConv => 'sprintf("20%.2d", $val)',
8216
8227
  },
@@ -8225,10 +8236,11 @@ my %isoSetting2010 = (
8225
8236
  FIRST_ENTRY => 0,
8226
8237
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8227
8238
  DATAMEMBER => [ 0 ],
8228
- IS_SUBDIR => [ 0x0498, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
8239
+ IS_SUBDIR => [ 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
8229
8240
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8230
8241
 
8231
8242
  0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8243
+ 0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8232
8244
  0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8233
8245
  0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8234
8246
  0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8367,8 +8379,8 @@ my %isoSetting2010 = (
8367
8379
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8368
8380
  DATAMEMBER => [ 0x04 ],
8369
8381
  0x04 => {
8370
- # seen values 0,2,3,18,32,49,50,83,148
8371
- # CameraTemperature is valid for all values except 0,148
8382
+ # seen values 0,2,3,18,19,32,49,50,83,130,132,148,213,229,255
8383
+ # CameraTemperature is valid for all values above except ==0 and >=130
8372
8384
  Name => 'TempTest2',
8373
8385
  DataMember => 'TempTest2',
8374
8386
  Hidden => 1,
@@ -8701,7 +8713,7 @@ my %isoSetting2010 = (
8701
8713
  },
8702
8714
  0x034e => {
8703
8715
  Name => 'LensZoomPosition',
8704
- Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2))/',
8716
+ Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/',
8705
8717
  Format => 'int16u',
8706
8718
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8707
8719
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8713,7 +8725,7 @@ my %isoSetting2010 = (
8713
8725
  },
8714
8726
  0x035c => {
8715
8727
  Name => 'VignettingCorrParams',
8716
- Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2))/',
8728
+ Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
8717
8729
  Format => 'int16s[16]',
8718
8730
  },
8719
8731
  0x035a => {
@@ -8750,7 +8762,7 @@ my %isoSetting2010 = (
8750
8762
  },
8751
8763
  0x03b8 => {
8752
8764
  Name => 'ChromaticAberrationCorrParams',
8753
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2))/',
8765
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
8754
8766
  Format => 'int16s[32]',
8755
8767
  },
8756
8768
  );
@@ -9497,7 +9509,7 @@ my %isoSetting2010 = (
9497
9509
  WRITE_PROC => \&WriteEnciphered,
9498
9510
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9499
9511
  FORMAT => 'int8u',
9500
- NOTES => 'Valid for the ILCE-1/7SM3, ILME-FX3.',
9512
+ NOTES => 'Valid for the ILCE-1/7M4/7SM3, ILME-FX3.',
9501
9513
  FIRST_ENTRY => 0,
9502
9514
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9503
9515
  0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
@@ -9624,10 +9636,22 @@ my %isoSetting2010 = (
9624
9636
  },
9625
9637
  0x088f => {
9626
9638
  Name => 'VignettingCorrParams',
9639
+ Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
9640
+ Format => 'int16s[16]',
9641
+ },
9642
+ 0x0891 => {
9643
+ Name => 'VignettingCorrParams',
9644
+ Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9627
9645
  Format => 'int16s[16]',
9628
9646
  },
9629
9647
  0x0914 => {
9630
9648
  Name => 'ChromaticAberrationCorrParams',
9649
+ Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
9650
+ Format => 'int16s[32]',
9651
+ },
9652
+ 0x0916 => {
9653
+ Name => 'ChromaticAberrationCorrParams',
9654
+ Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9631
9655
  Format => 'int16s[32]',
9632
9656
  },
9633
9657
  );
@@ -10131,6 +10155,10 @@ my %isoSetting2010 = (
10131
10155
  PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
10132
10156
  },
10133
10157
  0x8001 => { Name => 'Sony_rtmd_0x8001', Format => 'int16u', %hidUnk },
10158
+ 0x8004 => { Name => 'Sony_rtmd_0x8004', Format => 'int16u', %hidUnk },
10159
+ 0x8005 => { Name => 'Sony_rtmd_0x8005', Format => 'int16u', %hidUnk },
10160
+ 0x800a => { Name => 'Sony_rtmd_0x800a', Format => 'int16u', %hidUnk },
10161
+ 0x800b => { Name => 'Sony_rtmd_0x800b', Format => 'int16u', %hidUnk },
10134
10162
  # 0x8100 - 16 bytes starting with 0x060e2b340401
10135
10163
  0x8100 => { Name => 'Sony_rtmd_0x8100', Format => 'int8u', %hidUnk },
10136
10164
  0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u', %hidUnk }, # seen: 0,1
@@ -10313,6 +10341,26 @@ my %isoSetting2010 = (
10313
10341
  ValueConv => '"$val[0] $val[1]Z"',
10314
10342
  PrintConv => '$self->ConvertDateTime($val)',
10315
10343
  },
10344
+ GPSLatitude => {
10345
+ SubDoc => 1, # generate for all sub-documents
10346
+ Groups => { 2 => 'Location' },
10347
+ Require => {
10348
+ 0 => 'Sony:GPSLatitude',
10349
+ 1 => 'Sony:GPSLatitudeRef',
10350
+ },
10351
+ ValueConv => '$val[1] =~ /^S/i ? -$val[0] : $val[0]',
10352
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
10353
+ },
10354
+ GPSLongitude => {
10355
+ SubDoc => 1, # generate for all sub-documents
10356
+ Groups => { 2 => 'Location' },
10357
+ Require => {
10358
+ 0 => 'Sony:GPSLongitude',
10359
+ 1 => 'Sony:GPSLongitudeRef',
10360
+ },
10361
+ ValueConv => '$val[1] =~ /^W/i ? -$val[0] : $val[0]',
10362
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
10363
+ },
10316
10364
  );
10317
10365
 
10318
10366
  # add our composite tags