exiftool_vendored 12.17.1 → 12.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +225 -1
  3. data/bin/MANIFEST +23 -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 +2 -9
  12. data/bin/exiftool +142 -87
  13. data/bin/fmt_files/gpx.fmt +2 -2
  14. data/bin/fmt_files/gpx_wpt.fmt +2 -2
  15. data/bin/fmt_files/kml.fmt +1 -1
  16. data/bin/fmt_files/kml_track.fmt +1 -1
  17. data/bin/lib/Image/ExifTool/Apple.pm +3 -2
  18. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +30 -12
  19. data/bin/lib/Image/ExifTool/CBOR.pm +277 -0
  20. data/bin/lib/Image/ExifTool/Canon.pm +49 -18
  21. data/bin/lib/Image/ExifTool/DJI.pm +6 -6
  22. data/bin/lib/Image/ExifTool/DPX.pm +13 -2
  23. data/bin/lib/Image/ExifTool/DjVu.pm +6 -5
  24. data/bin/lib/Image/ExifTool/Exif.pm +28 -11
  25. data/bin/lib/Image/ExifTool/FITS.pm +13 -2
  26. data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
  27. data/bin/lib/Image/ExifTool/FujiFilm.pm +19 -8
  28. data/bin/lib/Image/ExifTool/GPS.pm +22 -11
  29. data/bin/lib/Image/ExifTool/Geotag.pm +13 -2
  30. data/bin/lib/Image/ExifTool/GoPro.pm +16 -1
  31. data/bin/lib/Image/ExifTool/ICC_Profile.pm +2 -2
  32. data/bin/lib/Image/ExifTool/ID3.pm +15 -3
  33. data/bin/lib/Image/ExifTool/JPEG.pm +74 -4
  34. data/bin/lib/Image/ExifTool/JSON.pm +27 -4
  35. data/bin/lib/Image/ExifTool/Jpeg2000.pm +393 -16
  36. data/bin/lib/Image/ExifTool/LIF.pm +153 -0
  37. data/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
  38. data/bin/lib/Image/ExifTool/M2TS.pm +137 -5
  39. data/bin/lib/Image/ExifTool/MIE.pm +4 -3
  40. data/bin/lib/Image/ExifTool/MRC.pm +341 -0
  41. data/bin/lib/Image/ExifTool/MWG.pm +3 -3
  42. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  43. data/bin/lib/Image/ExifTool/MacOS.pm +1 -1
  44. data/bin/lib/Image/ExifTool/Microsoft.pm +298 -82
  45. data/bin/lib/Image/ExifTool/Nikon.pm +19 -8
  46. data/bin/lib/Image/ExifTool/NikonSettings.pm +28 -11
  47. data/bin/lib/Image/ExifTool/Olympus.pm +6 -3
  48. data/bin/lib/Image/ExifTool/Other.pm +93 -0
  49. data/bin/lib/Image/ExifTool/PDF.pm +9 -12
  50. data/bin/lib/Image/ExifTool/PNG.pm +8 -7
  51. data/bin/lib/Image/ExifTool/Panasonic.pm +28 -3
  52. data/bin/lib/Image/ExifTool/Pentax.pm +28 -5
  53. data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -3
  54. data/bin/lib/Image/ExifTool/Photoshop.pm +6 -0
  55. data/bin/lib/Image/ExifTool/QuickTime.pm +247 -88
  56. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +283 -141
  57. data/bin/lib/Image/ExifTool/README +3 -0
  58. data/bin/lib/Image/ExifTool/RIFF.pm +89 -12
  59. data/bin/lib/Image/ExifTool/Samsung.pm +48 -10
  60. data/bin/lib/Image/ExifTool/Shortcuts.pm +9 -0
  61. data/bin/lib/Image/ExifTool/Sony.pm +237 -78
  62. data/bin/lib/Image/ExifTool/TagInfoXML.pm +1 -0
  63. data/bin/lib/Image/ExifTool/TagLookup.pm +4125 -4028
  64. data/bin/lib/Image/ExifTool/TagNames.pod +644 -286
  65. data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
  66. data/bin/lib/Image/ExifTool/WriteExif.pl +1 -1
  67. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  68. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
  69. data/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
  70. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -0
  71. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +55 -21
  72. data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -3
  73. data/bin/lib/Image/ExifTool/Writer.pl +47 -10
  74. data/bin/lib/Image/ExifTool/XMP.pm +39 -14
  75. data/bin/lib/Image/ExifTool/XMP2.pl +2 -1
  76. data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
  77. data/bin/lib/Image/ExifTool/ZISRAW.pm +121 -2
  78. data/bin/lib/Image/ExifTool.pm +223 -72
  79. data/bin/lib/Image/ExifTool.pod +114 -93
  80. data/bin/perl-Image-ExifTool.spec +43 -42
  81. data/lib/exiftool_vendored/version.rb +1 -1
  82. metadata +28 -13
@@ -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.35';
37
+ $VERSION = '3.45';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -71,8 +71,8 @@ sub PrintInvLensSpec($;$$);
71
71
  '0.12' => 'Zeiss Loxia 35mm F2', # (firmware Ver.01)
72
72
  1 => 'Sony LA-EA1 or Sigma MC-11 Adapter', # MC-11 with not-supported lenses
73
73
  2 => 'Sony LA-EA2 Adapter',
74
- 3 => 'Sony LA-EA3 Adapter', #(NC) ILCE-7 image with A-mount lens, but also has 0x940e 2nd byte=2
75
- 6 => 'Sony LA-EA4 Adapter', #(NC) ILCE-7R image with A-mount lens and having phase-detect info blocks in 0x940e AFInfo
74
+ 3 => 'Sony LA-EA3 Adapter',
75
+ 6 => 'Sony LA-EA4 Adapter',
76
76
  7 => 'Sony LA-EA5 Adapter', #JR
77
77
  # 27 => Venus Optics Laowa 12mm f2.8 Zero-D or 105mm f2 (T3.2) Smooth Trans Focus (ref IB)
