exiftool_vendored 13.42.0 → 13.45.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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +44 -1
  3. data/bin/MANIFEST +2 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +48 -48
  7. data/bin/config_files/example.config +5 -2
  8. data/bin/exiftool +96 -84
  9. data/bin/lib/Image/ExifTool/Apple.pm +0 -1
  10. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +4 -4
  11. data/bin/lib/Image/ExifTool/Canon.pm +24 -1
  12. data/bin/lib/Image/ExifTool/CanonCustom.pm +1 -1
  13. data/bin/lib/Image/ExifTool/DarwinCore.pm +2 -2
  14. data/bin/lib/Image/ExifTool/EXE.pm +1 -1
  15. data/bin/lib/Image/ExifTool/Exif.pm +4 -2
  16. data/bin/lib/Image/ExifTool/FLIR.pm +1 -1
  17. data/bin/lib/Image/ExifTool/FlashPix.pm +1 -1
  18. data/bin/lib/Image/ExifTool/FujiFilm.pm +2 -2
  19. data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  20. data/bin/lib/Image/ExifTool/Geolocation.pm +1 -1
  21. data/bin/lib/Image/ExifTool/Geotag.pm +3 -3
  22. data/bin/lib/Image/ExifTool/Google.pm +2 -2
  23. data/bin/lib/Image/ExifTool/ICC_Profile.pm +0 -1
  24. data/bin/lib/Image/ExifTool/Import.pm +1 -1
  25. data/bin/lib/Image/ExifTool/JPEG.pm +5 -1
  26. data/bin/lib/Image/ExifTool/Jpeg2000.pm +1 -1
  27. data/bin/lib/Image/ExifTool/Kandao.pm +399 -0
  28. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  29. data/bin/lib/Image/ExifTool/MRC.pm +4 -4
  30. data/bin/lib/Image/ExifTool/MWG.pm +1 -1
  31. data/bin/lib/Image/ExifTool/MacOS.pm +1 -2
  32. data/bin/lib/Image/ExifTool/Matroska.pm +56 -15
  33. data/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  34. data/bin/lib/Image/ExifTool/Nikon.pm +13 -15
  35. data/bin/lib/Image/ExifTool/NikonCustom.pm +10 -8
  36. data/bin/lib/Image/ExifTool/OpenEXR.pm +1 -1
  37. data/bin/lib/Image/ExifTool/PPM.pm +1 -1
  38. data/bin/lib/Image/ExifTool/Panasonic.pm +30 -6
  39. data/bin/lib/Image/ExifTool/Pentax.pm +9 -1
  40. data/bin/lib/Image/ExifTool/PhaseOne.pm +17 -1
  41. data/bin/lib/Image/ExifTool/Plot.pm +2 -2
  42. data/bin/lib/Image/ExifTool/Protobuf.pm +42 -16
  43. data/bin/lib/Image/ExifTool/QuickTime.pm +48 -8
  44. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +2 -2
  45. data/bin/lib/Image/ExifTool/README +5 -5
  46. data/bin/lib/Image/ExifTool/RIFF.pm +5 -4
  47. data/bin/lib/Image/ExifTool/Reconyx.pm +2 -2
  48. data/bin/lib/Image/ExifTool/Samsung.pm +11 -1
  49. data/bin/lib/Image/ExifTool/Sony.pm +29 -3
  50. data/bin/lib/Image/ExifTool/TNEF.pm +2 -2
  51. data/bin/lib/Image/ExifTool/TagLookup.pm +7129 -7108
  52. data/bin/lib/Image/ExifTool/TagNames.pod +259 -111
  53. data/bin/lib/Image/ExifTool/Text.pm +1 -1
  54. data/bin/lib/Image/ExifTool/Trailer.pm +1 -1
  55. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -2
  56. data/bin/lib/Image/ExifTool/Writer.pl +9 -5
  57. data/bin/lib/Image/ExifTool/XMP.pm +4 -2
  58. data/bin/lib/Image/ExifTool/ZIP.pm +1 -1
  59. data/bin/lib/Image/ExifTool.pm +33 -26
  60. data/bin/lib/Image/ExifTool.pod +88 -79
  61. data/bin/perl-Image-ExifTool.spec +47 -47
  62. data/lib/exiftool_vendored/version.rb +1 -1
  63. metadata +2 -1
