exiftool_vendored 12.22.0 → 12.34.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +201 -5
  3. data/bin/MANIFEST +22 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +45 -43
  7. data/bin/arg_files/xmp2exif.args +2 -1
  8. data/bin/config_files/acdsee.config +193 -6
  9. data/bin/config_files/convert_regions.config +25 -14
  10. data/bin/config_files/cuepointlist.config +70 -0
  11. data/bin/config_files/example.config +1 -1
  12. data/bin/exiftool +89 -70
  13. data/bin/fmt_files/gpx.fmt +1 -1
  14. data/bin/fmt_files/gpx_wpt.fmt +1 -1
  15. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +17 -4
  16. data/bin/lib/Image/ExifTool/CBOR.pm +331 -0
  17. data/bin/lib/Image/ExifTool/Canon.pm +53 -21
  18. data/bin/lib/Image/ExifTool/Charset.pm +2 -0
  19. data/bin/lib/Image/ExifTool/DPX.pm +13 -2
  20. data/bin/lib/Image/ExifTool/DjVu.pm +6 -5
  21. data/bin/lib/Image/ExifTool/Exif.pm +120 -12
  22. data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
  23. data/bin/lib/Image/ExifTool/FujiFilm.pm +19 -8
  24. data/bin/lib/Image/ExifTool/Geotag.pm +13 -2
  25. data/bin/lib/Image/ExifTool/GoPro.pm +16 -1
  26. data/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
  27. data/bin/lib/Image/ExifTool/ID3.pm +15 -3
  28. data/bin/lib/Image/ExifTool/JPEG.pm +74 -4
  29. data/bin/lib/Image/ExifTool/JSON.pm +30 -5
  30. data/bin/lib/Image/ExifTool/Jpeg2000.pm +395 -16
  31. data/bin/lib/Image/ExifTool/LIF.pm +153 -0
  32. data/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
  33. data/bin/lib/Image/ExifTool/M2TS.pm +103 -7
  34. data/bin/lib/Image/ExifTool/MIE.pm +2 -1
  35. data/bin/lib/Image/ExifTool/MRC.pm +341 -0
  36. data/bin/lib/Image/ExifTool/MWG.pm +3 -3
  37. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  38. data/bin/lib/Image/ExifTool/MacOS.pm +3 -3
  39. data/bin/lib/Image/ExifTool/Microsoft.pm +5 -3
  40. data/bin/lib/Image/ExifTool/Nikon.pm +17 -5
  41. data/bin/lib/Image/ExifTool/NikonSettings.pm +19 -2
  42. data/bin/lib/Image/ExifTool/Olympus.pm +9 -2
  43. data/bin/lib/Image/ExifTool/Other.pm +93 -0
  44. data/bin/lib/Image/ExifTool/PDF.pm +11 -12
  45. data/bin/lib/Image/ExifTool/PNG.pm +8 -7
  46. data/bin/lib/Image/ExifTool/Panasonic.pm +28 -3
  47. data/bin/lib/Image/ExifTool/Pentax.pm +28 -5
  48. data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -3
  49. data/bin/lib/Image/ExifTool/Photoshop.pm +6 -0
  50. data/bin/lib/Image/ExifTool/QuickTime.pm +210 -65
  51. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +280 -139
  52. data/bin/lib/Image/ExifTool/README +9 -2
  53. data/bin/lib/Image/ExifTool/RIFF.pm +89 -12
  54. data/bin/lib/Image/ExifTool/Samsung.pm +48 -10
  55. data/bin/lib/Image/ExifTool/Sony.pm +204 -61
  56. data/bin/lib/Image/ExifTool/TagLookup.pm +206 -19
  57. data/bin/lib/Image/ExifTool/TagNames.pod +634 -195
  58. data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
  59. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  60. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
  61. data/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
  62. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -0
  63. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +58 -16
  64. data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -3
  65. data/bin/lib/Image/ExifTool/Writer.pl +44 -0
  66. data/bin/lib/Image/ExifTool/XMP.pm +51 -18
  67. data/bin/lib/Image/ExifTool/XMP2.pl +4 -1
  68. data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
  69. data/bin/lib/Image/ExifTool/ZISRAW.pm +121 -2
  70. data/bin/lib/Image/ExifTool.pm +188 -61
  71. data/bin/lib/Image/ExifTool.pod +89 -68
  72. data/bin/perl-Image-ExifTool.spec +43 -42
  73. data/lib/exiftool_vendored/version.rb +1 -1
  74. metadata +10 -9
