exiftool_vendored 12.83.0 → 12.85.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -58,7 +58,7 @@ use Image::ExifTool::Exif;
58
58
  use Image::ExifTool::GPS;
59
59
  use Image::ExifTool::HP;
60
60
 
61
- $VERSION = '3.46';
61
+ $VERSION = '3.47';
62
62
 
63
63
  sub CryptShutterCount($$);
64
64
  sub PrintFilter($$$);
@@ -2741,8 +2741,8 @@ my %binaryDataAttrs = (
2741
2741
  SubDirectory => { TagTable => 'Image::ExifTool::Pentax::AEInfo2' },
2742
2742
  },{
2743
2743
  Name => 'AEInfo3',
2744
- # size: K-30=48
2745
- Condition => '$count == 48',
2744
+ # size: K-30=48, K-1mkII,K-70,KP=64
2745
+ Condition => '$count == 48 or $count == 64',
2746
2746
  SubDirectory => { TagTable => 'Image::ExifTool::Pentax::AEInfo3' },
2747
2747
  },{
2748
2748
  Name => 'AEInfoUnknown',
@@ -2972,10 +2972,14 @@ my %binaryDataAttrs = (
2972
2972
  ByteOrder => 'BigEndian',
2973
2973
  },
2974
2974
  }],
2975
- 0x022b => { #PH (K-5)
2975
+ 0x022b => [{
2976
+ Name => 'LevelInfoK3III',
2977
+ Condition => '$$self{Model} eq "PENTAX K-3 Mark III"',
2978
+ SubDirectory => { TagTable => 'Image::ExifTool::Pentax::LevelInfoK3III' },
2979
+ },{ #PH (K-5)
2976
2980
  Name => 'LevelInfo',
2977
2981
  SubDirectory => { TagTable => 'Image::ExifTool::Pentax::LevelInfo' },
2978
- },
2982
+ }],
2979
2983
  # 0x022c - undef[46] (K-5)
