exiftool_vendored 12.25.0 → 12.35.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +174 -7
  3. data/bin/MANIFEST +11 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +44 -43
  7. data/bin/arg_files/xmp2exif.args +2 -1
  8. data/bin/config_files/convert_regions.config +25 -14
  9. data/bin/config_files/example.config +1 -1
  10. data/bin/exiftool +118 -92
  11. data/bin/fmt_files/gpx.fmt +1 -1
  12. data/bin/fmt_files/gpx_wpt.fmt +1 -1
  13. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +16 -3
  14. data/bin/lib/Image/ExifTool/CBOR.pm +331 -0
  15. data/bin/lib/Image/ExifTool/Canon.pm +52 -20
  16. data/bin/lib/Image/ExifTool/Charset.pm +2 -0
  17. data/bin/lib/Image/ExifTool/DPX.pm +13 -2
  18. data/bin/lib/Image/ExifTool/Exif.pm +107 -8
  19. data/bin/lib/Image/ExifTool/FLIR.pm +33 -8
  20. data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
  21. data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -0
  22. data/bin/lib/Image/ExifTool/Geotag.pm +13 -2
  23. data/bin/lib/Image/ExifTool/GoPro.pm +16 -1
  24. data/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
  25. data/bin/lib/Image/ExifTool/ID3.pm +15 -3
  26. data/bin/lib/Image/ExifTool/JPEG.pm +68 -2
  27. data/bin/lib/Image/ExifTool/JSON.pm +7 -3
  28. data/bin/lib/Image/ExifTool/Jpeg2000.pm +164 -36
  29. data/bin/lib/Image/ExifTool/LIF.pm +153 -0
  30. data/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
  31. data/bin/lib/Image/ExifTool/M2TS.pm +103 -7
  32. data/bin/lib/Image/ExifTool/MIE.pm +2 -1
  33. data/bin/lib/Image/ExifTool/MRC.pm +1 -1
  34. data/bin/lib/Image/ExifTool/MacOS.pm +2 -2
  35. data/bin/lib/Image/ExifTool/Nikon.pm +50 -6
  36. data/bin/lib/Image/ExifTool/NikonSettings.pm +10 -2
  37. data/bin/lib/Image/ExifTool/Olympus.pm +9 -2
  38. data/bin/lib/Image/ExifTool/Other.pm +93 -0
  39. data/bin/lib/Image/ExifTool/PDF.pm +11 -12
  40. data/bin/lib/Image/ExifTool/PNG.pm +7 -6
  41. data/bin/lib/Image/ExifTool/Panasonic.pm +14 -2
  42. data/bin/lib/Image/ExifTool/Pentax.pm +28 -5
  43. data/bin/lib/Image/ExifTool/Photoshop.pm +6 -0
  44. data/bin/lib/Image/ExifTool/QuickTime.pm +123 -25
  45. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +203 -121
  46. data/bin/lib/Image/ExifTool/README +9 -2
  47. data/bin/lib/Image/ExifTool/RIFF.pm +7 -2
  48. data/bin/lib/Image/ExifTool/Samsung.pm +47 -10
  49. data/bin/lib/Image/ExifTool/Sony.pm +113 -42
  50. data/bin/lib/Image/ExifTool/TagLookup.pm +4599 -4451
  51. data/bin/lib/Image/ExifTool/TagNames.pod +276 -41
  52. data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
  53. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  54. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
  55. data/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
  56. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +21 -4
  57. data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  58. data/bin/lib/Image/ExifTool/Writer.pl +47 -2
  59. data/bin/lib/Image/ExifTool/XMP.pm +32 -12
  60. data/bin/lib/Image/ExifTool/XMP2.pl +5 -2
  61. data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
  62. data/bin/lib/Image/ExifTool/ZISRAW.pm +121 -2
  63. data/bin/lib/Image/ExifTool.pm +153 -52
  64. data/bin/lib/Image/ExifTool.pod +70 -60
  65. data/bin/perl-Image-ExifTool.spec +43 -42
  66. data/lib/exiftool_vendored/version.rb +1 -1
  67. metadata +6 -3
@@ -30,7 +30,7 @@ use strict;
30
30
  use vars qw($VERSION);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
 
