exiftool-vendored.pl 12.62.0 → 12.67.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/bin/Changes +96 -1
  2. package/bin/MANIFEST +4 -0
  3. package/bin/META.json +5 -3
  4. package/bin/META.yml +5 -3
  5. package/bin/Makefile.PL +7 -1
  6. package/bin/README +50 -46
  7. package/bin/config_files/guano.config +161 -0
  8. package/bin/exiftool +116 -79
  9. package/bin/lib/Image/ExifTool/7Z.pm +793 -0
  10. package/bin/lib/Image/ExifTool/Apple.pm +19 -8
  11. package/bin/lib/Image/ExifTool/BigTIFF.pm +8 -1
  12. package/bin/lib/Image/ExifTool/Canon.pm +33 -12
  13. package/bin/lib/Image/ExifTool/CanonRaw.pm +4 -4
  14. package/bin/lib/Image/ExifTool/CanonVRD.pm +4 -1
  15. package/bin/lib/Image/ExifTool/Exif.pm +31 -14
  16. package/bin/lib/Image/ExifTool/FlashPix.pm +8 -2
  17. package/bin/lib/Image/ExifTool/FujiFilm.pm +6 -3
  18. package/bin/lib/Image/ExifTool/GPS.pm +5 -2
  19. package/bin/lib/Image/ExifTool/Geotag.pm +5 -2
  20. package/bin/lib/Image/ExifTool/Jpeg2000.pm +226 -28
  21. package/bin/lib/Image/ExifTool/Lang/fr.pm +1467 -202
  22. package/bin/lib/Image/ExifTool/MPF.pm +2 -1
  23. package/bin/lib/Image/ExifTool/Matroska.pm +16 -1
  24. package/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  25. package/bin/lib/Image/ExifTool/Nikon.pm +948 -31
  26. package/bin/lib/Image/ExifTool/NikonCustom.pm +874 -63
  27. package/bin/lib/Image/ExifTool/PDF.pm +23 -5
  28. package/bin/lib/Image/ExifTool/PLIST.pm +8 -1
  29. package/bin/lib/Image/ExifTool/PLUS.pm +19 -4
  30. package/bin/lib/Image/ExifTool/PNG.pm +6 -6
  31. package/bin/lib/Image/ExifTool/Pentax.pm +3 -1
  32. package/bin/lib/Image/ExifTool/PhaseOne.pm +5 -5
  33. package/bin/lib/Image/ExifTool/QuickTime.pm +91 -30
  34. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +20 -19
  35. package/bin/lib/Image/ExifTool/README +2 -2
  36. package/bin/lib/Image/ExifTool/RIFF.pm +11 -9
  37. package/bin/lib/Image/ExifTool/Samsung.pm +227 -227
  38. package/bin/lib/Image/ExifTool/Shortcuts.pm +2 -1
  39. package/bin/lib/Image/ExifTool/SigmaRaw.pm +4 -4
  40. package/bin/lib/Image/ExifTool/Sony.pm +229 -30
  41. package/bin/lib/Image/ExifTool/TagLookup.pm +4758 -4633
  42. package/bin/lib/Image/ExifTool/TagNames.pod +715 -23
  43. package/bin/lib/Image/ExifTool/Validate.pm +17 -1
  44. package/bin/lib/Image/ExifTool/WriteExif.pl +9 -7
  45. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +21 -9
  46. package/bin/lib/Image/ExifTool/WriteXMP.pl +2 -2
  47. package/bin/lib/Image/ExifTool/Writer.pl +36 -12
  48. package/bin/lib/Image/ExifTool/XMP.pm +14 -2
  49. package/bin/lib/Image/ExifTool/XMP2.pl +33 -1
  50. package/bin/lib/Image/ExifTool/XMPStruct.pl +96 -28
  51. package/bin/lib/Image/ExifTool/ZIP.pm +5 -5
  52. package/bin/lib/Image/ExifTool.pm +184 -132
  53. package/bin/lib/Image/ExifTool.pod +124 -58
  54. package/bin/perl-Image-ExifTool.spec +44 -44
  55. package/bin/pp_build_exe.args +7 -4
  56. package/package.json +3 -3
@@ -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.60';
37
+ $VERSION = '3.62';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -162,6 +162,7 @@ sub PrintInvLensSpec($;$$);
162
162
  32877 => 'Sony E 15mm F1.4 G', #JR
163
163
  32878 => 'Sony FE 20-70mm F4 G', #JR
164
164
  32879 => 'Sony FE 50mm F1.4 GM', #JR
165
+ 32884 => 'Sony FE 70-200mm F4 Macro G OSS II', #JR
165
166
 