78
78
  44 => 'Metabones Canon EF Smart Adapter', #JR
@@ -80,6 +80,7 @@ sub PrintInvLensSpec($;$$);
80
80
  184 => 'Metabones Canon EF Speed Booster Ultra', #JR ('Green' mode, LensMount reported as A-mount)
81
81
  234 => 'Metabones Canon EF Smart Adapter Mark IV', #JR (LensMount reported as A-mount)
82
82
  239 => 'Metabones Canon EF Speed Booster', #JR
83
+ 24593 => 'LA-EA4r MonsterAdapter',
83
84
  # Sony VX product code: (http://www.mi-fo.de/forum/index.php?s=7df1c8d3b1cd675f2abf4f4442e19cf2&showtopic=35035&view=findpost&p=303746)
84
85
  32784 => 'Sony E 16mm F2.8', # VX9100
85
86
  32785 => 'Sony E 18-55mm F3.5-5.6 OSS', # VX9101
@@ -142,11 +143,17 @@ sub PrintInvLensSpec($;$$);
142
143
  32852 => 'Sony FE 600mm F4 GM OSS', #IB
143
144
  32853 => 'Sony E 16-55mm F2.8 G', #IB/JR
144
145
  32854 => 'Sony E 70-350mm F4.5-6.3 G OSS', #IB/JR
146
+ 32855 => 'Sony FE C 16-35mm T3.1 G', #JR (SELC1635G) (max aperture is 2.8)
145
147
  32858 => 'Sony FE 35mm F1.8', #JR/IB
146
148
  32859 => 'Sony FE 20mm F1.8 G', #IB/JR
147
149
  32860 => 'Sony FE 12-24mm F2.8 GM', #JR/IB
150
+ 32862 => 'Sony FE 50mm F1.2 GM', #IB/JR
151
+ 32863 => 'Sony FE 14mm F1.8 GM', #IB
148
152
  32864 => 'Sony FE 28-60mm F4-5.6', #JR
149
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
150
157
 
151
158
  # (comment this out so LensID will report the LensModel, which is more useful)
152
159
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -187,7 +194,12 @@ sub PrintInvLensSpec($;$$);
187
194
  49463 => 'Tamron 28-200mm F2.8-5.6 Di III RXD', #JR (Model A071)
188
195
  49464 => 'Tamron 70-300mm F4.5-6.3 Di III RXD', #JR (Model A047)
189
196
  49465 => 'Tamron 17-70mm F2.8 Di III-A VC RXD', #JR (Model B070)
190
- 49473 => 'Tokina atx-m 85mm F1.8 FE', #JR
197
+ 49466 => 'Tamron 150-500mm F5-6.7 Di III VC VXD', #JR (Model A057)
198
+ 49467 => 'Tamron 11-20mm F2.8 Di III-A RXD', #JR (Model B060)
199
+
200
+ 49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
201
+ 49473.1 => 'Viltrox 23mm F1.4 E', #JR
202
+ 49473.2 => 'Viltrox 56mm F1.4 E', #JR
191
203
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
192
204
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
193
205
 
@@ -221,6 +233,12 @@ sub PrintInvLensSpec($;$$);
221
233
  50522 => 'Sigma 105mm F2.8 DG DN MACRO | A', #JR (020)
222
234
  50523 => 'Sigma 65mm F2 DG DN | C', #IB (020)
223
235
  50524 => 'Sigma 35mm F2 DG DN | C', #IB (020)
236
+ 50525 => 'Sigma 24mm F3.5 DG DN | C', #JR (021)
237
+ 50526 => 'Sigma 28-70mm F2.8 DG DN | C', #JR (021)
238
+ 50527 => 'Sigma 150-600mm F5-6.3 DG DN OS | S', #JR (021)
239
+ 50528 => 'Sigma 35mm F1.4 DG DN | A', #IB/JR (021)
240
+ 50529 => 'Sigma 90mm F2.8 DG DN | C', #JR (021)
241
+ 50530 => 'Sigma 24mm F2 DG DN | C', #JR (021)
224
242
 
225
243
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
226
244
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
@@ -234,6 +252,7 @@ sub PrintInvLensSpec($;$$);
234
252
  51001 => 'Voigtlander NOKTON 21mm F1.4 Aspherical', #JR
235
253
  51002 => 'Voigtlander APO-LANTHAR 50mm F2 Aspherical', #JR
236
254
  51003 => 'Voigtlander NOKTON 35mm F1.2 Aspherical SE', #JR
255
+ 51006 => 'Voigtlander APO-LANTHAR 35mm F2 Aspherical', #JR
237
256
 
238
257
  # lenses listed in the Sigma MC-11 list, but not yet seen:
239
258
  # 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
@@ -249,6 +268,7 @@ sub PrintInvLensSpec($;$$);
249
268
  51510 => 'Samyang AF 18mm F2.8 or Samyang AF 35mm F1.8', #JR
250
269
  51510.1 => 'Samyang AF 35mm F1.8', #JR
251
270
  51512 => 'Samyang AF 75mm F1.8', #IB/JR
271
+ 51514 => 'Samyang AF 24mm F1.8', #IB
252
272
  );
253
273
 
254
274
  # ExposureProgram values (ref PH, mainly decoded from A200)
@@ -623,9 +643,10 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
623
643
  3 => 'Standard',
624
644
  4 => 'Economy',
625
645
  5 => 'Extra Fine',
626
- 6 => 'RAW + JPEG',
646
+ 6 => 'RAW + JPEG/HEIF',
627
647
  7 => 'Compressed RAW',
628
648
  8 => 'Compressed RAW + JPEG',
649
+ 9 => 'Light', #JR
629
650
  0xffffffff => 'n/a', #PH (SLT-A57 panorama)
630
651
  },
631
652
  },
@@ -1010,7 +1031,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1010
1031
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
1011
1032
  },{
1012
1033
  Name => 'Tag2010i', # ?
1013
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-1)\b/',
1034
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-(1|E10))\b/',
1014
1035
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
1015
1036
  },{
1016
1037
  Name => 'Tag_0x2010',
@@ -1118,7 +1139,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1118
1139
  },