33
- $VERSION = '1.58';
33
+ $VERSION = '1.59';
34
34
 
35
35
  sub ConvertTimecode($);
36
36
  sub ProcessSGLT($$$);
@@ -527,6 +527,10 @@ my %code2charset = (
527
527
  Name => 'Text',
528
528
  Notes => 'streamed text, extracted when the ExtractEmbedded option is used',
529
529
  },
530
+ 'id3 ' => {
531
+ Name => 'ID3',
532
+ SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
533
+ },
530
534
  #
531
535
  # WebP-specific tags
532
536
  #
@@ -818,6 +822,7 @@ my %code2charset = (
818
822
  ILGT => 'Lightness',
819
823
  IMED => 'Medium',
820
824
  INAM => 'Title',
825
+ ITRK => 'TrackNumber',
821
826
  IPLT => 'NumColors',
822
827
  IPRD => 'Product',
823
828
  ISBJ => 'Subject',
@@ -1080,7 +1085,7 @@ my %code2charset = (
1080
1085
  Name => 'TextFormat',
1081
1086
  Condition => '$$self{RIFFStreamType} eq "txts"',
1082
1087
  Hidden => 1,
1083
- RawConv => '$self->Options("ExtractEmbedded") or $self->WarnOnce("Use ExtractEmbedded option to extract timed text"); undef',
1088
+ RawConv => '$self->Options("ExtractEmbedded") or $self->WarnOnce("Use ExtractEmbedded option to extract timed text",3); undef',
1084
1089
  },
1085
1090
  ],
1086
1091
  );
@@ -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.41';
37
+ $VERSION = '3.48';
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)
@@ -194,6 +195,12 @@ sub PrintInvLensSpec($;$$);
194
195
  49463 => 'Tamron 28-200mm F2.8-5.6 Di III RXD', #JR (Model A071)
195
196
  49464 => 'Tamron 70-300mm F4.5-6.3 Di III RXD', #JR (Model A047)
196
197
  49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
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
+ 49469 => 'Tamron 35-150mm F2-F2.8 Di III VXD', #JR (Model A058)
202
+ 49470 => 'Tamron 28-75mm F2.8 Di III VXD G2', #JR (Model A063)
203
+
197
204
  49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
198
205
  49473.1 => 'Viltrox 23mm F1.4 E', #JR
199
206
  49473.2 => 'Viltrox 56mm F1.4 E', #JR
@@ -232,7 +239,12 @@ sub PrintInvLensSpec($;$$);
232
239
  50524 => 'Sigma 35mm F2 DG DN | C', #IB (020)
233
240
  50525 => 'Sigma 24mm F3.5 DG DN | C', #JR (021)
234
241
  50526 => 'Sigma 28-70mm F2.8 DG DN | C', #JR (021)
235
-
242
+ 50527 => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #JR (021)
243
+ 50528 => 'Sigma 35mm F1.4 DG DN | A', #IB/JR (021)
244
+ 50529 => 'Sigma 90mm F2.8 DG DN | C', #JR (021)
245
+ 50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
246
+ 50531 => 'Sigma 18-50mm F2.8 DC DN | C', #IB/JR (021)
247
+
236
248
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
237
249
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
238
250
  50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
@@ -245,6 +257,7 @@ sub PrintInvLensSpec($;$$);
245
257
  51001 => 'Voigtlander NOKTON 21mm F1.4 Aspherical', #JR
246
258
  51002 => 'Voigtlander APO-LANTHAR 50mm F2 Aspherical', #JR
247
259
  51003 => 'Voigtlander NOKTON 35mm F1.2 Aspherical SE', #JR
260
+ 51006 => 'Voigtlander APO-LANTHAR 35mm F2 Aspherical', #JR
248
261
 
249
262
  # lenses listed in the Sigma MC-11 list, but not yet seen:
250
263
  # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
@@ -260,6 +273,7 @@ sub PrintInvLensSpec($;$$);
260
273
  51510 => 'Samyang AF 18mm F2.8 or Samyang AF 35mm F1.8', #JR
261
274
  51510.1 => 'Samyang AF 35mm F1.8', #JR
262
275
  51512 => 'Samyang AF 75mm F1.8', #IB/JR
276
+ 51514 => 'Samyang AF 24mm F1.8', #IB
263
277
  );
