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.
- checksums.yaml +4 -4
- data/bin/Changes +40 -1
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +46 -46
- data/bin/build_geolocation +99 -21
- data/bin/config_files/example.config +2 -2
- data/bin/exiftool +52 -50
- data/bin/lib/Image/ExifTool/Apple.pm +52 -7
- data/bin/lib/Image/ExifTool/Canon.pm +11 -2
- data/bin/lib/Image/ExifTool/CanonVRD.pm +13 -1
- data/bin/lib/Image/ExifTool/DPX.pm +3 -3
- data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- data/bin/lib/Image/ExifTool/Geolocation.pm +132 -79
- data/bin/lib/Image/ExifTool/Geotag.pm +18 -10
- data/bin/lib/Image/ExifTool/ID3.pm +28 -6
- data/bin/lib/Image/ExifTool/Nikon.pm +19 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +64 -13
- data/bin/lib/Image/ExifTool/QuickTime.pm +25 -9
- data/bin/lib/Image/ExifTool/TagLookup.pm +3552 -3541
- data/bin/lib/Image/ExifTool/TagNames.pod +45 -10
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +2 -1
- data/bin/lib/Image/ExifTool/Writer.pl +5 -5
- data/bin/lib/Image/ExifTool/XMP.pm +2 -0
- data/bin/lib/Image/ExifTool.pm +48 -23
- data/bin/lib/Image/ExifTool.pod +75 -64
- data/bin/perl-Image-ExifTool.spec +45 -45
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -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.
|
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 => {
|
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 =>
|
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-
|
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
|
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}
|
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}
|
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.
|
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
|
-
|
2931
|
-
|
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
|
-
|
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 =~
|
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}) {
|