exiftool_vendored 12.57.0 → 12.59.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 +39 -0
- data/bin/MANIFEST +3 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/config_files/example.config +1 -0
- data/bin/config_files/rotate_regions.config +1 -1
- data/bin/exiftool +76 -57
- 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 +13 -14
- data/bin/lib/Image/ExifTool/Canon.pm +26 -6
- data/bin/lib/Image/ExifTool/DJI.pm +28 -2
- data/bin/lib/Image/ExifTool/Exif.pm +24 -5
- data/bin/lib/Image/ExifTool/FlashPix.pm +28 -10
- data/bin/lib/Image/ExifTool/FujiFilm.pm +1 -0
- data/bin/lib/Image/ExifTool/JPEG.pm +14 -2
- data/bin/lib/Image/ExifTool/LIF.pm +10 -2
- data/bin/lib/Image/ExifTool/LNK.pm +5 -4
- data/bin/lib/Image/ExifTool/MPEG.pm +2 -2
- data/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
- data/bin/lib/Image/ExifTool/Minolta.pm +6 -7
- data/bin/lib/Image/ExifTool/MinoltaRaw.pm +9 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +390 -114
- data/bin/lib/Image/ExifTool/Olympus.pm +87 -7
- data/bin/lib/Image/ExifTool/PNG.pm +15 -2
- data/bin/lib/Image/ExifTool/PanasonicRaw.pm +27 -1
- data/bin/lib/Image/ExifTool/Pentax.pm +8 -5
- data/bin/lib/Image/ExifTool/PhaseOne.pm +14 -1
- data/bin/lib/Image/ExifTool/Photoshop.pm +3 -3
- data/bin/lib/Image/ExifTool/QuickTime.pm +16 -11
- data/bin/lib/Image/ExifTool/QuickTimeStream.pl +38 -6
- data/bin/lib/Image/ExifTool/README +8 -0
- data/bin/lib/Image/ExifTool/RIFF.pm +41 -13
- data/bin/lib/Image/ExifTool/Rawzor.pm +2 -2
- data/bin/lib/Image/ExifTool/Sigma.pm +4 -4
- data/bin/lib/Image/ExifTool/Sony.pm +23 -1
- data/bin/lib/Image/ExifTool/TagLookup.pm +4464 -4441
- data/bin/lib/Image/ExifTool/TagNames.pod +117 -36
- data/bin/lib/Image/ExifTool/Validate.pm +5 -5
- data/bin/lib/Image/ExifTool/WriteExif.pl +49 -0
- data/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
- data/bin/lib/Image/ExifTool/Writer.pl +74 -14
- data/bin/lib/Image/ExifTool/XMP.pm +19 -4
- data/bin/lib/Image/ExifTool/XMP2.pl +2 -1
- data/bin/lib/Image/ExifTool.pm +131 -17
- data/bin/lib/Image/ExifTool.pod +40 -5
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -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.63';
|
34
34
|
|
35
35
|
sub ConvertTimecode($);
|
36
36
|
sub ProcessSGLT($$$);
|
@@ -38,6 +38,13 @@ sub ProcessSLLT($$$);
|
|
38
38
|
sub ProcessLucas($$$);
|
39
39
|
sub WriteRIFF($$);
|
40
40
|
|
41
|
+
# RIFF chunks containing image data (to include in ImageDataMD5 digest)
|
42
|
+
my %isImageData = (
|
43
|
+
LIST_movi => 1, # (AVI: contains ##db, ##dc, ##wb)
|
44
|
+
data => 1, # (WAV)
|
45
|
+
'VP8 '=>1, VP8L=>1, ANIM=>1, ANMF=>1, ALPH=>1, # (WebP)
|
46
|
+
);
|
47
|
+
|
41
48
|
# recognized RIFF variants
|
42
49
|
my %riffType = (
|
43
50
|
'WAVE' => 'WAV', 'AVI ' => 'AVI', 'WEBP' => 'WEBP',
|
@@ -1522,7 +1529,7 @@ my %code2charset = (
|
|
1522
1529
|
},
|
1523
1530
|
# (can't calculate duration like this for compressed audio types)
|
1524
1531
|
RawConv => q{
|
1525
|
-
return undef if $$self{
|
1532
|
+
return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)$/;
|
1526
1533
|
return(($val[0] and not ($val[2] or $val[3])) ? $val[1] / $val[0] : undef);
|
1527
1534
|
},
|
1528
1535
|
PrintConv => 'ConvertDuration($val)',
|
@@ -1980,6 +1987,7 @@ sub ProcessRIFF($$)
|
|
1980
1987
|
my $unknown = $et->Options('Unknown');
|
1981
1988
|
my $validate = $et->Options('Validate');
|
1982
1989
|
my $ee = $et->Options('ExtractEmbedded');
|
1990
|
+
my $md5 = $$et{ImageDataMD5};
|
1983
1991
|
|
1984
1992
|
# verify this is a valid RIFF file
|
1985
1993
|
return 0 unless $raf->Read($buff, 12) == 12;
|
@@ -1996,7 +2004,7 @@ sub ProcessRIFF($$)
|
|
1996
2004
|
$$raf{NoBuffer} = 1 if $et->Options('FastScan'); # disable buffering in FastScan mode
|
1997
2005
|
$mime = $riffMimeType{$type} if $type;
|
1998
2006
|
$et->SetFileType($type, $mime);
|
1999
|
-
$$et{VALUE}{FileType} .= ' (RF64)' if $rf64;
|
2007
|
+
$$et{VALUE}{FileType} .= ' (RF64)' if $rf64 and $$et{VALUE}{FileType};
|
2000
2008
|
$$et{RIFFStreamType} = ''; # initialize stream type
|
2001
2009
|
$$et{RIFFStreamCodec} = []; # initialize codec array
|
2002
2010
|
SetByteOrder('II');
|
@@ -2059,6 +2067,10 @@ sub ProcessRIFF($$)
|
|
2059
2067
|
# (in LIST_movi chunk: ##db = uncompressed DIB, ##dc = compressed DIB, ##wb = audio data)
|
2060
2068
|
if ($tagInfo or (($verbose or $unknown) and $tag !~ /^(data|idx1|LIST_movi|RIFF|\d{2}(db|dc|wb))$/)) {
|
2061
2069
|
$raf->Read($buff, $len2) == $len2 or $err=1, last;
|
2070
|
+
if ($md5 and $isImageData{$tag}) {
|
2071
|
+
$md5->add($buff);
|
2072
|
+
$et->VPrint(0, "$$et{INDENT}(ImageDataMD5: '${tag}' chunk, $len2 bytes)\n");
|
2073
|
+
}
|
2062
2074
|
my $setGroups;
|
2063
2075
|
if ($tagInfo and ref $tagInfo eq 'HASH' and $$tagInfo{SetGroups}) {
|
2064
2076
|
$setGroups = $$et{SET_GROUP0} = $$et{SET_GROUP1} = $$tagInfo{SetGroups};
|
@@ -2085,18 +2097,34 @@ sub ProcessRIFF($$)
|
|
2085
2097
|
# extract information from remaining file as an embedded file
|
2086
2098
|
$$et{DOC_NUM} = ++$$et{DOC_COUNT};
|
2087
2099
|
next; # (must not increment $pos)
|
2088
|
-
} elsif ($tag eq 'LIST_movi' and $ee) {
|
2089
|
-
next; # parse into movi chunk
|
2090
2100
|
} else {
|
2091
|
-
|
2092
|
-
|
2093
|
-
|
2101
|
+
my $rewind;
|
2102
|
+
# do MD5 if required
|
2103
|
+
if ($md5 and $isImageData{$tag}) {
|
2104
|
+
$rewind = $raf->Tell();
|
2105
|
+
my $more = $len2;
|
2106
|
+
while ($more) {
|
2107
|
+
my $n = $more > 65536 ? 65536 : $more;
|
2108
|
+
$raf->Read($buff, $n) == $n or $err = 1, last;
|
2109
|
+
$md5->add($buff);
|
2110
|
+
$more -= $n;
|
2111
|
+
}
|
2112
|
+
$et->VPrint(0, "$$et{INDENT}(ImageDataMD5: '${tag}' chunk, $len2 bytes)\n");
|
2094
2113
|
}
|
2095
|
-
if ($
|
2096
|
-
|
2097
|
-
|
2098
|
-
}
|
2099
|
-
|
2114
|
+
if ($tag eq 'LIST_movi' and $ee) {
|
2115
|
+
$raf->Seek($rewind, 0) or $err = 1, last if $rewind;
|
2116
|
+
next; # parse into movi chunk
|
2117
|
+
} elsif (not $rewind) {
|
2118
|
+
if ($len > 0x7fffffff and not $et->Options('LargeFileSupport')) {
|
2119
|
+
$et->Warn("Stopped parsing at large $tag chunk (LargeFileSupport not set)");
|
2120
|
+
last;
|
2121
|
+
}
|
2122
|
+
if ($validate and $len2) {
|
2123
|
+
# (must actually try to read something after seeking to detect error)
|
2124
|
+
$raf->Seek($len2-1, 1) and $raf->Read($buff, 1) == 1 or $err = 1, last;
|
2125
|
+
} else {
|
2126
|
+
$raf->Seek($len2, 1) or $err=1, last;
|
2127
|
+
}
|
2100
2128
|
}
|
2101
2129
|
}
|
2102
2130
|
$pos += $len2;
|
@@ -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.06';
|
18
18
|
|
19
19
|
# currently support this version Rawzor images
|
20
20
|
my $implementedRawzorVersion = 199; # (up to version 1.99)
|
@@ -138,7 +138,7 @@ sub ProcessRWZ($$)
|
|
138
138
|
}
|
139
139
|
# set OriginalFileType from FileType of original file
|
140
140
|
# then change FileType and MIMEType to indicate a Rawzor image
|
141
|
-
my $origFileType = $$et{
|
141
|
+
my $origFileType = $$et{FileType};
|
142
142
|
if ($origFileType) {
|
143
143
|
$et->HandleTag($tagTablePtr, OriginalFileType => $origFileType);
|
144
144
|
$et->OverrideFileType('RWZ');
|
@@ -19,15 +19,13 @@ use strict;
|
|
19
19
|
use vars qw($VERSION %sigmaLensTypes);
|
20
20
|
use Image::ExifTool::Exif;
|
21
21
|
|
22
|
-
$VERSION = '1.
|
22
|
+
$VERSION = '1.34';
|
23
23
|
|
24
24
|
# sigma LensType lookup (ref IB)
|
25
25
|
%sigmaLensTypes = (
|
26
26
|
Notes => q{
|
27
27
|
Sigma LensType values are hexadecimal numbers stored as a string (without
|
28
|
-
the leading "0x").
|
29
|
-
which would otherwise have the same LensType, and are used by the Composite
|
30
|
-
LensID tag when attempting to identify the specific lens model.
|
28
|
+
the leading "0x").
|
31
29
|
},
|
32
30
|
# 0x0 => 'Sigma 50mm F2.8 EX Macro', (0x0 used for other lenses too)
|
33
31
|
# 0x8 - 18-125mm LENSARANGE@18mm=22-4
|
@@ -557,6 +555,7 @@ $VERSION = '1.33';
|
|
557
555
|
SeparateTable => 'LensType',
|
558
556
|
PrintHex => 1,
|
559
557
|
PrintConv => \%sigmaLensTypes,
|
558
|
+
PrintInt => 1,
|
560
559
|
},{ #PH
|
561
560
|
Name => 'LensType',
|
562
561
|
Condition => '$$self{MakerNoteSigmaVer} >= 3',
|
@@ -565,6 +564,7 @@ $VERSION = '1.33';
|
|
565
564
|
SeparateTable => 'LensType',
|
566
565
|
PrintHex => 1,
|
567
566
|
PrintConv => \%sigmaLensTypes,
|
567
|
+
PrintInt => 1,
|
568
568
|
}],
|
569
569
|
0x002a => { #PH
|
570
570
|
Name => 'LensFocalRange',
|
@@ -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.58';
|
38
38
|
|
39
39
|
sub ProcessSRF($$$);
|
40
40
|
sub ProcessSR2($$$);
|
@@ -2045,6 +2045,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
2045
2045
|
369 => 'DSC-RX100M5A', #JR
|
2046
2046
|
371 => 'ILCE-6400', #IB
|
2047
2047
|
372 => 'DSC-RX0M2', #JR
|
2048
|
+
373 => 'DSC-HX95', #github191
|
2048
2049
|
374 => 'DSC-RX100M7', #IB
|
2049
2050
|
375 => 'ILCE-7RM4', #IB
|
2050
2051
|
376 => 'ILCE-9M2', #JR
|
@@ -2161,6 +2162,7 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
|
|
2161
2162
|
# set to 65535 for E-mount lenses (values 0x80xx)
|
2162
2163
|
ValueConvInv => '($val & 0xff00) == 0x8000 ? 65535 : int($val)',
|
2163
2164
|
PrintConv => \%sonyLensTypes,
|
2165
|
+
PrintInt => 1,
|
2164
2166
|
},
|
2165
2167
|
0xb028 => { #2
|
2166
2168
|
# (used by the DSLR-A100)
|
@@ -5570,6 +5572,7 @@ my %faceInfo = (
|
|
5570
5572
|
Format => 'int16u',
|
5571
5573
|
SeparateTable => 'LensType2',
|
5572
5574
|
PrintConv => \%sonyLensTypes2,
|
5575
|
+
PrintInt => 1,
|
5573
5576
|
},
|
5574
5577
|
0x400 => { #JR
|
5575
5578
|
Name => 'ImageNumber',
|
@@ -6603,6 +6606,7 @@ my %isoSetting2010 = (
|
|
6603
6606
|
Format => 'int16u',
|
6604
6607
|
SeparateTable => 'LensType2',
|
6605
6608
|
PrintConv => \%sonyLensTypes2,
|
6609
|
+
PrintInt => 1,
|
6606
6610
|
},
|
6607
6611
|
0x1896 => {
|
6608
6612
|
Name => 'LensType',
|
@@ -6612,6 +6616,7 @@ my %isoSetting2010 = (
|
|
6612
6616
|
SeparateTable => 1,
|
6613
6617
|
ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
|
6614
6618
|
PrintConv => \%sonyLensTypes,
|
6619
|
+
PrintInt => 1,
|
6615
6620
|
},
|
6616
6621
|
0x1898 => {
|
6617
6622
|
Name => 'DistortionCorrParamsPresent',
|
@@ -6809,6 +6814,7 @@ my %isoSetting2010 = (
|
|
6809
6814
|
Format => 'int16u',
|
6810
6815
|
SeparateTable => 'LensType2',
|
6811
6816
|
PrintConv => \%sonyLensTypes2,
|
6817
|
+
PrintInt => 1,
|
6812
6818
|
},
|
6813
6819
|
0x18c2 => {
|
6814
6820
|
Name => 'LensType',
|
@@ -6818,6 +6824,7 @@ my %isoSetting2010 = (
|
|
6818
6824
|
SeparateTable => 1,
|
6819
6825
|
ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
|
6820
6826
|
PrintConv => \%sonyLensTypes,
|
6827
|
+
PrintInt => 1,
|
6821
6828
|
},
|
6822
6829
|
0x18c4 => {
|
6823
6830
|
Name => 'DistortionCorrParamsPresent',
|
@@ -6946,6 +6953,7 @@ my %isoSetting2010 = (
|
|
6946
6953
|
Format => 'int16u',
|
6947
6954
|
SeparateTable => 'LensType2',
|
6948
6955
|
PrintConv => \%sonyLensTypes2,
|
6956
|
+
PrintInt => 1,
|
6949
6957
|
},
|
6950
6958
|
0x18f2 => {
|
6951
6959
|
Name => 'LensType',
|
@@ -6955,6 +6963,7 @@ my %isoSetting2010 = (
|
|
6955
6963
|
SeparateTable => 1,
|
6956
6964
|
ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
|
6957
6965
|
PrintConv => \%sonyLensTypes,
|
6966
|
+
PrintInt => 1,
|
6958
6967
|
},
|
6959
6968
|
0x18f4 => {
|
6960
6969
|
Name => 'DistortionCorrParamsPresent',
|
@@ -7075,6 +7084,7 @@ my %isoSetting2010 = (
|
|
7075
7084
|
Format => 'int16u',
|
7076
7085
|
SeparateTable => 'LensType2',
|
7077
7086
|
PrintConv => \%sonyLensTypes2,
|
7087
|
+
PrintInt => 1,
|
7078
7088
|
},
|
7079
7089
|
0x17f6 => {
|
7080
7090
|
Name => 'LensType',
|
@@ -7084,6 +7094,7 @@ my %isoSetting2010 = (
|
|
7084
7094
|
SeparateTable => 1,
|
7085
7095
|
ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
|
7086
7096
|
PrintConv => \%sonyLensTypes,
|
7097
|
+
PrintInt => 1,
|
7087
7098
|
},
|
7088
7099
|
0x17f8 => {
|
7089
7100
|
Name => 'DistortionCorrParamsPresent',
|
@@ -7439,6 +7450,7 @@ my %isoSetting2010 = (
|
|
7439
7450
|
Format => 'int16u',
|
7440
7451
|
SeparateTable => 'LensType2',
|
7441
7452
|
PrintConv => \%sonyLensTypes2,
|
7453
|
+
PrintInt => 1,
|
7442
7454
|
},
|
7443
7455
|
0x0109 => {
|
7444
7456
|
Name => 'LensType',
|
@@ -7450,6 +7462,7 @@ my %isoSetting2010 = (
|
|
7450
7462
|
# has a value of 0 for E-mount lenses (values 0x80xx)
|
7451
7463
|
ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
|
7452
7464
|
PrintConv => \%sonyLensTypes,
|
7465
|
+
PrintInt => 1,
|
7453
7466
|
},
|
7454
7467
|
0x010b => {
|
7455
7468
|
Name => 'DistortionCorrParamsPresent',
|
@@ -7726,6 +7739,7 @@ my %isoSetting2010 = (
|
|
7726
7739
|
Format => 'int16u',
|
7727
7740
|
SeparateTable => 'LensType2',
|
7728
7741
|
PrintConv => \%sonyLensTypes2,
|
7742
|
+
PrintInt => 1,
|
7729
7743
|
},
|
7730
7744
|
0x0109 => {
|
7731
7745
|
Name => 'LensType',
|
@@ -7737,6 +7751,7 @@ my %isoSetting2010 = (
|
|
7737
7751
|
# has a value of 0 for E-mount lenses (values 0x80xx)
|
7738
7752
|
ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
|
7739
7753
|
PrintConv => \%sonyLensTypes,
|
7754
|
+
PrintInt => 1,
|
7740
7755
|
},
|
7741
7756
|
0x010b => {
|
7742
7757
|
Name => 'DistortionCorrParamsPresent',
|
@@ -8535,6 +8550,7 @@ my %isoSetting2010 = (
|
|
8535
8550
|
Notes => 'E-mount lenses',
|
8536
8551
|
SeparateTable => 'LensType2',
|
8537
8552
|
PrintConv => \%sonyLensTypes2,
|
8553
|
+
PrintInt => 1,
|
8538
8554
|
},
|
8539
8555
|
0x0608 => {
|
8540
8556
|
Name => 'LensType',
|
@@ -8543,6 +8559,7 @@ my %isoSetting2010 = (
|
|
8543
8559
|
Notes => 'A-mount lenses on SLT and NEX',
|
8544
8560
|
SeparateTable => 1,
|
8545
8561
|
PrintConv => \%sonyLensTypes,
|
8562
|
+
PrintInt => 1,
|
8546
8563
|
},
|
8547
8564
|
0x064a => {
|
8548
8565
|
Name => 'VignettingCorrParams',
|
@@ -8713,6 +8730,7 @@ my %isoSetting2010 = (
|
|
8713
8730
|
Notes => 'E-mount lenses',
|
8714
8731
|
SeparateTable => 'LensType2',
|
8715
8732
|
PrintConv => \%sonyLensTypes2,
|
8733
|
+
PrintInt => 1,
|
8716
8734
|
},
|
8717
8735
|
0x0062 => {
|
8718
8736
|
Name => 'LensType',
|
@@ -8721,6 +8739,7 @@ my %isoSetting2010 = (
|
|
8721
8739
|
Notes => 'A-mount lenses on SLT and NEX',
|
8722
8740
|
SeparateTable => 1,
|
8723
8741
|
PrintConv => \%sonyLensTypes,
|
8742
|
+
PrintInt => 1,
|
8724
8743
|
},
|
8725
8744
|
0x0064 => {
|
8726
8745
|
Name => 'DistortionCorrParams',
|
@@ -8937,6 +8956,7 @@ my %isoSetting2010 = (
|
|
8937
8956
|
Format => 'int16u',
|
8938
8957
|
SeparateTable => 'LensType2',
|
8939
8958
|
PrintConv => \%sonyLensTypes2,
|
8959
|
+
PrintInt => 1,
|
8940
8960
|
},
|
8941
8961
|
0x000b => {
|
8942
8962
|
Name => 'CameraE-mountVersion',
|
@@ -9622,6 +9642,7 @@ my %isoSetting2010 = (
|
|
9622
9642
|
Format => 'int16u',
|
9623
9643
|
SeparateTable => 'LensType2',
|
9624
9644
|
PrintConv => \%sonyLensTypes2,
|
9645
|
+
PrintInt => 1,
|
9625
9646
|
},
|
9626
9647
|
0x004d => {
|
9627
9648
|
Name => 'LensType',
|
@@ -9631,6 +9652,7 @@ my %isoSetting2010 = (
|
|
9631
9652
|
SeparateTable => 1,
|
9632
9653
|
ValueConvInv => '($val & 0xff00) == 0x8000 ? 0 : int($val)',
|
9633
9654
|
PrintConv => \%sonyLensTypes,
|
9655
|
+
PrintInt => 1,
|
9634
9656
|
},
|
9635
9657
|
0x004f => {
|
9636
9658
|
Name => 'DistortionCorrParams',
|