exiftool_vendored 12.08.0 → 12.09.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +30 -1
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +43 -43
- data/bin/exiftool +47 -46
- data/bin/lib/Image/ExifTool.pm +4 -2
- data/bin/lib/Image/ExifTool.pod +50 -44
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +9 -4
- data/bin/lib/Image/ExifTool/Canon.pm +166 -5
- data/bin/lib/Image/ExifTool/DarwinCore.pm +7 -5
- data/bin/lib/Image/ExifTool/GIF.pm +2 -2
- data/bin/lib/Image/ExifTool/GoPro.pm +1 -9
- data/bin/lib/Image/ExifTool/JSON.pm +27 -4
- data/bin/lib/Image/ExifTool/Matroska.pm +3 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +2 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -0
- data/bin/lib/Image/ExifTool/QuickTime.pm +26 -6
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +50 -37
- data/bin/lib/Image/ExifTool/README +5 -2
- data/bin/lib/Image/ExifTool/Radiance.pm +7 -2
- data/bin/lib/Image/ExifTool/Sony.pm +2 -7
- data/bin/lib/Image/ExifTool/TagLookup.pm +5751 -5710
- data/bin/lib/Image/ExifTool/TagNames.pod +191 -11
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +3 -3
- data/bin/lib/Image/ExifTool/XMP.pm +62 -17
- data/bin/perl-Image-ExifTool.spec +42 -42
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
|
|
35
35
|
use Image::ExifTool::Validate;
|
36
36
|
use Image::ExifTool::MacOS;
|
37
37
|
|
38
|
-
$VERSION = '3.
|
38
|
+
$VERSION = '3.39';
|
39
39
|
@ISA = qw(Exporter);
|
40
40
|
|
41
41
|
sub NumbersFirst($$);
|
@@ -1029,9 +1029,14 @@ TagID: foreach $tagID (@keys) {
|
|
1029
1029
|
$note =~ s/(^[ \t]+|[ \t]+$)//mg;
|
1030
1030
|
push @values, "($note)";
|
1031
1031
|
}
|
1032
|
-
if ($isXMP and lc $tagID ne lc $name) {
|
1033
|
-
|
1034
|
-
|
1032
|
+
if ($isXMP and (lc $tagID ne lc $name or $$tagInfo{NotFlat})) {
|
1033
|
+
my $note;
|
1034
|
+
if ($$tagInfo{NotFlat}) {
|
1035
|
+
$note = 'NOT a flattened tag!';
|
1036
|
+
} else {
|
1037
|
+
# add note about different XMP Tag ID
|
1038
|
+
$note = $$tagInfo{RootTagInfo} ? $tagID : "called $tagID by the spec";
|
1039
|
+
}
|
1035
1040
|
if ($$tagInfo{Notes}) {
|
1036
1041
|
$values[-1] =~ s/^\(/($note; /;
|
1037
1042
|
} else {
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.40';
|
92
92
|
|
93
93
|
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
|
94
94
|
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
|
@@ -487,8 +487,9 @@ $VERSION = '4.39';
|
|
487
487
|
368.7 => 'Sigma 85mm f/1.4 DG HSM | A', #IB (016)
|
488
488
|
368.8 => 'Sigma 105mm f/1.4 DG HSM', #IB (A018)
|
489
489
|
368.9 => 'Sigma 14-24mm f/2.8 DG HSM', #IB (A018)
|
490
|
-
|
491
|
-
'368.
|
490
|
+
'368.10' => 'Sigma 35mm f/1.4 DG HSM | A', #PH (012)
|
491
|
+
'368.11' => 'Sigma 70mm f/2.8 DG Macro', #IB (A018)
|
492
|
+
'368.12' => 'Sigma 18-35mm f/1.8 DC HSM | A', #50
|
492
493
|
# Note: LensType 488 (0x1e8) is reported as 232 (0xe8) in 7D CameraSettings
|
493
494
|
488 => 'Canon EF-S 15-85mm f/3.5-5.6 IS USM', #PH
|
494
495
|
489 => 'Canon EF 70-300mm f/4-5.6L IS USM', #Gerald Kapounek
|
@@ -932,6 +933,7 @@ $VERSION = '4.39';
|
|
932
933
|
0x80000406 => 'EOS 6D Mark II', #IB/42
|
933
934
|
0x80000408 => 'EOS 77D / 9000D',
|
934
935
|
0x80000417 => 'EOS Rebel SL2 / 200D / Kiss X9', #IB/42
|
936
|
+
0x80000421 => 'EOS R5', #PH
|
935
937
|
0x80000422 => 'EOS Rebel T100 / 4000D / 3000D', #IB (3000D in China; Kiss? - PH)
|
936
938
|
0x80000424 => 'EOS R', #IB
|
937
939
|
0x80000428 => 'EOS-1D X Mark III', #IB
|
@@ -940,6 +942,7 @@ $VERSION = '4.39';
|
|
940
942
|
0x80000435 => 'EOS Rebel T8i / 850D / X10i', #JR/PH
|
941
943
|
0x80000436 => 'EOS SL3 / 250D / Kiss X10', #25
|
942
944
|
0x80000437 => 'EOS 90D', #IB
|
945
|
+
0x80000453 => 'EOS R6', #PH
|
943
946
|
0x80000520 => 'EOS D2000C', #IB
|
944
947
|
0x80000560 => 'EOS D6000C', #PH (guess)
|
945
948
|
);
|
@@ -1896,6 +1899,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
1896
1899
|
Name => 'ColorData9',
|
1897
1900
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData9' },
|
1898
1901
|
},
|
1902
|
+
{ # (int16u[3656]) - R5/R6 ref PH
|
1903
|
+
Condition => '$count == 3656',
|
1904
|
+
Name => 'ColorData10',
|
1905
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorData10' },
|
1906
|
+
},
|
1899
1907
|
{
|
1900
1908
|
Name => 'ColorDataUnknown',
|
1901
1909
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorDataUnknown' },
|
@@ -5675,6 +5683,13 @@ my %ciMaxFocal = (
|
|
5675
5683
|
ValueConv => 'unpack("H*",$val)',
|
5676
5684
|
ValueConvInv => 'length($val) < 10 and $val = 0 x (10-length($val)) . $val; pack("H*",$val)',
|
5677
5685
|
},
|
5686
|
+
0x5c1 => {
|
5687
|
+
Name => 'FirmwareVersion',
|
5688
|
+
Format => 'string[6]',
|
5689
|
+
Writable => 0,
|
5690
|
+
Condition => '$$valPt =~ /^\d\.\d\.\d\0/',
|
5691
|
+
Notes => 'M50', # (firmware 1.0.0)
|
5692
|
+
},
|
5678
5693
|
);
|
5679
5694
|
|
5680
5695
|
# Picture Style information for various cameras (ref 48)
|
@@ -8062,7 +8077,6 @@ my %ciMaxFocal = (
|
|
8062
8077
|
0x149 => { #IB
|
8063
8078
|
Name => 'PerChannelBlackLevel',
|
8064
8079
|
Format => 'int16u[4]',
|
8065
|
-
Notes => '1300D',
|
8066
8080
|
},
|
8067
8081
|
# 0x318 - PerChannelBlackLevel again (ref IB)
|
8068
8082
|
0x31c => { #IB
|
@@ -8080,6 +8094,126 @@ my %ciMaxFocal = (
|
|
8080
8094
|
},
|
8081
8095
|
);
|
8082
8096
|
|
8097
|
+
# Color data (MakerNotes tag 0x4001, count=3656) (same as ColorData9 but shifted up by 0x0e, ref PH)
|
8098
|
+
%Image::ExifTool::Canon::ColorData10 = (
|
8099
|
+
%binaryDataAttrs,
|
8100
|
+
FORMAT => 'int16s',
|
8101
|
+
FIRST_ENTRY => 0,
|
8102
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
8103
|
+
DATAMEMBER => [ 0 ],
|
8104
|
+
IS_SUBDIR => [ 0x118 ],
|
8105
|
+
0x00 => {
|
8106
|
+
Name => 'ColorDataVersion',
|
8107
|
+
DataMember => 'ColorDataVersion',
|
8108
|
+
RawConv => '$$self{ColorDataVersion} = $val',
|
8109
|
+
PrintConv => {
|
8110
|
+
33 => '33 (R5/R6)',
|
8111
|
+
},
|
8112
|
+
},
|
8113
|
+
0x55 => { Name => 'WB_RGGBLevelsAsShot', Format => 'int16s[4]' },
|
8114
|
+
0x59 => 'ColorTempAsShot',
|
8115
|
+
0x5a => { Name => 'WB_RGGBLevelsAuto', Format => 'int16s[4]' },
|
8116
|
+
0x5e => 'ColorTempAuto',
|
8117
|
+
0x5f => { Name => 'WB_RGGBLevelsMeasured', Format => 'int16s[4]' },
|
8118
|
+
0x63 => 'ColorTempMeasured',
|
8119
|
+
0x64 => { Name => 'WB_RGGBLevelsUnknown', Format => 'int16s[4]', Unknown => 1 },
|
8120
|
+
0x68 => { Name => 'ColorTempUnknown', Unknown => 1 },
|
8121
|
+
0x69 => { Name => 'WB_RGGBLevelsUnknown2', Format => 'int16s[4]', Unknown => 1 },
|
8122
|
+
0x6d => { Name => 'ColorTempUnknown2', Unknown => 1 },
|
8123
|
+
0x6e => { Name => 'WB_RGGBLevelsUnknown3', Format => 'int16s[4]', Unknown => 1 },
|
8124
|
+
0x72 => { Name => 'ColorTempUnknown3', Unknown => 1 },
|
8125
|
+
0x73 => { Name => 'WB_RGGBLevelsUnknown4', Format => 'int16s[4]', Unknown => 1 },
|
8126
|
+
0x77 => { Name => 'ColorTempUnknown4', Unknown => 1 },
|
8127
|
+
0x78 => { Name => 'WB_RGGBLevelsUnknown5', Format => 'int16s[4]', Unknown => 1 },
|
8128
|
+
0x7c => { Name => 'ColorTempUnknown5', Unknown => 1 },
|
8129
|
+
0x7d => { Name => 'WB_RGGBLevelsUnknown6', Format => 'int16s[4]', Unknown => 1 },
|
8130
|
+
0x81 => { Name => 'ColorTempUnknown6', Unknown => 1 },
|
8131
|
+
0x82 => { Name => 'WB_RGGBLevelsUnknown7', Format => 'int16s[4]', Unknown => 1 },
|
8132
|
+
0x86 => { Name => 'ColorTempUnknown7', Unknown => 1 },
|
8133
|
+
0x87 => { Name => 'WB_RGGBLevelsUnknown8', Format => 'int16s[4]', Unknown => 1 },
|
8134
|
+
0x8b => { Name => 'ColorTempUnknown8', Unknown => 1 },
|
8135
|
+
0x8c => { Name => 'WB_RGGBLevelsUnknown9', Format => 'int16s[4]', Unknown => 1 },
|
8136
|
+
0x90 => { Name => 'ColorTempUnknown9', Unknown => 1 },
|
8137
|
+
0x91 => { Name => 'WB_RGGBLevelsUnknown10', Format => 'int16s[4]', Unknown => 1 },
|
8138
|
+
0x95 => { Name => 'ColorTempUnknown10', Unknown => 1 },
|
8139
|
+
0x96 => { Name => 'WB_RGGBLevelsDaylight', Format => 'int16s[4]' },
|
8140
|
+
0x9a => 'ColorTempDaylight',
|
8141
|
+
0x9b => { Name => 'WB_RGGBLevelsShade', Format => 'int16s[4]' },
|
8142
|
+
0x9f => 'ColorTempShade',
|
8143
|
+
0xa0 => { Name => 'WB_RGGBLevelsCloudy', Format => 'int16s[4]' },
|
8144
|
+
0xa4 => 'ColorTempCloudy',
|
8145
|
+
0xa5 => { Name => 'WB_RGGBLevelsTungsten', Format => 'int16s[4]' },
|
8146
|
+
0xa9 => 'ColorTempTungsten',
|
8147
|
+
0xaa => { Name => 'WB_RGGBLevelsFluorescent',Format => 'int16s[4]' },
|
8148
|
+
0xae => 'ColorTempFluorescent',
|
8149
|
+
0xaf => { Name => 'WB_RGGBLevelsKelvin', Format => 'int16s[4]' },
|
8150
|
+
0xb3 => 'ColorTempKelvin',
|
8151
|
+
0xb4 => { Name => 'WB_RGGBLevelsFlash', Format => 'int16s[4]' },
|
8152
|
+
0xb8 => 'ColorTempFlash',
|
8153
|
+
0xb9 => { Name => 'WB_RGGBLevelsUnknown11', Format => 'int16s[4]', Unknown => 1 },
|
8154
|
+
0xbd => { Name => 'ColorTempUnknown11', Unknown => 1 },
|
8155
|
+
0xbe => { Name => 'WB_RGGBLevelsUnknown12', Format => 'int16s[4]', Unknown => 1 },
|
8156
|
+
0xc2 => { Name => 'ColorTempUnknown12', Unknown => 1 },
|
8157
|
+
0xc3 => { Name => 'WB_RGGBLevelsUnknown13', Format => 'int16s[4]', Unknown => 1 },
|
8158
|
+
0xc7 => { Name => 'ColorTempUnknown13', Unknown => 1 },
|
8159
|
+
0xc8 => { Name => 'WB_RGGBLevelsUnknown14', Format => 'int16s[4]', Unknown => 1 },
|
8160
|
+
0xcc => { Name => 'ColorTempUnknown14', Unknown => 1 },
|
8161
|
+
0xcd => { Name => 'WB_RGGBLevelsUnknown15', Format => 'int16s[4]', Unknown => 1 },
|
8162
|
+
0xd1 => { Name => 'ColorTempUnknown15', Unknown => 1 },
|
8163
|
+
0xd2 => { Name => 'WB_RGGBLevelsUnknown16', Format => 'int16s[4]', Unknown => 1 },
|
8164
|
+
0xd6 => { Name => 'ColorTempUnknown16', Unknown => 1 },
|
8165
|
+
0xd7 => { Name => 'WB_RGGBLevelsUnknown17', Format => 'int16s[4]', Unknown => 1 },
|
8166
|
+
0xdb => { Name => 'ColorTempUnknown17', Unknown => 1 },
|
8167
|
+
0xdc => { Name => 'WB_RGGBLevelsUnknown18', Format => 'int16s[4]', Unknown => 1 },
|
8168
|
+
0xe0 => { Name => 'ColorTempUnknown18', Unknown => 1 },
|
8169
|
+
0xe1 => { Name => 'WB_RGGBLevelsUnknown19', Format => 'int16s[4]', Unknown => 1 },
|
8170
|
+
0xe5 => { Name => 'ColorTempUnknown19', Unknown => 1 },
|
8171
|
+
0xe6 => { Name => 'WB_RGGBLevelsUnknown20', Format => 'int16s[4]', Unknown => 1 },
|
8172
|
+
0xea => { Name => 'ColorTempUnknown20', Unknown => 1 },
|
8173
|
+
0xeb => { Name => 'WB_RGGBLevelsUnknown21', Format => 'int16s[4]', Unknown => 1 },
|
8174
|
+
0xef => { Name => 'ColorTempUnknown21', Unknown => 1 },
|
8175
|
+
0xf0 => { Name => 'WB_RGGBLevelsUnknown22', Format => 'int16s[4]', Unknown => 1 },
|
8176
|
+
0xf4 => { Name => 'ColorTempUnknown22', Unknown => 1 },
|
8177
|
+
0xf5 => { Name => 'WB_RGGBLevelsUnknown23', Format => 'int16s[4]', Unknown => 1 },
|
8178
|
+
0xf9 => { Name => 'ColorTempUnknown23', Unknown => 1 },
|
8179
|
+
0xfa => { Name => 'WB_RGGBLevelsUnknown24', Format => 'int16s[4]', Unknown => 1 },
|
8180
|
+
0xfe => { Name => 'ColorTempUnknown24', Unknown => 1 },
|
8181
|
+
0xff => { Name => 'WB_RGGBLevelsUnknown25', Format => 'int16s[4]', Unknown => 1 },
|
8182
|
+
0x103=> { Name => 'ColorTempUnknown25', Unknown => 1 },
|
8183
|
+
0x104=> { Name => 'WB_RGGBLevelsUnknown26', Format => 'int16s[4]', Unknown => 1 },
|
8184
|
+
0x108=> { Name => 'ColorTempUnknown26', Unknown => 1 },
|
8185
|
+
0x109=> { Name => 'WB_RGGBLevelsUnknown27', Format => 'int16s[4]', Unknown => 1 },
|
8186
|
+
0x10d=> { Name => 'ColorTempUnknown27', Unknown => 1 },
|
8187
|
+
0x10e=> { Name => 'WB_RGGBLevelsUnknown28', Format => 'int16s[4]', Unknown => 1 },
|
8188
|
+
0x112=> { Name => 'ColorTempUnknown28', Unknown => 1 },
|
8189
|
+
0x113=> { Name => 'WB_RGGBLevelsUnknown29', Format => 'int16s[4]', Unknown => 1 },
|
8190
|
+
0x117=> { Name => 'ColorTempUnknown29', Unknown => 1 },
|
8191
|
+
0x118 => {
|
8192
|
+
Name => 'ColorCalib',
|
8193
|
+
Format => 'undef[120]',
|
8194
|
+
Unknown => 1,
|
8195
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::ColorCalib' }
|
8196
|
+
},
|
8197
|
+
0x157 => {
|
8198
|
+
Name => 'PerChannelBlackLevel',
|
8199
|
+
Format => 'int16u[4]',
|
8200
|
+
},
|
8201
|
+
# 0x326 - PerChannelBlackLevel again
|
8202
|
+
0x32a => {
|
8203
|
+
Name => 'NormalWhiteLevel',
|
8204
|
+
Format => 'int16u',
|
8205
|
+
RawConv => '$val || undef',
|
8206
|
+
},
|
8207
|
+
0x32b => {
|
8208
|
+
Name => 'SpecularWhiteLevel',
|
8209
|
+
Format => 'int16u',
|
8210
|
+
},
|
8211
|
+
0x32c => {
|
8212
|
+
Name => 'LinearityUpperMargin',
|
8213
|
+
Format => 'int16u',
|
8214
|
+
},
|
8215
|
+
);
|
8216
|
+
|
8083
8217
|
# Unknown color data (MakerNotes tag 0x4001)
|
8084
8218
|
%Image::ExifTool::Canon::ColorDataUnknown = (
|
8085
8219
|
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
@@ -8588,7 +8722,7 @@ my %filterConv = (
|
|
8588
8722
|
Name => 'MakerNoteCanon',
|
8589
8723
|
SubDirectory => {
|
8590
8724
|
TagTable => 'Image::ExifTool::Canon::Main',
|
8591
|
-
ProcessProc => \&
|
8725
|
+
ProcessProc => \&ProcessCMT3,
|
8592
8726
|
WriteProc => \&Image::ExifTool::WriteTIFF,
|
8593
8727
|
},
|
8594
8728
|
},
|
@@ -9534,6 +9668,33 @@ sub CanonEvInv($)
|
|
9534
9668
|
return $sign * ($val * 0x20 + $frac);
|
9535
9669
|
}
|
9536
9670
|
|
9671
|
+
#------------------------------------------------------------------------------
|
9672
|
+
# Read CMT3 maker notes from CR3 file
|
9673
|
+
# Inputs: 0) ExifTool object reference, 1) dirInfo ref, 2) tag table ref
|
9674
|
+
# Returns: data block (may be empty if no Exif data) or undef on error
|
9675
|
+
sub ProcessCMT3($$$)
|
9676
|
+
{
|
9677
|
+
my ($et, $dirInfo, $tagTablePtr) = @_;
|
9678
|
+
|
9679
|
+
# extract the static maker notes to copying to other file types if requested
|
9680
|
+
# Note: this won't copy makernotes in the timed metadata since these are stored
|
9681
|
+
# separately, but the only records they have that aren't in the static maker notes
|
9682
|
+
# (for the M50) are: ColorData9, Flavor, CanonCameraInfoUnknown,
|
9683
|
+
# VignettingCorrUnknown1, Canon_0x4033 and Canon_0x402e
|
9684
|
+
if (($et->Options('MakerNotes') or $$et{REQ_TAG_LOOKUP}{makernotecanon}) and
|
9685
|
+
$$dirInfo{DirLen} > 8)
|
9686
|
+
{
|
9687
|
+
my $dataPt = $$dirInfo{DataPt};
|
9688
|
+
# remove old (unused) trailer
|
9689
|
+
$$dataPt =~ s/(II\x2a\0|MM\0\x2a)\0{4,10}$//;
|
9690
|
+
# remove TIFF header and append as the Canon makernote trailer
|
9691
|
+
# (so offsets will be interpreted correctly)
|
9692
|
+
my $val = substr($$dataPt,8) . substr($$dataPt,0,8);
|
9693
|
+
$et->FoundTag($Image::ExifTool::Canon::uuid{CMT3}, \$val);
|
9694
|
+
}
|
9695
|
+
return $et->ProcessTIFF($dirInfo, $tagTablePtr);
|
9696
|
+
}
|
9697
|
+
|
9537
9698
|
#------------------------------------------------------------------------------
|
9538
9699
|
# Process CTMD EXIF information
|
9539
9700
|
# Inputs: 0) ExifTool object ref, 1) dirInfo ref, 2) tag table ref
|
@@ -15,7 +15,7 @@ use strict;
|
|
15
15
|
use vars qw($VERSION);
|
16
16
|
use Image::ExifTool::XMP;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.05';
|
19
19
|
|
20
20
|
my %dateTimeInfo = (
|
21
21
|
# NOTE: Do NOT put "Groups" here because Groups hash must not be common!
|
@@ -52,10 +52,12 @@ my %event = (
|
|
52
52
|
my $v = $self->InverseDateTime($val,undef,1);
|
53
53
|
undef $Image::ExifTool::evalWarning;
|
54
54
|
return $v if $v;
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
return
|
55
|
+
# allow time-only values by adding dummy date (thanks Herb)
|
56
|
+
my $v = $self->InverseDateTime("2000:01:01 $val",undef,1);
|
57
|
+
undef $Image::ExifTool::evalWarning;
|
58
|
+
return $v if $v and $v =~ s/.* //; # strip off dummy date
|
59
|
+
$Image::ExifTool::evalWarning = 'Invalid date/time or time-only value (use HH:MM:SS[.ss][+/-HH:MM|Z])';
|
60
|
+
return undef;
|
59
61
|
},
|
60
62
|
},
|
61
63
|
fieldNotes => { },
|
@@ -20,7 +20,7 @@ use strict;
|
|
20
20
|
use vars qw($VERSION);
|
21
21
|
use Image::ExifTool qw(:DataAccess :Utils);
|
22
22
|
|
23
|
-
$VERSION = '1.
|
23
|
+
$VERSION = '1.18';
|
24
24
|
|
25
25
|
# road map of directory locations in GIF images
|
26
26
|
my %gifMap = (
|
@@ -116,7 +116,7 @@ my %gifMap = (
|
|
116
116
|
},
|
117
117
|
5 => 'BackgroundColor',
|
118
118
|
6 => {
|
119
|
-
Name => '
|
119
|
+
Name => 'PixelAspectRatio',
|
120
120
|
RawConv => '$val ? $val : undef',
|
121
121
|
ValueConv => '($val + 15) / 64',
|
122
122
|
},
|
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
16
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
17
17
|
use Image::ExifTool::QuickTime;
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.06';
|
20
20
|
|
21
21
|
sub ProcessGoPro($$$);
|
22
22
|
sub ProcessString($$$);
|
@@ -627,14 +627,6 @@ sub ProcessGoPro($$$)
|
|
627
627
|
my $unknown = $verbose || $et->Options('Unknown');
|
628
628
|
my ($size, $type, $unit, $scal, $setGroup0);
|
629
629
|
|
630
|
-
# the Rove Stealth 4K writes encrypted text here, so check for this first
|
631
|
-
# (really should check for this before loading GoPro module, but I was lazy) PHIL
|
632
|
-
if ($$dataPt =~ /^\0\0\xf2\xe1\xf0\xeeTT/) {
|
633
|
-
$et->VerboseDir('gpmd encrypted text', undef, length($$dataPt));
|
634
|
-
my $strmTbl = GetTagTable('Image::ExifTool::QuickTime::Stream');
|
635
|
-
Image::ExifTool::QuickTime::Process_text($et, $strmTbl, $dataPt);
|
636
|
-
return 1;
|
637
|
-
}
|
638
630
|
$et->VerboseDir($$dirInfo{DirName} || 'GPMF', undef, $dirEnd-$pos) if $verbose;
|
639
631
|
if ($pos) {
|
640
632
|
my $parent = $$dirInfo{Parent};
|
@@ -14,16 +14,33 @@ use vars qw($VERSION);
|
|
14
14
|
use Image::ExifTool qw(:DataAccess :Utils);
|
15
15
|
use Image::ExifTool::Import;
|
16
16
|
|
17
|
-
$VERSION = '1.
|
17
|
+
$VERSION = '1.02';
|
18
18
|
|
19
19
|
sub ProcessTag($$$$%);
|
20
20
|
|
21
21
|
%Image::ExifTool::JSON::Main = (
|
22
22
|
GROUPS => { 0 => 'JSON', 1 => 'JSON', 2 => 'Other' },
|
23
|
+
VARS => { NO_ID => 1 },
|
23
24
|
NOTES => q{
|
24
|
-
|
25
|
-
tags from basic
|
25
|
+
Other than a few tags in the table below, JSON tags have not been
|
26
|
+
pre-defined. However, ExifTool will read any existing tags from basic
|
27
|
+
JSON-formatted files.
|
26
28
|
},
|
29
|
+
# ON1 settings tags
|
30
|
+
ON1_SettingsData => {
|
31
|
+
RawConv => q{
|
32
|
+
require Image::ExifTool::XMP;
|
33
|
+
$val = Image::ExifTool::XMP::DecodeBase64($val);
|
34
|
+
},
|
35
|
+
SubDirectory => { TagTable => 'Image::ExifTool::PLIST::Main' },
|
36
|
+
},
|
37
|
+
ON1_SettingsMetadataCreated => { Groups => { 2 => 'Time' } },
|
38
|
+
ON1_SettingsMetadataModified => { Groups => { 2 => 'Time' } },
|
39
|
+
ON1_SettingsMetadataName => { },
|
40
|
+
ON1_SettingsMetadataPluginID => { },
|
41
|
+
ON1_SettingsMetadataTimestamp => { Groups => { 2 => 'Time' } },
|
42
|
+
ON1_SettingsMetadataUsage => { },
|
43
|
+
ON1_SettingsMetadataVisibleToUser=>{ },
|
27
44
|
);
|
28
45
|
|
29
46
|
#------------------------------------------------------------------------------
|
@@ -33,12 +50,18 @@ sub FoundTag($$$$%)
|
|
33
50
|
{
|
34
51
|
my ($et, $tagTablePtr, $tag, $val, %flags) = @_;
|
35
52
|
|
53
|
+
# special case to reformat ON1 tag names
|
54
|
+
if ($tag =~ s/^settings\w{8}-\w{4}-\w{4}-\w{4}-\w{12}(Data|Metadata.+)$/ON1_Settings$1/) {
|
55
|
+
$et->OverrideFileType('ONP','application/on1') if $$et{FILE_TYPE} eq 'JSON';
|
56
|
+
}
|
57
|
+
|
36
58
|
# avoid conflict with special table entries
|
37
59
|
$tag .= '!' if $Image::ExifTool::specialTags{$tag};
|
38
60
|
|
39
61
|
AddTagToTable($tagTablePtr, $tag, {
|
40
62
|
Name => Image::ExifTool::MakeTagName($tag),
|
41
63
|
%flags,
|
64
|
+
Temporary => 1,
|
42
65
|
}) unless $$tagTablePtr{$tag};
|
43
66
|
|
44
67
|
$et->HandleTag($tagTablePtr, $tag, $val);
|
@@ -94,7 +117,7 @@ sub ProcessJSON($$)
|
|
94
117
|
|
95
118
|
# remove any old tag definitions in case they change flags
|
96
119
|
foreach $key (TagTableKeys($tagTablePtr)) {
|
97
|
-
delete $$tagTablePtr{$key};
|
120
|
+
delete $$tagTablePtr{$key} if $$tagTablePtr{$key}{Temporary};
|
98
121
|
}
|
99
122
|
|
100
123
|
# extract tags from JSON database
|
@@ -14,7 +14,7 @@ use strict;
|
|
14
14
|
use vars qw($VERSION);
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
|
17
|
-
$VERSION = '1.
|
17
|
+
$VERSION = '1.10';
|
18
18
|
|
19
19
|
my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
20
20
|
|
@@ -221,6 +221,8 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
|
|
221
221
|
},
|
222
222
|
0x2e => {
|
223
223
|
Name => 'TrackEntry',
|
224
|
+
# reset TrackType member at the start of each track
|
225
|
+
Condition => 'delete $$self{TrackType}; 1',
|
224
226
|
SubDirectory => { TagTable => 'Image::ExifTool::Matroska::Main' },
|
225
227
|
},
|
226
228
|
0x57 => { Name => 'TrackNumber', Format => 'unsigned' },
|
@@ -49,7 +49,7 @@ use vars qw($VERSION %minoltaLensTypes %minoltaTeleconverters %minoltaColorMode
|
|
49
49
|
use Image::ExifTool qw(:DataAccess :Utils);
|
50
50
|
use Image::ExifTool::Exif;
|
51
51
|
|
52
|
-
$VERSION = '2.
|
52
|
+
$VERSION = '2.87';
|
53
53
|
|
54
54
|
# Full list of product codes for Sony-compatible Minolta lenses
|
55
55
|
# (ref http://www.kb.sony.com/selfservice/documentLink.do?externalId=C1000570)
|
@@ -603,6 +603,7 @@ $VERSION = '2.86';
|
|
603
603
|
16 => 'Autumn Leaves', #JR (NC)
|
604
604
|
17 => 'Sepia', #JR
|
605
605
|
18 => 'FL', #JR (7SM3)
|
606
|
+
19 => 'Vivid 2', #JR (7SM3)
|
606
607
|
20 => 'IN', #JR (7SM3)
|
607
608
|
21 => 'SH', #JR (7SM3)
|
608
609
|
100 => 'Neutral', #JD
|
@@ -62,7 +62,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
62
62
|
use Image::ExifTool::Exif;
|
63
63
|
use Image::ExifTool::GPS;
|
64
64
|
|
65
|
-
$VERSION = '3.
|
65
|
+
$VERSION = '3.88';
|
66
66
|
|
67
67
|
sub LensIDConv($$$);
|
68
68
|
sub ProcessNikonAVI($$$);
|
@@ -4663,6 +4663,7 @@ my %nikonFocalConversions = (
|
|
4663
4663
|
18 => 'Nikkor Z 24-200mm f/4-6.3 VR', #IB
|
4664
4664
|
21 => 'Nikkor Z 50mm f/1.2 S', #IB
|
4665
4665
|
22 => 'Nikkor Z 24-50mm f/4-6.3', #IB
|
4666
|
+
23 => 'Nikkor Z 14-24mm f/2.8 S', #IB
|
4666
4667
|
},
|
4667
4668
|
},
|
4668
4669
|
0x36 => {
|