exiftool-vendored.exe 12.65.0 → 12.69.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 (33) hide show
  1. package/bin/exiftool_files/Changes +60 -2
  2. package/bin/exiftool_files/README +7 -7
  3. package/bin/exiftool_files/exiftool.pl +35 -25
  4. package/bin/exiftool_files/lib/Image/ExifTool/Apple.pm +6 -2
  5. package/bin/exiftool_files/lib/Image/ExifTool/Canon.pm +55 -13
  6. package/bin/exiftool_files/lib/Image/ExifTool/DNG.pm +25 -2
  7. package/bin/exiftool_files/lib/Image/ExifTool/Exif.pm +95 -13
  8. package/bin/exiftool_files/lib/Image/ExifTool/FujiFilm.pm +20 -1
  9. package/bin/exiftool_files/lib/Image/ExifTool/Geotag.pm +17 -12
  10. package/bin/exiftool_files/lib/Image/ExifTool/Nikon.pm +47 -11
  11. package/bin/exiftool_files/lib/Image/ExifTool/PLUS.pm +19 -4
  12. package/bin/exiftool_files/lib/Image/ExifTool/PNG.pm +14 -7
  13. package/bin/exiftool_files/lib/Image/ExifTool/Panasonic.pm +13 -9
  14. package/bin/exiftool_files/lib/Image/ExifTool/Pentax.pm +8 -1
  15. package/bin/exiftool_files/lib/Image/ExifTool/PhotoMechanic.pm +2 -1
  16. package/bin/exiftool_files/lib/Image/ExifTool/QuickTime.pm +62 -52
  17. package/bin/exiftool_files/lib/Image/ExifTool/README +7 -3
  18. package/bin/exiftool_files/lib/Image/ExifTool/RIFF.pm +8 -2
  19. package/bin/exiftool_files/lib/Image/ExifTool/Sony.pm +66 -21
  20. package/bin/exiftool_files/lib/Image/ExifTool/TagLookup.pm +6881 -6709
  21. package/bin/exiftool_files/lib/Image/ExifTool/TagNames.pod +454 -37
  22. package/bin/exiftool_files/lib/Image/ExifTool/Validate.pm +18 -16
  23. package/bin/exiftool_files/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
  24. package/bin/exiftool_files/lib/Image/ExifTool/WriteExif.pl +14 -4
  25. package/bin/exiftool_files/lib/Image/ExifTool/WriteQuickTime.pl +2 -0
  26. package/bin/exiftool_files/lib/Image/ExifTool/WriteRIFF.pl +22 -3
  27. package/bin/exiftool_files/lib/Image/ExifTool/Writer.pl +53 -11
  28. package/bin/exiftool_files/lib/Image/ExifTool/XISF.pm +185 -0
  29. package/bin/exiftool_files/lib/Image/ExifTool/XMP.pm +67 -2
  30. package/bin/exiftool_files/lib/Image/ExifTool/XMP2.pl +36 -1
  31. package/bin/exiftool_files/lib/Image/ExifTool.pm +45 -20
  32. package/bin/exiftool_files/lib/Image/ExifTool.pod +20 -10
  33. package/package.json +2 -2
@@ -48,7 +48,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
48
48
  use Image::ExifTool::Exif;
49
49
  use Image::ExifTool::GPS;
50
50
 
51
- $VERSION = '2.87';
51
+ $VERSION = '2.88';
52
52
 
53
53
  sub ProcessMOV($$;$);
54
54
  sub ProcessKeys($$$);
@@ -2393,6 +2393,7 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
2393
2393
  Name => 'Audible_tags',
2394
2394
  SubDirectory => { TagTable => 'Image::ExifTool::Audible::tags' },
2395
2395
  },
2396
+ # ludt - directory containing 'tlou' tag
2396
2397
  );
2397
2398
 
2398
2399
  # Unknown information stored in HTC One (M8) videos - PH