2980
2984
  0x022d => { #28
2981
2985
  Name => 'WBLevels',
@@ -4034,7 +4038,10 @@ my %binaryDataAttrs = (
4034
4038
  %Image::ExifTool::Pentax::AEInfo3 = (
4035
4039
  %binaryDataAttrs,
4036
4040
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4037
- NOTES => 'Auto-exposure information for the K-3, K-30, K-50 and K-500.',
4041
+ NOTES => q{
4042
+ Auto-exposure information for the K-1mkII, K-3, K-30, K-50, K-70, K-500 and
4043
+ KP.
4044
+ },
4038
4045
  # instead of /8, should these be PentaxEv(), as in CameraSettings? - PH
4039
4046
  16 => {
4040
4047
  Name => 'AEExposureTime',
@@ -4060,6 +4067,7 @@ my %binaryDataAttrs = (
4060
4067
  PrintConv => 'int($val + 0.5)',
4061
4068
  PrintConvInv => '$val',
4062
4069
  },
4070
+ # 23 - bit 0 is related to LiveView, but it isn't reliable
4063
4071
  28 => {
4064
4072
  Name => 'AEMaxAperture',
4065
4073
  Notes => 'val = 2**((raw-68)/16)',
@@ -4676,8 +4684,9 @@ my %binaryDataAttrs = (
4676
4684
  # battery grips available for:
4677
4685
  # BG1 (*istD), BG2 (K10D/K20D), BG3 (K200D), BG4 (K-7,K-5)
4678
4686
  # no grip available: K-x
4679
- 0.1 => { #19
4687
+ 0.1 => [{ #19
4680
4688
  Name => 'PowerSource',
4689
+ Condition => '$$self{Model} !~ /K-3 Mark III/',
4681
4690
  Mask => 0x0f,
4682
4691
  # have seen the upper bit set (value of 0x82) for the
4683
4692
  # *istDS and K100D, but I'm not sure what this means - PH
@@ -4688,7 +4697,20 @@ my %binaryDataAttrs = (
4688
4697
  3 => 'Grip Battery',
4689
4698
  4 => 'External Power Supply', #PH
4690
4699
  },
4691
- },
4700
+ },{ #PH
4701
+ Name => 'PowerSource',
4702
+ Mask => 0x0f,
4703
+ Notes => 'K-3III',
4704
+ # have seen the upper bit set (value of 0x82) for the
4705
+ # *istDS and K100D, but I'm not sure what this means - PH
4706
+ # I've also seen: 0x42 (K2000), 0xf2 (K-7,K-r,K-5), 0x12,0x22 (K-x) - PH
4707
+ PrintConv => {
4708
+ 1 => 'Body Battery',
4709
+ 2 => 'Grip Battery',
4710
+ 4 => 'External Power Supply',
4711
+ },
4712
+ },{
4713
+ }],
4692
4714
  1.1 => [
4693
4715
  {
4694
4716
  Name => 'BodyBatteryState',
@@ -4703,8 +4725,8 @@ my %binaryDataAttrs = (
4703
4725
  },
4704
4726
  },{
4705
4727
  Name => 'BodyBatteryState',
4706
- Condition => '$$self{Model} !~ /(K110D|K2000|K-m)\b/',
4707
- Notes => 'other models except the K110D, K2000 and K-m',
4728
+ Condition => '$$self{Model} !~ /(K110D|K2000|K-m|K-3 Mark III)\b/',
4729
+ Notes => 'most other models except the K110D, K2000, K-m and K-3III',
4708
4730
  Mask => 0xf0,
4709
4731
  PrintConv => {
4710
4732
  1 => 'Empty or Missing',
@@ -4715,7 +4737,8 @@ my %binaryDataAttrs = (
4715
4737
  },
4716
4738
  },{
4717
4739
  Name => 'BodyBatteryState',
4718
- Notes => 'decoding unknown for other models',
4740
+ Notes => 'decoding unknown for some models',
4741
+ Unknown => 1, # (doesn't appear to be valid for the K-3 III)
4719
4742
  Mask => 0xf0,
4720
4743
  },
4721
4744
  ],
@@ -4758,7 +4781,7 @@ my %binaryDataAttrs = (
4758
4781
  },
4759
4782
  {
4760
4783
  Name => 'BodyBatteryVoltage1', # (static?)
4761
- Condition => '$$self{Model} !~ /(K100D|K110D|K2000|K-m|Q\d*)\b/',
4784
+ Condition => '$$self{Model} =~ /(645D|645Z|K-(1|01|3|5|7|30|50|70|500|r|x|S[12])|KP)\b/ and $$self{Model} !~ /III/',
4762
4785
  Format => 'int16u',
4763
4786
  ValueConv => '$val / 100',
4764
4787
  ValueConvInv => '$val * 100',
@@ -4797,7 +4820,7 @@ my %binaryDataAttrs = (
4797
4820
  },
4798
4821
  {
4799
4822
  Name => 'BodyBatteryVoltage2', # (less than BodyBatteryVoltage1 -- under load?)
4800
- Condition => '$$self{Model} !~ /(K100D|K110D|K2000|K-m|Q\d*)\b/',
4823
+ Condition => '$$self{Model} =~ /(645D|645Z|K-(1|01|3|5|7|30|50|70|500|r|x|S[12])|KP)\b/ and $$self{Model} !~ /III/',
4801
4824
  Format => 'int16u',
4802
4825
  ValueConv => '$val / 100',
4803
4826
  ValueConvInv => '$val * 100',
@@ -4940,6 +4963,12 @@ my %binaryDataAttrs = (
4940
4963
  20 => 'Mid-right',
4941
4964
  },
4942
4965
  },
4966
+ 0x1fa => {
4967
+ Name => 'LiveView',
4968
+ Notes => 'decoded only for the K-3 III',
4969
+ Condition => '$$self{Model} eq "PENTAX K-3 Mark III"', # and other models?
4970
+ PrintConv => { 0 => 'Off', 1 => 'On' },
4971
+ },
4943
4972
  0x1fd => {
4944
4973
  Name => 'AFHold',
4945
4974
  Notes => 'decoded only for the K-3 II',
@@ -5006,6 +5035,10 @@ my %binaryDataAttrs = (
5006
5035
  1 => 'As EV Steps',
5007
5036
  },
5008
5037
  },
5038
+ 3 => { #PH
5039
+ Name => 'LiveView',
5040
+ PrintConv => { 0 => 'Off', 1 => 'On' },
5041
+ },
5009
5042
  );
5010
5043
 
5011
5044
  # shot information? - ref PH (K-5)
@@ -5483,6 +5516,24 @@ my %binaryDataAttrs = (
5483
5516
  },
5484
5517
  );
5485
5518
 
5519
+ %Image::ExifTool::Pentax::LevelInfoK3III = (
5520
+ %binaryDataAttrs,
5521
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
5522
+ FORMAT => 'int8s',
5523
+ NOTES => 'Tags decoded from the electronic level information for the K-3 III.',
5524
+ 3 => {
5525
+ Name => 'RollAngle',
5526
+ Format => 'int16s',
5527
+ ValueConv => '-$val / 2',
5528
+ ValueConvInv => '-$val * 2',
5529
+ },
5530
+ 5 => {
5531
+ Name => 'PitchAngle',
5532
+ Format => 'int16s',
5533
+ ValueConv => '-$val / 2',
5534
+ ValueConvInv => '-$val * 2',
5535
+ },
5536
+ );
5486
5537
  # white balance RGGB levels (ref 28)
5487
5538
  %Image::ExifTool::Pentax::WBLevels = (
5488
5539
  %binaryDataAttrs,
@@ -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.96';
51
+ $VERSION = '2.97';
52
52
 
53
53
  sub ProcessMOV($$;$);
54
54
  sub ProcessKeys($$$);
@@ -1415,6 +1415,8 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
1415
1415
  %durationInfo,
1416
1416
  # this is int64u if MovieHeaderVersion == 1 (ref 13)
1417
1417
  Hook => '$$self{MovieHeaderVersion} and $format = "int64u", $varSize += 4',
1418
+ # (Note: this Duration seems to be the time of the key frame in
1419
+ # the NRT Metadata track of iPhone live-photo MOV videos)
1418
1420
  },
1419
1421
  5 => {
1420
1422
  Name => 'PreferredRate',
@@ -2330,6 +2332,16 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
2330
2332
  Binary => 1,
2331
2333
  }],
2332
2334
  # ---- Ricoh ----
2335
+ RICO => { #PH (G900SE)
2336
+ Name => 'RicohInfo',
2337
+ Condition => '$$valPt =~ /^\xff\xe1..Exif\0\0/s',
2338
+ SubDirectory => {
2339
+ TagTable => 'Image::ExifTool::Exif::Main',
2340
+ ProcessProc => \&Image::ExifTool::ProcessTIFF,
2341
+ Start => 10,
2342
+ Base => '$start',
2343
+ }
2344
+ },
2333
2345
  RTHU => { #PH (GR)
2334
2346
  Name => 'PreviewImage',
2335
2347
  Groups => { 2 => 'Preview' },
@@ -2927,8 +2939,12 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
2927
2939
  Format => 'int8u',
2928
2940
  Writable => 'int8u',
2929
2941
  Protected => 1,
2930
- ValueConv => '$val * 90',
2931
- ValueConvInv => 'int($val / 90 + 0.5)',
2942
+ PrintConv => {
2943
+ 0 => 'Horizontal (Normal)',
2944
+ 1 => 'Rotate 270 CW',
2945
+ 2 => 'Rotate 180',
2946
+ 3 => 'Rotate 90 CW',
2947
+ },
2932
2948
  },
2933
2949
  ispe => {
2934
2950
  Name => 'ImageSpatialExtent',
@@ -3423,7 +3439,7 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
3423
3439
  SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::iTunesInfo' },
3424
3440
  },
3425
3441
  aART => { Name => 'AlbumArtist', Groups => { 2 => 'Author' } },
3426
- covr => { Name => 'CoverArt', Groups => { 2 => 'Preview' } },
3442
+ covr => { Name => 'CoverArt', Groups => { 2 => 'Preview' }, Binary => 1 },
3427
3443
  cpil => { #10
3428
3444
  Name => 'Compilation',
3429
3445
  Format => 'int8u', #27 (ref 23 contradicts what AtomicParsley actually writes, which is int8s)
@@ -6495,8 +6511,8 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
6495
6511
  ownr => 'Owner', #PH (obscure) (ref ChrisAdan private communication)
6496
6512
  'xid ' => 'ISRC', #PH
6497
6513
  # found in DJI Osmo Action4 video
6498
- tnal => { Name => 'ThumbnailImage', Groups => { 2 => 'Preview' } },
6499
- snal => { Name => 'PreviewImage', Groups => { 2 => 'Preview' } },
6514
+ tnal => { Name => 'ThumbnailImage', Binary => 1, Groups => { 2 => 'Preview' } },
6515
+ snal => { Name => 'PreviewImage', Binary => 1, Groups => { 2 => 'Preview' } },
6500
6516
  );
6501
6517
 
6502
6518
  # tag decoded from timed face records
@@ -8253,8 +8269,8 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
8253
8269
  GROUPS => { 2 => 'Video' },
8254
8270
  Rotation => {
8255
8271
  Notes => q{
8256
- writing this tag updates QuickTime MatrixStructure for all tracks with a
8257
- non-zero image size
8272
+ degrees of clockwise camera rotation. Writing this tag updates QuickTime
8273
+ MatrixStructure for all tracks with a non-zero image size
8258
8274
  },
8259
8275
  Require => {
8260
8276
  0 => 'QuickTime:MatrixStructure',
@@ -9756,7 +9772,7 @@ ItemID: foreach $id (reverse sort { $a <=> $b } keys %$items) {
9756
9772
  }
9757
9773
  # use value to get tag info if necessary
9758
9774
  $tagInfo or $tagInfo = $et->GetTagInfo($tagTablePtr, $tag, \$val);
9759
- my $hasData = ($$dirInfo{HasData} and $val =~ /\0...data\0/s);
9775
+ my $hasData = ($$dirInfo{HasData} and $val =~ /^....data\0/s);
9760
9776
  if ($verbose and not $hasData) {
9761
9777
  my $tval;
9762
9778
  if ($tagInfo and $$tagInfo{Format}) {