1119
1140
  },{
1120
1141
  Name => 'AFAreaModeSetting',
1121
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
1142
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
1122
1143
  Notes => 'NEX, ILCE and some DSC models',
1123
1144
  RawConv => '$$self{AFAreaILCE} = $val',
1124
1145
  DataMember => 'AFAreaILCE',
@@ -1154,7 +1175,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1154
1175
  # observed values in range (0 0) to (640 480), with center (320 240) often seen
1155
1176
  # for NEX-5R/6, positions appear to be in an 11x9 grid
1156
1177
  Name => 'FlexibleSpotPosition',
1157
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
1178
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
1158
1179
  Writable => 'int16u',
1159
1180
  Count => 2,
1160
1181
  Notes => q{
@@ -1169,7 +1190,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1169
1190
  # doesn't seem to apply to DSC models (always 0)
1170
1191
  Name => 'AFPointSelected',
1171
1192
  Condition => q{
1172
- ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^ILCE-/ and
1193
+ ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^(ILCE-|ILME-)/ and
1173
1194
  defined $$self{AFAreaILCE} and $$self{AFAreaILCE} == 4)
1174
1195
  },
1175
1196
  Notes => 'SLT models or ILCE with LA-EA2/EA4',
@@ -1247,7 +1268,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1247
1268
  Name => 'AFPointSelected',
1248
1269
  # non-zero only when AFAreaMode is 'Zone', and 'Expanded-Flexible-Spot' for ILCE-6300/7RM2/7SM2
1249
1270
  # each Zone has 3x3 AF Areas --> 9 positions within 5x5 total Contrast AF Areas
1250
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-)/',
1271
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-)/',
1251
1272
  Notes => 'NEX and ILCE models',
1252
1273
  Writable => 'int8u',
1253
1274
  PrintConv => {
@@ -1404,6 +1425,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1404
1425
  PrintConv => {
1405
1426
  0 => 'Compressed RAW',
1406
1427
  1 => 'Uncompressed RAW',
1428
+ 2 => 'Lossless Compressed RAW', #JR (NC) seen for ILCE-1
1407
1429
  65535 => 'n/a', # seen for ILCE-7SM3 JPEG-only
1408
1430
  },
1409
1431
  },
@@ -1451,13 +1473,15 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1451
1473
  Count => 2,
1452
1474
  PrintConv => {
1453
1475
  '0 0' => 'n/a',
1454
- '0 1' => 'Standard JPEG',
1455
- '0 2' => 'Fine JPEG',
1456
- '0 3' => 'Extra Fine JPEG',
1476
+ '0 1' => 'Standard',
1477
+ '0 2' => 'Fine',
1478
+ '0 3' => 'Extra Fine',
1479
+ '0 4' => 'Light', #JR
1457
1480
  '1 0' => 'RAW',
1458
- '1 1' => 'RAW + Standard JPEG',
1459
- '1 2' => 'RAW + Fine JPEG',
1460
- '1 3' => 'RAW + Extra Fine JPEG',
1481
+ '1 1' => 'RAW + Standard',
1482
+ '1 2' => 'RAW + Fine',
1483
+ '1 3' => 'RAW + Extra Fine',
1484
+ '1 4' => 'RAW + Light', #JR
1461
1485
  },
1462
1486
  },
1463
1487
  0x202f => { #JR (ILCE-7RM3)
@@ -1478,7 +1502,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1478
1502
  my ($a,$b,$c,$d) = split ' ', $val;
1479
1503
  my @a = $a =~ /../g;
1480
1504
  return undef unless @a == 4;
1481
- return Set32u((hex($d)<<22) | ($a[0]<<17) | ($a[1]<<12) | ($a[2]<<6) | $a[3]) . chr($b) . chr($c);
1505
+ return Set32u((hex($d)<<22) | ($a[0]<<17) | ($a[1]<<12) | ($a[2]<<6) | $a[3]) . chr($b & 0xff) . chr($c & 0xff);
1482
1506
  },
1483
1507
  PrintConv => {
1484
1508
  '00000000 0 0 0x0' => 'n/a',
@@ -1503,13 +1527,57 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1503
1527
  PrintConv => 'sprintf("%.8d",$val)',
1504
1528
  PrintConvInv => '$val',
1505
1529
  },