@@ -49,7 +49,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
49
49
  use Image::ExifTool::Exif;
50
50
  use Image::ExifTool::GPS;
51
51
 
52
- $VERSION = '3.23';
52
+ $VERSION = '3.25';
53
53
 
54
54
  sub ProcessMOV($$;$);
55
55
  sub ProcessKeys($$$);
@@ -494,6 +494,7 @@ my %qtFlags = ( #12
494
494
  ispe => 1, # primary item must have an ispe and pixi, so no need to inherit these
495
495
  pixi => 1,
496
496
  irot => 1, # (tmap may have a different irot)
497
+ imir => 1, # (ditto)
497
498
  pasp => 1, # (NC)
498
499
  hvcC => 2, # (hvcC is a property of hvc1 referred to by primary grid)
499
500
  colr => 2, # (colr is a property of primary grid or hvc1 referred to by primary)
@@ -600,7 +601,7 @@ my %userDefined = (
600
601
  # 0010: 73 6e 61 6c 00 00 00 00 00 f7 b6 d2 00 0a 46 e0 [snal..........F.]
601
602
  # 0020: 68 67 6c 67 00 00 00 00 01 02 0a a2 00 00 00 21 [hglg...........!]
602
603
  # 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [................]
603
- # (also Samsung WB750 uncompressed thumbnail data starting with "SDIC\0")
604
+ # (also Samsung WB750 uncompressed thumbnail data starting with "SDIC\0")
604
605
  ],
605
606
  # fre1 - 4 bytes: "june" (Kodak PixPro SP360)
606
607
  frea => {
@@ -987,6 +988,25 @@ my %userDefined = (
987
988
  ProcessProc => \&ProcessInsta360,
988
989
  },
989
990
  },
991
+ # Kandao tags (Kandao QooCam 3 Ultra)
992
+ kvar => {
993
+ Name => 'KVAR',
994
+ BlockExtract => 1,
995
+ Notes => q{
996
+ by default, data in this tag is parsed to extract some embedded metadata,
997
+ but it may also be extracted as a KVAR file via the "KVAR" tag or by setting
998
+ the API BlockExtract option
999
+ },
1000
+ SubDirectory => { TagTable => 'Image::ExifTool::Kandao::Main' },
1001
+ },
1002
+ kfix => {
1003
+ Name => 'KFIX',
1004
+ SubDirectory => { TagTable => 'Image::ExifTool::Kandao::Main' },
1005
+ },
1006
+ kstb => { # (NC)
1007
+ Name => 'KSTB',
1008
+ SubDirectory => { TagTable => 'Image::ExifTool::Kandao::Main' },
1009
+ },
990
1010
  );
991
1011
 
992
1012
  # stuff seen in 'skip' atom (70mai Pro Plus+ MP4 videos)
@@ -2667,6 +2687,7 @@ my %userDefined = (
2667
2687
  ByteOrder => 'BigEndian',
2668
2688
  },
2669
2689
  },
2690
+ # PREX - seen written by Sony ILCE-7M5 (apparently contains another video profile?)
2670
2691
  );
2671
2692
 
2672
2693
  # FPRF atom information (ref 11)