166
167
  # (comment this out so LensID will report the LensModel, which is more useful)
167
168
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -178,6 +179,10 @@ sub PrintInvLensSpec($;$$);
178
179
  33082 => 'Sony FE 200-600mm F5.6-6.3 G OSS + 2X Teleconverter', #JR
179
180
  33083 => 'Sony FE 600mm F4 GM OSS + 1.4X Teleconverter', #JR (NC)
180
181
  33084 => 'Sony FE 600mm F4 GM OSS + 2X Teleconverter', #JR
182
+ 33085 => 'Sony FE 70-200mm F2.8 GM OSS II + 1.4X Teleconverter', #JR
183
+ 33086 => 'Sony FE 70-200mm F2.8 GM OSS II + 2X Teleconverter', #JR
184
+ 33087 => 'Sony FE 70-200mm F4 Macro G OSS II + 1.4X Teleconverter', #JR
185
+ 33088 => 'Sony FE 70-200mm F4 Macro G OSS II + 2X Teleconverter', #JR
181
186
 
182
187
  49201 => 'Zeiss Touit 12mm F2.8', #JR (lens firmware Ver.02)
183
188
  49202 => 'Zeiss Touit 32mm F1.8', #JR (lens firmware Ver.02)
@@ -263,6 +268,7 @@ sub PrintInvLensSpec($;$$);
263
268
  50537 => 'Sigma 50mm F2 DG DN | C', #JR (023)
264
269
  50538 => 'Sigma 17mm F4 DG DN | C', #JR (023)
265
270
  50539 => 'Sigma 50mm F1.4 DG DN | A', #JR (023)
271
+ 50540 => 'Sigma 14mm F1.4 DG DN | A', #JR (023)
266
272
  50544 => 'Sigma 23mm F1.4 DC DN | C', #JR (023)
267
273
 
268
274
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
@@ -1061,7 +1067,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1061
1067
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010h' },
1062
1068
  },{
1063
1069
  Name => 'Tag2010i', # ?
1064
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX99|RX0M2)|ZV-(1F?|E10))\b/',
1070
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6400|6600|7C|7M3|7RM3A?|7RM4A?|9|9M2)|DSC-(RX10M4|RX100M6|RX100M5A|RX100M7|HX95|HX99|RX0M2)|ZV-(1F?|1M2|E10))\b/',
1065
1071
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag2010i' },
1066
1072
  },{
1067
1073
  Name => 'Tag_0x2010',
@@ -1137,7 +1143,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1137
1143
  # FocusMode for SLT/HV/ILCA and NEX/ILCE; doesn't seem to apply to DSC models (always 0)
1138
1144
  # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
1139
1145
  Name => 'FocusMode',
1140
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2)/)',
1146
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
1141
1147
  Writable => 'int8u',
1142
1148
  Priority => 0,
1143
1149
  PrintConv => {
@@ -1169,7 +1175,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1169
1175
  },
1170
1176
  },{
1171
1177
  Name => 'AFAreaModeSetting',
1172
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-E|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
1178
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
1173
1179
  Notes => 'NEX, ILCE and some DSC models',
1174
1180
  RawConv => '$$self{AFAreaILCE} = $val',
1175
1181
  DataMember => 'AFAreaILCE',
@@ -1205,7 +1211,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1205
1211
  # observed values in range (0 0) to (640 480), with center (320 240) often seen
1206
1212
  # for NEX-5R/6, positions appear to be in an 11x9 grid
1207
1213
  Name => 'FlexibleSpotPosition',
1208
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-E|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2))/',
1214
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2))/',
1209
1215
  Writable => 'int16u',
1210
1216
  Count => 2,
1211
1217
  Notes => q{
@@ -1365,7 +1371,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1365
1371
  # from 2018: at least DSC-RX10M4 and RX100M6 also use this tag
1366
1372
  0x2021 => { #JR
1367
1373
  Name => 'AFTracking',
1368
- Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX99|RX0M2)/)',
1374
+ Condition => '($$self{Model} !~ /^DSC-/) or ($$self{Model} =~ /^DSC-(RX10M4|RX100M6|RX100M7|RX100M5A|HX95|HX99|RX0M2)/)',
1369
1375
  Writable => 'int8u',
1370
1376
  PrintConv => {
1371
1377
  0 => 'Off',
@@ -1512,6 +1518,10 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1512
1518
  '1 2' => 'RAW + Fine',
1513
1519
  '1 3' => 'RAW + Extra Fine',
1514
1520
  '1 4' => 'RAW + Light', #JR
1521
+ '2 0' => 'S-size RAW',
1522
+ '3 0' => 'M-size RAW', # ILCE-1/7RM5, APS-C mode
1523
+ '3 2' => 'M-size RAW + Fine',
1524
+ '3 3' => 'M-size RAW + Extra Fine',
1515
1525
  },