264
278
 
265
279
  # ExposureProgram values (ref PH, mainly decoded from A200)
@@ -1022,7 +1036,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1022
1036
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
1023
1037
  },{
1024
1038
  Name => 'Tag2010i', # ?
1025
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-1)\b/',
1039
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-(1|E10))\b/',
1026
1040
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
1027
1041
  },{
1028
1042
  Name => 'Tag_0x2010',
@@ -1493,7 +1507,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1493
1507
  my ($a,$b,$c,$d) = split ' ', $val;
1494
1508
  my @a = $a =~ /../g;
1495
1509
  return undef unless @a == 4;
1496
- return Set32u((hex($d)<<22) | ($a[0]<<17) | ($a[1]<<12) | ($a[2]<<6) | $a[3]) . chr($b) . chr($c);
1510
+ return Set32u((hex($d)<<22) | ($a[0]<<17) | ($a[1]<<12) | ($a[2]<<6) | $a[3]) . chr($b & 0xff) . chr($c & 0xff);
1497
1511
  },
1498
1512
  PrintConv => {
1499
1513
  '00000000 0 0 0x0' => 'n/a',
@@ -1569,6 +1583,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1569
1583
  65535 => 'n/a',
1570
1584
  },
1571
1585
  },
1586
+ # 0x203a - 0x2041: first seen October 2021 for ILCE-7M4
1572
1587
  0x3000 => {
1573
1588
  Name => 'ShotInfo',
1574
1589
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
@@ -1597,21 +1612,21 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1597
1612
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1598
1613
  {
1599
1614
  Name => 'Tag9050a',
1600
- 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-)/',
1615
+ 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-)/',
1601
1616
  SubDirectory => {
1602
1617
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1603
1618
  ByteOrder => 'LittleEndian',
1604
1619
  },
1605
1620
  },{
1606
1621
  Name => 'Tag9050b',
1607
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|7SM2|9|9M2)|ILCA-99M2)/',
1622
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|9|9M2)|ILCA-99M2|ZV-E10)/',
1608
1623
  SubDirectory => {
1609
1624
  TagTable => 'Image::ExifTool::Sony::Tag9050b',
1610
1625
  ByteOrder => 'LittleEndian',
1611
1626
  },
1612
1627
  },{
1613
1628
  Name => 'Tag9050c',
1614
- Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)/',
1629
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)/',
1615
1630
  SubDirectory => {
1616
1631
  TagTable => 'Image::ExifTool::Sony::Tag9050c',
1617
1632
  ByteOrder => 'LittleEndian',
@@ -1630,7 +1645,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1630
1645
  # 0x23 (e) for DSC-RX10/HX60V/HX350/HX400V/WX220/WX350, ILCE-7/7R/5000/6000, ILCA-68/77M2
1631
1646
  # 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
1632
1647
  # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
1633
- # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1
1648
+ # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/E10
1634
1649
  # 0x31 (e) for ILCE-1/7SM3, ILME-FX3
1635
1650
  # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively
1636
1651
  {
@@ -1646,7 +1661,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1646
1661
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400b' },
1647
1662
  },{
1648
1663
  Name => 'Tag9400c',
1649
- Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
1664
+ Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
1650
1665
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400c' },
1651
1666
  },{
1652
1667
  Name => 'Sony_0x9400',
@@ -1805,7 +1820,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1805
1820
  # 142 var (0x25 = 37 var enc.) DSC-HX80/HX90V/RX1RM2/RX10M2/RX10M3/RX100M4/WX500, ILCE-6300/7RM2/7SM2
1806
1821
  # 144 var (0xe1 = 225 var enc.) DSC-RX100M5
1807
1822
  # 145 var (0x76 = 118 var enc.) ILCA-99M2, ILCE-6500, DSC-RX0
1808
- # 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
1823
+ # 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
1809
1824
  # July 2020: ILCE-7SM3 doesn't write this tag anymore, but writes 0x9416
1810
1825
  0x9405 => [{
1811
1826
  Name => 'Tag9405a',
@@ -1859,7 +1874,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1859
1874
  },
1860
1875
  0x940c => [{
1861
1876
  Name => 'Tag940c',
1862
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar)\b/',
1877
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar|ZV-E10)\b/',
1863
1878
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag940c' },
1864
1879
  },{
1865
1880
  Name => 'Sony_0x940c',
@@ -2015,9 +2030,13 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2015
2030
  379 => 'ILCE-6100', #IB/JR
2016
2031
  380 => 'ZV-1', #JR
2017
2032
  381 => 'ILCE-7C', #JR
2033
+ 382 => 'ZV-E10', #JR
2018
2034
  383 => 'ILCE-7SM3',
2019
2035
  384 => 'ILCE-1', #PH
2020
2036
  385 => 'ILME-FX3', #JR
2037
+ 386 => 'ILCE-7RM3A', #JR
2038
+ 387 => 'ILCE-7RM4A', #forum12542
2039
+ 388 => 'ILCE-7M4', #IB/JR
2021
2040
  },
2022
2041
  },
2023
2042
  0xb020 => { #2
@@ -6176,7 +6195,7 @@ my %isoSetting2010 = (
6176
6195
  43 => 160000,
6177
6196
  44 => 204800,
6178
6197
  45 => 256000,
6179
- 46 => 320000,
6198
+ 46 => 320000,
6180
6199
  47 => 409600,
6181
6200
  );
6182
6201
 
@@ -7604,13 +7623,13 @@ my %isoSetting2010 = (
7604
7623
  # March 2019: ILCE-9 with v5.0x firmware follows ILCE-6400 in many tags ...
7605
7624
  0x0050 => {
7606
7625
  Name => 'ShutterCount2',
7607
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/)',
7626
+ 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)/)',
7608
7627
  Format => 'int32u',
7609
7628
  RawConv => '$val & 0x00ffffff',
7610
7629
  },