1506
- # 0x2032 - first seen for ILCE-7SM3, July 2020
1507
- # 0x2033 - first seen for ILCE-7SM3, July 2020
1508
- # 0x2034 - first seen for ILCE-7SM3, July 2020
1509
- # 0x2035 - first seen for ILCE-7SM3, July 2020
1510
- # 0x2036 - first seen for ILCE-7SM3, July 2020
1511
- # 0x2037 - first seen for ILCE-7SM3, July 2020
1512
- # 0x2039 - first seen for ILCE-7SM3, July 2020
1530
+ # 0x2032 - 0x2039: from July 2020 for ILCE-7SM3, ILCE-1, ILME-FX3 and newer
1531
+ 0x2032 => {
1532
+ Name => 'Shadows',
1533
+ Writable => 'int32s',
1534
+ PrintConv => '$val > 0 ? "+$val" : $val',
1535
+ PrintConvInv => '$val',
1536
+ },
1537
+ 0x2033 => {
1538
+ Name => 'Highlights',
1539
+ Writable => 'int32s',
1540
+ PrintConv => '$val > 0 ? "+$val" : $val',
1541
+ PrintConvInv => '$val',
1542
+ },
1543
+ 0x2034 => {
1544
+ Name => 'Fade',
1545
+ Writable => 'int32s',
1546
+ PrintConv => '$val > 0 ? "+$val" : $val',
1547
+ PrintConvInv => '$val',
1548
+ },
1549
+ 0x2035 => {
1550
+ Name => 'SharpnessRange',
1551
+ Writable => 'int32s',
1552
+ PrintConv => '$val > 0 ? "+$val" : $val',
1553
+ PrintConvInv => '$val',
1554
+ },
1555
+ 0x2036 => {
1556
+ Name => 'Clarity',
1557
+ Writable => 'int32s',
1558
+ PrintConv => '$val > 0 ? "+$val" : $val',
1559
+ PrintConvInv => '$val',
1560
+ },
1561
+ 0x2037 => {
1562
+ Name => 'FocusFrameSize',
1563
+ Format => 'int16u',
1564
+ Count => '3',
1565
+ Notes => 'width and height of FocusFrame, centered on FocusLocation',
1566
+ PrintConv => q{
1567
+ my @a = split ' ', $val;
1568
+ return $a[2] ? sprintf('%3dx%3d', $a[0], $a[1]) : 'n/a';
1569
+ },
1570
+ PrintConvInv => '$val =~ /(\d+)x(\d+)/ ? "$1 $2 257" : "0 0 0"',
1571
+ },
1572
+ 0x2039 => { #JR
1573
+ Name => 'JPEG-HEIFSwitch', # (name used in camera menus)
1574
+ Writable => 'int16u',
1575
+ PrintConv => {
1576
+ 0 => 'JPEG',
1577
+ 1 => 'HEIF',
1578
+ 65535 => 'n/a',
1579
+ },
1580
+ },
1513
1581
  0x3000 => {
1514
1582
  Name => 'ShotInfo',
1515
1583
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
@@ -1538,21 +1606,21 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1538
1606
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1539
1607
  {
1540
1608
  Name => 'Tag9050a',
1541
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|7SM2|7SM3|9|9M2)|ILCA-99M2|ZV-)/',
1609
+ 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-)/',
1542
1610
  SubDirectory => {
1543
1611
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1544
1612
  ByteOrder => 'LittleEndian',
1545
1613
  },
1546
1614
  },{
1547
1615
  Name => 'Tag9050b',
1548
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3|7RM4|7SM2|9|9M2)|ILCA-99M2)/',
1616
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|9|9M2)|ILCA-99M2|ZV-E10)/',
1549
1617
  SubDirectory => {
1550
1618
  TagTable => 'Image::ExifTool::Sony::Tag9050b',
1551
1619
  ByteOrder => 'LittleEndian',
1552
1620
  },
1553
1621
  },{
1554
1622
  Name => 'Tag9050c',
1555
- Condition => '$$self{Model} =~ /^(ILCE-7SM3)/',
1623
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)/',
1556
1624
  SubDirectory => {
1557
1625
  TagTable => 'Image::ExifTool::Sony::Tag9050c',
1558
1626
  ByteOrder => 'LittleEndian',
@@ -1571,9 +1639,9 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1571
1639
  # 0x23 (e) for DSC-RX10/HX60V/HX350/HX400V/WX220/WX350, ILCE-7/7R/5000/6000, ILCA-68/77M2
1572
1640
  # 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
1573
1641
  # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
1574
- # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1
1575
- # 0x31 (e) for ILCE-7SM3
1576
- # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28 respectively
1642
+ # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/E10
1643
+ # 0x31 (e) for ILCE-1/7SM3, ILME-FX3
1644
+ # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively
1577
1645
  {
1578
1646
  Name => 'Tag9400a',
1579
1647
  Condition => q{
@@ -1587,7 +1655,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1587
1655
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400b' },
1588
1656
  },{
1589
1657
  Name => 'Tag9400c',
1590
- Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
1658
+ Condition => '$$valPt =~ /^[\x23\x24\x26\x28\x31]/',
1591
1659
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9400c' },
1592
1660
  },{
1593
1661
  Name => 'Sony_0x9400',
@@ -1746,7 +1814,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1746
1814
  # 142 var (0x25 = 37 var enc.) DSC-HX80/HX90V/RX1RM2/RX10M2/RX10M3/RX100M4/WX500, ILCE-6300/7RM2/7SM2
1747
1815
  # 144 var (0xe1 = 225 var enc.) DSC-RX100M5
1748
1816
  # 145 var (0x76 = 118 var enc.) ILCA-99M2, ILCE-6500, DSC-RX0
1749
- # 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
1817
+ # 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
1750
1818
  # July 2020: ILCE-7SM3 doesn't write this tag anymore, but writes 0x9416
1751
1819
  0x9405 => [{
1752
1820
  Name => 'Tag9405a',
@@ -1800,7 +1868,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1800
1868
  },
1801
1869
  0x940c => [{
1802
1870
  Name => 'Tag940c',
1803
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|Lunar)\b/',
1871
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar|ZV-E10)\b/',
1804
1872
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag940c' },
1805
1873
  },{
1806
1874
  Name => 'Sony_0x940c',
@@ -1956,7 +2024,12 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1956
2024
  379 => 'ILCE-6100', #IB/JR
1957
2025
  380 => 'ZV-1', #JR
1958
2026
  381 => 'ILCE-7C', #JR
2027
+ 382 => 'ZV-E10', #JR
1959
2028
  383 => 'ILCE-7SM3',
2029
+ 384 => 'ILCE-1', #PH
2030
+ 385 => 'ILME-FX3', #JR
2031
+ 386 => 'ILCE-7RM3A', #JR
2032
+ 387 => 'ILCE-7RM4A', #forum12542
1960
2033
  },
1961
2034
  },
1962
2035
  0xb020 => { #2
@@ -6067,6 +6140,10 @@ my %pictureProfile2010 = (
6067
6140
  31 => 'Gamma S-Log3 (PP8 or PP9)', #14
6068
6141
  33 => 'Gamma HLG2 (PP10)', #14
6069
6142
  34 => 'Gamma HLG3', #IB
6143
+ 37 => 'FL',
6144
+ 38 => 'VV2',
6145
+ 39 => 'IN',
6146
+ 40 => 'SH',
6070
6147
  },
6071
6148
  );
6072
6149
  my %isoSetting2010 = (
@@ -6111,7 +6188,7 @@ my %isoSetting2010 = (
6111
6188
  43 => 160000,
6112
6189
  44 => 204800,
6113
6190
  45 => 256000,
6114
- 46 => 320000,
6191
+ 46 => 320000,
6115
6192
  47 => 409600,
6116
6193
  );
6117
6194
 
@@ -7539,13 +7616,13 @@ my %isoSetting2010 = (
7539
7616
  # March 2019: ILCE-9 with v5.0x firmware follows ILCE-6400 in many tags ...
7540
7617
  0x0050 => {
7541
7618
  Name => 'ShutterCount2',
7542
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/)',
7619
+ 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)/)',
7543
7620
  Format => 'int32u',
7544
7621
  RawConv => '$val & 0x00ffffff',
7545
7622
  },
7546
7623
  0x0052 => {
7547
7624
  Name => 'ShutterCount2',
7548
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(7M3|7RM3))/)',
7625
+ Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-(7M3|7RM3A?))/)',
7549
7626
  Format => 'int32u',