@@ -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.38';
37
+ $VERSION = '3.47';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -148,8 +148,13 @@ sub PrintInvLensSpec($;$$);
148
148
  32859 => 'Sony FE 20mm F1.8 G', #IB/JR
149
149
  32860 => 'Sony FE 12-24mm F2.8 GM', #JR/IB
150
150
  32862 => 'Sony FE 50mm F1.2 GM', #IB/JR
151
+ 32863 => 'Sony FE 14mm F1.8 GM', #IB
151
152
  32864 => 'Sony FE 28-60mm F4-5.6', #JR
152
153
  32865 => 'Sony FE 35mm F1.4 GM', #IB/JR
154
+ 32866 => 'Sony FE 24mm F2.8 G', #IB
155
+ 32867 => 'Sony FE 40mm F2.5 G', #IB
156
+ 32868 => 'Sony FE 50mm F2.5 G', #IB
157
+ 32874 => 'Sony FE 70-200mm F2.8 GM OSS II', #IB
153
158
 
154
159
  # (comment this out so LensID will report the LensModel, which is more useful)
155
160
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -190,7 +195,13 @@ sub PrintInvLensSpec($;$$);
190
195
  49463 => 'Tamron 28-200mm F2.8-5.6 Di III RXD', #JR (Model A071)
191
196
  49464 => 'Tamron 70-300mm F4.5-6.3 Di III RXD', #JR (Model A047)
192
197
  49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
193
- 49473 => 'Tokina atx-m 85mm F1.8 FE', #JR
198
+ 49466 => 'Tamron 150-500mm F5-6.7 Di III VC VXD', #JR (Model A057)
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
+
202
+ 49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
203
+ 49473.1 => 'Viltrox 23mm F1.4 E', #JR
204
+ 49473.2 => 'Viltrox 56mm F1.4 E', #JR
194
205
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
195
206
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
196
207
 
@@ -226,7 +237,12 @@ sub PrintInvLensSpec($;$$);
226
237
  50524 => 'Sigma 35mm F2 DG DN | C', #IB (020)
227
238
  50525 => 'Sigma 24mm F3.5 DG DN | C', #JR (021)
228
239
  50526 => 'Sigma 28-70mm F2.8 DG DN | C', #JR (021)
229
-
240
+ 50527 => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #JR (021)
241
+ 50528 => 'Sigma 35mm F1.4 DG DN | A', #IB/JR (021)
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
+
230
246
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
231
247
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
232
248
  50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
@@ -239,6 +255,7 @@ sub PrintInvLensSpec($;$$);
239
255
  51001 => 'Voigtlander NOKTON 21mm F1.4 Aspherical', #JR
240
256
  51002 => 'Voigtlander APO-LANTHAR 50mm F2 Aspherical', #JR
241
257
  51003 => 'Voigtlander NOKTON 35mm F1.2 Aspherical SE', #JR
258
+ 51006 => 'Voigtlander APO-LANTHAR 35mm F2 Aspherical', #JR
242
259
 
243
260
  # lenses listed in the Sigma MC-11 list, but not yet seen:
244
261
  # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
@@ -254,6 +271,7 @@ sub PrintInvLensSpec($;$$);
254
271
  51510 => 'Samyang AF 18mm F2.8 or Samyang AF 35mm F1.8', #JR
255
272
  51510.1 => 'Samyang AF 35mm F1.8', #JR
256
273
  51512 => 'Samyang AF 75mm F1.8', #IB/JR
274
+ 51514 => 'Samyang AF 24mm F1.8', #IB
257
275
  );
258
276
 
259
277
  # ExposureProgram values (ref PH, mainly decoded from A200)
@@ -628,9 +646,10 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
628
646
  3 => 'Standard',
629
647
  4 => 'Economy',
630
648
  5 => 'Extra Fine',
631
- 6 => 'RAW + JPEG',
649
+ 6 => 'RAW + JPEG/HEIF',
632
650
  7 => 'Compressed RAW',
633
651
  8 => 'Compressed RAW + JPEG',
652
+ 9 => 'Light', #JR
634
653
  0xffffffff => 'n/a', #PH (SLT-A57 panorama)