@@ -2903,65 +2904,69 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
2903
2904
  Name => 'ColorPrimaries',
2904
2905
  Format => 'int16u',
2905
2906
  PrintConv => {
2906
- 1 => 'BT.709',
2907
- 2 => 'Unspecified',
2908
- 4 => 'BT.470 System M (historical)',
2909
- 5 => 'BT.470 System B, G (historical)',
2910
- 6 => 'BT.601',
2911
- 7 => 'SMPTE 240',
2912
- 8 => 'Generic film (color filters using illuminant C)',
2913
- 9 => 'BT.2020, BT.2100',
2914
- 10 => 'SMPTE 428 (CIE 1931 XYZ)', #forum14766
2915
- 11 => 'SMPTE RP 431-2',
2916
- 12 => 'SMPTE EG 432-1',
2917
- 22 => 'EBU Tech. 3213-E',
2918
- },
2907
+ 1 => 'BT.709',
2908
+ 2 => 'Unspecified',
2909
+ 4 => 'BT.470 System M (historical)',
2910
+ 5 => 'BT.470 System B, G (historical)',
2911
+ 6 => 'BT.601',
2912
+ 7 => 'SMPTE 240',
2913
+ 8 => 'Generic film (color filters using illuminant C)',
2914
+ 9 => 'BT.2020, BT.2100',
2915
+ 10 => 'SMPTE 428 (CIE 1931 XYZ)', #forum14766
2916
+ 11 => 'SMPTE RP 431-2',
2917
+ 12 => 'SMPTE EG 432-1',
2918
+ 22 => 'EBU Tech. 3213-E',
2919
+ },
2919
2920
  },
2920
2921
  6 => {
2921
2922
  Name => 'TransferCharacteristics',
2922
2923
  Format => 'int16u',
2923
2924
  PrintConv => {
2924
- 0 => 'For future use (0)',
2925
- 1 => 'BT.709',
2926
- 2 => 'Unspecified',
2927
- 3 => 'For future use (3)',
2928
- 4 => 'BT.470 System M (historical)', # Gamma 2.2? (ref forum14960)
2929
- 5 => 'BT.470 System B, G (historical)', # Gamma 2.8? (ref forum14960)
2930
- 6 => 'BT.601',
2931
- 7 => 'SMPTE 240 M',
2932
- 8 => 'Linear',
2933
- 9 => 'Logarithmic (100 : 1 range)',
2934
- 10 => 'Logarithmic (100 * Sqrt(10) : 1 range)',
2935
- 11 => 'IEC 61966-2-4',
2936
- 12 => 'BT.1361',
2937
- 13 => 'sRGB or sYCC',
2938
- 14 => 'BT.2020 10-bit systems',
2939
- 15 => 'BT.2020 12-bit systems',
2940
- 16 => 'SMPTE ST 2084, ITU BT.2100 PQ',
2941
- 17 => 'SMPTE ST 428',
2942
- 18 => 'BT.2100 HLG, ARIB STD-B67',
2943
- },
2925
+ 0 => 'For future use (0)',
2926
+ 1 => 'BT.709',
2927
+ 2 => 'Unspecified',
2928
+ 3 => 'For future use (3)',
2929
+ 4 => 'BT.470 System M (historical)', # Gamma 2.2? (ref forum14960)
2930
+ 5 => 'BT.470 System B, G (historical)', # Gamma 2.8? (ref forum14960)
2931
+ 6 => 'BT.601',
2932
+ 7 => 'SMPTE 240 M',
2933
+ 8 => 'Linear',
2934
+ 9 => 'Logarithmic (100 : 1 range)',
2935
+ 10 => 'Logarithmic (100 * Sqrt(10) : 1 range)',
2936
+ 11 => 'IEC 61966-2-4',
2937
+ 12 => 'BT.1361',
2938
+ 13 => 'sRGB or sYCC',
2939
+ 14 => 'BT.2020 10-bit systems',
2940
+ 15 => 'BT.2020 12-bit systems',
2941
+ 16 => 'SMPTE ST 2084, ITU BT.2100 PQ',
2942
+ 17 => 'SMPTE ST 428',
2943
+ 18 => 'BT.2100 HLG, ARIB STD-B67',
2944
+ },
2944
2945
  },