7550
7627
  RawConv => '$val & 0x00ffffff',
7551
7628
  },
@@ -7556,13 +7633,13 @@ my %isoSetting2010 = (
7556
7633
  # 0x0058, 0x0061: E-Mount: ShutterCount and dateTime
7557
7634
  0x0058 => { # appears not valid when flash is used ... not for ILCA-99M2
7558
7635
  Name => 'ShutterCount2',
7559
- 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)/',
7636
+ 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)/',
7560
7637
  Format => 'int32u',
7561
7638
  RawConv => '$val & 0x00ffffff',
7562
7639
  },
7563
7640
  0x0061 => { # only minutes-seconds, not for ILCA-99M2, ILCE-9
7564
7641
  Name => 'SonyTimeMinSec',
7565
- Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
7642
+ Condition => '$$self{Model} !~ /^(ILCA-99M2|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
7566
7643
  Format => 'undef[2]',
7567
7644
  ValueConv => q{
7568
7645
  my @v = unpack('C*', $val);
@@ -7571,17 +7648,17 @@ my %isoSetting2010 = (
7571
7648
  },
7572
7649
  0x006b => {
7573
7650
  Name => 'ReleaseMode2',
7574
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4|9M2))/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7651
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7RM4A?|9M2)|ZV-E10)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7575
7652
  %releaseMode2,
7576
7653
  },
7577
7654
  0x006d => {
7578
7655
  Name => 'ReleaseMode2',
7579
- Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3))/',
7656
+ Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3A?))/',
7580
7657
  %releaseMode2,
7581
7658
  },
7582
7659
  0x0073 => {
7583
7660
  Name => 'ReleaseMode2',
7584
- Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9M2))/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7661
+ Condition => '$$self{Model} !~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7585
7662
  %releaseMode2,
7586
7663
  },
7587
7664
  0x0088 => {
@@ -7660,7 +7737,7 @@ my %isoSetting2010 = (
7660
7737
  #
7661
7738
  0x019f => {
7662
7739
  Name => 'ShutterCount3',
7663
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))\b/',
7740
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)\b/',
7664
7741
  Format => 'int32u',
7665
7742
  RawConv => '$val == 0 ? undef : $val',
7666
7743
  },
@@ -7678,7 +7755,7 @@ my %isoSetting2010 = (
7678
7755
  },