635
654
  },
636
655
  },
@@ -1015,7 +1034,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1015
1034
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
1016
1035
  },{
1017
1036
  Name => 'Tag2010i', # ?
1018
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|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/',
1019
1038
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
1020
1039
  },{
1021
1040
  Name => 'Tag_0x2010',
@@ -1174,7 +1193,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1174
1193
  # doesn't seem to apply to DSC models (always 0)
1175
1194
  Name => 'AFPointSelected',
1176
1195
  Condition => q{
1177
- ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^ILCE-/ and
1196
+ ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^(ILCE-|ILME-)/ and
1178
1197
  defined $$self{AFAreaILCE} and $$self{AFAreaILCE} == 4)
1179
1198
  },
1180
1199
  Notes => 'SLT models or ILCE with LA-EA2/EA4',
@@ -1457,13 +1476,15 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1457
1476
  Count => 2,
1458
1477
  PrintConv => {
1459
1478
  '0 0' => 'n/a',
1460
- '0 1' => 'Standard JPEG',
1461
- '0 2' => 'Fine JPEG',
1462
- '0 3' => 'Extra Fine JPEG',
1479
+ '0 1' => 'Standard',
1480
+ '0 2' => 'Fine',
1481
+ '0 3' => 'Extra Fine',
1482
+ '0 4' => 'Light', #JR
1463
1483
  '1 0' => 'RAW',
1464
- '1 1' => 'RAW + Standard JPEG',
1465
- '1 2' => 'RAW + Fine JPEG',
1466
- '1 3' => 'RAW + Extra Fine JPEG',
1484
+ '1 1' => 'RAW + Standard',
1485
+ '1 2' => 'RAW + Fine',
1486
+ '1 3' => 'RAW + Extra Fine',
1487
+ '1 4' => 'RAW + Light', #JR
1467
1488
  },
1468
1489
  },
1469
1490
  0x202f => { #JR (ILCE-7RM3)
@@ -1484,7 +1505,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1484
1505
  my ($a,$b,$c,$d) = split ' ', $val;
1485
1506
  my @a = $a =~ /../g;
1486
1507
  return undef unless @a == 4;
1487
- return Set32u((hex($d)<<22) | ($a[0]<<17) | ($a[1]<<12) | ($a[2]<<6) | $a[3]) . chr($b) . chr($c);
1508
+ return Set32u((hex($d)<<22) | ($a[0]<<17) | ($a[1]<<12) | ($a[2]<<6) | $a[3]) . chr($b & 0xff) . chr($c & 0xff);
1488
1509
  },
1489
1510
  PrintConv => {
1490
1511
  '00000000 0 0 0x0' => 'n/a',
@@ -1509,13 +1530,58 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1509
1530
  PrintConv => 'sprintf("%.8d",$val)',
1510
1531
  PrintConvInv => '$val',
1511
1532
  },
