exiftool_vendored 11.97.0 → 12.09.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.
Potentially problematic release.
This version of exiftool_vendored might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/bin/Changes +196 -2
- data/bin/MANIFEST +8 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +43 -42
- data/bin/exiftool +150 -102
- data/bin/lib/Image/ExifTool.pm +162 -111
- data/bin/lib/Image/ExifTool.pod +123 -90
- data/bin/lib/Image/ExifTool/AIFF.pm +2 -2
- data/bin/lib/Image/ExifTool/APE.pm +2 -2
- data/bin/lib/Image/ExifTool/BuildTagLookup.pm +21 -10
- data/bin/lib/Image/ExifTool/Canon.pm +201 -14
- data/bin/lib/Image/ExifTool/CanonCustom.pm +82 -16
- data/bin/lib/Image/ExifTool/DPX.pm +56 -2
- data/bin/lib/Image/ExifTool/DarwinCore.pm +22 -3
- data/bin/lib/Image/ExifTool/EXE.pm +8 -5
- data/bin/lib/Image/ExifTool/Exif.pm +15 -6
- data/bin/lib/Image/ExifTool/Font.pm +9 -2
- data/bin/lib/Image/ExifTool/GIF.pm +6 -1
- data/bin/lib/Image/ExifTool/GeoTiff.pm +2 -0
- data/bin/lib/Image/ExifTool/Geotag.pm +2 -2
- data/bin/lib/Image/ExifTool/GoPro.pm +48 -22
- data/bin/lib/Image/ExifTool/H264.pm +1 -1
- data/bin/lib/Image/ExifTool/HtmlDump.pm +2 -2
- data/bin/lib/Image/ExifTool/ID3.pm +91 -12
- data/bin/lib/Image/ExifTool/IPTC.pm +1 -0
- data/bin/lib/Image/ExifTool/JSON.pm +27 -4
- data/bin/lib/Image/ExifTool/Lang/de.pm +3 -1
- data/bin/lib/Image/ExifTool/Lang/es.pm +1 -1
- data/bin/lib/Image/ExifTool/M2TS.pm +44 -24
- data/bin/lib/Image/ExifTool/MacOS.pm +152 -38
- data/bin/lib/Image/ExifTool/Matroska.pm +3 -1
- data/bin/lib/Image/ExifTool/Minolta.pm +7 -2
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +11 -10
- data/bin/lib/Image/ExifTool/Nikon.pm +163 -18
- data/bin/lib/Image/ExifTool/Olympus.pm +39 -17
- data/bin/lib/Image/ExifTool/PNG.pm +14 -3
- data/bin/lib/Image/ExifTool/PPM.pm +5 -5
- data/bin/lib/Image/ExifTool/Panasonic.pm +148 -14
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +34 -0
- data/bin/lib/Image/ExifTool/Parrot.pm +2 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +3 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +294 -34
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +419 -60
- data/bin/lib/Image/ExifTool/README +26 -22
- data/bin/lib/Image/ExifTool/RIFF.pm +15 -3
- data/bin/lib/Image/ExifTool/RSRC.pm +17 -11
- data/bin/lib/Image/ExifTool/RTF.pm +12 -7
- data/bin/lib/Image/ExifTool/Radiance.pm +7 -2
- data/bin/lib/Image/ExifTool/Ricoh.pm +19 -1
- data/bin/lib/Image/ExifTool/Shift.pl +1 -0
- data/bin/lib/Image/ExifTool/SigmaRaw.pm +40 -33
- data/bin/lib/Image/ExifTool/Sony.pm +420 -34
- data/bin/lib/Image/ExifTool/TagLookup.pm +5799 -5671
- data/bin/lib/Image/ExifTool/TagNames.pod +583 -95
- data/bin/lib/Image/ExifTool/Validate.pm +4 -4
- data/bin/lib/Image/ExifTool/WriteExif.pl +3 -2
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +26 -18
- data/bin/lib/Image/ExifTool/Writer.pl +44 -21
- data/bin/lib/Image/ExifTool/XMP.pm +99 -17
- data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
- data/bin/lib/Image/ExifTool/ZISRAW.pm +123 -0
- data/bin/perl-Image-ExifTool.spec +42 -41
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +8 -7
@@ -19,7 +19,7 @@ use Image::ExifTool qw(:DataAccess);
|
|
19
19
|
use Image::ExifTool::Canon;
|
20
20
|
use Image::ExifTool::Exif;
|
21
21
|
|
22
|
-
$VERSION = '1.
|
22
|
+
$VERSION = '1.57';
|
23
23
|
|
24
24
|
sub ProcessCanonCustom($$$);
|
25
25
|
sub ProcessCanonCustom2($$$);
|
@@ -1326,9 +1326,15 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
1326
1326
|
2 => 'Enable (ISO speed)',
|
1327
1327
|
},
|
1328
1328
|
},
|
1329
|
-
0x0109 => {
|
1329
|
+
0x0109 => [{ # (1DXmkIII)
|
1330
1330
|
Name => 'UsableShootingModes',
|
1331
|
-
|
1331
|
+
Condition => '$count == 1',
|
1332
|
+
Count => 1,
|
1333
|
+
PrintConv => 'sprintf("Flags 0x%x",$val)',
|
1334
|
+
PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
1335
|
+
},{
|
1336
|
+
Name => 'UsableShootingModes',
|
1337
|
+
Count => 2,
|
1332
1338
|
PrintConv => [
|
1333
1339
|
\%disableEnable,
|
1334
1340
|
'sprintf("Flags 0x%x",$val)', # (M, Tv, Av, P, Bulb)
|
@@ -1337,10 +1343,16 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
1337
1343
|
undef,
|
1338
1344
|
'$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
1339
1345
|
],
|
1340
|
-
},
|
1341
|
-
0x010a => {
|
1346
|
+
}],
|
1347
|
+
0x010a => [{ # (1DXmkIII)
|
1342
1348
|
Name => 'UsableMeteringModes',
|
1343
|
-
|
1349
|
+
Condition => '$count == 1',
|
1350
|
+
Count => 1,
|
1351
|
+
PrintConv => 'sprintf("Flags 0x%x",$val)',
|
1352
|
+
PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
1353
|
+
},{
|
1354
|
+
Name => 'UsableMeteringModes',
|
1355
|
+
Count => 2,
|
1344
1356
|
PrintConv => [
|
1345
1357
|
\%disableEnable,
|
1346
1358
|
'sprintf("Flags 0x%x",$val)', # (evaluative,partial,spot,center-weighted average)
|
@@ -1349,7 +1361,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
1349
1361
|
undef,
|
1350
1362
|
'$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
1351
1363
|
],
|
1352
|
-
},
|
1364
|
+
}],
|
1353
1365
|
0x010b => {
|
1354
1366
|
Name => 'ExposureModeInManual',
|
1355
1367
|
PrintConv => {
|
@@ -2066,7 +2078,27 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2066
2078
|
2 => 'Enable: Down with Set',
|
2067
2079
|
},
|
2068
2080
|
},
|
2069
|
-
0x0610 => {
|
2081
|
+
0x0610 => [{ # (1DXmkIII)
|
2082
|
+
Name => 'ContinuousShootingSpeed',
|
2083
|
+
Condition => '$count == 6',
|
2084
|
+
Count => 6,
|
2085
|
+
PrintConv => [
|
2086
|
+
\%disableEnable,
|
2087
|
+
'"Hi $val"',
|
2088
|
+
'"Cont $val"',
|
2089
|
+
'"Lo $val"',
|
2090
|
+
'"Soft $val"',
|
2091
|
+
'"Soft LS $val"',
|
2092
|
+
],
|
2093
|
+
PrintConvInv => [
|
2094
|
+
undef,
|
2095
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2096
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2097
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2098
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2099
|
+
'$val=~/(\d+)/ ? $1 : 0',
|
2100
|
+
],
|
2101
|
+
},{ # others
|
2070
2102
|
Name => 'ContinuousShootingSpeed',
|
2071
2103
|
Count => 3,
|
2072
2104
|
PrintConv => [
|
@@ -2079,7 +2111,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2079
2111
|
'$val=~/(\d+)/ ? $1 : 0',
|
2080
2112
|
'$val=~/(\d+)/ ? $1 : 0',
|
2081
2113
|
],
|
2082
|
-
},
|
2114
|
+
}],
|
2083
2115
|
0x0611 => {
|
2084
2116
|
Name => 'ContinuousShotLimit',
|
2085
2117
|
Count => 2,
|
@@ -2092,9 +2124,15 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2092
2124
|
'$val=~/(\d+)/ ? $1 : 0',
|
2093
2125
|
],
|
2094
2126
|
},
|
2095
|
-
0x0612 => { # (
|
2127
|
+
0x0612 => [{ # (1DXmkIII)
|
2128
|
+
Name => 'RestrictDriveModes',
|
2129
|
+
Condition => '$count == 1',
|
2130
|
+
Count => 1,
|
2131
|
+
PrintConv => 'sprintf("Flags 0x%x",$val)',
|
2132
|
+
PrintConvInv => '$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
2133
|
+
},{ # (1DX)
|
2096
2134
|
Name => 'RestrictDriveModes',
|
2097
|
-
Count => 2,
|
2135
|
+
Count => 2,
|
2098
2136
|
PrintConv => [
|
2099
2137
|
\%disableEnable,
|
2100
2138
|
'sprintf("Flags 0x%x",$val)', # (Single,Cont Hi,Cont Lo,Timer 10,Timer 2,Silent,Super Hi)
|
@@ -2103,7 +2141,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2103
2141
|
undef,
|
2104
2142
|
'$val=~/0x([\dA-F]+)/i ? hex($1) : undef',
|
2105
2143
|
],
|
2106
|
-
},
|
2144
|
+
}],
|
2107
2145
|
#### 4a) Operation
|
2108
2146
|
0x0701 => [
|
2109
2147
|
{
|
@@ -2458,7 +2496,21 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2458
2496
|
},
|
2459
2497
|
},
|
2460
2498
|
],
|
2461
|
-
0x080c => {
|
2499
|
+
0x080c => [{ # (1DXmkIII)
|
2500
|
+
Name => 'TimerLength',
|
2501
|
+
Condition => '$count == 3',
|
2502
|
+
Count => 3,
|
2503
|
+
PrintConv => [
|
2504
|
+
'"6 s: $val"',
|
2505
|
+
'"16 s: $val"',
|
2506
|
+
'"After release: $val"',
|
2507
|
+
],
|
2508
|
+
PrintConvInv => [
|
2509
|
+
'$val=~/(\d+)$/ ? $1 : 0',
|
2510
|
+
'$val=~/(\d+)$/ ? $1 : 0',
|
2511
|
+
'$val=~/(\d+)$/ ? $1 : 0',
|
2512
|
+
],
|
2513
|
+
},{
|
2462
2514
|
Name => 'TimerLength',
|
2463
2515
|
Count => 4,
|
2464
2516
|
PrintConv => [
|
@@ -2473,7 +2525,7 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2473
2525
|
'$val=~/(\d+)$/ ? $1 : 0',
|
2474
2526
|
'$val=~/(\d+)$/ ? $1 : 0',
|
2475
2527
|
],
|
2476
|
-
},
|
2528
|
+
}],
|
2477
2529
|
0x080d => {
|
2478
2530
|
Name => 'ShortReleaseTimeLag',
|
2479
2531
|
PrintConv => \%disableEnable,
|
@@ -2520,6 +2572,8 @@ my %convPFn = ( PrintConv => \&ConvertPfn, PrintConvInv => \&ConvertPfnInv );
|
|
2520
2572
|
PrintConv => {
|
2521
2573
|
0 => 'Cancel selected',
|
2522
2574
|
1 => 'Erase selected',
|
2575
|
+
2 => 'Erase RAW selected', # (1DXmkIII)
|
2576
|
+
3 => 'Erase non-RAW selected', # (1DXmkIII)
|
2523
2577
|
},
|
2524
2578
|
},
|
2525
2579
|
0x0814 => { # (5DS)
|
@@ -2595,7 +2649,7 @@ sub ProcessCanonCustom2($$$)
|
|
2595
2649
|
my $recPos = $pos;
|
2596
2650
|
my $recEnd = $pos + $recLen - 8;
|
2597
2651
|
if ($recEnd > $end) {
|
2598
|
-
$et->Warn(
|
2652
|
+
$et->Warn("Corrupted CanonCustom2 group $recNum");
|
2599
2653
|
return 0;
|
2600
2654
|
}
|
2601
2655
|
if ($verbose and not $write) {
|
@@ -2605,8 +2659,17 @@ sub ProcessCanonCustom2($$$)
|
|
2605
2659
|
for ($i=0; $recPos + 8 < $recEnd; ++$i, $recPos+=4*$num) {
|
2606
2660
|
$tag = Get32u($dataPt, $recPos);
|
2607
2661
|
$num = Get32u($dataPt, $recPos + 4);
|
2662
|
+
my $nextRec = $recPos + 8 + $num * 4;
|
2663
|
+
last if $nextRec > $recEnd;
|
2664
|
+
# patch for EOS-1DXmkIII firmware 1.0.0 bug:
|
2665
|
+
if ($tag == 0x70c and $num == 0x66 and $nextRec + 8 < $recEnd) {
|
2666
|
+
my $tmp = Get32u($dataPt, $nextRec + 4);
|
2667
|
+
if ($tmp == 0x70f) {
|
2668
|
+
$et->Warn('Fixed incorrect CanonCustom tag 0x70c size', 1);
|
2669
|
+
++$num; # (count should be one greater)
|
2670
|
+
}
|
2671
|
+
}
|
2608
2672
|
$recPos += 8;
|
2609
|
-
last if $recPos + $num * 4 > $recEnd;
|
2610
2673
|
my $val = ReadValue($dataPt, $recPos, 'int32s', $num, $num * 4);
|
2611
2674
|
if ($write) {
|
2612
2675
|
# write new value
|
@@ -2638,6 +2701,9 @@ sub ProcessCanonCustom2($$$)
|
|
2638
2701
|
}
|
2639
2702
|
}
|
2640
2703
|
}
|
2704
|
+
if ($i != $recCount) {
|
2705
|
+
$et->Warn('Missing '.($recCount-$i)." entries in CanonCustom2 group $recNum directory", 1);
|
2706
|
+
}
|
2641
2707
|
$pos = $recEnd;
|
2642
2708
|
}
|
2643
2709
|
if ($pos != $end) {
|
@@ -6,6 +6,7 @@
|
|
6
6
|
# Revisions: 2013-09-19 - P. Harvey created
|
7
7
|
#
|
8
8
|
# References: 1) http://www.cineon.com/ff_draft.php
|
9
|
+
# 2) Harry Mallon private communication
|
9
10
|
#------------------------------------------------------------------------------
|
10
11
|
|
11
12
|
package Image::ExifTool::DPX;
|
@@ -14,7 +15,7 @@ use strict;
|
|
14
15
|
use vars qw($VERSION);
|
15
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
17
|
|
17
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.04';
|
18
19
|
|
19
20
|
# DPX tags
|
20
21
|
%Image::ExifTool::DPX::Main = (
|
@@ -86,6 +87,56 @@ $VERSION = '1.03';
|
|
86
87
|
156 => 'User-defined 8 component element',
|
87
88
|
},
|
88
89
|
},
|
90
|
+
801 => { #2
|
91
|
+
Name => 'TransferCharacteristic',
|
92
|
+
Format => 'int8u',
|
93
|
+
PrintConv => {
|
94
|
+
0 => 'User-defined',
|
95
|
+
1 => 'Printing density',
|
96
|
+
2 => 'Linear',
|
97
|
+
3 => 'Logarithmic',
|
98
|
+
4 => 'Unspecified video',
|
99
|
+
5 => 'SMPTE 274M',
|
100
|
+
6 => 'ITU-R 704-4',
|
101
|
+
7 => 'ITU-R 601-5 system B or G (625)',
|
102
|
+
8 => 'ITU-R 601-5 system M (525)',
|
103
|
+
9 => 'Composite video (NTSC)',
|
104
|
+
10 => 'Composite video (PAL)',
|
105
|
+
11 => 'Z (depth) - linear',
|
106
|
+
12 => 'Z (depth) - homogeneous',
|
107
|
+
13 => 'SMPTE ADX',
|
108
|
+
14 => 'ITU-R 2020 NCL',
|
109
|
+
15 => 'ITU-R 2020 CL',
|
110
|
+
16 => 'IEC 61966-2-4 xvYCC',
|
111
|
+
17 => 'ITU-R 2100 NCL/PQ',
|
112
|
+
18 => 'ITU-R 2100 ICtCp/PQ',
|
113
|
+
19 => 'ITU-R 2100 NCL/HLG',
|
114
|
+
20 => 'ITU-R 2100 ICtCp/HLG',
|
115
|
+
21 => 'RP 431-2:2011 Gama 2.6',
|
116
|
+
22 => 'IEC 61966-2-1 sRGB',
|
117
|
+
},
|
118
|
+
},
|
119
|
+
802 => { #2
|
120
|
+
Name => 'ColorimetricSpecification',
|
121
|
+
Format => 'int8u',
|
122
|
+
PrintConv => {
|
123
|
+
0 => 'User-defined',
|
124
|
+
1 => 'Printing density',
|
125
|
+
4 => 'Unspecified video',
|
126
|
+
5 => 'SMPTE 274M',
|
127
|
+
6 => 'ITU-R 704-4',
|
128
|
+
7 => 'ITU-R 601-5 system B or G (625)',
|
129
|
+
8 => 'ITU-R 601-5 system M (525)',
|
130
|
+
9 => 'Composite video (NTSC)',
|
131
|
+
10 => 'Composite video (PAL)',
|
132
|
+
13 => 'SMPTE ADX',
|
133
|
+
14 => 'ITU-R 2020',
|
134
|
+
15 => 'P3D65',
|
135
|
+
16 => 'P3DCI',
|
136
|
+
17 => 'P3D60',
|
137
|
+
18 => 'ACES',
|
138
|
+
},
|
139
|
+
},
|
89
140
|
803 => { Name => 'BitDepth', Format => 'int8u' },
|
90
141
|
820 => { Name => 'ImageDescription', Format => 'string[32]' },
|
91
142
|
892 => { Name => 'Image2Description', Format => 'string[32]', RawConv => '$val=~/[^\xff]/ ? $val : undef' },
|
@@ -106,9 +157,12 @@ $VERSION = '1.03';
|
|
106
157
|
1556=> { Name => 'InputDeviceName', Format => 'string[32]' },
|
107
158
|
1588=> { Name => 'InputDeviceSerialNumber', Format => 'string[32]' },
|
108
159
|
# 1620=> { Name => 'AspectRatio', Format => 'int32u' },
|
109
|
-
1724 => { Name => '
|
160
|
+
1724 => { Name => 'OriginalFrameRate',Format => 'float' },
|
161
|
+
1728 => { Name => 'ShutterAngle', Format => 'float', RawConv => '$val =~ /\d/ ? $val : undef' }, #2
|
110
162
|
1732 => { Name => 'FrameID', Format => 'string[32]' },
|
111
163
|
1764 => { Name => 'SlateInformation', Format => 'string[100]' },
|
164
|
+
1920 => { Name => 'TimeCode', Format => 'int32u' }, #2
|
165
|
+
1940 => { Name => 'FrameRate', Format => 'float', RawConv => '$val =~ /\d/ ? $val : undef' }, #2
|
112
166
|
1972 => { Name => 'Reserved5', Format => 'string[76]', Unknown => 1 },
|
113
167
|
2048 => { Name => 'UserID', Format => 'string[32]' },
|
114
168
|
);
|
@@ -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!
|
@@ -28,7 +28,7 @@ my %dateTimeInfo = (
|
|
28
28
|
my %materialSample = (
|
29
29
|
STRUCT_NAME => 'DarwinCore MaterialSample',
|
30
30
|
NAMESPACE => 'dwc',
|
31
|
-
materialSampleID
|
31
|
+
materialSampleID => { },
|
32
32
|
);
|
33
33
|
|
34
34
|
my %event = (
|
@@ -40,7 +40,26 @@ my %event = (
|
|
40
40
|
eventDate => { %dateTimeInfo, Groups => { 2 => 'Time' } },
|
41
41
|
eventID => { },
|
42
42
|
eventRemarks => { Writable => 'lang-alt' },
|
43
|
-
eventTime
|
43
|
+
eventTime => {
|
44
|
+
Groups => { 2 => 'Time' },
|
45
|
+
Writable => 'string', # (so we can format this ourself)
|
46
|
+
Shift => 'Time',
|
47
|
+
# (allow date/time or just time value)
|
48
|
+
ValueConv => 'Image::ExifTool::XMP::ConvertXMPDate($val)',
|
49
|
+
PrintConv => '$self->ConvertDateTime($val)',
|
50
|
+
ValueConvInv => 'Image::ExifTool::XMP::FormatXMPDate($val) or $val',
|
51
|
+
PrintConvInv => q{
|
52
|
+
my $v = $self->InverseDateTime($val,undef,1);
|
53
|
+
undef $Image::ExifTool::evalWarning;
|
54
|
+
return $v if $v;
|
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;
|
61
|
+
},
|
62
|
+
},
|
44
63
|
fieldNotes => { },
|
45
64
|
fieldNumber => { },
|
46
65
|
habitat => { },
|
@@ -21,7 +21,7 @@ use strict;
|
|
21
21
|
use vars qw($VERSION);
|
22
22
|
use Image::ExifTool qw(:DataAccess :Utils);
|
23
23
|
|
24
|
-
$VERSION = '1.
|
24
|
+
$VERSION = '1.17';
|
25
25
|
|
26
26
|
sub ProcessPEResources($$);
|
27
27
|
sub ProcessPEVersion($$);
|
@@ -1009,7 +1009,7 @@ sub ProcessPEDict($$)
|
|
1009
1009
|
my $raf = $$dirInfo{RAF};
|
1010
1010
|
my $dataPt = $$dirInfo{DataPt};
|
1011
1011
|
my $dirLen = length($$dataPt);
|
1012
|
-
my ($pos, @sections, %dirInfo);
|
1012
|
+
my ($pos, @sections, %dirInfo, $rsrcFound);
|
1013
1013
|
|
1014
1014
|
# loop through all sections
|
1015
1015
|
for ($pos=0; $pos+40<=$dirLen; $pos+=40) {
|
@@ -1019,14 +1019,16 @@ sub ProcessPEDict($$)
|
|
1019
1019
|
my $offset = Get32u($dataPt, $pos + 20);
|
1020
1020
|
# remember the section offsets for the VirtualAddress lookup later
|
1021
1021
|
push @sections, { Base => $offset, Size => $size, VirtualAddress => $va };
|
1022
|
-
# save details of the first resource section
|
1022
|
+
# save details of the first resource section (or .text if .rsrc not found, ref forum11465)
|
1023
|
+
next unless ($name eq ".rsrc\0\0\0" and not $rsrcFound and defined($rsrcFound = 1)) or
|
1024
|
+
($name eq ".text\0\0\0" and not %dirInfo);
|
1023
1025
|
%dirInfo = (
|
1024
1026
|
RAF => $raf,
|
1025
1027
|
Base => $offset,
|
1026
1028
|
DirStart => 0, # (relative to Base)
|
1027
1029
|
DirLen => $size,
|
1028
1030
|
Sections => \@sections,
|
1029
|
-
)
|
1031
|
+
);
|
1030
1032
|
}
|
1031
1033
|
# process the first resource section
|
1032
1034
|
ProcessPEResources($et, \%dirInfo) or return 0 if %dirInfo;
|
@@ -1144,7 +1146,8 @@ sub ProcessEXE($$)
|
|
1144
1146
|
my $fileSize = ($cp - ($cblp ? 1 : 0)) * 512 + $cblp;
|
1145
1147
|
#(patch to accommodate observed 64-bit files)
|
1146
1148
|
#return 0 if $fileSize < 0x40 or $fileSize < $lfarlc;
|
1147
|
-
return 0 if $fileSize < 0x40;
|
1149
|
+
#return 0 if $fileSize < 0x40; (changed to warning in ExifTool 12.08)
|
1150
|
+
$et->Warn('Invalid file size in DOS header') if $fileSize < 0x40;
|
1148
1151
|
# read the Windows NE, PE or LE (virtual device driver) header
|
1149
1152
|
#if ($lfarlc == 0x40 and $fileSize > $lfanew + 2 and ...
|
1150
1153
|
if ($raf->Seek($lfanew, 0) and $raf->Read($buff, 0x40) and $buff =~ /^(NE|PE|LE)/) {
|
@@ -56,7 +56,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
|
|
56
56
|
use Image::ExifTool qw(:DataAccess :Utils);
|
57
57
|
use Image::ExifTool::MakerNotes;
|
58
58
|
|
59
|
-
$VERSION = '4.
|
59
|
+
$VERSION = '4.31';
|
60
60
|
|
61
61
|
sub ProcessExif($$$);
|
62
62
|
sub WriteExif($$$);
|
@@ -4715,8 +4715,8 @@ my %subSecConv = (
|
|
4715
4715
|
},
|
4716
4716
|
LensID => {
|
4717
4717
|
Groups => { 2 => 'Camera' },
|
4718
|
-
Require => 'LensType',
|
4719
4718
|
Desire => {
|
4719
|
+
0 => 'LensType',
|
4720
4720
|
1 => 'FocalLength',
|
4721
4721
|
2 => 'MaxAperture',
|
4722
4722
|
3 => 'MaxApertureValue',
|
@@ -4735,16 +4735,25 @@ my %subSecConv = (
|
|
4735
4735
|
Applies only to LensType values with a lookup table. May be configured
|
4736
4736
|
by adding user-defined lenses
|
4737
4737
|
},
|
4738
|
-
# this LensID is only valid if the LensType has a PrintConv
|
4738
|
+
# this LensID is only valid if the LensType has a PrintConv,
|
4739
|
+
# or LensType or LensModel are the model name
|
4739
4740
|
RawConv => q{
|
4740
4741
|
my $printConv = $$self{TAG_INFO}{LensType}{PrintConv};
|
4741
|
-
return $val if ref $printConv eq 'HASH' or
|
4742
|
-
ref $$printConv[0] eq 'HASH') or
|
4742
|
+
return $val if ref $printConv eq 'HASH' or
|
4743
|
+
(ref $printConv eq 'ARRAY' and ref $$printConv[0] eq 'HASH') or
|
4744
|
+
(defined $val[0] and $val[0] =~ /(mm|\d\/F)/) or
|
4745
|
+
(defined $val[6] and $val[6] =~ /(mm|\d\/F)/);
|
4743
4746
|
return undef;
|
4744
4747
|
},
|
4745
|
-
ValueConv => '$val',
|
4748
|
+
ValueConv => '$val[0] || $val[6]',
|
4746
4749
|
PrintConv => q{
|
4747
4750
|
my $pcv;
|
4751
|
+
# use LensModel ([6]) if LensType ([0]) is not populated
|
4752
|
+
# (iPhone populates LensModel but not LensType)
|
4753
|
+
if (not defined $val[0] and defined $val[6]) {
|
4754
|
+
$val[0] = $val[6];
|
4755
|
+
$prt[0] = $prt[6];
|
4756
|
+
}
|
4748
4757
|
# use LensType2 instead of LensType if available and valid (Sony E-mount lenses)
|
4749
4758
|
# (0x8000 or greater; 0 for several older/3rd-party E-mount lenses)
|
4750
4759
|
if (defined $val[9] and ($val[9] & 0x8000 or $val[9] == 0)) {
|
@@ -19,7 +19,7 @@ use strict;
|
|
19
19
|
use vars qw($VERSION %ttLang);
|
20
20
|
use Image::ExifTool qw(:DataAccess :Utils);
|
21
21
|
|
22
|
-
$VERSION = '1.
|
22
|
+
$VERSION = '1.10';
|
23
23
|
|
24
24
|
sub ProcessOTF($$);
|
25
25
|
|
@@ -589,6 +589,11 @@ sub ProcessFont($$)
|
|
589
589
|
$et->HandleTag($tagTablePtr, 'postfont', $2);
|
590
590
|
}
|
591
591
|
$rtnVal = 1;
|
592
|
+
} elsif ($buff =~ /^(wOF[F2])/) {
|
593
|
+
my $type = $1 eq 'wOFF' ? 'woff' : 'woff2';
|
594
|
+
$et->SetFileType(uc($type), "font/$type");
|
595
|
+
# (don't yet extract metadata from these files)
|
596
|
+
$rtnVal = 1;
|
592
597
|
} else {
|
593
598
|
$rtnVal = 0;
|
594
599
|
}
|
@@ -611,7 +616,9 @@ This module is used by Image::ExifTool
|
|
611
616
|
|
612
617
|
This module contains the routines required by Image::ExifTool to read meta
|
613
618
|
information from various format font files. Currently recognized font file
|
614
|
-
types are OTF, TTF, TTC, DFONT, PFA, PFB, PFM, AFM, ACFM and AMFM.
|
619
|
+
types are OTF, TTF, TTC, DFONT, PFA, PFB, PFM, AFM, ACFM and AMFM. As well,
|
620
|
+
WOFF and WOFF2 font files are identified, but metadata is not currently
|
621
|
+
extracted from these formats.
|
615
622
|
|
616
623
|
=head1 AUTHOR
|
617
624
|
|