7611
7630
  0x0052 => {
7612
7631
  Name => 'ShutterCount2',
7613
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(7M3|7RM3))/)',
7632
+ Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(7M3|7RM3A?))/)',
7614
7633
  Format => 'int32u',
7615
7634
  RawConv => '$val & 0x00ffffff',
7616
7635
  },
@@ -7621,13 +7640,13 @@ my %isoSetting2010 = (
7621
7640
  # 0x0058, 0x0061: E-Mount: ShutterCount and dateTime
7622
7641
  0x0058 => { # appears not valid when flash is used ... not for ILCA-99M2
7623
7642
  Name => 'ShutterCount2',
7624
- 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)/',
7643
+ 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)/',
7625
7644
  Format => 'int32u',
7626
7645
  RawConv => '$val & 0x00ffffff',
7627
7646
  },
7628
7647
  0x0061 => { # only minutes-seconds, not for ILCA-99M2, ILCE-9
7629
7648
  Name => 'SonyTimeMinSec',
7630
- Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
7649
+ Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
7631
7650
  Format => 'undef[2]',
7632
7651
  ValueConv => q{
7633
7652
  my @v = unpack('C*', $val);
@@ -7636,17 +7655,17 @@ my %isoSetting2010 = (
7636
7655
  },
7637
7656
  0x006b => {
7638
7657
  Name => 'ReleaseMode2',
7639
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7658
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4A?|9M2)|ZV-E10)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7640
7659
  %releaseMode2,
7641
7660
  },
7642
7661
  0x006d => {
7643
7662
  Name => 'ReleaseMode2',
7644
- Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3))/',
7663
+ Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3A?))/',
7645
7664
  %releaseMode2,
7646
7665
  },
7647
7666
  0x0073 => {
7648
7667
  Name => 'ReleaseMode2',
7649
- Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9M2))/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7668
+ Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7650
7669
  %releaseMode2,
7651
7670
  },
7652
7671
  0x0088 => {
@@ -7725,7 +7744,7 @@ my %isoSetting2010 = (
7725
7744
  #
7726
7745
  0x019f => {
7727
7746
  Name => 'ShutterCount3',
7728
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))\b/',
7747
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)\b/',
7729
7748
  Format => 'int32u',
7730
7749
  RawConv => '$val == 0 ? undef : $val',
7731
7750
  },
@@ -7743,7 +7762,7 @@ my %isoSetting2010 = (
7743
7762
  },