1512
- # 0x2032 - first seen for ILCE-7SM3, July 2020
1513
- # 0x2033 - first seen for ILCE-7SM3, July 2020
1514
- # 0x2034 - first seen for ILCE-7SM3, July 2020
1515
- # 0x2035 - first seen for ILCE-7SM3, July 2020
1516
- # 0x2036 - first seen for ILCE-7SM3, July 2020
1517
- # 0x2037 - first seen for ILCE-7SM3, July 2020
1518
- # 0x2039 - first seen for ILCE-7SM3, July 2020
1533
+ # 0x2032 - 0x2039: from July 2020 for ILCE-7SM3, ILCE-1, ILME-FX3 and newer
1534
+ 0x2032 => {
1535
+ Name => 'Shadows',
1536
+ Writable => 'int32s',
1537
+ PrintConv => '$val > 0 ? "+$val" : $val',
1538
+ PrintConvInv => '$val',
1539
+ },
1540
+ 0x2033 => {
1541
+ Name => 'Highlights',
1542
+ Writable => 'int32s',
1543
+ PrintConv => '$val > 0 ? "+$val" : $val',
1544
+ PrintConvInv => '$val',
1545
+ },
1546
+ 0x2034 => {
1547
+ Name => 'Fade',
1548
+ Writable => 'int32s',
1549
+ PrintConv => '$val > 0 ? "+$val" : $val',
1550
+ PrintConvInv => '$val',
1551
+ },
1552
+ 0x2035 => {
1553
+ Name => 'SharpnessRange',
1554
+ Writable => 'int32s',
1555
+ PrintConv => '$val > 0 ? "+$val" : $val',
1556
+ PrintConvInv => '$val',
1557
+ },
1558
+ 0x2036 => {
1559
+ Name => 'Clarity',
1560
+ Writable => 'int32s',
1561
+ PrintConv => '$val > 0 ? "+$val" : $val',
1562
+ PrintConvInv => '$val',
1563
+ },
1564
+ 0x2037 => {
1565
+ Name => 'FocusFrameSize',
1566
+ Format => 'int16u',
1567
+ Count => '3',
1568
+ Notes => 'width and height of FocusFrame, centered on FocusLocation',
1569
+ PrintConv => q{
1570
+ my @a = split ' ', $val;
1571
+ return $a[2] ? sprintf('%3dx%3d', $a[0], $a[1]) : 'n/a';
1572
+ },
1573
+ PrintConvInv => '$val =~ /(\d+)x(\d+)/ ? "$1 $2 257" : "0 0 0"',
1574
+ },
1575
+ 0x2039 => { #JR
1576
+ Name => 'JPEG-HEIFSwitch', # (name used in camera menus)
1577
+ Writable => 'int16u',
1578
+ PrintConv => {
1579
+ 0 => 'JPEG',
1580
+ 1 => 'HEIF',
1581
+ 65535 => 'n/a',
1582
+ },
1583
+ },
1584
+ # 0x203a - 0x2041: first seen October 2021 for ILCE-7M4
1519
1585
  0x3000 => {
1520
1586
  Name => 'ShotInfo',
1521
1587
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
@@ -1544,21 +1610,21 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1544
1610
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1545
1611
  {
1546
1612
  Name => 'Tag9050a',
1547
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|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-)/',
1548
1614
  SubDirectory => {
1549
1615
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1550
1616
  ByteOrder => 'LittleEndian',
1551
1617
  },
1552
1618
  },{
1553
1619
  Name => 'Tag9050b',
1554
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|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)/',
1555
1621
  SubDirectory => {
1556
1622
  TagTable => 'Image::ExifTool::Sony::Tag9050b',
1557
1623
  ByteOrder => 'LittleEndian',
1558
1624
  },