@@ -2970,7 +2991,6 @@ my %userDefined = (
2970
2991
  Condition => '$$valPt =~ /^(prof|rICC)/',
2971
2992
  # (don't do this because Apple Preview won't display an HEIC with a 0-length profile)
2972
2993
  # Permanent => 0, # (in QuickTime, this writes a zero-length box instead of deleting)
2973
- Permanent => 1,
2974
2994
  SubDirectory => {
2975
2995
  TagTable => 'Image::ExifTool::ICC_Profile::Main',
2976
2996
  Start => 4,
@@ -2991,6 +3011,22 @@ my %userDefined = (
2991
3011
  3 => 'Rotate 90 CW',
2992
3012
  },
2993
3013
  },
3014
+ imir => { # (applied before rotation)
3015
+ Name => 'Mirroring',
3016
+ Format => 'int8u',
3017
+ # yes, I realize this making this writable is useless without the ability to
3018
+ # create/delete this box because it is the existence of this box that is
3019
+ # significant. (The people who wrote the specification succeeded in making
3020
+ # this as complicated as possible because creating/deleting boxes from the
3021
+ # item property container is a real pain in the ass!)
3022
+ Writable => 'int8u',
3023
+ Protected => 1,
3024
+ PrintConv => {
3025
+ 0 => 'Vertical',
3026
+ 1 => 'Horizontal',
3027
+ # (it would have been great if the specification allowed for a "no mirroring" value)
3028
+ },
3029
+ },
2994
3030
  ispe => {
2995
3031
  Name => 'ImageSpatialExtent',
2996
3032
  Condition => '$$valPt =~ /^\0{4}/', # (version/flags == 0/0)
@@ -3405,7 +3441,7 @@ my %userDefined = (
3405
3441
  ssrc => { Name => 'Non-primarySourceTrack', Format => 'int32u' }, #29
3406
3442
  sync => { Name => 'SyncronizedTrack', Format => 'int32u' }, #29
3407
3443
  # hint - Original media for hint track (ref 29)
3408
- # cdep (Structural Dependency QT tag?)
3444
+ # cdep (Structural Dependency QT tag?)
3409
3445
  );
3410
3446
 
3411
3447
  # track aperture mode dimensions atoms
@@ -6622,7 +6658,7 @@ my %userDefined = (
6622
6658
  This directory contains a list of key names which are used to decode tags
6623
6659
  written by the "mdta" handler. Also in this table are a few tags found in
6624
6660
  timed metadata that are not yet writable by ExifTool. The prefix of
6625
- "com.apple.quicktime." has been removed from the TagID's below. These tags
6661
+ "com.apple.quicktime." has been removed from most TagID's below. These tags
6626
6662
  support alternate languages in the same way as the
6627
6663
  L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> tags. Note
6628
6664
  that by default,
@@ -6716,14 +6752,17 @@ my %userDefined = (
6716
6752
  'encoder' => { }, # forum15418 (written by ffmpeg)
6717
6753
  #
6718
6754
  # the following tags aren't in the com.apple.quicktime namespace:
6755
+ # (Note: must add any non-'com' prefix to %fullKeysID in WriteQuickTime.pl
6756
+ # to avoid adding the 'com.apple.quicktime' prefix when writing)
6719
6757
  #
6720
6758
  'com.android.version' => 'AndroidVersion',
6721
6759
  'com.android.capture.fps' => { Name => 'AndroidCaptureFPS', Writable => 'float' },
6722
6760
  'com.android.manufacturer' => 'AndroidMake',
6723
6761
  'com.android.model' => 'AndroidModel',
6724
6762
  'com.xiaomi.preview_video_cover' => { Name => 'XiaomiPreviewVideoCover', Writable => 'int32s' },
6725
- 'xiaomi.exifInfo.videoinfo' => 'XiaomiExifInfo',
6726
6763
  'com.xiaomi.hdr10' => { Name => 'XiaomiHDR10', Writable => 'int32s' },
6764
+ 'xiaomi.exifInfo.videoinfo' => 'XiaomiExifInfo',
6765
+ 'samsung.android.utc_offset' => { Name => 'AndroidTimeZone', Groups => { 2 => 'Time' } },
6727
6766
  #
6728
6767
  # also seen
6729
6768
  #
@@ -9007,13 +9046,13 @@ sub GetString($$)
9007
9046
  sub PrintableTagID($;$)
9008
9047
  {
9009
9048
  my $tag = $_[0];
9010
- my $n = ($tag =~ s/([\x00-\x1f\x7f-\xff])/'x'.unpack('H*',$1)/eg);
9049
+ my $n = ($tag =~ s/([^-_a-zA-Z0-9])/'x'.unpack('H*',$1)/eg);
9011
9050
  if ($n and $_[1]) {
9012
9051
  if ($n > 2 and $_[1] & 0x01) {
9013
9052
  $tag = '0x' . unpack('H8', $_[0]);
9014
9053
  $tag =~ s/^0x0000/0x/;
9015
9054
  } elsif ($_[1] & 0x02) {
9016
- ($tag = $_[0]) =~ s/([\x00-\x1f\x7f-\xff])/'\\x'.unpack('H*',$1)/eg;
9055
+ ($tag = $_[0]) =~ s/([^-_a-zA-Z0-9])/'\\x'.unpack('H*',$1)/eg;
9017
9056
  }
9018
9057
  }
9019
9058
  return $tag;
@@ -9776,6 +9815,7 @@ sub ProcessKeys($$$)
9776
9815
  $name = "Tag_$name" if length $name < 2;
9777
9816
  $newInfo = { Name => $name, Groups => { 1 => 'Keys' } };
9778
9817
  $msg = ' (Unknown)';
9818
+ $et->VPrint(0, $$et{INDENT}, "[adding Keys:$tag]\n");
9779
9819
  }
9780
9820
  # substitute this tag in the ItemList table with the given index
9781
9821
  my $id = $$et{KeysCount} . '.' . $index;
@@ -111,7 +111,7 @@ my %insvLimit = (
111
111
  The tags below are extracted from timed metadata in QuickTime and other
112
112
  formats of video files when the ExtractEmbedded option is used. Although
113
113
  most of these tags are combined into the single table below, ExifTool
114
- currently reads 116 different types of timed GPS metadata from video files.
114
+ currently reads 117 different types of timed GPS metadata from video files.
115
115
  },
116
116
  GPSLatitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")', RawConv => '$$self{FoundGPSLatitude} = 1; $val' },
117
117
  GPSLongitude => { PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")' },
@@ -211,7 +211,7 @@ my %insvLimit = (
211
211
  },
212
212
  },{
213
213
  Name => 'gpmd_Wolfbox', # Wolfbox G900 Dashcam and Redtiger F9 4K
214
- Condition => '$$valPt =~ /^.{136}0{16}(HYTH|XXXX)/s',
214
+ Condition => '$$valPt =~ /^.{136}(0{16}[A-Z]{4}|https:\/\/www.redtiger\0)/s',
215
215
  SubDirectory => {
216
216
  TagTable => 'Image::ExifTool::QuickTime::Stream',
217
217
  ProcessProc => \&ProcessWolfbox,
@@ -348,7 +348,7 @@ numerical, and generated automatically otherwise.
348
348
  but applied automatically to individual tags. Value specifies
349
349
  pattern for split, or 1 for default pattern ',?\\s+'.
350
350
 
351
- 'Avoid' - avoid creating this tag when writing if possible.
351
+ 'Avoid' - avoid creating this tag when writing if possible.
352
352
  This is only effective if another tag exists with the same
353
353
  name. Setting this flag also sets the default Priority to 0
354
354
  for this tag.
@@ -632,7 +632,7 @@ numerical, and generated automatically otherwise.
632
632
  value, and $tag is the tag key. The subroutine takes 2
633
633
  arguments: the Raw value and a reference to the current
634
634
  ExifTool object. The advanced formatting expression (if any)
635
- may be accessed via the ExifTool "FMT_EXPR" member variable.
635
+ may be accessed via the ExifTool "FMT_EXPR" member variable.
636
636
  The expression or subroutine is evaluated if and when the tag
637
637
  value is requested (ie. only after all extraction is
638
638
  complete), so if necessary at this time the values of all
@@ -650,7 +650,7 @@ numerical, and generated automatically otherwise.
650
650
  enabled. If this isn't possible (as with Composite tags where
651
651
  the converted values of the source tags are needed), set the
652
652
  Priority to 0 to avoid taking priority over a valid tag. If
653
- ValueConv is not specified, the Raw value is not converted.
653
+ ValueConv is not specified, the Raw value is not converted.
654
654
  Composite tags which Require or Desire other tags may access
655
655
  the ValueConv, PrintConv and Raw values of these tags through
656
656
  the elements of the @val, @prt and @raw lists respectively
@@ -822,7 +822,7 @@ numerical, and generated automatically otherwise.
822
822
  SubDirectory is writable as a block, or if the SubDirectory
823
823
  can not be edited (in which case Writable is set to 0). If
824
824
  non-zero, the SubDirectory is also extracted as a block, so
825
- the Binary and Protected flags should usually set as well.
825
+ the Binary and Protected flags should usually set as well.
826
826
  There is currently no way to specify a write format for a
827
827
  SubDirectory that is not writable as a block (the default is
828
828
  'int32u' for IFD-type SubDirectories, and 'undef' for all
@@ -970,7 +970,7 @@ numerical, and generated automatically otherwise.
970
970
  data record), $dataPt (reference to the data block), and $pos
971
971
  (position of this tag in the data block), and assign a new
972
972
  value to $format to dynamically set the tag format, and/or
973
- increment $varSize to add a byte offset to subsequent tags.
973
+ increment $varSize to add a byte offset to subsequent tags.
974
974
  $varSize may be set to a large number to effectively abort
975
975
  processing of the directory after this tag. Must have
976
976
  corresponding DATAMEMBER entry in writable tables. Must not
@@ -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.72';
33
+ $VERSION = '1.73';
34
34
 
35
35
  sub ConvertTimecode($);
36
36
  sub ProcessSGLT($$$);
@@ -391,7 +391,7 @@ my %code2charset = (
391
391
  smpl => { #16
392
392
  Name => 'Sampler',
393
393
  SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Sampler' },
394
- },
394
+ },
395
395
  inst => { #16
396
396
  Name => 'Instrument',
397
397
  SubDirectory => { TagTable => 'Image::ExifTool::RIFF::Instrument' },
@@ -546,11 +546,11 @@ my %code2charset = (
546
546
  'id3 ' => {
547
547
  Name => 'ID3',
548
548
  SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
549
- },
549
+ },
550
550
  'ID3 ' => { # (NC)
551
551
  Name => 'ID3-2',
552
552
  SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
553
- },
553
+ },
554
554
  #
555
555
  # WebP-specific tags
556
556
  #
@@ -851,6 +851,7 @@ my %code2charset = (
851
851
  Name => 'DateCreated',
852
852
  Groups => { 2 => 'Time' },
853
853
  ValueConv => '$_=$val; s/-/:/g; $_',
854
+ PrintConv => '$self->ConvertDateTime($val)',
854
855
  },
855
856
  ICRP => 'Cropped',
856
857
  IDIM => 'Dimensions',
@@ -420,7 +420,7 @@ my %convUnicode = (
420
420
  WRITABLE => 1,
421
421
  FIRST_ENTRY => 0,
422
422
  NOTES => 'Maker notes tags for Reconyx MicroFire cameras.',
423
- 0x10 => { Name => 'FileNumber', Format => 'int16u' },
423
+ 0x10 => { Name => 'FileNumber', Format => 'int16u' },
424
424
  0x12 => { Name => 'DirectoryNumber', Format => 'int16u' },
425
425
  0x14 => {
426
426
  Name => 'DirectoryCreateDate',
@@ -695,7 +695,7 @@ my %convUnicode = (
695
695
  0x51 => { Name => 'UserLabel', Format => 'string[51]' },
696
696
  0x84 => { Name => 'SerialNumber', Format => 'string[15]' },
697
697
  0x93 => { Name => 'DirectoryNumber', Format => 'int16u' },
698
- 0x95 => { Name => 'FileNumber', Format => 'int16u' },
698
+ 0x95 => { Name => 'FileNumber', Format => 'int16u' },
699
699
  );
700
700
 
701
701
  __END__
@@ -23,7 +23,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
23
23
  use Image::ExifTool::Exif;
24
24
  use Image::ExifTool::JSON;
25
25
 
26
- $VERSION = '1.59';
26
+ $VERSION = '1.60';
27
27
 
28
28
  sub WriteSTMN($$$);
29
29
  sub ProcessINFO($$$);
@@ -1314,7 +1314,17 @@ my %formatMinMax = (
1314
1314
  # 0x0da1-name - seen 'Captured_App_Info' #forum16086
1315
1315
  # 0xa050-name - seen 'Jpeg360_2D_Info' (Samsung Gear 360)
1316
1316
  # 0xa050 - seen 'Jpeg3602D' (Samsung Gear 360)
1317
+ # 0x0c61-name - seen 'Camera_Capture_Mode_Info'
1318
+ # 0x0c61 - seen '1'
1317
1319
  # 0x0c81-name - seen 'Watermark_Info'
1320
+ # 0x0ce1-name - seen 'Gallery_DC_Data'
1321
+ # 0x0ce1 - seen '0,109,2,19010102,4000,3000,0,0,0,0;116.284004;1.0'
1322
+ # 0x0e41-name - seen 'Video_Edited_UTC_Offset'
1323
+ # 0x0e41 - seen '+0800'
1324
+ '0x0e41' => {
1325
+ Name => 'VideoEditedTimeZone',
1326
+ Groups => { 2 => 'Time' },
1327
+ },
1318
1328
  );
1319
1329
 
1320
1330
  # DualShot Extra Info (ref PH)
@@ -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.80';
37
+ $VERSION = '3.83';
38
38
 
39
39
  sub ProcessSRF($$$);
40
40
  sub ProcessSR2($$$);
@@ -261,7 +261,7 @@ sub PrintInvLensSpec($;$$);
261
261
  49475 => 'Tamron 50-300mm F4.5-6.3 Di III VC VXD', #JR (Model A069)
262
262
  49476 => 'Tamron 28-300mm F4-7.1 Di III VC VXD', #JR (Model A074)
263
263
  49477 => 'Tamron 90mm F2.8 Di III Macro VXD', #JR (Model F072)
264
- 49478 => 'Tamron 16-30mm F2.8 Di III VXD G2', #JR (Model A064)
264
+ 49478 => 'Tamron 16-30mm F2.8 Di III VXD G2', #JR (Model A064)
265
265
 
266
266
  49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
267
267
  49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
@@ -1534,6 +1534,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1534
1534
  0 => 'Compressed RAW',
1535
1535
  1 => 'Uncompressed RAW',
1536
1536
  2 => 'Lossless Compressed RAW', #JR (NC) seen for ILCE-1
1537
+ 3 => 'Compressed RAW 2', # ILCE-7M5
1537
1538
  65535 => 'n/a', # seen for ILCE-7SM3 JPEG-only
1538
1539
  },
1539
1540
  },
@@ -1591,9 +1592,25 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
1591
1592
  '1 3' => 'RAW + Extra Fine',
1592
1593
  '1 4' => 'RAW + Light', #JR
1593
1594
  '2 0' => 'S-size RAW',
1595
+ '2 1' => 'S-size RAW + Standard', # (NC)
1596
+ '2 2' => 'S-size RAW + Fine', # (NC)
1597
+ '2 3' => 'S-size RAW + Extra Fine', # (NC)
1598
+ '2 4' => 'S-size RAW + Light', # (NC)
1594
1599
  '3 0' => 'M-size RAW', # ILCE-1/7RM5, APS-C mode
1600
+ '3 1' => 'M-size RAW + Standard', # (NC)
1595
1601
  '3 2' => 'M-size RAW + Fine',
1596
1602
  '3 3' => 'M-size RAW + Extra Fine',
1603
+ '3 4' => 'M-size RAW + Light', # (NC)
1604
+ '4 0' => 'Compressed RAW', # (NC)
1605
+ '4 1' => 'Compressed RAW + Standard', # (NC)
1606
+ '4 2' => 'Compressed RAW + Fine',
1607
+ '4 3' => 'Compressed RAW + Extra Fine', # (NC)
1608
+ '4 4' => 'Compressed RAW + Light', # (NC)
1609
+ '5 0' => 'Compressed HQ RAW', # (NC)
1610
+ '5 1' => 'Compressed HQ RAW + Standard', # (NC)
1611
+ '5 2' => 'Compressed HQ RAW + Fine',
1612
+ '5 3' => 'Compressed HQ RAW + Extra Fine', # (NC)
1613
+ '5 4' => 'Compressed HQ RAW + Light', # (NC)
1597
1614
  },
1598
1615
  },
1599
1616
  0x202f => { #JR (ILCE-7RM3)
@@ -2095,6 +2112,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2095
2112
  '4 0 1 0' => 'ARW 4.0.1', #github195 (ZV-E1)
2096
2113
  '5 0 0 0' => 'ARW 5.0', # (ILCE-9M3)
2097
2114
  '5 0 1 0' => 'ARW 5.0.1', # (ILCE-1 with FirmWare 2.0)
2115
+ '6 0 0 0' => 'ARW 6.0.0', # (ILCE-7M5)
2098
2116
  # what about cRAW images?
2099
2117
  },
2100
2118
  },
@@ -2215,6 +2233,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
2215
2233
  403 => 'ILCE-6100A', #JR
2216
2234
  404 => 'DSC-RX100M7A', #github347
2217
2235
  406 => 'ILME-FX2', #JR
2236
+ 407 => 'ILCE-7M5', #PH
2218
2237
  408 => 'ZV-1A', #JR
2219
2238
  },
2220
2239
  },