7744
7763
  0x01eb => {
7745
7764
  Name => 'APS-CSizeCapture',
7746
- Condition => '$$self{Model} =~ /^ILCE-(7RM4|7C|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7765
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7747
7766
  PrintConv => {
7748
7767
  0 => 'Off',
7749
7768
  1 => 'On',
@@ -7751,7 +7770,7 @@ my %isoSetting2010 = (
7751
7770
  },
7752
7771
  0x01ed => {
7753
7772
  Name => 'LensSpecFeatures',
7754
- Condition => '$$self{Model} =~ /^ILCE-(7RM4|7C|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7773
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7755
7774
  Priority => 0,
7756
7775
  Format => 'undef[2]',
7757
7776
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7764,7 +7783,7 @@ my %isoSetting2010 = (
7764
7783
  },
7765
7784
  0x01ee => {
7766
7785
  Name => 'APS-CSizeCapture',
7767
- Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7786
+ Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3A?|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7768
7787
  PrintConv => {
7769
7788
  0 => 'Off',
7770
7789
  1 => 'On',
@@ -7772,7 +7791,7 @@ my %isoSetting2010 = (
7772
7791
  },
7773
7792
  0x01f0 => {
7774
7793
  Name => 'LensSpecFeatures',
7775
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7794
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3A?|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7776
7795
  Priority => 0,
7777
7796
  Format => 'undef[2]',
7778
7797
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7940,7 +7959,7 @@ my %isoSetting2010 = (
7940
7959
  },
7941
7960
  0x0088 => {
7942
7961
  Name => 'InternalSerialNumber', #(NC)
7943
- Condition => '$$self{Model} =~ /^(ILCE-7SM3|ILME-FX3)/',
7962
+ Condition => '$$self{Model} =~ /^(ILCE-(7M4|7SM3)|ILME-FX3)/',
7944
7963
  Format => 'int8u[6]',
7945
7964
  PrintConv => 'unpack "H*", pack "C*", split " ", $val',
7946
7965
  },
@@ -8178,7 +8197,7 @@ my %isoSetting2010 = (
8178
8197
  },
8179
8198
  0x002a => [{
8180
8199
  Name => 'Quality2',
8181
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8200
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8182
8201
  PrintConv => {
8183
8202
  0 => 'JPEG',
8184
8203
  1 => 'RAW',
@@ -8187,7 +8206,7 @@ my %isoSetting2010 = (
8187
8206
  },
8188
8207
  },{
8189
8208
  Name => 'Quality2',
8190
- Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8209
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8191
8210
  PrintConv => {
8192
8211
  1 => 'JPEG',
8193
8212
  2 => 'RAW',
@@ -8198,13 +8217,13 @@ my %isoSetting2010 = (
8198
8217
  }],
8199
8218
  0x0047 => {
8200
8219
  Name => 'SonyImageHeight',
8201
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8220
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8202
8221
  Format => 'int16u',
8203
8222
  PrintConv => '$val > 0 ? 8*$val : "n.a."',
8204
8223
  },
8205
8224
  0x0053 => {
8206
8225
  Name => 'ModelReleaseYear',
8207
- Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8226
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7SM3)|ILME-FX3)\b/',
8208
8227
  Format => 'int8u',
8209
8228
  PrintConv => 'sprintf("20%.2d", $val)',
8210
8229
  },
@@ -8219,10 +8238,11 @@ my %isoSetting2010 = (
8219
8238
  FIRST_ENTRY => 0,
8220
8239
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8221
8240
  DATAMEMBER => [ 0 ],
8222
- IS_SUBDIR => [ 0x0498, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
8241
+ IS_SUBDIR => [ 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
8223
8242
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8224
8243
 
8225
8244
  0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8245
+ 0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8226
8246
  0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8227
8247
  0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8228
8248
  0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8361,8 +8381,8 @@ my %isoSetting2010 = (
8361
8381
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8362
8382
  DATAMEMBER => [ 0x04 ],
8363
8383
  0x04 => {
8364
- # seen values 0,2,3,18,32,49,50,83,148
8365
- # CameraTemperature is valid for all values except 0,148
8384
+ # seen values 0,2,3,18,19,32,49,50,83,130,132,148,213,229,255
8385
+ # CameraTemperature is valid for all values above except ==0 and >=130
8366
8386
  Name => 'TempTest2',
8367
8387
  DataMember => 'TempTest2',
8368
8388
  Hidden => 1,
@@ -8683,7 +8703,7 @@ my %isoSetting2010 = (
8683
8703
  },
8684
8704
  0x0342 => {
8685
8705
  Name => 'LensZoomPosition',
8686
- 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-)/',
8706
+ 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-)/',
8687
8707
  Format => 'int16u',
8688
8708
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8689
8709
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8695,7 +8715,7 @@ my %isoSetting2010 = (
8695
8715
  },
8696
8716
  0x034e => {
8697
8717
  Name => 'LensZoomPosition',
8698
- Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9M2))/',
8718
+ Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/',
8699
8719
  Format => 'int16u',
8700
8720
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8701
8721
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8707,7 +8727,7 @@ my %isoSetting2010 = (
8707
8727
  },
8708
8728
  0x035c => {
8709
8729
  Name => 'VignettingCorrParams',
8710
- Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
8730
+ Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
8711
8731
  Format => 'int16s[16]',
8712
8732
  },
8713
8733
  0x035a => {
@@ -8744,7 +8764,7 @@ my %isoSetting2010 = (
8744
8764
  },
8745
8765
  0x03b8 => {
8746
8766
  Name => 'ChromaticAberrationCorrParams',
8747
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
8767
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
8748
8768
  Format => 'int16s[32]',
8749
8769
  },
8750
8770
  );
@@ -9275,11 +9295,11 @@ my %isoSetting2010 = (
9275
9295
 
9276
9296
  # 0x1a06 onwards - first seen for ILCE-7RM2: appears to be some kind of metering image
9277
9297
  # but not valid anymore for ILCE-6400, ILCE-9 v5.0x
9278
- 0x1a06 => { Name => 'TiffMeteringImageWidth', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9279
- 0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9298
+ 0x1a06 => { Name => 'TiffMeteringImageWidth', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9299
+ 0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9280
9300
  0x1a08 => { # (2640 bytes: 1 set of 44x30 int16u values)
9281
9301
  Name => 'TiffMeteringImage',
9282
- Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
9302
+ Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
9283
9303
  Format => 'undef[2640]',
9284
9304
  Notes => q{
9285
9305
  13(?)-bit intensity data from 1320 (1200) metering segments, extracted as a
@@ -9491,7 +9511,7 @@ my %isoSetting2010 = (
9491
9511
  WRITE_PROC => \&WriteEnciphered,
9492
9512
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9493
9513
  FORMAT => 'int8u',
9494
- NOTES => 'Valid for the ILCE-1/7SM3, ILME-FX3.',
9514
+ NOTES => 'Valid for the ILCE-1/7M4/7SM3, ILME-FX3.',
9495
9515
  FIRST_ENTRY => 0,
9496
9516
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9497
9517
  0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
@@ -9618,10 +9638,22 @@ my %isoSetting2010 = (
9618
9638
  },
9619
9639
  0x088f => {
9620
9640
  Name => 'VignettingCorrParams',
9641
+ Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
9642
+ Format => 'int16s[16]',
9643
+ },
9644
+ 0x0891 => {
9645
+ Name => 'VignettingCorrParams',
9646
+ Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9621
9647
  Format => 'int16s[16]',
9622
9648
  },
9623
9649
  0x0914 => {
9624
9650
  Name => 'ChromaticAberrationCorrParams',
9651
+ Condition => '$$self{Model} !~ /^(ILCE-7M4)/',
9652
+ Format => 'int16s[32]',
9653
+ },
9654
+ 0x0916 => {
9655
+ Name => 'ChromaticAberrationCorrParams',
9656
+ Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9625
9657
  Format => 'int16s[32]',
9626
9658
  },
9627
9659
  );
@@ -10125,10 +10157,16 @@ my %isoSetting2010 = (
10125
10157
  PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
10126
10158
  },
10127
10159
  0x8001 => { Name => 'Sony_rtmd_0x8001', Format => 'int16u', %hidUnk },
10160
+ 0x8004 => { Name => 'Sony_rtmd_0x8004', Format => 'int16u', %hidUnk },
10161
+ 0x8005 => { Name => 'Sony_rtmd_0x8005', Format => 'int16u', %hidUnk },
10162
+ 0x800a => { Name => 'Sony_rtmd_0x800a', Format => 'int16u', %hidUnk },
10163
+ 0x800b => { Name => 'Sony_rtmd_0x800b', Format => 'int16u', %hidUnk },
10128
10164
  # 0x8100 - 16 bytes starting with 0x060e2b340401
10129
10165
  0x8100 => { Name => 'Sony_rtmd_0x8100', Format => 'int8u', %hidUnk },
10130
10166
  0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u', %hidUnk }, # seen: 0,1
10131
- 0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1"
10167
+ 0x8104 => { Name => 'Sony_rtmd_0x8104', Format => 'int16u', %hidUnk }, # seen: 35616
10168
+ 0x8105 => { Name => 'Sony_rtmd_0x8105', Format => 'int16u', %hidUnk }, # seen: 20092
10169
+ 0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1","24000 1001" frame rate?
10132
10170
  0x8109 => { #forum12218
10133
10171
  Name => 'ExposureTime',
10134
10172
  Format => 'rational64u',
@@ -10224,7 +10262,7 @@ my %isoSetting2010 = (
10224
10262
  },
10225
10263
  0xe000 => { Name => 'Sony_rtmd_0xe000', Format => 'int8u', %hidUnk }, # (16 bytes)
10226
10264
  0xe300 => { Name => 'Sony_rtmd_0xe300', Format => 'int8u', %hidUnk }, # seen: 0,1
10227
- 0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100,1600
10265
+ 0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100,1600,12800
10228
10266
  0xe302 => { Name => 'Sony_rtmd_0xe302', Format => 'int8u', %hidUnk }, # seen: 1
10229
10267
  0xe303 => { #forum12218
10230
10268
  Name => 'WhiteBalance',
@@ -10245,6 +10283,19 @@ my %isoSetting2010 = (
10245
10283
  ValueConv => 'my @a=unpack("x1H4H2H2H2H2H2",$val); "$a[0]:$a[1]:$a[2] $a[3]:$a[4]:$a[5]"',
10246
10284
  PrintConv => '$self->ConvertDateTime($val)',
10247
10285
  },
10286
+ 0xe435 => { Name => 'Sony_rtmd_0xe435', Format => 'int32u', %hidUnk }, # seen: 2000
10287
+ 0xe437 => { Name => 'Sony_rtmd_0xe437', Format => 'int32s', %hidUnk }, # seen: -3800 to -3400
10288
+ 0xe43b => {
10289
+ Name => 'PitchRollYaw',
10290
+ Format => 'int16s',
10291
+ RawConv => 'substr($val, 8)',
10292
+ },
10293
+ 0xe445 => { Name => 'Sony_rtmd_0xe445', Format => 'int32u', %hidUnk }, # seen: 2000
10294
+ 0xe44b => {
10295
+ Name => 'Accelerometer', # (NC)
10296
+ Format => 'int16s',
10297
+ RawConv => 'substr($val, 8)',
10298
+ },
10248
10299
  # f010 - 2048 bytes
10249
10300
  # f020 - 543 bytes
10250
10301
  );
@@ -10292,6 +10343,26 @@ my %isoSetting2010 = (
10292
10343
  ValueConv => '"$val[0] $val[1]Z"',
10293
10344
  PrintConv => '$self->ConvertDateTime($val)',
10294
10345
  },
10346
+ GPSLatitude => {
10347
+ SubDoc => 1, # generate for all sub-documents
10348
+ Groups => { 2 => 'Location' },
10349
+ Require => {
10350
+ 0 => 'Sony:GPSLatitude',
10351
+ 1 => 'Sony:GPSLatitudeRef',
10352
+ },
10353
+ ValueConv => '$val[1] =~ /^S/i ? -$val[0] : $val[0]',
10354
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
10355
+ },
10356
+ GPSLongitude => {
10357
+ SubDoc => 1, # generate for all sub-documents
10358
+ Groups => { 2 => 'Location' },
10359
+ Require => {
10360
+ 0 => 'Sony:GPSLongitude',
10361
+ 1 => 'Sony:GPSLongitudeRef',
10362
+ },
10363
+ ValueConv => '$val[1] =~ /^W/i ? -$val[0] : $val[0]',
10364
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
10365
+ },
10295
10366
  );
10296
10367
 
10297
10368
  # add our composite tags