1516
1526
  },
1517
1527
  0x202f => { #JR (ILCE-7RM3)
@@ -1637,7 +1647,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1637
1647
  # from mid-2015: ILCE-7RM2/7SM2/6300 and newer models use different offsets
1638
1648
  {
1639
1649
  Name => 'Tag9050a',
1640
- Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
1650
+ Condition => '$$self{Model} !~ /^(DSC-|Stellar|ILCE-(1|6100|6300|6400|6500|6600|6700|7C|7M3|7M4|7RM2|7RM3A?|7RM4A?|7RM5|7SM2|7SM3|9|9M2)|ILCA-99M2|ILME-FX3|ZV-)/',
1641
1651
  SubDirectory => {
1642
1652
  TagTable => 'Image::ExifTool::Sony::Tag9050a',
1643
1653
  ByteOrder => 'LittleEndian',
@@ -1656,6 +1666,13 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1656
1666
  TagTable => 'Image::ExifTool::Sony::Tag9050c',
1657
1667
  ByteOrder => 'LittleEndian',
1658
1668
  },
1669
+ },{
1670
+ Name => 'Tag9050d',
1671
+ Condition => '$$self{Model} =~ /^(ILCE-6700|ZV-E1)/',
1672
+ SubDirectory => {
1673
+ TagTable => 'Image::ExifTool::Sony::Tag9050d',
1674
+ ByteOrder => 'LittleEndian',
1675
+ },
1659
1676
  },{
1660
1677
  Name => 'Sony_0x9050',
1661
1678
  %unknownCipherData,
@@ -1669,12 +1686,12 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1669
1686
  # 0xd0 (e) H90, W650, W690: tag9400 decoding appears not valid/different
1670
1687
  # 0x23 (e) for DSC-RX10/HX60V/HX350/HX400V/WX220/WX350, ILCE-7/7R/5000/6000, ILCA-68/77M2
1671
1688
  # 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
1672
- # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
1673
- # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/E10
1689
+ # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX95/HX99
1690
+ # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/1F/1M2/E10
1674
1691
  # 0x31 (e) for ILCE-1/7M4/7SM3, ILME-FX3
1675
1692
  # 0x32 (e) for ILCE-7RM5, ILME-FX30
1676
- # 0x33 (e) for ZV-E1
1677
- # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106, 89 respectively
1693
+ # 0x33 (e) for ILCE-6700, ZV-E1
1694
+ # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106, 89, 63 respectively
1678
1695
  {
1679
1696
  Name => 'Tag9400a',
1680
1697
  Condition => q{
@@ -1787,8 +1804,10 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1787
1804
  # 0x1c 0x01 ILCE-9
1788
1805
  # 0x1d 0x01 DSC-RX10M4
1789
1806
  # 0x1e 0x01 ILCE-7M3/7RM3, DSC-RX100M5A/RX100M6
1790
- # 0x1f 0x01 DSC-HX99
1807
+ # 0x1f 0x01 DSC-HX95/HX99
1791
1808
  # 0x20 0x01 ILCE-6100/6400/6600/7RM4/9M2, ILCE-9 v5.00-v6.00, DSC-RX0M2/RX100M7
1809
+ # 0x21 0x01 ZV-1/1F/1M2/E10
1810
+ # 0x27 0x01 ZV-E1
1792
1811
  # var var SLT-A58/A99V, HV, ILCA-68/77M2/99M2
1793
1812
  # only valid when first byte 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x17, 0x19, 0x1a, 0x1c (enciphered 0x8a, 0x70, 0xb6, 0x69, 0x88, 0x20, 0x30, 0xd7, 0xbb, 0x92, 0x28)
1794
1813
  # Condition => '$$self{DoubleCipher} ? $$valPt =~ /^[\x7e\x46\x1d\x18\x3a\x95\x24\x26\xd6]\x01/ : $$valPt =~ /^[\x8a\x70\xb6\x69\x88\x20\x30\xd7\xbb\x92\x28]\x01/',
@@ -1812,8 +1831,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1812
1831
  # 13 0 9 2 2 DSC-QX10/QX100/RX100M2
1813
1832
  # 15 0 35 2 2 ILCA-68/77M2, ILCE-5000/5100/6000/7/7R/7S/7M2/QX1, DSC-HX60V/HX350/HX400V/QX30/RX10/RX100M3/WX220/WX350
1814
1833
  # 16 0 85 2 2 DSC-HX80/HX90V/WX500
1815
- # 17 0 232 1 2 DSC-RX0/RX0M2/RX1RM2/RX10M2/RX10M3/RX10M4/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/HX99, ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, ILCA-99M2, ZV-1
1816
- # 18 0 20 0 164 ILCE-7SM3
1834
+ # 17 0 232 1 2 DSC-RX0/RX0M2/RX1RM2/RX10M2/RX10M3/RX10M4/RX100M4/RX100M5/RX100M5A/RX100M6/RX100M7/HX95/HX99, ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, ILCA-99M2, ZV-1/1F/1M2/E10
1835
+ # 18 0 20 0 164 ILCE-7SM3, ZV-E1
1817
1836
  # other values for Panorama images and several other models
1818
1837
  0x9404 => [{
1819
1838
  Name => 'Tag9404a',
@@ -1847,7 +1866,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1847
1866
  # 142 var (0x25 = 37 var enc.) DSC-HX80/HX90V/RX1RM2/RX10M2/RX10M3/RX100M4/WX500, ILCE-6300/7RM2/7SM2
1848
1867
  # 144 var (0xe1 = 225 var enc.) DSC-RX100M5
1849
1868
  # 145 var (0x76 = 118 var enc.) ILCA-99M2, ILCE-6500, DSC-RX0
1850
- # 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
1869
+ # 163 var (0x8b = 139 var enc.) ILCE-6100/6400/6600/7C/7M3/7RM3/7RM4/9/9M2, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/RX100M7/HX95/HX99, ZV-1/1F/1M2/E10
1851
1870
  # July 2020: ILCE-7SM3 doesn't write this tag anymore, but writes 0x9416
1852
1871
  0x9405 => [{
1853
1872
  Name => 'Tag9405a',
@@ -1867,9 +1886,10 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1867
1886
  Name => 'Tag9406',
1868
1887
  # - first byte must be 0x01 or 0x02 (enciphered 0x01 or 0x08),
1869
1888
  # or 0x03 (enc. 0x1b) for ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2, and ILCA-99M2
1889
+ # or 0x04 (enc. 0x40) for ILCE-6700, ZV-E1
1870
1890
  # third byte must be 0x02 or 0x03 (enciphered 0x08 or 0x1b) - ref JR
1871
1891
  # (applies to most SLT/ILCA and NEX/ILCE models, but no DSC models)
1872
- Condition => '$$valPt =~ /^[\x01\x08\x1b].[\x08\x1b]/s',
1892
+ Condition => '$$valPt =~ /^[\x01\x08\x1b].[\x08\x1b]/s or $$valPt =~ /^[\x40]/s',
1873
1893
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag9406' },
1874
1894
  },{
1875
1895
  Name => 'Sony_0x9406',
@@ -2070,6 +2090,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2070
2090
  390 => 'ILCE-7RM5', #IB
2071
2091
  391 => 'ILME-FX30', #JR
2072
2092
  393 => 'ZV-E1', #JR
2093
+ 394 => 'ILCE-6700', #JR
2094
+ 395 => 'ZV-1M2', #JR
2073
2095
  },
2074
2096
  },
2075
2097
  0xb020 => { #2
@@ -2102,7 +2124,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2102
2124
  FL => 'FL', # "moody finish with sharp contrast and calm coloring as well as the impressive sky and colors of the greens"
2103
2125
  IN => 'IN', # "matte textures by suppressing the contrast and saturation"
2104
2126
  SH => 'SH', # "bright, transparent, soft, and vivid mood"
2105
- # (...also Custom Look 1-6, but don't konw the values)
2127
+ # (...also Custom Look 1-6, but don't know the values)
2106
2128
  },
2107
2129
  },
2108
2130
  0xb021 => { #2
@@ -2361,6 +2383,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2361
2383
  PrintConv => {
2362
2384
  -32768 => 'Low',
2363
2385
  -9 => '-9/3', #JR
2386
+ -8 => '-8/3', #JR
2387
+ -7 => '-7/3', #JR
2364
2388
  -6 => '-6/3', #JR
2365
2389
  -5 => '-5/3', #JR
2366
2390
  -4 => '-4/3', #JR
@@ -6182,6 +6206,7 @@ my %pictureProfile2010 = (
6182
6206
  31 => 'Gamma S-Log3 (PP8 or PP9)', #14
6183
6207
  33 => 'Gamma HLG2 (PP10)', #14
6184
6208
  34 => 'Gamma HLG3', #IB
6209
+ 36 => 'Off',
6185
6210
  37 => 'FL',
6186
6211
  38 => 'VV2',
6187
6212
  39 => 'IN',
@@ -6637,8 +6662,30 @@ my %isoSetting2010 = (
6637
6662
  },
6638
6663
  #0x1914 => { Name => 'SonyImageWidth', Format => 'int16u' },
6639
6664
  #0x1918 => { Name => 'SonyImageHeight', Format => 'int16u' },
6665
+ 0x192c => {
6666
+ Name => 'AspectRatio',
6667
+ Condition => '$$self{Model} !~ /^(DSC-RX100|Stellar)\b/',
6668
+ PrintConv => {
6669
+ 0 => '16:9',
6670
+ 1 => '4:3',
6671
+ 2 => '3:2',
6672
+ 3 => '1:1',
6673
+ 5 => 'Panorama',
6674
+ },
6675
+ },
6640
6676
  #0x192e => { Name => 'SonyImageWidth', Format => 'int16u' },
6641
6677
  #0x1930 => { Name => 'SonyImageHeight', Format => 'int16u' },
6678
+ 0x1a88 => {
6679
+ Name => 'AspectRatio',
6680
+ Condition => '$$self{Model} =~ /^(DSC-RX100|Stellar)\b/',
6681
+ PrintConv => {
6682
+ 0 => '16:9',
6683
+ 1 => '4:3',
6684
+ 2 => '3:2',
6685
+ 3 => '1:1',
6686
+ 5 => 'Panorama',
6687
+ },
6688
+ },
6642
6689
  );
6643
6690
 
6644
6691
  %Image::ExifTool::Sony::Tag2010f = ( #JR
@@ -6714,6 +6761,16 @@ my %isoSetting2010 = (
6714
6761
  },
6715
6762
  #0x1914 => { Name => 'SonyImageWidth', Format => 'int16u' },
6716
6763
  #0x1918 => { Name => 'SonyImageHeight', Format => 'int16u' },
6764
+ 0x192c => {
6765
+ Name => 'AspectRatio',
6766
+ PrintConv => {
6767
+ 0 => '16:9',
6768
+ 1 => '4:3',
6769
+ 2 => '3:2',
6770
+ 3 => '1:1',
6771
+ 5 => 'Panorama',
6772
+ },
6773
+ },
6717
6774
  #0x192e => { Name => 'SonyImageWidth', Format => 'int16u' },
6718
6775
  #0x1930 => { Name => 'SonyImageHeight', Format => 'int16u' },
6719
6776
  );
@@ -6845,6 +6902,16 @@ my %isoSetting2010 = (
6845
6902
  },
6846
6903
  # 0x1940 => { Name => 'SonyImageWidth', Format => 'int16u' },
6847
6904
  # 0x1944 => { Name => 'SonyImageHeight', Format => 'int16u' },
6905
+ 0x1958 => {
6906
+ Name => 'AspectRatio',
6907
+ PrintConv => {
6908
+ 0 => '16:9',
6909
+ 1 => '4:3',
6910
+ 2 => '3:2',
6911
+ 3 => '1:1',
6912
+ 5 => 'Panorama',
6913
+ },
6914
+ },
6848
6915
  # 0x195a => { Name => 'SonyImageWidth', Format => 'int16u' },
6849
6916
  # 0x195c => { Name => 'SonyImageHeight', Format => 'int16u' },
6850
6917
  );
@@ -6982,6 +7049,16 @@ my %isoSetting2010 = (
6982
7049
  Condition => '$$self{Model} !~ /^DSC-/',
6983
7050
  PrintConv => { 11 => '11 (APS-C)', 16 => '16 (Full-frame)'},
6984
7051
  },
7052
+ 0x192c => {
7053
+ Name => 'AspectRatio',
7054
+ PrintConv => {
7055
+ 0 => '16:9',
7056
+ 1 => '4:3',
7057
+ 2 => '3:2',
7058
+ 3 => '1:1',
7059
+ 5 => 'Panorama',
7060
+ },
7061
+ },
6985
7062
  # 0x1970 => { Name => 'SonyImageWidth', Format => 'int16u' },
6986
7063
  # 0x1974 => { Name => 'SonyImageHeight', Format => 'int16u' },
6987
7064
  # 0x198a => { Name => 'SonyImageWidth', Format => 'int16u' },
@@ -7113,6 +7190,16 @@ my %isoSetting2010 = (
7113
7190
  Condition => '$$self{Model} !~ /^DSC-/',
7114
7191
  PrintConv => { 11 => '11 (APS-C)', 16 => '16 (Full-frame)'},
7115
7192
  },
7193
+ 0x188c => {
7194
+ Name => 'AspectRatio',
7195
+ PrintConv => {
7196
+ 0 => '16:9',
7197
+ 1 => '4:3',
7198
+ 2 => '3:2',
7199
+ 3 => '1:1',
7200
+ 5 => 'Panorama',
7201
+ },
7202
+ },
7116
7203
  );
7117
7204
 
7118
7205
  %Image::ExifTool::Sony::Tag202a = (
@@ -8018,6 +8105,52 @@ my %isoSetting2010 = (
8018
8105
  },
8019
8106
  );
8020
8107
 
8108
+ %Image::ExifTool::Sony::Tag9050d = ( #JR
8109
+ PROCESS_PROC => \&ProcessEnciphered,
8110
+ WRITE_PROC => \&WriteEnciphered,
8111
+ CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
8112
+ FORMAT => 'int8u',
8113
+ NOTES => 'Valid for ILCE-6700/ZV-E1.',
8114
+ WRITABLE => 1,
8115
+ FIRST_ENTRY => 0,
8116
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8117
+ 0x000a => {
8118
+ Name => 'ShutterCount',
8119
+ # number of mechanical shutter actuations, does not increase during electronic shutter / Silent Shooting
8120
+ Condition => '$$self{Model} =~ /^(ILCE-6700)/',
8121
+ Format => 'int32u',
8122
+ Notes => 'total number of image exposures made by the camera',
8123
+ RawConv => '$val & 0x00ffffff',
8124
+ PrintConv => 'sprintf("%6d",$val)',
8125
+ PrintConvInv => '$val',
8126
+ },
8127
+ 0x001a => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes
8128
+ Name => 'SonyExposureTime',
8129
+ Format => 'int16u',
8130
+ ValueConv => '$val ? 2 ** (16 - $val/256) : 0',
8131
+ ValueConvInv => '$val ? int((16 - log($val) / log(2)) * 256 + 0.5) : 0',
8132
+ PrintConv => '$val ? Image::ExifTool::Exif::PrintExposureTime($val) : "Bulb"',
8133
+ PrintConvInv => 'lc($val) eq "bulb" ? 0 : Image::ExifTool::Exif::ConvertFraction($val)',
8134
+ },
8135
+ 0x001c => { # appr. same value as Exif ExposureTime, but not valid in HDR-modes
8136
+ Name => 'SonyFNumber',
8137
+ Format => 'int16u',
8138
+ ValueConv => '2 ** (($val/256 - 16) / 2)',
8139
+ ValueConvInv => '(log($val)*2/log(2)+16)*256',
8140
+ PrintConv => 'sprintf("%.1f",$val)',
8141
+ PrintConvInv => '$val',
8142
+ },
8143
+ 0x001f => {
8144
+ Name => 'ReleaseMode2',
8145
+ %releaseMode2,
8146
+ },
8147
+ 0x0038 => {
8148
+ Name => 'InternalSerialNumber', #(NC)
8149
+ Format => 'int8u[6]',
8150
+ PrintConv => 'unpack "H*", pack "C*", split " ", $val',
8151
+ },
8152
+ );
8153
+
8021
8154
  %Image::ExifTool::Sony::Tag9400a = ( #JR
8022
8155
  PROCESS_PROC => \&ProcessEnciphered,
8023
8156
  WRITE_PROC => \&WriteEnciphered,
@@ -8244,7 +8377,7 @@ my %isoSetting2010 = (
8244
8377
  },
8245
8378
  0x002a => [{
8246
8379
  Name => 'Quality2',
8247
- Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8380
+ Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8248
8381
  PrintConv => {
8249
8382
  0 => 'JPEG',
8250
8383
  1 => 'RAW',
@@ -8263,16 +8396,40 @@ my %isoSetting2010 = (
8263
8396
  }],
8264
8397
  0x0047 => {
8265
8398
  Name => 'SonyImageHeight',
8266
- Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8399
+ Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8267
8400
  Format => 'int16u',
8268
8401
  PrintConv => '$val > 0 ? 8*$val : "n.a."',
8269
8402
  },
8270
8403
  0x0053 => {
8271
8404
  Name => 'ModelReleaseYear',
8272
- Condition => '$$self{Model} !~ /^(ILCE-(1|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8405
+ Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8273
8406
  Format => 'int8u',
8274
8407
  PrintConv => 'sprintf("20%.2d", $val)',
8275
8408
  },
8409
+ 0x0133 => {
8410
+ Name => 'ShutterType',
8411
+ Condition => '$$self{Model} =~ /^(DSC-(HX350|HX400V|HX60V|HX80|HX90|HX90V|QX30|RX10|RX10M2|RX10M3|RX100M3|RX100M4))\b/',
8412
+ PrintConv => {
8413
+ 7 => 'Electronic',
8414
+ 23 => 'Mechanical',
8415
+ },
8416
+ },
8417
+ 0x0139 => {
8418
+ Name => 'ShutterType',
8419
+ Condition => '$$self{Model} =~ /^(DSC-(HX95|HX99|RX0|RX0M2|RX10M4|RX100M5|RX100M5A|RX100M6))\b/',
8420
+ PrintConv => {
8421
+ 7 => 'Electronic',
8422
+ 23 => 'Mechanical',
8423
+ },
8424
+ },
8425
+ 0x013f => {
8426
+ Name => 'ShutterType',
8427
+ Condition => '$$self{Model} =~ /^(DSC-RX100M7|ZV-(1|1F|1M2))\b/',
8428
+ PrintConv => {
8429
+ 7 => 'Electronic',
8430
+ 23 => 'Mechanical',
8431
+ },
8432
+ },
8276
8433
  );
8277
8434
 
8278
8435
  %Image::ExifTool::Sony::Tag9401 = ( # JR
@@ -8284,7 +8441,7 @@ my %isoSetting2010 = (
8284
8441
  FIRST_ENTRY => 0,
8285
8442
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8286
8443
  DATAMEMBER => [ 0 ],
8287
- IS_SUBDIR => [ 0x03e2, 0x044e, 0x0498, 0x049d, 0x04a1, 0x04a2, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
8444
+ IS_SUBDIR => [ 0x03e2, 0x044e, 0x0498, 0x049d, 0x04a1, 0x04a2, 0x04ba, 0x059d, 0x0634, 0x0636, 0x064c, 0x0653, 0x0678, 0x06b8, 0x06de, 0x06e7 ],
8288
8445
  0x0000 => { Name => 'Ver9401', Hidden => 1, RawConv => '$$self{Ver9401} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8289
8446
 
8290
8447
  0x03e2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 181', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8292,7 +8449,8 @@ my %isoSetting2010 = (
8292
8449
  0x0498 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 148', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8293
8450
  0x049d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 167', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8294
8451
  0x04a1 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(160|164)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8295
- 0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8452
+ 0x04a2 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(152|154|155)/ and $$self{Model} !~ /^ZV-1M2/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8453
+ 0x04ba => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 155 and $$self{Model} =~ /^ZV-1M2/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8296
8454
  0x059d => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(144|146)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8297
8455
  0x0634 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} == 68', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
8298
8456
  0x0636 => { Name => 'ISOInfo', Condition => '$$self{Ver9401} =~ /^(73|74)/', Format => 'int8u[5]', SubDirectory => { TagTable => 'Image::ExifTool::Sony::ISOInfo' } },
@@ -8363,7 +8521,8 @@ my %isoSetting2010 = (
8363
8521
  14 => 'Tracking',
8364
8522
  15 => 'Face Tracking',
8365
8523
  20 => 'Animal Eye Tracking',
8366
- # 21 => '???', # (ILCE-7SM3)
8524
+ # 21 => '???', # (ILCE-1/6700/7SM3, ILME-FX3, ZV-E1: tracking ... mostly human face ...)
8525
+ # 22 => '???', # (ILCE-6700, ZV-E1: tracking ...)
8367
8526
  255 => 'Manual',
8368
8527
  },
8369
8528
  },
@@ -8690,6 +8849,11 @@ my %isoSetting2010 = (
8690
8849
  10 => 'Night View/Portrait',
8691
8850
  11 => 'Autumn Leaves',
8692
8851
  13 => 'Sepia',
8852
+ 15 => 'FL',
8853
+ 16 => 'VV2',
8854
+ 17 => 'IN',
8855
+ 18 => 'SH',
8856
+ 255 => 'Off',
8693
8857
  },
8694
8858
  },
8695
8859
  0x0052 => {
@@ -8829,19 +8993,29 @@ my %isoSetting2010 = (
8829
8993
  FORMAT => 'int8u',
8830
8994
  WRITABLE => 1,
8831
8995
  FIRST_ENTRY => 0,
8996
+ DATAMEMBER => [ 0 ],
8832
8997
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8833
8998
  # 0x0000: 1 for SLT-A37/A57/A65/A77, NEX-5N/7/F3/VG20
8834
8999
  # 2 for SLT-A58/99V, NEX-3N/5R/5T/6/VG30/VG900, ILCA-68/77M2, ILCE-3000/3500/7/7M2/7R/7S/5000/6000
8835
9000
  # 3 for ILCA-99M2, ILCE-6100/6300/6400/6500/6600/7M3/7RM2/7RM3/7RM4/7SM2/9/9M2
9001
+ # 4 for ILCE-6700, ZV-E1
9002
+ 0x0000 => { Name => 'Ver9406', Hidden => 1, RawConv => '$$self{Ver9406} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
8836
9003
  # 0x0001+0x0002: Int16u, seen 580 - 770: similar to "BatteryUnknown" ??
8837
9004
  # 0x0005: int8u, seen 73 - 117: maybe Fahrenheit? Higher than "AmbientTemperature", but same trend.
8838
- 0x0005 => {
9005
+ 0x0005 => [{
8839
9006
  Name => 'BatteryTemperature',
9007
+ Condition => '$$self{Ver9406} != 4',
8840
9008
  ValueConv => '($val - 32) / 1.8', # convert to Celsius
8841
9009
  ValueConvInv => '$val * 1.8 + 32',
8842
9010
  PrintConv => 'sprintf("%.1f C",$val)',
8843
9011
  PrintConvInv => '$val=~s/\s*C//; $val',
8844
- },
9012
+ },{
9013
+ Name => 'BatteryLevel',
9014
+ Condition => '$$self{Ver9406} == 4',
9015
+ RawConv => '$val ? $val : undef', # only valid when not 0
9016
+ PrintConv => '"$val%"',
9017
+ PrintConvInv => '$val=~s/\s*\%//; $val',
9018
+ }],
8845
9019
  # 0x0006: usually 0, seen non-zero values only for SLT-A99V, ILCA-77M2/99M2 and ILCE-7/7R/7RM2/9: BatteryLevel Grip ?
8846
9020
  0x0006 => {
8847
9021
  Name => 'BatteryLevelGrip1',
@@ -8852,6 +9026,7 @@ my %isoSetting2010 = (
8852
9026
  # 0x0007: seen values from 8 - 105, decreasing in sequences of images: BatteryLevel
8853
9027
  0x0007 => {
8854
9028
  Name => 'BatteryLevel',
9029
+ Condition => '$$self{Ver9406} != 4',
8855
9030
  PrintConv => '"$val%"',
8856
9031
  PrintConvInv => '$val=~s/\s*\%//; $val',
8857
9032
  },
@@ -9564,7 +9739,7 @@ my %isoSetting2010 = (
9564
9739
  WRITE_PROC => \&WriteEnciphered,
9565
9740
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9566
9741
  FORMAT => 'int8u',
9567
- NOTES => 'Valid for the ILCE-1/7M4/7RM5/7SM3, ILME-FX3.',
9742
+ NOTES => 'Valid for the ILCE-1/6700/7M4/7RM5/7SM3, ILME-FX3/FX30, ZV-E1.',
9568
9743
  FIRST_ENTRY => 0,
9569
9744
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9570
9745
  0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
@@ -9701,10 +9876,34 @@ my %isoSetting2010 = (
9701
9876
  Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9702
9877
  Format => 'int16s[16]',
9703
9878
  },
9704
- 0x089b => {
9879
+ 0x089d => { # Note: 32 values for these newer models, and 32 non-zero values present for new lenses like SEL2470GM2 and SEL2470G
9705
9880
  Name => 'VignettingCorrParams',
9706
- Condition => '$$self{Model} =~ /^(ILCE-7RM5|ILME-FX30)\b/',
9707
- Format => 'int16s[16]',
9881
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7RM5)|ILME-FX30|ZV-E1)\b/',
9882
+ Format => 'int16s[32]',
9883
+ },
9884
+ 0x08b5 => {
9885
+ Name => 'APS-CSizeCapture',
9886
+ Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
9887
+ PrintConv => {
9888
+ 0 => 'Off',
9889
+ 1 => 'On',
9890
+ },
9891
+ },
9892
+ 0x08b7 => {
9893
+ Name => 'APS-CSizeCapture',
9894
+ Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9895
+ PrintConv => {
9896
+ 0 => 'Off',
9897
+ 1 => 'On',
9898
+ },
9899
+ },
9900
+ 0x08e5 => {
9901
+ Name => 'APS-CSizeCapture',
9902
+ Condition => '$$self{Model} =~ /^(ILCE-7RM5|ZV-E1)\b/',
9903
+ PrintConv => {
9904
+ 0 => 'Off',
9905
+ 1 => 'On',
9906
+ },
9708
9907
  },
9709
9908
  0x0914 => {
9710
9909
  Name => 'ChromaticAberrationCorrParams',
@@ -9718,7 +9917,7 @@ my %isoSetting2010 = (
9718
9917
  },
9719
9918
  0x0945 => {
9720
9919
  Name => 'ChromaticAberrationCorrParams',
9721
- Condition => '$$self{Model} =~ /^(ILCE-7RM5|ILME-FX30)\b/',
9920
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7RM5)|ILME-FX30|ZV-E1)\b/',
9722
9921
  Format => 'int16s[32]',
9723
9922
  },
9724
9923
  );