@@ -7563,6 +7582,12 @@ my %isoSetting2010 = (
7563
7582
  # appears to be difference between used FNumber and MaxAperture, 256 being +1 APEX or stop
7564
7583
  # however, not always valid e.g. bracketing, Shutter-prio e.a.
7565
7584
  # difference between 0x0002 and 0x0004 mostly 0.0, 0.1 or 0.2 stops.
7585
+ 0x000a => { #github369
7586
+ Name => 'ShutterCount',
7587
+ Format => 'int32u',
7588
+ Condition => '$$self{Model} =~ /^ILCE-7M5$/',
7589
+ Notes => 'ILCE-7M5',
7590
+ },
7566
7591
  0x0020 => {
7567
7592
  Name => 'Shutter',
7568
7593
  Format => 'int16u[3]',
@@ -7593,6 +7618,7 @@ my %isoSetting2010 = (
7593
7618
  # NEX-5N/7. For the A99V it is definitely more than 16 bits, but it wraps at
7594
7619
  # 65536 for the A7R.
7595
7620
  Format => 'int32u',
7621
+ Condition => '$$self{Model} !~ /^ILCE-7M5$/',
7596
7622
  Notes => q{
7597
7623
  total number of image exposures made by the camera, modulo 65536 for some
7598
7624
  models
@@ -9987,7 +10013,7 @@ my %isoSetting2010 = (
9987
10013
  PrintConv => \%sonyExposureProgram3,
9988
10014
  },
9989
10015
  0x0037 => {
9990
- Name => 'CreativeStyle',
10016
+ Name => 'CreativeStyle',
9991
10017
  Notes => 'offsets after this are shifted by 1 for the ILME-FX2',
9992
10018
  Hook => '$varSize += 1 if $$self{Model} =~ /^(ILME-FX2)/',
9993
10019
  PrintConv => {
@@ -345,7 +345,7 @@ sub ProcessProps($$$)
345
345
  }
346
346
  }
347
347
  if (not defined $val) {
348
- $val = ReadValue($dataPt, $pos, $fmt, $count, $size);
348
+ $val = ReadValue($dataPt, $pos, $fmt, $count, $size);
349
349
  if ($type == 0x06 or $type == 0x07 or $type == 0x0b or $type == 0x40) {
350
350
  my @a = split ' ', $val;
351
351
  if ($type == 0x06) { # currency
@@ -377,7 +377,7 @@ sub ProcessProps($$$)
377
377
  my $copy = $val;
378
378
  $val = \$copy; # change to a binary data reference
379
379
  }
380
- $et->HandleTag($tagTbl, $tag, $val,
380
+ $et->HandleTag($tagTbl, $tag, $val,
381
381
  DataPt => $dataPt,
382
382
  DataPos => $dataPos,
383
383
  Start => $pos,