1559
1625
  },{
1560
1626
  Name => 'Tag9050c',
1561
- Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)/',
1627
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)/',
1562
1628
  SubDirectory => {
1563
1629
  TagTable => 'Image::ExifTool::Sony::Tag9050c',
1564
1630
  ByteOrder => 'LittleEndian',
@@ -1577,8 +1643,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1577
1643
  # 0x23 (e) for DSC-RX10/HX60V/HX350/HX400V/WX220/WX350, ILCE-7/7R/5000/6000, ILCA-68/77M2
1578
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
1579
1645
  # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
1580
- # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1
1581
- # 0x31 (e) for ILCE-1, 7SM3
1646
+ # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/E10
1647
+ # 0x31 (e) for ILCE-1/7SM3, ILME-FX3
1582
1648
  # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively
1583
1649
  {
1584
1650
  Name => 'Tag9400a',
@@ -1593,7 +1659,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1593
1659
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400b' },
1594
1660
  },{
1595
1661
  Name => 'Tag9400c',
1596
- Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
1662
+ Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
1597
1663
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400c' },
1598
1664
  },{
1599
1665
  Name => 'Sony_0x9400',
@@ -1752,7 +1818,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1752
1818
  # 142 var (0x25 = 37 var enc.) DSC-HX80/HX90V/RX1RM2/RX10M2/RX10M3/RX100M4/WX500, ILCE-6300/7RM2/7SM2
1753
1819
  # 144 var (0xe1 = 225 var enc.) DSC-RX100M5
1754
1820
  # 145 var (0x76 = 118 var enc.) ILCA-99M2, ILCE-6500, DSC-RX0
1755
- # 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
1756
1822
  # July 2020: ILCE-7SM3 doesn't write this tag anymore, but writes 0x9416
1757
1823
  0x9405 => [{
1758
1824
  Name => 'Tag9405a',
@@ -1806,7 +1872,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1806
1872
  },
1807
1873
  0x940c => [{
1808
1874
  Name => 'Tag940c',
1809
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|Lunar)\b/',
1875
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar|ZV-E10)\b/',
1810
1876
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag940c' },
1811
1877
  },{
1812
1878
  Name => 'Sony_0x940c',
@@ -1962,9 +2028,13 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1962
2028
  379 => 'ILCE-6100', #IB/JR
1963
2029
  380 => 'ZV-1', #JR
1964
2030
  381 => 'ILCE-7C', #JR
2031
+ 382 => 'ZV-E10', #JR
1965
2032
  383 => 'ILCE-7SM3',
1966
2033
  384 => 'ILCE-1', #PH
1967
2034
  385 => 'ILME-FX3', #JR
2035
+ 386 => 'ILCE-7RM3A', #JR
2036
+ 387 => 'ILCE-7RM4A', #forum12542
2037
+ 388 => 'ILCE-7M4', #IB/JR
1968
2038
  },
1969
2039
  },
1970
2040
  0xb020 => { #2
@@ -6075,6 +6145,10 @@ my %pictureProfile2010 = (
6075
6145
  31 => 'Gamma S-Log3 (PP8 or PP9)', #14
6076
6146
  33 => 'Gamma HLG2 (PP10)', #14
6077
6147
  34 => 'Gamma HLG3', #IB
6148
+ 37 => 'FL',
6149
+ 38 => 'VV2',
6150
+ 39 => 'IN',
6151
+ 40 => 'SH',
6078
6152
  },
6079
6153
  );
6080
6154
  my %isoSetting2010 = (
@@ -6119,7 +6193,7 @@ my %isoSetting2010 = (
6119
6193
  43 => 160000,
6120
6194
  44 => 204800,
6121
6195
  45 => 256000,
6122
- 46 => 320000,
6196
+ 46 => 320000,
6123
6197
  47 => 409600,
6124
6198
  );
6125
6199
 
@@ -7547,13 +7621,13 @@ my %isoSetting2010 = (
7547
7621
  # March 2019: ILCE-9 with v5.0x firmware follows ILCE-6400 in many tags ...
7548
7622
  0x0050 => {
7549
7623
  Name => 'ShutterCount2',
7550
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4|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)/)',
7551
7625
  Format => 'int32u',
7552
7626
  RawConv => '$val & 0x00ffffff',
7553
7627
  },
7554
7628
  0x0052 => {
7555
7629
  Name => 'ShutterCount2',
7556
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(7M3|7RM3))/)',
7630
+ Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(7M3|7RM3A?))/)',
7557
7631
  Format => 'int32u',
7558
7632
  RawConv => '$val & 0x00ffffff',
7559
7633
  },
@@ -7564,13 +7638,13 @@ my %isoSetting2010 = (
7564
7638
  # 0x0058, 0x0061: E-Mount: ShutterCount and dateTime
7565
7639
  0x0058 => { # appears not valid when flash is used ... not for ILCA-99M2
7566
7640
  Name => 'ShutterCount2',
7567
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|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)/',
7568
7642
  Format => 'int32u',
7569
7643
  RawConv => '$val & 0x00ffffff',
7570
7644
  },
7571
7645
  0x0061 => { # only minutes-seconds, not for ILCA-99M2, ILCE-9
7572
7646
  Name => 'SonyTimeMinSec',
7573
- Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
7647
+ Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
7574
7648
  Format => 'undef[2]',
7575
7649
  ValueConv => q{
7576
7650
  my @v = unpack('C*', $val);
@@ -7579,17 +7653,17 @@ my %isoSetting2010 = (
7579
7653
  },
7580
7654
  0x006b => {
7581
7655
  Name => 'ReleaseMode2',
7582
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4|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)/',
7583
7657
  %releaseMode2,
7584
7658
  },
7585
7659
  0x006d => {
7586
7660
  Name => 'ReleaseMode2',
7587
- Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3))/',
7661
+ Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3A?))/',
7588
7662
  %releaseMode2,
7589
7663
  },
7590
7664
  0x0073 => {
7591
7665
  Name => 'ReleaseMode2',
7592
- Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|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)/',
7593
7667
  %releaseMode2,
7594
7668
  },
7595
7669
  0x0088 => {
@@ -7668,7 +7742,7 @@ my %isoSetting2010 = (
7668
7742
  #
7669
7743
  0x019f => {
7670
7744
  Name => 'ShutterCount3',
7671
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))\b/',
7745
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)\b/',
7672
7746
  Format => 'int32u',