2945
2946
  8 => {
2946
2947
  Name => 'MatrixCoefficients',
2947
2948
  Format => 'int16u',
2948
2949
  PrintConv => {
2949
- 0 => 'Identity matrix',
2950
- 1 => 'BT.709',
2951
- 2 => 'Unspecified',
2952
- 3 => 'For future use (3)',
2953
- 4 => 'US FCC 73.628',
2954
- 5 => 'BT.470 System B, G (historical)',
2955
- 6 => 'BT.601',
2956
- 7 => 'SMPTE 240 M',
2957
- 8 => 'YCgCo',
2958
- 9 => 'BT.2020 non-constant luminance, BT.2100 YCbCr',
2959
- 10 => 'BT.2020 constant luminance',
2960
- 11 => 'SMPTE ST 2085 YDzDx',
2961
- 12 => 'Chromaticity-derived non-constant luminance',
2962
- 13 => 'Chromaticity-derived constant luminance',
2963
- 14 => 'BT.2100 ICtCp',
2964
- },
2950
+ 0 => 'Identity matrix',
2951
+ 1 => 'BT.709',
2952
+ 2 => 'Unspecified',
2953
+ 3 => 'For future use (3)',
2954
+ 4 => 'US FCC 73.628',
2955
+ 5 => 'BT.470 System B, G (historical)',
2956
+ 6 => 'BT.601',
2957
+ 7 => 'SMPTE 240 M',
2958
+ 8 => 'YCgCo',
2959
+ 9 => 'BT.2020 non-constant luminance, BT.2100 YCbCr',
2960
+ 10 => 'BT.2020 constant luminance',
2961
+ 11 => 'SMPTE ST 2085 YDzDx',
2962
+ 12 => 'Chromaticity-derived non-constant luminance',
2963
+ 13 => 'Chromaticity-derived constant luminance',
2964
+ 14 => 'BT.2100 ICtCp',
2965
+ },
2966
+ },
2967
+ 10 => {
2968
+ Name => 'VideoFullRangeFlag',
2969
+ Mask => 0x80,
2965
2970
  },
2966
2971
  );
2967
2972
 
@@ -6399,6 +6404,8 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
6399
6404
  Writable => 'int8s', #27
6400
6405
  PrintConv => { 0 => 'No', 1 => 'Yes' },
6401
6406
  },
6407
+ ownr => 'Owner', #PH (obscure) (ref ChrisAdan private communication)
6408
+ 'xid ' => 'ISRC', #PH
6402
6409
  );
6403
6410
 
6404
6411
  # tag decoded from timed face records
@@ -7663,7 +7670,7 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
7663
7670
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::Rights' },
7664
7671
  },
7665
7672
  name => { Name => 'UserName', Groups => { 2 => 'Author' } },
7666
- # chtb
7673
+ # chtb - seen 632 bytes of random data
7667
7674
  # priv - private data
7668
7675
  # sign
7669
7676
  # adkm - Adobe DRM key management system (ref http://download.macromedia.com/f4v/video_file_format_spec_v10_1.pdf)
@@ -7686,6 +7693,9 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
7686
7693
  },
7687
7694
  medi => 'MediaFlags', #PH (?)
7688
7695
  mode => 'ModeFlags', #PH (?) 0x04 is HD flag (https://compilr.com/heksesang/requiem-mac/UnDrm.java)
7696
+ # sing - seen 4 zeros
7697
+ # hi32 - seen "00 00 00 04"
7698
+
7689
7699
  );
7690
7700
 
7691
7701
  # MP4 hint sample description box (ref 5)
