exiftool-vendored.pl 12.85.0 → 12.89.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.
- package/bin/Changes +69 -0
- package/bin/MANIFEST +1 -0
- package/bin/META.json +1 -1
- package/bin/META.yml +16 -16
- package/bin/README +3 -2
- package/bin/build_geolocation +6 -3
- package/bin/config_files/example.config +5 -0
- package/bin/config_files/onone.config +28 -0
- package/bin/exiftool +20 -12
- package/bin/lib/Image/ExifTool/AIFF.pm +8 -4
- package/bin/lib/Image/ExifTool/ASF.pm +4 -1
- package/bin/lib/Image/ExifTool/BuildTagLookup.pm +14 -8
- package/bin/lib/Image/ExifTool/Canon.pm +90 -6
- package/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
- package/bin/lib/Image/ExifTool/CanonVRD.pm +5 -2
- package/bin/lib/Image/ExifTool/FujiFilm.pm +46 -4
- package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- package/bin/lib/Image/ExifTool/Geolocation.pm +6 -0
- package/bin/lib/Image/ExifTool/ID3.pm +39 -33
- package/bin/lib/Image/ExifTool/InDesign.pm +8 -4
- package/bin/lib/Image/ExifTool/Jpeg2000.pm +0 -1
- package/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
- package/bin/lib/Image/ExifTool/Matroska.pm +66 -10
- package/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
- package/bin/lib/Image/ExifTool/Nikon.pm +3 -2
- package/bin/lib/Image/ExifTool/Olympus.pm +27 -17
- package/bin/lib/Image/ExifTool/Panasonic.pm +1 -0
- package/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -0
- package/bin/lib/Image/ExifTool/Pentax.pm +80 -14
- package/bin/lib/Image/ExifTool/QuickTime.pm +52 -12
- package/bin/lib/Image/ExifTool/QuickTimeStream.pl +24 -2
- package/bin/lib/Image/ExifTool/RIFF.pm +20 -10
- package/bin/lib/Image/ExifTool/Samsung.pm +29 -1
- package/bin/lib/Image/ExifTool/Sony.pm +21 -11
- package/bin/lib/Image/ExifTool/TagLookup.pm +6804 -6788
- package/bin/lib/Image/ExifTool/TagNames.pod +111 -50
- package/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
- package/bin/lib/Image/ExifTool/WriteQuickTime.pl +84 -15
- package/bin/lib/Image/ExifTool/Writer.pl +7 -4
- package/bin/lib/Image/ExifTool/XMP.pm +8 -8
- package/bin/lib/Image/ExifTool/XMP2.pl +51 -30
- package/bin/lib/Image/ExifTool/ZIP.pm +8 -4
- package/bin/lib/Image/ExifTool.pm +65 -42
- package/bin/lib/Image/ExifTool.pod +28 -20
- package/bin/perl-Image-ExifTool.spec +1 -1
- package/bin/pp_build_exe.args +4 -4
- package/package.json +3 -3
|
@@ -4697,7 +4697,7 @@ my %binaryDataAttrs = (
|
|
|
4697
4697
|
3 => 'Grip Battery',
|
|
4698
4698
|
4 => 'External Power Supply', #PH
|
|
4699
4699
|
},
|
|
4700
|
-
},{ #PH
|
|
4700
|
+
},{ #PH (forum15976)
|
|
4701
4701
|
Name => 'PowerSource',
|
|
4702
4702
|
Mask => 0x0f,
|
|
4703
4703
|
Notes => 'K-3III',
|
|
@@ -4709,8 +4709,18 @@ my %binaryDataAttrs = (
|
|
|
4709
4709
|
2 => 'Grip Battery',
|
|
4710
4710
|
4 => 'External Power Supply',
|
|
4711
4711
|
},
|
|
4712
|
-
},{
|
|
4713
4712
|
}],
|
|
4713
|
+
0.2 => {
|
|
4714
|
+
Name => 'PowerAvailable',
|
|
4715
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
|
4716
|
+
Notes => 'K-3III',
|
|
4717
|
+
Mask => 0xf0,
|
|
4718
|
+
PrintConv => { BITMASK => {
|
|
4719
|
+
0 => 'Body Battery',
|
|
4720
|
+
1 => 'Grip Battery',
|
|
4721
|
+
3 => 'External Power Supply',
|
|
4722
|
+
}},
|
|
4723
|
+
},
|
|
4714
4724
|
1.1 => [
|
|
4715
4725
|
{
|
|
4716
4726
|
Name => 'BodyBatteryState',
|
|
@@ -4735,11 +4745,6 @@ my %binaryDataAttrs = (
|
|
|
4735
4745
|
4 => 'Close to Full',
|
|
4736
4746
|
5 => 'Full',
|
|
4737
4747
|
},
|
|
4738
|
-
},{
|
|
4739
|
-
Name => 'BodyBatteryState',
|
|
4740
|
-
Notes => 'decoding unknown for some models',
|
|
4741
|
-
Unknown => 1, # (doesn't appear to be valid for the K-3 III)
|
|
4742
|
-
Mask => 0xf0,
|
|
4743
4748
|
},
|
|
4744
4749
|
],
|
|
4745
4750
|
1.2 => [
|
|
@@ -4754,11 +4759,6 @@ my %binaryDataAttrs = (
|
|
|
4754
4759
|
3 => 'Running Low',
|
|
4755
4760
|
4 => 'Full',
|
|
4756
4761
|
},
|
|
4757
|
-
},{
|
|
4758
|
-
Name => 'GripBatteryState',
|
|
4759
|
-
Notes => 'decoding unknown for other models',
|
|
4760
|
-
Unknown => 1, # (doesn't appear to be valid for the K-5)
|
|
4761
|
-
Mask => 0x0f,
|
|
4762
4762
|
},
|
|
4763
4763
|
],
|
|
4764
4764
|
# internal and grip battery voltage Analogue to Digital measurements,
|
|
@@ -4794,7 +4794,19 @@ my %binaryDataAttrs = (
|
|
|
4794
4794
|
# BodyBatteryVoltage4 6.10 V 7.55 V 7.45 V
|
|
4795
4795
|
# "Meas" open-circuit voltages with DVM: AB=0V, AC=+8.33V, BC=+8.22V
|
|
4796
4796
|
# (terminal "C" is closest to edge of battery)
|
|
4797
|
-
},
|
|
4797
|
+
},{
|
|
4798
|
+
Name => 'BodyBatteryState',
|
|
4799
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
|
4800
|
+
Notes => 'K-3III',
|
|
4801
|
+
PrintConv => {
|
|
4802
|
+
0 => 'Empty or Missing',
|
|
4803
|
+
1 => 'Almost Empty',
|
|
4804
|
+
2 => 'Running Low',
|
|
4805
|
+
3 => 'Half Full',
|
|
4806
|
+
4 => 'Close to Full',
|
|
4807
|
+
5 => 'Full',
|
|
4808
|
+
},
|
|
4809
|
+
}
|
|
4798
4810
|
],
|
|
4799
4811
|
3 => [
|
|
4800
4812
|
{
|
|
@@ -4810,7 +4822,11 @@ my %binaryDataAttrs = (
|
|
|
4810
4822
|
Name => 'BodyBatteryADLoad',
|
|
4811
4823
|
Description => 'Body Battery A/D Load',
|
|
4812
4824
|
Condition => '$$self{Model} =~ /(\*ist|K100D|K200D)\b/',
|
|
4813
|
-
},
|
|
4825
|
+
},{
|
|
4826
|
+
Name => 'BodyBatteryPercent',
|
|
4827
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
|
4828
|
+
Notes => 'K-3III',
|
|
4829
|
+
}
|
|
4814
4830
|
],
|
|
4815
4831
|
4 => [
|
|
4816
4832
|
{
|
|
@@ -4827,6 +4843,15 @@ my %binaryDataAttrs = (
|
|
|
4827
4843
|
PrintConv => 'sprintf("%.2f V", $val)',
|
|
4828
4844
|
PrintConvInv => '$val =~ s/\s*V$//',
|
|
4829
4845
|
},
|
|
4846
|
+
{
|
|
4847
|
+
Name => 'BodyBatteryVoltage',
|
|
4848
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
|
4849
|
+
Format => 'int32u',
|
|
4850
|
+
ValueConv => '$val * 4e-8 + 0.27219',
|
|
4851
|
+
ValueConvInv => '($val - 0.27219) / 4e-8',
|
|
4852
|
+
PrintConv => 'sprintf("%.2f V", $val)',
|
|
4853
|
+
PrintConvInv => '$val =~ s/\s*V$//',
|
|
4854
|
+
},
|
|
4830
4855
|
],
|
|
4831
4856
|
5 => {
|
|
4832
4857
|
Name => 'GripBatteryADLoad',
|
|
@@ -4853,6 +4878,34 @@ my %binaryDataAttrs = (
|
|
|
4853
4878
|
PrintConv => 'sprintf("%.2f V", $val)',
|
|
4854
4879
|
PrintConvInv => '$val =~ s/\s*V$//',
|
|
4855
4880
|
},
|
|
4881
|
+
16 => {
|
|
4882
|
+
Name => 'GripBatteryState',
|
|
4883
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
|
4884
|
+
Notes => 'K-3III',
|
|
4885
|
+
PrintConv => {
|
|
4886
|
+
0 => 'Empty or Missing',
|
|
4887
|
+
1 => 'Almost Empty',
|
|
4888
|
+
2 => 'Running Low',
|
|
4889
|
+
3 => 'Half Full',
|
|
4890
|
+
4 => 'Close to Full',
|
|
4891
|
+
5 => 'Full',
|
|
4892
|
+
},
|
|
4893
|
+
},
|
|
4894
|
+
17 => {
|
|
4895
|
+
Name => 'GripBatteryPercent',
|
|
4896
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
|
4897
|
+
Notes => 'K-3III',
|
|
4898
|
+
},
|
|
4899
|
+
18 => {
|
|
4900
|
+
Name => 'GripBatteryVoltage',
|
|
4901
|
+
Condition => '$$self{Model} =~ /K-3 Mark III/',
|
|
4902
|
+
Notes => 'K-3III',
|
|
4903
|
+
Format => 'int32u',
|
|
4904
|
+
ValueConv => '$val * 4e-8 + 0.27219',
|
|
4905
|
+
ValueConvInv => '($val - 0.27219) / 4e-8',
|
|
4906
|
+
PrintConv => 'sprintf("%.2f V", $val)',
|
|
4907
|
+
PrintConvInv => '$val =~ s/\s*V$//',
|
|
4908
|
+
},
|
|
4856
4909
|
);
|
|
4857
4910
|
|
|
4858
4911
|
# auto focus information
|
|
@@ -5521,14 +5574,27 @@ my %binaryDataAttrs = (
|
|
|
5521
5574
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
|
5522
5575
|
FORMAT => 'int8s',
|
|
5523
5576
|
NOTES => 'Tags decoded from the electronic level information for the K-3 III.',
|
|
5577
|
+
1 => {
|
|
5578
|
+
Name => 'CameraOrientation',
|
|
5579
|
+
PrintConv => {
|
|
5580
|
+
0 => 'Horizontal (normal)',
|
|
5581
|
+
1 => 'Rotate 270 CW',
|
|
5582
|
+
2 => 'Rotate 180',
|
|
5583
|
+
3 => 'Rotate 90 CW',
|
|
5584
|
+
4 => 'Upwards', # (to the sky)
|
|
5585
|
+
5 => 'Downwards', # (to the ground)
|
|
5586
|
+
},
|
|
5587
|
+
},
|
|
5524
5588
|
3 => {
|
|
5525
5589
|
Name => 'RollAngle',
|
|
5590
|
+
Notes => 'converted to degrees of clockwise camera rotation',
|
|
5526
5591
|
Format => 'int16s',
|
|
5527
5592
|
ValueConv => '-$val / 2',
|
|
5528
5593
|
ValueConvInv => '-$val * 2',
|
|
5529
5594
|
},
|
|
5530
5595
|
5 => {
|
|
5531
5596
|
Name => 'PitchAngle',
|
|
5597
|
+
Notes => 'converted to degrees of upward camera tilt',
|
|
5532
5598
|
Format => 'int16s',
|
|
5533
5599
|
ValueConv => '-$val / 2',
|
|
5534
5600
|
ValueConvInv => '-$val * 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.
|
|
51
|
+
$VERSION = '2.98';
|
|
52
52
|
|
|
53
53
|
sub ProcessMOV($$;$);
|
|
54
54
|
sub ProcessKeys($$$);
|
|
@@ -238,7 +238,11 @@ my %useExt = ( GLV => 'MP4' );
|
|
|
238
238
|
|
|
239
239
|
# information for int32u date/time tags (time zero is Jan 1, 1904)
|
|
240
240
|
my %timeInfo = (
|
|
241
|
-
Notes =>
|
|
241
|
+
Notes => q{
|
|
242
|
+
converted from UTC to local time if the QuickTimeUTC option is set. This
|
|
243
|
+
tag is part of a binary data structure so it may not be deleted -- instead
|
|
244
|
+
the value is set to zero if the tag is deleted individually
|
|
245
|
+
},
|
|
242
246
|
Shift => 'Time',
|
|
243
247
|
Writable => 1,
|
|
244
248
|
Permanent => 1,
|
|
@@ -503,6 +507,11 @@ my %eeBox2 = (
|
|
|
503
507
|
# image types in AVIF and HEIC files
|
|
504
508
|
my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
|
|
505
509
|
|
|
510
|
+
my %userDefined = (
|
|
511
|
+
ALBUMARTISTSORT => 'AlbumArtistSort',
|
|
512
|
+
ASIN => 'ASIN',
|
|
513
|
+
);
|
|
514
|
+
|
|
506
515
|
# QuickTime atoms
|
|
507
516
|
%Image::ExifTool::QuickTime::Main = (
|
|
508
517
|
PROCESS_PROC => \&ProcessMOV,
|
|
@@ -2336,10 +2345,8 @@ my %isImageData = ( av01 => 1, avc1 => 1, hvc1 => 1, lhv1 => 1, hvt1 => 1 );
|
|
|
2336
2345
|
Name => 'RicohInfo',
|
|
2337
2346
|
Condition => '$$valPt =~ /^\xff\xe1..Exif\0\0/s',
|
|
2338
2347
|
SubDirectory => {
|
|
2339
|
-
TagTable => 'Image::ExifTool::
|
|
2340
|
-
ProcessProc => \&Image::ExifTool::
|
|
2341
|
-
Start => 10,
|
|
2342
|
-
Base => '$start',
|
|
2348
|
+
TagTable => 'Image::ExifTool::JPEG::Main',
|
|
2349
|
+
ProcessProc => \&Image::ExifTool::ProcessJPEG,
|
|
2343
2350
|
}
|
|
2344
2351
|
},
|
|
2345
2352
|
RTHU => { #PH (GR)
|
|
@@ -8985,12 +8992,20 @@ sub HandleItemInfo($)
|
|
|
8985
8992
|
if ($$item{Extents} and @{$$item{Extents}}) {
|
|
8986
8993
|
$len += $$_[2] foreach @{$$item{Extents}};
|
|
8987
8994
|
}
|
|
8988
|
-
$
|
|
8995
|
+
my $enc = $$item{ContentEncoding} ? ", $$item{ContentEncoding} encoded" : '';
|
|
8996
|
+
$et->VPrint(0, "$$et{INDENT}Item $id) '${type}' ($len bytes$enc)\n");
|
|
8989
8997
|
}
|
|
8990
8998
|
# get ExifTool name for this item
|
|
8991
8999
|
my $name = { Exif => 'EXIF', 'application/rdf+xml' => 'XMP', jpeg => 'PreviewImage' }->{$type} || '';
|
|
8992
9000
|
my ($warn, $extent);
|
|
8993
|
-
|
|
9001
|
+
if ($$item{ContentEncoding}) {
|
|
9002
|
+
if ($$item{ContentEncoding} ne 'deflate') {
|
|
9003
|
+
# (other possible values are 'gzip' and 'compress', but I don't have samples of these)
|
|
9004
|
+
$warn = "Can't currently decode $$item{ContentEncoding} encoded $type metadata";
|
|
9005
|
+
} elsif (not eval { require Compress::Zlib }) {
|
|
9006
|
+
$warn = "Install Compress::Zlib to decode deflated $type metadata";
|
|
9007
|
+
}
|
|
9008
|
+
}
|
|
8994
9009
|
$warn = "Can't currently decode protected $type metadata" if $$item{ProtectionIndex};
|
|
8995
9010
|
$warn = "Can't currently extract $type with construction method $$item{ConstructionMethod}" if $$item{ConstructionMethod};
|
|
8996
9011
|
$et->WarnOnce($warn) if $warn and $name;
|
|
@@ -9050,6 +9065,22 @@ sub HandleItemInfo($)
|
|
|
9050
9065
|
next unless defined $buff;
|
|
9051
9066
|
$buff = $val . $buff if length $val;
|
|
9052
9067
|
next unless length $buff; # ignore empty directories
|
|
9068
|
+
if ($$item{ContentEncoding}) {
|
|
9069
|
+
my ($v2, $stat);
|
|
9070
|
+
my $inflate = Compress::Zlib::inflateInit();
|
|
9071
|
+
$inflate and ($v2, $stat) = $inflate->inflate($buff);
|
|
9072
|
+
if ($inflate and $stat == Compress::Zlib::Z_STREAM_END()) {
|
|
9073
|
+
$buff = $v2;
|
|
9074
|
+
my $len = length $buff;
|
|
9075
|
+
$et->VPrint(0, "$$et{INDENT}Inflated Item $id) '${type}' ($len bytes)\n");
|
|
9076
|
+
$et->VerboseDump(\$buff);
|
|
9077
|
+
} else {
|
|
9078
|
+
$warn = "Error inflating $name metadata";
|
|
9079
|
+
$et->WarnOnce($warn);
|
|
9080
|
+
$et->VPrint(0, "$$et{INDENT} [not extracted] ($warn)\n") if $verbose > 2;
|
|
9081
|
+
next;
|
|
9082
|
+
}
|
|
9083
|
+
}
|
|
9053
9084
|
my ($start, $subTable, $proc);
|
|
9054
9085
|
my $pos = $$item{Extents}[0][1] + $base;
|
|
9055
9086
|
if ($name eq 'EXIF' and length $buff >= 4) {
|
|
@@ -9485,7 +9516,8 @@ sub ProcessMOV($$;$)
|
|
|
9485
9516
|
my $dataPt = $$dirInfo{DataPt};
|
|
9486
9517
|
my $verbose = $et->Options('Verbose');
|
|
9487
9518
|
my $validate = $$et{OPTIONS}{Validate};
|
|
9488
|
-
my $
|
|
9519
|
+
my $dirBase = $$dirInfo{Base} || 0;
|
|
9520
|
+
my $dataPos = $dirBase;
|
|
9489
9521
|
my $dirID = $$dirInfo{DirID} || '';
|
|
9490
9522
|
my $charsetQuickTime = $et->Options('CharsetQuickTime');
|
|
9491
9523
|
my ($buff, $tag, $size, $track, $isUserData, %triplet, $doDefaultLang, $index);
|
|
@@ -9570,6 +9602,7 @@ sub ProcessMOV($$;$)
|
|
|
9570
9602
|
$atomCount = $$tagTablePtr{VARS}{ATOM_COUNT};
|
|
9571
9603
|
}
|
|
9572
9604
|
my $lastTag = '';
|
|
9605
|
+
my $lastPos = 0;
|
|
9573
9606
|
for (;;) {
|
|
9574
9607
|
my ($eeTag, $ignore);
|
|
9575
9608
|
last if defined $atomCount and --$atomCount < 0;
|
|
@@ -9608,6 +9641,8 @@ sub ProcessMOV($$;$)
|
|
|
9608
9641
|
} elsif (not $et->Options('LargeFileSupport')) {
|
|
9609
9642
|
$warnStr = 'End of processing at large atom (LargeFileSupport not enabled)';
|
|
9610
9643
|
last;
|
|
9644
|
+
} elsif ($et->Options('LargeFileSupport') eq '2') {
|
|
9645
|
+
$et->WarnOnce('Processing large atom (LargeFileSupport is 2)');
|
|
9611
9646
|
}
|
|
9612
9647
|
}
|
|
9613
9648
|
$size = $hi * 4294967296 + $lo - 16;
|
|
@@ -10082,14 +10117,15 @@ ItemID: foreach $id (reverse sort { $a <=> $b } keys %$items) {
|
|
|
10082
10117
|
) if $verbose;
|
|
10083
10118
|
if ($size and (not $raf->Seek($size-1, 1) or $raf->Read($buff, 1) != 1)) {
|
|
10084
10119
|
my $t = PrintableTagID($tag,2);
|
|
10085
|
-
$warnStr = "Truncated '${t}' data";
|
|
10120
|
+
$warnStr = sprintf("Truncated '${t}' data at offset 0x%x", $lastPos);
|
|
10086
10121
|
last;
|
|
10087
10122
|
}
|
|
10088
10123
|
}
|
|
10089
10124
|
$dataPos += $size + 8; # point to start of next atom data
|
|
10090
10125
|
last if $dirEnd and $dataPos >= $dirEnd; # (note: ignores last value if 0 bytes)
|
|
10126
|
+
$lastPos = $raf->Tell() + $dirBase;
|
|
10091
10127
|
$raf->Read($buff, 8) == 8 or last;
|
|
10092
|
-
$lastTag = $tag if $$tagTablePtr{$tag};
|
|
10128
|
+
$lastTag = $tag if $$tagTablePtr{$tag} and $tag ne 'free'; # (Insta360 sometimes puts free block before trailer)
|
|
10093
10129
|
($size, $tag) = unpack('Na4', $buff);
|
|
10094
10130
|
++$index if defined $index;
|
|
10095
10131
|
}
|
|
@@ -10099,7 +10135,11 @@ ItemID: foreach $id (reverse sort { $a <=> $b } keys %$items) {
|
|
|
10099
10135
|
if (($lastTag eq 'mdat' or $lastTag eq 'moov') and (not $$tagTablePtr{$tag} or
|
|
10100
10136
|
ref $$tagTablePtr{$tag} eq 'HASH' and $$tagTablePtr{$tag}{Unknown}))
|
|
10101
10137
|
{
|
|
10102
|
-
$
|
|
10138
|
+
if ($size == 0x1000000 - 8 and $tag =~ /^(\x94\xc0\x7e\0|\0\x02\0\0)/) {
|
|
10139
|
+
$et->Warn(sprintf('Insta360 trailer at offset 0x%x', $lastPos), 1);
|
|
10140
|
+
} else {
|
|
10141
|
+
$et->Warn('Unknown trailer with '.lcfirst($warnStr));
|
|
10142
|
+
}
|
|
10103
10143
|
} else {
|
|
10104
10144
|
$et->Warn($warnStr);
|
|
10105
10145
|
}
|
|
@@ -143,6 +143,7 @@ my %insvLimit = (
|
|
|
143
143
|
ExposureCompensation => { PrintConv => 'Image::ExifTool::Exif::PrintFraction($val)', Groups => { 2 => 'Camera' } },
|
|
144
144
|
ISO => { Groups => { 2 => 'Camera' } },
|
|
145
145
|
CameraDateTime=>{ PrintConv => '$self->ConvertDateTime($val)', Groups => { 2 => 'Time' } },
|
|
146
|
+
DateTimeStamp =>{ PrintConv => '$self->ConvertDateTime($val)', Groups => { 2 => 'Time' } },
|
|
146
147
|
VideoTimeStamp => { Groups => { 2 => 'Video' } },
|
|
147
148
|
Accelerometer=> { Notes => '3-axis acceleration in units of g' },
|
|
148
149
|
AccelerometerData => { },
|
|
@@ -992,8 +993,29 @@ sub Process_text($$$;$)
|
|
|
992
993
|
$tags{Text} = defined $tags{Text} ? $tags{Text} . "\$$tag$dat" : "\$$tag$dat";
|
|
993
994
|
}
|
|
994
995
|
}
|
|
995
|
-
|
|
996
|
-
|
|
996
|
+
if (%tags) {
|
|
997
|
+
unless ($tags{Accelerometer}) { # (probably unnecessary test)
|
|
998
|
+
# check for NextBase 622GW accelerometer data
|
|
999
|
+
# Example data (leading 2-byte length word has been stripped by ProcessSamples):
|
|
1000
|
+
# 0000: 00 00 00 00 32 30 32 32 30 39 30 35 31 36 34 30 [....202209051640]
|
|
1001
|
+
# 0010: 33 33 00 00 29 00 ba ff 48 ff 18 00 f2 07 5a ff [33..)...H.....Z.]
|
|
1002
|
+
# 0020: 64 ff e8 ff 58 ff e8 ff c1 07 43 ff 41 ff d2 ff [d...X.....C.A...]
|
|
1003
|
+
# 0030: 58 ff ea ff dc 07 50 ff 30 ff e0 ff 72 ff d8 ff [X.....P.0...r...]
|
|
1004
|
+
# 0040: f5 07 51 ff 16 ff dc ff 6a ff ca ff 33 08 45 ff [..Q.....j...3.E.]
|
|
1005
|
+
if ($$dataPt =~ /^\0{4}(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})\0\0.{2}/s) {
|
|
1006
|
+
$tags{DateTimeStamp} = "$1:$2:$2 $4:$5:$6";
|
|
1007
|
+
my $num = unpack('x20v', $$dataPt); # number of accelerometer readings
|
|
1008
|
+
if ($num and $num * 12 + 22 < length $$dataPt) {
|
|
1009
|
+
$num *= 6;
|
|
1010
|
+
my @acc = unpack("x22v$num", $$dataPt);
|
|
1011
|
+
map { $_ = $_ - 0x10000 if $_ >= 0x8000 } @acc;
|
|
1012
|
+
$tags{AccelerometerData} = "@acc";
|
|
1013
|
+
}
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
HandleTextTags($et, $tagTbl, \%tags);
|
|
1017
|
+
return;
|
|
1018
|
+
}
|
|
997
1019
|
# check for enciphered binary GPS data
|
|
998
1020
|
# BlueSkySea:
|
|
999
1021
|
# 0000: 00 00 aa aa aa aa 54 54 98 9a 9b 93 9a 92 98 9a [......TT........]
|
|
@@ -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.
|
|
33
|
+
$VERSION = '1.68';
|
|
34
34
|
|
|
35
35
|
sub ConvertTimecode($);
|
|
36
36
|
sub ProcessSGLT($$$);
|
|
@@ -2041,11 +2041,16 @@ sub ProcessRIFF($$)
|
|
|
2041
2041
|
last unless $moviEnd;
|
|
2042
2042
|
# we arrived here because there was a problem parsing the movie data
|
|
2043
2043
|
# so seek to the end to continue processing
|
|
2044
|
-
if ($moviEnd > 0x7fffffff
|
|
2045
|
-
$et->
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2044
|
+
if ($moviEnd > 0x7fffffff) {
|
|
2045
|
+
unless ($et->Options('LargeFileSupport')) {
|
|
2046
|
+
$et->Warn('Possibly corrupt LIST_movi data');
|
|
2047
|
+
$et->Warn('Stopped parsing at large LIST_movi chunk (LargeFileSupport not set)');
|
|
2048
|
+
undef $err;
|
|
2049
|
+
last;
|
|
2050
|
+
}
|
|
2051
|
+
if ($et->Options('LargeFileSupport') eq '2') {
|
|
2052
|
+
$et->WarnOnce('Processing large chunk (LargeFileSupport is 2)');
|
|
2053
|
+
}
|
|
2049
2054
|
}
|
|
2050
2055
|
if ($validate) {
|
|
2051
2056
|
# (must actually try to read something after seeking to detect error)
|
|
@@ -2159,10 +2164,15 @@ sub ProcessRIFF($$)
|
|
|
2159
2164
|
$moviEnd = $raf->Tell() + $len2;
|
|
2160
2165
|
next; # parse into movi chunk
|
|
2161
2166
|
} elsif (not $rewind) {
|
|
2162
|
-
if ($len > 0x7fffffff
|
|
2163
|
-
|
|
2164
|
-
|
|
2165
|
-
|
|
2167
|
+
if ($len > 0x7fffffff) {
|
|
2168
|
+
unless ($et->Options('LargeFileSupport')) {
|
|
2169
|
+
$tag =~ s/([\0-\x1f\x7f-\xff])/sprintf('\\x%.2x',ord $1)/eg;
|
|
2170
|
+
$et->Warn("Stopped parsing at large $tag chunk (LargeFileSupport not set)");
|
|
2171
|
+
last;
|
|
2172
|
+
}
|
|
2173
|
+
if ($et->Options('LargeFileSupport') eq '2') {
|
|
2174
|
+
$et->WarnOnce('Processing large chunk (LargeFileSupport is 2)');
|
|
2175
|
+
}
|
|
2166
2176
|
}
|
|
2167
2177
|
if ($validate and $len2) {
|
|
2168
2178
|
# (must actually try to read something after seeking to detect error)
|
|
@@ -979,6 +979,7 @@ my %formatMinMax = (
|
|
|
979
979
|
# 0x0800 - unknown (29 bytes) (contains already-extracted EmbeddedAudioFileName)
|
|
980
980
|
# 0x0830-name - seen '1165724808.pre'
|
|
981
981
|
# 0x0830 - unknown (164004 bytes)
|
|
982
|
+
# 0x08c0-name - seen 'Auto_Enhance_Info' #forum16086
|
|
982
983
|
# 0x08d0-name - seen 'Interactive_Panorama_Info'
|
|
983
984
|
# 0x08d0 - unknown (7984 bytes)
|
|
984
985
|
# 0x08e0-name - seen 'Panorama_Shot_Info'
|
|
@@ -988,6 +989,8 @@ my %formatMinMax = (
|
|
|
988
989
|
# 0x0910 - string, seen 'Front_Cam_Selfie_Info'
|
|
989
990
|
# 0x09e0-name - seen 'Burst_Shot_Info'
|
|
990
991
|
# 0x09e0 - string, seen '489489125'
|
|
992
|
+
# 0x09e1-name - seen 'BurstShot_Best_Photo_Info' #forum16086
|
|
993
|
+
# 0x09f0-name - seen 'Pro_Mode_Info' #forum16086
|
|
991
994
|
# 0x0a01-name - seen 'Image_UTC_Data'
|
|
992
995
|
'0x0a01' => { #forum7161
|
|
993
996
|
Name => 'TimeStamp',
|
|
@@ -999,6 +1002,7 @@ my %formatMinMax = (
|
|
|
999
1002
|
'0x0a20' => { Name => 'DualCameraImage', Groups => { 2 => 'Preview' }, Binary => 1 },
|
|
1000
1003
|
'0x0a30-name' => 'EmbeddedVideoType', # ("MotionPhoto_Data")
|
|
1001
1004
|
'0x0a30' => { Name => 'EmbeddedVideoFile', Groups => { 2 => 'Video' }, Binary => 1 }, #forum7161
|
|
1005
|
+
# 0x0a41-name - seen 'BackupRestore_Data' #forum16086
|
|
1002
1006
|
# 0x0aa1-name - seen 'MCC_Data'
|
|
1003
1007
|
# 0x0aa1 - seen '204','222','234','302','429'
|
|
1004
1008
|
'0x0aa1' => {
|
|
@@ -1254,15 +1258,39 @@ my %formatMinMax = (
|
|
|
1254
1258
|
Name => 'DualShotExtra',
|
|
1255
1259
|
SubDirectory => { TagTable => 'Image::ExifTool::Samsung::DualShotExtra' },
|
|
1256
1260
|
},
|
|
1261
|
+
# 0x0ab4-name - seen 'DualShot_Core_Info' #forum16086
|
|
1257
1262
|
# 0x0ac0-name - seen 'ZoomInOut_Info' (SM-N950U)
|
|
1258
1263
|
# 0x0ac0 - 2048 bytes of interesting stuff including firmware version? (SM-N950U)
|
|
1264
|
+
# 0x0b30-name - seen 'Camera_Sticker_Info' #forum16086
|
|
1259
1265
|
'0x0b40' => { # (SM-N975X front camera)
|
|
1260
1266
|
Name => 'SingleShotMeta',
|
|
1261
1267
|
SubDirectory => { TagTable => 'Image::ExifTool::Samsung::SingleShotMeta' },
|
|
1262
1268
|
},
|
|
1263
1269
|
# 0x0b41-name - seen 'SingeShot_DepthMap_1' (Yes, "Singe") (SM-N975X front camera)
|
|
1264
1270
|
'0x0b41' => { Name => 'SingleShotDepthMap', Binary => 1 },
|
|
1265
|
-
#
|
|
1271
|
+
# 0x0b51-name - seen 'Intelligent_PhotoEditor_Data' #forum16086
|
|
1272
|
+
# 0x0b60-name - seen 'UltraWide_PhotoEditor_Data' #forum16086
|
|
1273
|
+
# 0x0b90-name - seen 'Document_Scan_Info' #forum16086
|
|
1274
|
+
# 0x0ba1-name - seen 'Original_Path_Hash_Key', 'PhotoEditor_Re_Edit_Data', 'deco_doodle_bitmap', 'deco_sticker_bitmap', 'deco_text_bitmap'
|
|
1275
|
+
# 0x0ba2-name - seen 'Copy_Available_Edit_Info' #forum16086
|
|
1276
|
+
# 0x0bc0-name - seen 'Single_Relighting_Bokeh_Info' #forum16086
|
|
1277
|
+
# 0x0bd0-name - seen 'Dual_Relighting_Bokeh_Info' #forum16086
|
|
1278
|
+
# 0x0be0-name - seen 'Livefocus_JDM_Info' #forum16086
|
|
1279
|
+
# 0x0bf0-name - seen 'Remaster_Info' #forum16086
|
|
1280
|
+
# 0x0c21-name - seen 'Portrait_Effect_Info' #forum16086
|
|
1281
|
+
# 0x0c51-name - seen 'Samsung_Capture_Info' #forum16086
|
|
1282
|
+
# 0x0c61-name - seen 'Camera_Capture_Mode_Info' #forum16086
|
|
1283
|
+
# 0x0c71-name - seen 'Pro_White_Balance_Info' #forum16086
|
|
1284
|
+
# 0x0c81-name - seen 'Watermark_Info' #forum16086
|
|
1285
|
+
# 0x0cc1-name - seen 'Color_Display_P3' #forum16086
|
|
1286
|
+
# 0x0cd2-name - seen 'Photo_HDR_Info' #forum16086
|
|
1287
|
+
# 0x0ce1-name - seen 'Gallery_DC_Data' #forum16086
|
|
1288
|
+
# 0x0d01-name - seen 'Camera_Scene_Info', 'Camera_Scene_Info2', 'Camera_Scene_Info3' #forum16086
|
|
1289
|
+
# 0x0d11-name - seen 'Video_Snapshot_Info' #forum16086
|
|
1290
|
+
# 0x0d21-name - seen 'Camera_Scene_Info' #forum16086
|
|
1291
|
+
# 0x0d31-name - seen 'Food_Blur_Effect_Info' #forum16086
|
|
1292
|
+
# 0x0d91-name - seen 'PEg_Info' #forum16086
|
|
1293
|
+
# 0x0da1-name - seen 'Captured_App_Info' #forum16086
|
|
1266
1294
|
# 0xa050-name - seen 'Jpeg360_2D_Info' (Samsung Gear 360)
|
|
1267
1295
|
# 0xa050 - seen 'Jpeg3602D' (Samsung Gear 360)
|
|
1268
1296
|
# 0x0c81-name - seen 'Watermark_Info'
|
|
@@ -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.
|
|
37
|
+
$VERSION = '3.69';
|
|
38
38
|
|
|
39
39
|
sub ProcessSRF($$$);
|
|
40
40
|
sub ProcessSR2($$$);
|
|
@@ -169,6 +169,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
169
169
|
32884 => 'Sony FE 70-200mm F4 Macro G OSS II', #JR
|
|
170
170
|
32885 => 'Sony FE 16-35mm F2.8 GM II', #JR
|
|
171
171
|
32886 => 'Sony FE 300mm F2.8 GM OSS', #JR
|
|
172
|
+
32887 => 'Sony E PZ 16-50mm F3.5-5.6 OSS II', #JR
|
|
172
173
|
|
|
173
174
|
# (comment this out so LensID will report the LensModel, which is more useful)
|
|
174
175
|
# 32952 => 'Metabones Canon EF Speed Booster Ultra', #JR (corresponds to 184, but 'Advanced' mode, LensMount reported as E-mount)
|
|
@@ -239,6 +240,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
239
240
|
49474.8 => 'Viltrox 50mm F1.8 FE', #JR
|
|
240
241
|
49474.9 => 'Viltrox 75mm F1.2 E', #JR
|
|
241
242
|
'49474.10' => 'Viltrox 20mm F2.8 FE', #JR
|
|
243
|
+
49475 => 'Tamron 50-300mm F4.5-6.3 Di III VC VXD', #JR (Model A069)
|
|
242
244
|
|
|
243
245
|
49712 => 'Tokina FiRIN 20mm F2 FE AF', # (firmware Ver.01)
|
|
244
246
|
49713 => 'Tokina FiRIN 100mm F2.8 FE MACRO', # (firmware Ver.01)
|
|
@@ -292,15 +294,18 @@ sub PrintInvLensSpec($;$$);
|
|
|
292
294
|
50540 => 'Sigma 14mm F1.4 DG DN | A', #JR (023)
|
|
293
295
|
50543 => 'Sigma 70-200mm F2.8 DG DN OS | S', #JR (023)
|
|
294
296
|
50544 => 'Sigma 23mm F1.4 DC DN | C', #JR (023)
|
|
297
|
+
50545 => 'Sigma 24-70mm F2.8 DG DN II | A', #JR (024)
|
|
295
298
|
50546 => 'Sigma 500mm F5.6 DG DN OS | S', #JR (024)
|
|
296
299
|
50547 => 'Sigma 10-18mm F2.8 DC DN | C', #JR (023)
|
|
297
300
|
50548 => 'Sigma 15mm F1.4 DG DN DIAGONAL FISHEYE | A', #JR (024)
|
|
301
|
+
50549 => 'Sigma 50mm F1.2 DG DN | A', #JR (024)
|
|
302
|
+
50551 => 'Sigma 28-45mm F1.8 DG DN | A', #JR (024)
|
|
298
303
|
|
|
299
304
|
50992 => 'Voigtlander SUPER WIDE-HELIAR 15mm F4.5 III', #JR
|
|
300
305
|
50993 => 'Voigtlander HELIAR-HYPER WIDE 10mm F5.6', #IB
|
|
301
306
|
50994 => 'Voigtlander ULTRA WIDE-HELIAR 12mm F5.6 III', #IB
|
|
302
307
|
50995 => 'Voigtlander MACRO APO-LANTHAR 65mm F2 Aspherical', #JR
|
|
303
|
-
50996 => 'Voigtlander NOKTON 40mm F1.2 Aspherical', #JR
|
|
308
|
+
50996 => 'Voigtlander NOKTON 40mm F1.2 Aspherical', #JR (also SE version)
|
|
304
309
|
50997 => 'Voigtlander NOKTON classic 35mm F1.4', #JR
|
|
305
310
|
50998 => 'Voigtlander MACRO APO-LANTHAR 110mm F2.5', #JR
|
|
306
311
|
50999 => 'Voigtlander COLOR-SKOPAR 21mm F3.5 Aspherical', #IB
|
|
@@ -309,6 +314,7 @@ sub PrintInvLensSpec($;$$);
|
|
|
309
314
|
51002 => 'Voigtlander APO-LANTHAR 50mm F2 Aspherical', #JR
|
|
310
315
|
51003 => 'Voigtlander NOKTON 35mm F1.2 Aspherical SE', #JR
|
|
311
316
|
51006 => 'Voigtlander APO-LANTHAR 35mm F2 Aspherical', #JR
|
|
317
|
+
51007 => 'Voigtlander NOKTON 50mm F1 Aspherical', #JR
|
|
312
318
|
|
|
313
319
|
# lenses listed in the Sigma MC-11 list, but not yet seen:
|
|
314
320
|
# 504xx => 'Sigma 18-200mm F3.5-6.3 DC MACRO OS HSM | C + MC-11', # (014)
|
|
@@ -330,6 +336,8 @@ sub PrintInvLensSpec($;$$);
|
|
|
330
336
|
51516 => 'Samyang AF 24-70mm F2.8', #JR
|
|
331
337
|
51517 => 'Samyang AF 50mm F1.4 II', #JR
|
|
332
338
|
51518 => 'Samyang AF 135mm F1.8', #JR
|
|
339
|
+
|
|
340
|
+
61569 => 'LAOWA FFII 10mm F2.8 C&D Dreamer', #JR
|
|
333
341
|
);
|
|
334
342
|
|
|
335
343
|
# ExposureProgram values (ref PH, mainly decoded from A200)
|
|
@@ -1713,7 +1721,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
1713
1721
|
},
|
|
1714
1722
|
},{
|
|
1715
1723
|
Name => 'Tag9050d',
|
|
1716
|
-
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ZV-E1)\b/',
|
|
1724
|
+
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR)|ZV-(E1|E10M2))\b/',
|
|
1717
1725
|
SubDirectory => {
|
|
1718
1726
|
TagTable => 'Image::ExifTool::Sony::Tag9050d',
|
|
1719
1727
|
ByteOrder => 'LittleEndian',
|
|
@@ -1975,7 +1983,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
1975
1983
|
},
|
|
1976
1984
|
0x940c => [{
|
|
1977
1985
|
Name => 'Tag940c',
|
|
1978
|
-
Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar|ZV-E10|ZV-E1)\b/',
|
|
1986
|
+
Condition => '$$self{Model} =~ /^(NEX-|ILCE-|ILME-|Lunar|ZV-E10|ZV-E10M2|ZV-E1)\b/',
|
|
1979
1987
|
SubDirectory => { TagTable => 'Image::ExifTool::Sony::Tag940c' },
|
|
1980
1988
|
},{
|
|
1981
1989
|
Name => 'Sony_0x940c',
|
|
@@ -2151,6 +2159,8 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
|
2151
2159
|
395 => 'ZV-1M2', #JR
|
|
2152
2160
|
396 => 'ILCE-7CR', #JR
|
|
2153
2161
|
397 => 'ILCE-7CM2', #JR
|
|
2162
|
+
398 => 'ILX-LR1', #JR
|
|
2163
|
+
399 => 'ZV-E10M2', #JR
|
|
2154
2164
|
},
|
|
2155
2165
|
},
|
|
2156
2166
|
0xb020 => { #2
|
|
@@ -8201,7 +8211,7 @@ my %isoSetting2010 = (
|
|
|
8201
8211
|
# number of mechanical shutter actuations, does not increase during electronic shutter / Silent Shooting
|
|
8202
8212
|
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR))/',
|
|
8203
8213
|
Format => 'int32u',
|
|
8204
|
-
Notes => 'total number of
|
|
8214
|
+
Notes => 'total number of mechanical shutter actuations',
|
|
8205
8215
|
RawConv => '$val & 0x00ffffff',
|
|
8206
8216
|
PrintConv => 'sprintf("%6d",$val)',
|
|
8207
8217
|
PrintConvInv => '$val',
|
|
@@ -8228,6 +8238,7 @@ my %isoSetting2010 = (
|
|
|
8228
8238
|
},
|
|
8229
8239
|
0x0038 => {
|
|
8230
8240
|
Name => 'InternalSerialNumber', #(NC)
|
|
8241
|
+
Condition => '$$self{Model} !~ /^(ZV-E10M2)/',
|
|
8231
8242
|
Format => 'int8u[6]',
|
|
8232
8243
|
PrintConv => 'unpack "H*", pack "C*", split " ", $val',
|
|
8233
8244
|
},
|
|
@@ -8459,7 +8470,7 @@ my %isoSetting2010 = (
|
|
|
8459
8470
|
},
|
|
8460
8471
|
0x002a => [{
|
|
8461
8472
|
Name => 'Quality2',
|
|
8462
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-E1)\b/',
|
|
8473
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
|
|
8463
8474
|
PrintConv => {
|
|
8464
8475
|
0 => 'JPEG',
|
|
8465
8476
|
1 => 'RAW',
|
|
@@ -8484,7 +8495,7 @@ my %isoSetting2010 = (
|
|
|
8484
8495
|
# },
|
|
8485
8496
|
0x0053 => {
|
|
8486
8497
|
Name => 'ModelReleaseYear',
|
|
8487
|
-
Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-E1)\b/',
|
|
8498
|
+
Condition => '$$self{Model} !~ /^(ILCE-(1|6700|7CM2|7CR|7M4|7RM5|7SM3|9M3)|ILME-(FX3|FX30)|ZV-(E1|E10M2))\b/',
|
|
8488
8499
|
Format => 'int8u',
|
|
8489
8500
|
PrintConv => 'sprintf("20%.2d", $val)',
|
|
8490
8501
|
},
|
|
@@ -9530,7 +9541,6 @@ my %isoSetting2010 = (
|
|
|
9530
9541
|
Name => 'FocusMode',
|
|
9531
9542
|
Condition => '$$self{Model} =~ /^ILCA-/',
|
|
9532
9543
|
Notes => 'ILCA models only',
|
|
9533
|
-
Writable => 'int8u',
|
|
9534
9544
|
Priority => 0,
|
|
9535
9545
|
PrintConv => {
|
|
9536
9546
|
0 => 'Manual',
|
|
@@ -9855,7 +9865,7 @@ my %isoSetting2010 = (
|
|
|
9855
9865
|
WRITE_PROC => \&WriteEnciphered,
|
|
9856
9866
|
CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
|
|
9857
9867
|
FORMAT => 'int8u',
|
|
9858
|
-
NOTES => 'Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1.',
|
|
9868
|
+
NOTES => 'Valid for the ILCE-1/6700/7CM2/7CR/7M4/7RM5/7SM3/9M3, ILME-FX3/FX30, ZV-E1/E10M2.',
|
|
9859
9869
|
FIRST_ENTRY => 0,
|
|
9860
9870
|
GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
|
|
9861
9871
|
0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
|
|
@@ -10018,7 +10028,7 @@ my %isoSetting2010 = (
|
|
|
10018
10028
|
},
|
|
10019
10029
|
0x089d => { # Note: 32 values for these newer models, and 32 non-zero values present for new lenses like SEL2470GM2 and SEL2070G
|
|
10020
10030
|
Name => 'VignettingCorrParams',
|
|
10021
|
-
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-E1)\b/',
|
|
10031
|
+
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
|
|
10022
10032
|
Format => 'int16s[32]',
|
|
10023
10033
|
},
|
|
10024
10034
|
0x08b5 => {
|
|
@@ -10057,7 +10067,7 @@ my %isoSetting2010 = (
|
|
|
10057
10067
|
},
|
|
10058
10068
|
0x0945 => {
|
|
10059
10069
|
Name => 'ChromaticAberrationCorrParams',
|
|
10060
|
-
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-E1)\b/',
|
|
10070
|
+
Condition => '$$self{Model} =~ /^(ILCE-(6700|7CM2|7CR|7RM5)|ILME-FX30|ZV-(E1|E10M2))\b/',
|
|
10061
10071
|
Format => 'int16s[32]',
|
|
10062
10072
|
},
|
|
10063
10073
|
);
|