7673
7747
  RawConv => '$val == 0 ? undef : $val',
7674
7748
  },
@@ -7686,7 +7760,7 @@ my %isoSetting2010 = (
7686
7760
  },
7687
7761
  0x01eb => {
7688
7762
  Name => 'APS-CSizeCapture',
7689
- Condition => '$$self{Model} =~ /^ILCE-(7RM4|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)/',
7690
7764
  PrintConv => {
7691
7765
  0 => 'Off',
7692
7766
  1 => 'On',
@@ -7694,7 +7768,7 @@ my %isoSetting2010 = (
7694
7768
  },
7695
7769
  0x01ed => {
7696
7770
  Name => 'LensSpecFeatures',
7697
- Condition => '$$self{Model} =~ /^ILCE-(7RM4|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)/',
7698
7772
  Priority => 0,
7699
7773
  Format => 'undef[2]',
7700
7774
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7707,7 +7781,7 @@ my %isoSetting2010 = (
7707
7781
  },
7708
7782
  0x01ee => {
7709
7783
  Name => 'APS-CSizeCapture',
7710
- Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7784
+ Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3A?|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7711
7785
  PrintConv => {
7712
7786
  0 => 'Off',
7713
7787
  1 => 'On',
@@ -7715,7 +7789,7 @@ my %isoSetting2010 = (
7715
7789
  },
7716
7790
  0x01f0 => {
7717
7791
  Name => 'LensSpecFeatures',
7718
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7792
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3A?|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7719
7793
  Priority => 0,
7720
7794
  Format => 'undef[2]',
7721
7795
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7796,7 +7870,7 @@ my %isoSetting2010 = (
7796
7870
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
7797
7871
  FORMAT => 'int8u',
7798
7872
  NOTES => q{
7799
- Valid from July 2020 for ILCE-1/7SM3.
7873
+ Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
7800
7874
  },
7801
7875
  WRITABLE => 1,
7802
7876
  FIRST_ENTRY => 0,
@@ -7883,6 +7957,13 @@ my %isoSetting2010 = (
7883
7957
  },
7884
7958
  0x0088 => {
7885
7959
  Name => 'InternalSerialNumber', #(NC)
7960
+ Condition => '$$self{Model} =~ /^(ILCE-(7M4|7SM3)|ILME-FX3)/',
7961
+ Format => 'int8u[6]',
7962
+ PrintConv => 'unpack "H*", pack "C*", split " ", $val',
7963
+ },
7964
+ 0x008a => {
7965
+ Name => 'InternalSerialNumber', #(NC)
7966
+ Condition => '$$self{Model} =~ /^(ILCE-1)/',
7886
7967
  Format => 'int8u[6]',
7887
7968
  PrintConv => 'unpack "H*", pack "C*", split " ", $val',
7888
7969
  },
@@ -8112,25 +8193,35 @@ my %isoSetting2010 = (
8112
8193
  8 => 'Rotate 270 CW',
8113
8194
  },
8114
8195
  },
8115
- 0x002a => {
8196
+ 0x002a => [{
8116
8197
  Name => 'Quality2',
8117
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8198
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8118
8199
  PrintConv => {
8119
8200
  0 => 'JPEG',
8120
8201
  1 => 'RAW',
8121
8202
  2 => 'RAW + JPEG',
8122
8203
  3 => 'JPEG + MPO', # 3D images
8123
8204
  },
8124
- },
8205
+ },{
8206
+ Name => 'Quality2',
8207
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8208
+ PrintConv => {
8209
+ 1 => 'JPEG',
8210
+ 2 => 'RAW',
8211
+ 3 => 'RAW + JPEG',
8212
+ 4 => 'HEIF',
8213
+ 6 => 'RAW + HEIF',
8214
+ },
8215
+ }],
8125
8216
  0x0047 => {
8126
8217
  Name => 'SonyImageHeight',
8127
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8218
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8128
8219
  Format => 'int16u',
8129
8220
  PrintConv => '$val > 0 ? 8*$val : "n.a."',
8130
8221
  },
8131
8222
  0x0053 => {
8132
8223
  Name => 'ModelReleaseYear',
8133
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8224
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8134
8225
  Format => 'int8u',
8135
8226
  PrintConv => 'sprintf("20%.2d", $val)',
8136
8227
  },
@@ -8145,10 +8236,11 @@ my %isoSetting2010 = (
8145
8236
  FIRST_ENTRY => 0,
8146
8237
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8147
8238
  DATAMEMBER => [ 0 ],
8148
- 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 ],
8149
8240
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8150
8241
 
8151
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' } },
8152
8244
  0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8153
8245
  0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8154
8246
  0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8287,8 +8379,8 @@ my %isoSetting2010 = (
8287
8379
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8288
8380
  DATAMEMBER => [ 0x04 ],
8289
8381
  0x04 => {
8290
- # seen values 0,2,3,18,32,49,50,83,148
8291
- # 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
8292
8384
  Name => 'TempTest2',
8293
8385
  DataMember => 'TempTest2',
8294
8386
  Hidden => 1,
@@ -8609,7 +8701,7 @@ my %isoSetting2010 = (
8609
8701
  },
8610
8702
  0x0342 => {
8611
8703
  Name => 'LensZoomPosition',
8612
- Condition => '$$self{Model} !~ /^(ILCA-|ILCE-(7RM2|7M3|7RM3|7RM4|7SM2|6100|6300|6400|6500|6600|7C|9|9M2)|DSC-(HX80|HX90V|HX99|RX0|RX10M2|RX10M3|RX10M4|RX100M4|RX100M5|RX100M5A|RX100M6|RX100M7|WX500)|ZV-)/',
8704
+ Condition => '$$self{Model} !~ /^(ILCA-|ILCE-(7RM2|7M3|7RM3A?|7RM4A?|7SM2|6100|6300|6400|6500|6600|7C|9|9M2)|DSC-(HX80|HX90V|HX99|RX0|RX10M2|RX10M3|RX10M4|RX100M4|RX100M5|RX100M5A|RX100M6|RX100M7|WX500)|ZV-)/',
8613
8705
  Format => 'int16u',
8614
8706
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8615
8707
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8621,7 +8713,7 @@ my %isoSetting2010 = (
8621
8713
  },
8622
8714
  0x034e => {
8623
8715
  Name => 'LensZoomPosition',
8624
- Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9M2))/',
8716
+ Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/',
8625
8717
  Format => 'int16u',
8626
8718
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8627
8719
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8633,7 +8725,7 @@ my %isoSetting2010 = (
8633
8725
  },
8634
8726
  0x035c => {
8635
8727
  Name => 'VignettingCorrParams',
8636
- Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
8728
+ Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
8637
8729
  Format => 'int16s[16]',
8638
8730
  },
8639
8731
  0x035a => {
@@ -8670,7 +8762,7 @@ my %isoSetting2010 = (
8670
8762
  },
8671
8763
  0x03b8 => {
8672
8764
  Name => 'ChromaticAberrationCorrParams',
8673
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
8765
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
8674
8766
  Format => 'int16s[32]',
8675
8767
  },
8676
8768
  );
@@ -8790,7 +8882,7 @@ my %isoSetting2010 = (
8790
8882
  FIRST_ENTRY => 0,
8791
8883
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8792
8884
  DATAMEMBER => [ 0x0008 ],
8793
- NOTES => 'NEX and ILCE models only.',
8885
+ NOTES => 'E-mount cameras only.',
8794
8886
 
8795
8887
  # 0x0001 - 0 for all NEX and ILCE-3000/3500, 20 for all other ILCE (17 for ILCE samples from Sony.net)
8796
8888
  # 0x0008 - LensMount, but different values from Tag9405-0x0105 and Tag9050-0x0604.
@@ -9201,11 +9293,11 @@ my %isoSetting2010 = (
9201
9293
 
9202
9294
  # 0x1a06 onwards - first seen for ILCE-7RM2: appears to be some kind of metering image
9203
9295
  # but not valid anymore for ILCE-6400, ILCE-9 v5.0x
9204
- 0x1a06 => { Name => 'TiffMeteringImageWidth', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9205
- 0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9296
+ 0x1a06 => { Name => 'TiffMeteringImageWidth', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9297
+ 0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9206
9298
  0x1a08 => { # (2640 bytes: 1 set of 44x30 int16u values)
9207
9299
  Name => 'TiffMeteringImage',
9208
- Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
9300
+ Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
9209
9301
  Format => 'undef[2640]',
9210
9302
  Notes => q{
9211
9303
  13(?)-bit intensity data from 1320 (1200) metering segments, extracted as a
@@ -9417,7 +9509,7 @@ my %isoSetting2010 = (
9417
9509
  WRITE_PROC => \&WriteEnciphered,
9418
9510
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9419
9511
  FORMAT => 'int8u',
9420
- NOTES => 'Valid for the ILCE-1/7SM3.',
9512
+ NOTES => 'Valid for the ILCE-1/7M4/7SM3, ILME-FX3.',
9421
9513
  FIRST_ENTRY => 0,
9422
9514
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9423
9515
  0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
@@ -9544,10 +9636,22 @@ my %isoSetting2010 = (
9544
9636
  },
9545
9637
  0x088f => {
9546
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)/',
9547
9645
  Format => 'int16s[16]',
9548
9646
  },
9549
9647
  0x0914 => {
9550
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)/',
9551
9655
  Format => 'int16s[32]',
9552
9656
  },
9553
9657
  );
@@ -10051,10 +10155,16 @@ my %isoSetting2010 = (
10051
10155
  PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
10052
10156
  },
10053
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 },
10054
10162
  # 0x8100 - 16 bytes starting with 0x060e2b340401
10055
10163
  0x8100 => { Name => 'Sony_rtmd_0x8100', Format => 'int8u', %hidUnk },
10056
10164
  0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u', %hidUnk }, # seen: 0,1
10057
- 0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1"
10165
+ 0x8104 => { Name => 'Sony_rtmd_0x8104', Format => 'int16u', %hidUnk }, # seen: 35616
10166
+ 0x8105 => { Name => 'Sony_rtmd_0x8105', Format => 'int16u', %hidUnk }, # seen: 20092
10167
+ 0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1","24000 1001" frame rate?
10058
10168
  0x8109 => { #forum12218
10059
10169
  Name => 'ExposureTime',
10060
10170
  Format => 'rational64u',
@@ -10150,7 +10260,7 @@ my %isoSetting2010 = (
10150
10260
  },
10151
10261
  0xe000 => { Name => 'Sony_rtmd_0xe000', Format => 'int8u', %hidUnk }, # (16 bytes)
10152
10262
  0xe300 => { Name => 'Sony_rtmd_0xe300', Format => 'int8u', %hidUnk }, # seen: 0,1
10153
- 0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100,1600
10263
+ 0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100,1600,12800
10154
10264
  0xe302 => { Name => 'Sony_rtmd_0xe302', Format => 'int8u', %hidUnk }, # seen: 1
10155
10265
  0xe303 => { #forum12218
10156
10266
  Name => 'WhiteBalance',
@@ -10171,6 +10281,19 @@ my %isoSetting2010 = (
10171
10281
  ValueConv => 'my @a=unpack("x1H4H2H2H2H2H2",$val); "$a[0]:$a[1]:$a[2] $a[3]:$a[4]:$a[5]"',
10172
10282
  PrintConv => '$self->ConvertDateTime($val)',
10173
10283
  },
10284
+ 0xe435 => { Name => 'Sony_rtmd_0xe435', Format => 'int32u', %hidUnk }, # seen: 2000
10285
+ 0xe437 => { Name => 'Sony_rtmd_0xe437', Format => 'int32s', %hidUnk }, # seen: -3800 to -3400
10286
+ 0xe43b => {
10287
+ Name => 'PitchRollYaw',
10288
+ Format => 'int16s',
10289
+ RawConv => 'substr($val, 8)',
10290
+ },
10291
+ 0xe445 => { Name => 'Sony_rtmd_0xe445', Format => 'int32u', %hidUnk }, # seen: 2000
10292
+ 0xe44b => {
10293
+ Name => 'Accelerometer', # (NC)
10294
+ Format => 'int16s',
10295
+ RawConv => 'substr($val, 8)',
10296
+ },
10174
10297
  # f010 - 2048 bytes
10175
10298
  # f020 - 543 bytes
10176
10299
  );
@@ -10218,6 +10341,26 @@ my %isoSetting2010 = (
10218
10341
  ValueConv => '"$val[0] $val[1]Z"',
10219
10342
  PrintConv => '$self->ConvertDateTime($val)',
10220
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
+ },
10221
10364
  );
10222
10365
 
10223
10366
  # add our composite tags