@@ -9492,7 +9502,7 @@ sub ProcessMOV($$;$)
9492
9502
  $et->HandleTag($tagTablePtr, "$tag-offset", $raf->Tell()) if $$tagTablePtr{"$tag-offset"};
9493
9503
  }
9494
9504
  # stop processing at mdat/idat if -fast2 is used
9495
- last if $fast > 1 and ($tag eq 'mdat' or $tag eq 'idat');
9505
+ last if $fast > 1 and ($tag eq 'mdat' or ($tag eq 'idat' and $$et{FileType} ne 'HEIC'));
9496
9506
  # load values only if associated with a tag (or verbose) and not too big
9497
9507
  if ($size > 0x2000000) { # start to get worried above 32 MB
9498
9508
  # check for RIFF trailer (written by Auto-Vox dashcam)
@@ -343,9 +343,10 @@ numerical, and generated automatically otherwise.
343
343
  but applied automatically to individual tags. Value specifies
344
344
  pattern for split, or 1 for default pattern ',?\\s+'.
345
345
 
346
- 'Avoid' - avoid creating this tag if possible. This is only
347
- effective if another tag exists with the same name. Setting
348
- this flag also sets the default Priority to 0 for this tag.
346
+ 'Avoid' - avoid creating this tag when writing if possible.
347
+ This is only effective if another tag exists with the same
348
+ name. Setting this flag also sets the default Priority to 0
349
+ for this tag.
349
350
 
350
351
  'Binary' - set to 1 for binary data. This has the same effect
351
352
  as setting ValueConv to '\$val', but it it a bit cleaner and
@@ -917,6 +918,9 @@ numerical, and generated automatically otherwise.
917
918
  FixedSize : [EXIF only] Hack to ignore value size and use this instead.
918
919
  Only valid if Format is also defined.
919
920
 
921
+ TruncateOK : [EXIF only] Hack to demote a truncated value in an IFD to a
922
+ minor error.
923
+
920
924
  Struct : [XMP tags only] Reference to structure hash for structured XMP
921
925
  tags. See "STRUCTURES" section below for more details. (For
922
926
  backward compatibility, this may be a name to an entry in
@@ -30,7 +30,7 @@ use strict;
30
30
  use vars qw($VERSION $AUTOLOAD);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
 
33
- $VERSION = '1.65';
33
+ $VERSION = '1.66';
34
34
 
35
35
  sub ConvertTimecode($);
36
36
  sub ProcessSGLT($$$);
@@ -555,7 +555,7 @@ my %code2charset = (
555
555
  },
556
556
  },{ # (WebP) - have also seen with "Exif\0\0" header - PH
557
557
  Name => 'EXIF',
558
- Condition => '$$valPt =~ /^Exif\0\0(II\x2a\0|MM\0\x2a)/ and $self->Warn("Improper EXIF header",1)',
558
+ Condition => '$$valPt =~ /^Exif\0\0(II\x2a\0|MM\0\x2a)/ and ($self->Warn("Improper EXIF header",1) or 1)',
559
559
  SubDirectory => {
560
560
  TagTable => 'Image::ExifTool::Exif::Main',
561
561
  ProcessProc => \&Image::ExifTool::ProcessTIFF,
@@ -570,6 +570,12 @@ my %code2charset = (
570
570
  Notes => 'WebP files',
571
571
  SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
572
572
  },
573
+ "XMP\0" => {
574
+ Name => 'XMP',
575
+ Notes => 'incorrectly written WebP files',
576
+ Condition => '$self->Warn("Incorrect XMP tag ID", 1) or 1',
577
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::Main' },
578
+ },
573
579
  ICCP => { #14 (WebP)
574
580
  Name => 'ICC_Profile',
575
581
  Notes => 'WebP files',
@@ -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.62';
37
+ $VERSION = '3.63';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -163,6 +163,7 @@ sub PrintInvLensSpec($;$$);
163
163
  32878 => 'Sony FE 20-70mm F4 G', #JR
164
164
  32879 => 'Sony FE 50mm F1.4 GM', #JR
165
165
  32884 => 'Sony FE 70-200mm F4 Macro G OSS II', #JR
166
+ 32885 => 'Sony FE 16-35mm F2.8 GM II', #JR
166
167
 
167
168
  # (comment this out so LensID will report the LensModel, which is more useful)
168
169
  # 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
@@ -219,6 +220,9 @@ sub PrintInvLensSpec($;$$);
219
220
  49473 => 'Tokina atx-m 85mm F1.8 FE or Viltrox lens', #JR
220
221
  49473.1 => 'Viltrox 23mm F1.4 E', #JR
221
222
  49473.2 => 'Viltrox 56mm F1.4 E', #JR
223
+ 49474 => 'Tamron 70-180mm F2.8 Di III VXD G2 or Viltrox lens', #JR (Model A065)
224
+ 49474.1 => 'Viltrox 23mm F1.4 E', #JR
225
+ 49474.2 => 'Viltrox 16mm F1.8 FE', #JR
222
226
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
223
227
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
224
228
  49714 => 'Tokina atx-m 11-18mm F2.8 E', #JR
@@ -270,6 +274,7 @@ sub PrintInvLensSpec($;$$);
270
274
  50539 => 'Sigma 50mm F1.4 DG DN | A', #JR (023)
271
275
  50540 => 'Sigma 14mm F1.4 DG DN | A', #JR (023)
272
276
  50544 => 'Sigma 23mm F1.4 DC DN | C', #JR (023)
277
+ 50547 => 'Sigma 10-18mm F2.8 DC DN | C', #JR (023)
273
278
 
274
279
  50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
275
280
  50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
@@ -1304,7 +1309,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1304
1309
  Name => 'AFPointSelected',
1305
1310
  # non-zero only when AFAreaMode is 'Zone', and 'Expanded-Flexible-Spot' for ILCE-6300/7RM2/7SM2
1306
1311
  # each Zone has 3x3 AF Areas --> 9 positions within 5x5 total Contrast AF Areas
1307
- Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-)/',
1312
+ Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|ZV-|DSC-RX)/',
1308
1313
  Notes => 'NEX and ILCE models',
1309
1314
  Writable => 'int8u',
1310
1315
  PrintConv => {
@@ -1326,7 +1331,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1326
1331
  # but not used by ILCA-99M2 anymore ... ?
1327
1332
  0x2020 => [{
1328
1333
  Name => 'AFPointsUsed',
1329
- Condition => '$$self{Model} !~ /^(ILCA-|DSC-)/', # (doesn't seem to apply to DSC-models)
1334
+ Condition => '$$self{Model} !~ /^(ILCA-|DSC-|ZV-)/', # (doesn't seem to apply to DSC-models)
1330
1335
  Notes => 'SLT models, or NEX/ILCE with A-mount lenses',
1331
1336
  BitsPerWord => 8,
1332
1337
  BitsTotal => 80,
@@ -1618,7 +1623,16 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1618
1623
  65535 => 'n/a',
1619
1624
  },
1620
1625
  },
1621
- # 0x203a - 0x2041: first seen October 2021 for ILCE-7M4
1626
+ # 0x203a - 0x2044: seen from October 2021 for ILCE-7M4 and newer
1627
+ # 0x203a - int8u[32]
1628
+ # 0x203c - undef[26] only non-zero data in Continuous drive mode
1629
+ # 0x203d - int32u
1630
+ # 0x203e - int8u: seen 0, 1, 2, 3, 4 and 255: possibly nr. of detected/tracked faces?
1631
+ # 0x203f - int16u
1632
+ # 0x2041 - int8u
1633
+ # 0x2044 - int32u[2] in ILCE-6700/7CM2/7CR, ILCE-7M4 v1.10, ILCE-7RM5 JPG and ZV-E1:
1634
+ # ARW: seen 143360 53248 and 139264 53248
1635
+ # JPG: [~filesize] 53248
1622
1636
  0x3000 => {
1623
1637
  Name => 'ShotInfo',
1624
1638
  SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
@@ -1654,7 +1668,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1654
1668
  },
1655
1669
  },{
1656
1670
  Name => 'Tag9050b',
1657
- Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|9|9M2)|ILCA-99M2|ZV-E10)/',
1671
+ Condition => '$$self{Model} =~ /^(ILCE-(6100|6300|6400|6500|6600|7C|7M3|7RM2|7RM3A?|7RM4A?|7SM2|9|9M2)|ILCA-99M2|ZV-E10)\b/',
1658
1672
  SubDirectory => {
1659
1673
  TagTable => 'Image::ExifTool::Sony::Tag9050b',
1660
1674
  ByteOrder => 'LittleEndian',
@@ -1668,7 +1682,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1668
1682
  },
1669
1683
  },{
1670
1684
  Name => 'Tag9050d',
1671
- Condition => '$$self{Model} =~ /^(ILCE-6700|ZV-E1)/',
1685
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ZV-E1)\b/',
1672
1686
  SubDirectory => {
1673
1687
  TagTable => 'Image::ExifTool::Sony::Tag9050d',
1674
1688
  ByteOrder => 'LittleEndian',
@@ -1690,7 +1704,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1690
1704
  # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1/1F/1M2/E10
1691
1705
  # 0x31 (e) for ILCE-1/7M4/7SM3, ILME-FX3
1692
1706
  # 0x32 (e) for ILCE-7RM5, ILME-FX30
1693
- # 0x33 (e) for ILCE-6700, ZV-E1
1707
+ # 0x33 (e) for ILCE-6700, 7CM2, 7CR, ZV-E1
1694
1708
  # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106, 89, 63 respectively
1695
1709
  {
1696
1710
  Name => 'Tag9400a',
@@ -1807,7 +1821,11 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1807
1821
  # 0x1f 0x01 DSC-HX95/HX99
1808
1822
  # 0x20 0x01 ILCE-6100/6400/6600/7RM4/9M2, ILCE-9 v5.00-v6.00, DSC-RX0M2/RX100M7
1809
1823
  # 0x21 0x01 ZV-1/1F/1M2/E10
1810
- # 0x27 0x01 ZV-E1
1824
+ # 0x22 (34) ILCE-7SM3, ILME-FX3
1825
+ # 0x24 (36) ILCE-1
1826
+ # 0x25 (37) ILCE-7M4
1827
+ # 0x26 (38) ILCE-7RM5, ILME-FX30
1828
+ # 0x27 (39) ILCE-6700/7CM2/7CR, ZV-E1
1811
1829
  # var var SLT-A58/A99V, HV, ILCA-68/77M2/99M2
1812
1830
  # 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)
1813
1831
  # 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/',
@@ -2092,6 +2110,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2092
2110
  393 => 'ZV-E1', #JR
2093
2111
  394 => 'ILCE-6700', #JR
2094
2112
  395 => 'ZV-1M2', #JR
2113
+ 396 => 'ILCE-7CR', #JR
2114
+ 397 => 'ILCE-7CM2', #JR
2095
2115
  },
2096
2116
  },