7679
7756
  0x01eb => {
7680
7757
  Name => 'APS-CSizeCapture',
7681
- Condition => '$$self{Model} =~ /^ILCE-(7RM4|7C|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7758
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7682
7759
  PrintConv => {
7683
7760
  0 => 'Off',
7684
7761
  1 => 'On',
@@ -7686,7 +7763,7 @@ my %isoSetting2010 = (
7686
7763
  },
7687
7764
  0x01ed => {
7688
7765
  Name => 'LensSpecFeatures',
7689
- Condition => '$$self{Model} =~ /^ILCE-(7RM4|7C|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7766
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7690
7767
  Priority => 0,
7691
7768
  Format => 'undef[2]',
7692
7769
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7699,7 +7776,7 @@ my %isoSetting2010 = (
7699
7776
  },
7700
7777
  0x01ee => {
7701
7778
  Name => 'APS-CSizeCapture',
7702
- Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7779
+ Condition => '$$self{Model} =~ /^(ILCE-(7M3|7RM3A?|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7703
7780
  PrintConv => {
7704
7781
  0 => 'Off',
7705
7782
  1 => 'On',
@@ -7707,7 +7784,7 @@ my %isoSetting2010 = (
7707
7784
  },
7708
7785
  0x01f0 => {
7709
7786
  Name => 'LensSpecFeatures',
7710
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7787
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7M3|7RM3A?|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
7711
7788
  Priority => 0,
7712
7789
  Format => 'undef[2]',
7713
7790
  ValueConv => 'join " ", unpack "H2H2", $val',
@@ -7788,7 +7865,7 @@ my %isoSetting2010 = (
7788
7865
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
7789
7866
  FORMAT => 'int8u',
7790
7867
  NOTES => q{
7791
- Valid from July 2020 for ILCE-7SM3.
7868
+ Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
7792
7869
  },
7793
7870
  WRITABLE => 1,
7794
7871
  FIRST_ENTRY => 0,
@@ -7849,13 +7926,12 @@ my %isoSetting2010 = (
7849
7926
  },
7850
7927
  0x0050 => {
7851
7928
  Name => 'ShutterCount2',
7852
- Condition => '(($$self{FlashFired} & 0x01) != 1) and ($$self{Model} =~ /^(ILCE-7SM3)/)',
7929
+ Condition => '($$self{FlashFired} & 0x01) != 1',
7853
7930
  Format => 'int32u',
7854
7931
  RawConv => '$val & 0x00ffffff',
7855
7932
  },
7856
7933
  0x0066 => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes
7857
7934
  Name => 'SonyExposureTime',
7858
- Condition => '$$self{Model} =~ /^(ILCE-7SM3)/',
7859
7935
  Format => 'int16u',
7860
7936
  ValueConv => '$val ? 2 ** (16 - $val/256) : 0',
7861
7937
  ValueConvInv => '$val ? int((16 - log($val) / log(2)) * 256 + 0.5) : 0',
@@ -7864,7 +7940,6 @@ my %isoSetting2010 = (
7864
7940
  },
7865
7941
  0x0068 => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes
7866
7942
  Name => 'SonyFNumber',
7867
- Condition => '$$self{Model} =~ /^(ILCE-7SM3)/',
7868
7943
  Format => 'int16u',
7869
7944
  ValueConv => '2 ** (($val/256 - 16) / 2)',
7870
7945
  ValueConvInv => '(log($val)*2/log(2)+16)*256',
@@ -7873,11 +7948,17 @@ my %isoSetting2010 = (
7873
7948
  },
7874
7949
  0x006b => {
7875
7950
  Name => 'ReleaseMode2',
7876
- Condition => '$$self{Model} =~ /^(ILCE-7SM3)/',
7877
7951
  %releaseMode2,
7878
7952
  },
7879
7953
  0x0088 => {
7880
7954
  Name => 'InternalSerialNumber', #(NC)
7955
+ Condition => '$$self{Model} =~ /^(ILCE-7SM3|ILME-FX3)/',
7956
+ Format => 'int8u[6]',
7957
+ PrintConv => 'unpack "H*", pack "C*", split " ", $val',
7958
+ },
7959
+ 0x008a => {
7960
+ Name => 'InternalSerialNumber', #(NC)
7961
+ Condition => '$$self{Model} =~ /^(ILCE-1)/',
7881
7962
  Format => 'int8u[6]',
7882
7963
  PrintConv => 'unpack "H*", pack "C*", split " ", $val',
7883
7964
  },
@@ -8052,7 +8133,7 @@ my %isoSetting2010 = (
8052
8133
  NOTES => q{
8053
8134
  Valid for DSC-HX60V/HX80/HX90V/HX99/HX350/HX400V/QX30/RX0/RX1RM2/RX10/
8054
8135
  RX10M2/RX10M3/RX10M4/RX100M3/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/WX220/
8055
- WX350/WX500, ILCE-7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
8136
+ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
8056
8137
  5100/6000/6100/6300/6400/6500/6600/QX1, ILCA-68/77M2/99M2.
8057
8138
  },
8058
8139
  FIRST_ENTRY => 0,
@@ -8107,25 +8188,35 @@ my %isoSetting2010 = (
8107
8188
  8 => 'Rotate 270 CW',
8108
8189
  },
8109
8190
  },
8110
- 0x002a => {
8191
+ 0x002a => [{
8111
8192
  Name => 'Quality2',
8112
- Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/',
8193
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8113
8194
  PrintConv => {
8114
8195
  0 => 'JPEG',
8115
8196
  1 => 'RAW',
8116
8197
  2 => 'RAW + JPEG',
8117
8198
  3 => 'JPEG + MPO', # 3D images
8118
8199
  },
8119
- },
8200
+ },{
8201
+ Name => 'Quality2',
8202
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8203
+ PrintConv => {
8204
+ 1 => 'JPEG',
8205
+ 2 => 'RAW',
8206
+ 3 => 'RAW + JPEG',
8207
+ 4 => 'HEIF',
8208
+ 6 => 'RAW + HEIF',
8209
+ },
8210
+ }],
8120
8211
  0x0047 => {
8121
8212
  Name => 'SonyImageHeight',
8122
- Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/',
8213
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8123
8214
  Format => 'int16u',
8124
8215
  PrintConv => '$val > 0 ? 8*$val : "n.a."',
8125
8216
  },
8126
8217
  0x0053 => {
8127
8218
  Name => 'ModelReleaseYear',
8128
- Condition => '$$self{Model} !~ /^(ILCE-7SM3)\b/',
8219
+ Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
8129
8220
  Format => 'int8u',
8130
8221
  PrintConv => 'sprintf("20%.2d", $val)',
8131
8222
  },
@@ -8144,7 +8235,7 @@ my %isoSetting2010 = (
8144
8235
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8145
8236
 
8146
8237
  0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8147
- 0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 160', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8238
+ 0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8148
8239
  0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8149
8240
  0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8150
8241
  0x0634 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 68', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8282,8 +8373,8 @@ my %isoSetting2010 = (
8282
8373
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8283
8374
  DATAMEMBER => [ 0x04 ],
8284
8375
  0x04 => {
8285
- # seen values 0,2,3,18,32,49,50,83,148
8286
- # CameraTemperature is valid for all values except 0,148
8376
+ # seen values 0,2,3,18,19,32,49,50,83,130,132,148,213,229,255
8377
+ # CameraTemperature is valid for all values above except ==0 and >=130
8287
8378
  Name => 'TempTest2',
8288
8379
  DataMember => 'TempTest2',
8289
8380
  Hidden => 1,
@@ -8604,7 +8695,7 @@ my %isoSetting2010 = (
8604
8695
  },
8605
8696
  0x0342 => {
8606
8697
  Name => 'LensZoomPosition',
8607
- 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-)/',
8698
+ 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-)/',
8608
8699
  Format => 'int16u',
8609
8700
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8610
8701
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8616,7 +8707,7 @@ my %isoSetting2010 = (
8616
8707
  },
8617
8708
  0x034e => {
8618
8709
  Name => 'LensZoomPosition',
8619
- Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9M2))/',
8710
+ Condition => '$$self{Model} =~ /^(DSC-(RX100M5|RX100M5A|RX100M6|RX100M7|RX10M4|HX99)|ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9M2)|ZV-E10)/',
8620
8711
  Format => 'int16u',
8621
8712
  PrintConv => 'sprintf("%.0f%%",$val/10.24)',
8622
8713
  PrintConvInv => '$val=~s/ ?%$//; $val * 10.24',
@@ -8628,7 +8719,7 @@ my %isoSetting2010 = (
8628
8719
  },
8629
8720
  0x035c => {
8630
8721
  Name => 'VignettingCorrParams',
8631
- Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
8722
+ Condition => '$$self{Model} =~ /^(ILCA-99M2|ILCE-(6100|6400|6500|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
8632
8723
  Format => 'int16s[16]',
8633
8724
  },
8634
8725
  0x035a => {
@@ -8665,7 +8756,7 @@ my %isoSetting2010 = (
8665
8756
  },
8666
8757
  0x03b8 => {
8667
8758
  Name => 'ChromaticAberrationCorrParams',
8668
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3|7RM4|9|9M2))/',
8759
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|ZV-E10)/',
8669
8760
  Format => 'int16s[32]',
8670
8761
  },
8671
8762
  );
@@ -8785,7 +8876,7 @@ my %isoSetting2010 = (
8785
8876
  FIRST_ENTRY => 0,
8786
8877
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8787
8878
  DATAMEMBER => [ 0x0008 ],
8788
- NOTES => 'NEX and ILCE models only.',
8879
+ NOTES => 'E-mount cameras only.',
8789
8880
 
8790
8881
  # 0x0001 - 0 for all NEX and ILCE-3000/3500, 20 for all other ILCE (17 for ILCE samples from Sony.net)
8791
8882
  # 0x0008 - LensMount, but different values from Tag9405-0x0105 and Tag9050-0x0604.
@@ -8902,6 +8993,7 @@ my %isoSetting2010 = (
8902
8993
  # 1 0 0 0 for ILCE-5000/5100/6000/7/7M2/7R/7S/QX1
8903
8994
  # 6 0 0 0 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2
8904
8995
  # 9 . . . for ILCE-7SM3
8996
+ # 11 . . . for ILCE-1
8905
8997
  # 0 2 0 0 for NEX/ILCE with LA-EA2/EA4 Phase-AF adapter
8906
8998
  # 2 0 0 0 seen for a few NEX-5N images
8907
8999
  # 2 2 0 0 seen for a few NEX-5N/7 images with LA-EA2 adapter
@@ -9195,11 +9287,11 @@ my %isoSetting2010 = (
9195
9287
 
9196
9288
  # 0x1a06 onwards - first seen for ILCE-7RM2: appears to be some kind of metering image
9197
9289
  # but not valid anymore for ILCE-6400, ILCE-9 v5.0x
9198
- 0x1a06 => { Name => 'TiffMeteringImageWidth', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9199
- 0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9290
+ 0x1a06 => { Name => 'TiffMeteringImageWidth', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9291
+ 0x1a07 => { Name => 'TiffMeteringImageHeight', Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/' },
9200
9292
  0x1a08 => { # (2640 bytes: 1 set of 44x30 int16u values)
9201
9293
  Name => 'TiffMeteringImage',
9202
- Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
9294
+ Condition => '$$self{Model} =~ /^(ILCE-(6300|6500|7M3|7RM2|7RM3A?|7SM2|9))\b/ and $$self{Software} !~ /^ILCE-9 (v5.0|v6.0)/',
9203
9295
  Format => 'undef[2640]',
9204
9296
  Notes => q{
9205
9297
  13(?)-bit intensity data from 1320 (1200) metering segments, extracted as a
@@ -9411,7 +9503,7 @@ my %isoSetting2010 = (
9411
9503
  WRITE_PROC => \&WriteEnciphered,
9412
9504
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9413
9505
  FORMAT => 'int8u',
9414
- NOTES => 'Valid for the ILCE-7SM3.',
9506
+ NOTES => 'Valid for the ILCE-1/7SM3, ILME-FX3.',
9415
9507
  FIRST_ENTRY => 0,
9416
9508
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9417
9509
  0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
@@ -10038,17 +10130,40 @@ my %isoSetting2010 = (
10038
10130
  0x3210 => { Name => 'Sony_rtmd_0x3210', Format => 'int8u', %hidUnk },
10039
10131
  0x3219 => { Name => 'Sony_rtmd_0x3219', Format => 'int8u', %hidUnk },
10040
10132
  0x321a => { Name => 'Sony_rtmd_0x321a', Format => 'int8u', %hidUnk },
10041
- 0x8000 => { Name => 'Sony_rtmd_0x8000', Format => 'int16u', %hidUnk },
10133
+ 0x8000 => { #forum12218
10134
+ Name => 'FNumber',
10135
+ Format => 'int16u',
10136
+ ValueConv => '2 ** (8-$val/8192)',
10137
+ PrintConv => 'Image::ExifTool::Exif::PrintFNumber($val)',
10138
+ },
10042
10139
  0x8001 => { Name => 'Sony_rtmd_0x8001', Format => 'int16u', %hidUnk },
10140
+ 0x8004 => { Name => 'Sony_rtmd_0x8004', Format => 'int16u', %hidUnk },
10141
+ 0x8005 => { Name => 'Sony_rtmd_0x8005', Format => 'int16u', %hidUnk },
10142
+ 0x800a => { Name => 'Sony_rtmd_0x800a', Format => 'int16u', %hidUnk },
10143
+ 0x800b => { Name => 'Sony_rtmd_0x800b', Format => 'int16u', %hidUnk },
10043
10144
  # 0x8100 - 16 bytes starting with 0x060e2b340401
10044
10145
  0x8100 => { Name => 'Sony_rtmd_0x8100', Format => 'int8u', %hidUnk },
10045
10146
  0x8101 => { Name => 'Sony_rtmd_0x8101', Format => 'int8u', %hidUnk }, # seen: 0,1
10046
- 0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1"
10047
- 0x8109 => { Name => 'Sony_rtmd_0x8109', Format => 'int32u', %hidUnk }, # seen: "1 50"
10048
- 0x810a => { Name => 'Sony_rtmd_0x810a', Format => 'int16u', %hidUnk }, # seen: 0
10049
- 0x810b => { Name => 'Sony_rtmd_0x810b', Format => 'int16u', %hidUnk }, # seen: 100
10050
- 0x810c => { Name => 'Sony_rtmd_0x810c', Format => 'int16u', %hidUnk }, # seen: 100
10051
- 0x810d => { Name => 'Sony_rtmd_0x810d', Format => 'int8u', %hidUnk }, # seen: 1
10147
+ 0x8104 => { Name => 'Sony_rtmd_0x8104', Format => 'int16u', %hidUnk }, # seen: 35616
10148
+ 0x8105 => { Name => 'Sony_rtmd_0x8105', Format => 'int16u', %hidUnk }, # seen: 20092
10149
+ 0x8106 => { Name => 'Sony_rtmd_0x8106', Format => 'int32u', %hidUnk }, # seen: "25 1","24000 1001" frame rate?
10150
+ 0x8109 => { #forum12218
10151
+ Name => 'ExposureTime',
10152
+ Format => 'rational64u',
10153
+ PrintConv => 'Image::ExifTool::Exif::PrintExposureTime($val)',
10154
+ },
10155
+ 0x810a => { #PH (NC, based on samples from forum12218)
10156
+ Name => 'MasterGainAdjustment',
10157
+ Format => 'int16u',
10158
+ ValueConv => '$val / 100',
10159
+ PrintConv => 'sprintf("%.2f dB", $val)',
10160
+ },
10161
+ 0x810b => { Name => 'ISO', Format => 'int16u' }, #forum12218
10162
+ 0x810c => { #PH (NC, based on samples from forum12218)
10163
+ Name => 'ElectricalExtenderMagnification',
10164
+ Format => 'int16u',
10165
+ },
10166
+ 0x810d => { Name => 'Sony_rtmd_0x810d', Format => 'int8u', %hidUnk }, # seen: 0,1
10052
10167
  0x8115 => { Name => 'Sony_rtmd_0x8115', Format => 'int16u', %hidUnk }, # seen: 100
10053
10168
  # 0x8300 - container for other tags in this format
10054
10169
  0x8500 => {
@@ -10127,9 +10242,20 @@ my %isoSetting2010 = (
10127
10242
  },
10128
10243
  0xe000 => { Name => 'Sony_rtmd_0xe000', Format => 'int8u', %hidUnk }, # (16 bytes)
10129
10244
  0xe300 => { Name => 'Sony_rtmd_0xe300', Format => 'int8u', %hidUnk }, # seen: 0,1
10130
- 0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100
10245
+ 0xe301 => { Name => 'Sony_rtmd_0xe301', Format => 'int32u', %hidUnk }, # seen: 100,1600,12800
10131
10246
  0xe302 => { Name => 'Sony_rtmd_0xe302', Format => 'int8u', %hidUnk }, # seen: 1
10132
- 0xe303 => { Name => 'Sony_rtmd_0xe303', Format => 'int8u', %hidUnk }, # seen: 255
10247
+ 0xe303 => { #forum12218
10248
+ Name => 'WhiteBalance',
10249
+ Format => 'int8u',
10250
+ PrintConv => {
10251
+ 1 => 'Incandescent',
10252
+ 2 => 'Fluorescent',
10253
+ 4 => 'Daylight',
10254
+ 5 => 'Cloudy',
10255
+ 6 => 'Custom', # ("Shade" uses this value too)
10256
+ 255 => 'Preset',
10257
+ },
10258
+ },
10133
10259
  0xe304 => {
10134
10260
  Name => 'DateTime',
10135
10261
  Groups => { 2 => 'Time' },
@@ -10137,6 +10263,19 @@ my %isoSetting2010 = (
10137
10263
  ValueConv => 'my @a=unpack("x1H4H2H2H2H2H2",$val); "$a[0]:$a[1]:$a[2] $a[3]:$a[4]:$a[5]"',
10138
10264
  PrintConv => '$self->ConvertDateTime($val)',
10139
10265
  },
10266
+ 0xe435 => { Name => 'Sony_rtmd_0xe435', Format => 'int32u', %hidUnk }, # seen: 2000
10267
+ 0xe437 => { Name => 'Sony_rtmd_0xe437', Format => 'int32s', %hidUnk }, # seen: -3800 to -3400
10268
+ 0xe43b => {
10269
+ Name => 'PitchRollYaw',
10270
+ Format => 'int16s',
10271
+ RawConv => 'substr($val, 8)',
10272
+ },
10273
+ 0xe445 => { Name => 'Sony_rtmd_0xe445', Format => 'int32u', %hidUnk }, # seen: 2000
10274
+ 0xe44b => {
10275
+ Name => 'Accelerometer', # (NC)
10276
+ Format => 'int16s',
10277
+ RawConv => 'substr($val, 8)',
10278
+ },
10140
10279
  # f010 - 2048 bytes
10141
10280
  # f020 - 543 bytes
10142
10281
  );
@@ -10184,6 +10323,26 @@ my %isoSetting2010 = (
10184
10323
  ValueConv => '"$val[0] $val[1]Z"',
10185
10324
  PrintConv => '$self->ConvertDateTime($val)',
10186
10325
  },
10326
+ GPSLatitude => {
10327
+ SubDoc => 1, # generate for all sub-documents
10328
+ Groups => { 2 => 'Location' },
10329
+ Require => {
10330
+ 0 => 'Sony:GPSLatitude',
10331
+ 1 => 'Sony:GPSLatitudeRef',
10332
+ },
10333
+ ValueConv => '$val[1] =~ /^S/i ? -$val[0] : $val[0]',
10334
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
10335
+ },
10336
+ GPSLongitude => {
10337
+ SubDoc => 1, # generate for all sub-documents
10338
+ Groups => { 2 => 'Location' },
10339
+ Require => {
10340
+ 0 => 'Sony:GPSLongitude',
10341
+ 1 => 'Sony:GPSLongitudeRef',
10342
+ },
10343
+ ValueConv => '$val[1] =~ /^W/i ? -$val[0] : $val[0]',
10344
+ PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
10345
+ },
10187
10346
  );
10188
10347
 
10189
10348
  # add our composite tags