2097
2117
  0xb020 => { #2
@@ -7896,7 +7916,7 @@ my %isoSetting2010 = (
7896
7916
  },
7897
7917
  0x01eb => {
7898
7918
  Name => 'APS-CSizeCapture',
7899
- Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)|ZV-E10/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7919
+ Condition => '$$self{Model} =~ /^ILCE-(7RM4A?|7C|9M2)/ or $$self{Software} =~ /^ILCE-9 (v5.0|v6.0)/',
7900
7920
  PrintConv => {
7901
7921
  0 => 'Off',
7902
7922
  1 => 'On',
@@ -8110,14 +8130,14 @@ my %isoSetting2010 = (
8110
8130
  WRITE_PROC => \&WriteEnciphered,
8111
8131
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
8112
8132
  FORMAT => 'int8u',
8113
- NOTES => 'Valid for ILCE-6700/ZV-E1.',
8133
+ NOTES => 'Valid for ILCE-6700/7CM2/7CR/ZV-E1.',
8114
8134
  WRITABLE => 1,
8115
8135
  FIRST_ENTRY => 0,
8116
8136
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8117
8137
  0x000a => {
8118
8138
  Name => 'ShutterCount',
8119
8139
  # number of mechanical shutter actuations, does not increase during electronic shutter / Silent Shooting
8120
- Condition => '$$self{Model} =~ /^(ILCE-6700)/',
8140
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR))/',
8121
8141
  Format => 'int32u',
8122
8142
  Notes => 'total number of image exposures made by the camera',
8123
8143
  RawConv => '$val & 0x00ffffff',
@@ -8377,7 +8397,7 @@ my %isoSetting2010 = (
8377
8397
  },
8378
8398
  0x002a => [{
8379
8399
  Name => 'Quality2',
8380
- Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8400
+ Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8381
8401
  PrintConv => {
8382
8402
  0 => 'JPEG',
8383
8403
  1 => 'RAW',
@@ -8402,7 +8422,7 @@ my %isoSetting2010 = (
8402
8422
  },
8403
8423
  0x0053 => {
8404
8424
  Name => 'ModelReleaseYear',
8405
- Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8425
+ Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3)|ILME-(FX3|FX30)|ZV-E1)\b/',
8406
8426
  Format => 'int8u',
8407
8427
  PrintConv => 'sprintf("20%.2d", $val)',
8408
8428
  },
@@ -8521,8 +8541,8 @@ my %isoSetting2010 = (
8521
8541
  14 => 'Tracking',
8522
8542
  15 => 'Face Tracking',
8523
8543
  20 => 'Animal Eye Tracking',
8524
- # 21 => '???', # (ILCE-1/6700/7SM3, ILME-FX3, ZV-E1: tracking ... mostly human face ...)
8525
- # 22 => '???', # (ILCE-6700, ZV-E1: tracking ...)
8544
+ 21 => 'Human Eye Tracking', # always "Face tracking", seen for ILCE-7SM3, ILCE-1 and newer
8545
+ # 22 => 'Object Tracking???', # always "Lock On AF", seen for ILCE-6700, ZV-E1 (no animal or human in picture)
8526
8546
  255 => 'Manual',
8527
8547
  },
8528
8548
  },
@@ -8997,11 +9017,12 @@ my %isoSetting2010 = (
8997
9017
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
8998
9018
  # 0x0000: 1 for SLT-A37/A57/A65/A77, NEX-5N/7/F3/VG20
8999
9019
  # 2 for SLT-A58/99V, NEX-3N/5R/5T/6/VG30/VG900, ILCA-68/77M2, ILCE-3000/3500/7/7M2/7R/7S/5000/6000
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
9020
+ # 3 for ILCA-99M2, ILCE-6100/6300/6400/6500/6600/7C/7M3/7M4/7RM2/7RM3/7RM4/7RM5/7SM2/7SM3/9/9M2/1
9021
+ # 4 for ILCE-6700/7CM2/7CR, ZV-E1
9002
9022
  0x0000 => { Name => 'Ver9406', Hidden => 1, RawConv => '$$self{Ver9406} = $val; $$self{OPTIONS}{Unknown}<2 ? undef : $val' },
9003
9023
  # 0x0001+0x0002: Int16u, seen 580 - 770: similar to "BatteryUnknown" ??
9004
9024
  # 0x0005: int8u, seen 73 - 117: maybe Fahrenheit? Higher than "AmbientTemperature", but same trend.
9025
+ # 0x0004: for Ver9406=4: seen 3, 5, 7: when 3 or 7 0x0005 appears valid; when 5, 0x0005 always 0
9005
9026
  0x0005 => [{
9006
9027
  Name => 'BatteryTemperature',
9007
9028
  Condition => '$$self{Ver9406} != 4',
@@ -9739,7 +9760,7 @@ my %isoSetting2010 = (
9739
9760
  WRITE_PROC => \&WriteEnciphered,
9740
9761
  CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
9741
9762
  FORMAT => 'int8u',
9742
- NOTES => 'Valid for the ILCE-1/6700/7M4/7RM5/7SM3, ILME-FX3/FX30, ZV-E1.',
9763
+ NOTES => 'Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3, ILME-FX3/FX30, ZV-E1.',
9743
9764
  FIRST_ENTRY => 0,
9744
9765
  GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
9745
9766
  0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
@@ -9783,12 +9804,36 @@ my %isoSetting2010 = (
9783
9804
  PrintConvInv => '$val',
9784
9805
  },
9785
9806
  0x001d => { %sequenceImageNumber },
9807
+ 0x002b => { %releaseMode2 },
9786
9808
  0x0035 => {
9787
9809
  Name => 'ExposureProgram',
9788
9810
  Priority => 0,
9789
9811
  SeparateTable => 'ExposureProgram3',
9790
9812
  PrintConv => \%sonyExposureProgram3,
9791
9813
  },
9814
+ 0x0037 => {
9815
+ Name => 'CreativeStyle',
9816
+ PrintConv => {
9817
+ 0 => 'Standard',
9818
+ 1 => 'Vivid',
9819
+ 2 => 'Neutral',
9820
+ 3 => 'Portrait',
9821
+ 4 => 'Landscape',
9822
+ 5 => 'B&W',
9823
+ 6 => 'Clear',
9824
+ 7 => 'Deep',
9825
+ 8 => 'Light',
9826
+ 9 => 'Sunset',
9827
+ 10 => 'Night View/Portrait',
9828
+ 11 => 'Autumn Leaves',
9829
+ 13 => 'Sepia',
9830
+ 15 => 'FL',
9831
+ 16 => 'VV2',
9832
+ 17 => 'IN',
9833
+ 18 => 'SH',
9834
+ 255 => 'Off',
9835
+ },
9836
+ },
9792
9837
  0x0048 => {
9793
9838
  Name => 'LensMount',
9794
9839
  Condition => '$$self{Model} !~ /^(DSC-)/',
@@ -9876,9 +9921,9 @@ my %isoSetting2010 = (
9876
9921
  Condition => '$$self{Model} =~ /^(ILCE-7M4)/',
9877
9922
  Format => 'int16s[16]',
9878
9923
  },
9879
- 0x089d => { # Note: 32 values for these newer models, and 32 non-zero values present for new lenses like SEL2470GM2 and SEL2470G
9924
+ 0x089d => { # Note: 32 values for these newer models, and 32 non-zero values present for new lenses like SEL2470GM2 and SEL2070G
9880
9925
  Name => 'VignettingCorrParams',
9881
- Condition => '$$self{Model} =~ /^(ILCE-(6700|7RM5)|ILME-FX30|ZV-E1)\b/',
9926
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-E1)\b/',
9882
9927
  Format => 'int16s[32]',
9883
9928
  },
9884
9929
  0x08b5 => {
@@ -9917,7 +9962,7 @@ my %isoSetting2010 = (
9917
9962
  },
9918
9963
  0x0945 => {
9919
9964
  Name => 'ChromaticAberrationCorrParams',
9920
- Condition => '$$self{Model} =~ /^(ILCE-(6700|7RM5)|ILME-FX30|ZV-E1)\b/',
9965
+ Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-E1)\b/',
9921
9966
  Format => 'int16s[32]',
9922
9967
  },
9923
9968
  );