exiftool_vendored 12.64.1 → 12.67.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 +46 -0
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +30 -19
- data/bin/lib/Image/ExifTool/Apple.pm +14 -6
- data/bin/lib/Image/ExifTool/BigTIFF.pm +8 -1
- data/bin/lib/Image/ExifTool/Canon.pm +32 -12
- data/bin/lib/Image/ExifTool/FlashPix.pm +8 -2
- data/bin/lib/Image/ExifTool/FujiFilm.pm +4 -1
- data/bin/lib/Image/ExifTool/Geotag.pm +1 -1
- data/bin/lib/Image/ExifTool/Nikon.pm +570 -67
- data/bin/lib/Image/ExifTool/NikonCustom.pm +862 -61
- data/bin/lib/Image/ExifTool/PDF.pm +18 -8
- data/bin/lib/Image/ExifTool/PLUS.pm +19 -4
- data/bin/lib/Image/ExifTool/Pentax.pm +3 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +18 -10
- data/bin/lib/Image/ExifTool/Samsung.pm +227 -227
- data/bin/lib/Image/ExifTool/Sony.pm +128 -24
- data/bin/lib/Image/ExifTool/TagLookup.pm +4609 -4592
- data/bin/lib/Image/ExifTool/TagNames.pod +474 -26
- data/bin/lib/Image/ExifTool/Writer.pl +8 -2
- data/bin/lib/Image/ExifTool/XMP2.pl +1 -1
- data/bin/lib/Image/ExifTool.pm +120 -96
- data/bin/lib/Image/ExifTool.pod +41 -6
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +6 -188
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a6389f7140433c97eea74b3a6b428d8c5d940dc4d295741a9a69027ee561079
|
4
|
+
data.tar.gz: b28eb642d02cf914b516e1e5e2a40588548b7ab77158a1cf78ee6b76334ad682
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b6f0e36a66b21a6e6d9635484cba7d0ad9f94aabfede322548a0f7e31e100aa0c75766f4c0248fba3be575e734ef698b270086b5a35ba3c5164118090cc02f6
|
7
|
+
data.tar.gz: 15859db49991094833a0e8cb4ac64604b8235abc48fdb0baea28f4d4c6a1260c9b241be4e4b4ceabc4ca840eb4da9386546f843913702488109ab2393fb1465f
|
data/bin/Changes
CHANGED
@@ -7,6 +7,52 @@ RSS feed: https://exiftool.org/rss.xml
|
|
7
7
|
Note: The most recent production release is Version 12.60. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Sept. 19, 2023 - Version 12.67
|
11
|
+
|
12
|
+
- Added a new Pentax LensType (thanks dmont)
|
13
|
+
- Added a new FujiFilm FilmMode and FaceElementTypes values (thanks Greybeard)
|
14
|
+
- Fixed error writing new DataMining tag where URI prefix wasn't being
|
15
|
+
properly added to the value
|
16
|
+
|
17
|
+
Sept. 19, 2023 - Version 12.66
|
18
|
+
|
19
|
+
- Added a few new Canon LensType values (thanks Norbert Wasser)
|
20
|
+
- Added conversions for a few Apple:ImageCaptureType values
|
21
|
+
- Added new XMP tag for PLUS version 2.0.1
|
22
|
+
- Added a new CanonModelID (thanks Laurent Clevy)
|
23
|
+
- Decode another tag from Canon 1DS raw images (Hubert Figuiere, github #219)
|
24
|
+
- Decode JPGCompression for newer Nikon models (thanks Warren Hatch)
|
25
|
+
- Fixed bug introduced in 12.65 where duplicate tags were not returned even
|
26
|
+
when the groups where specified explicitly
|
27
|
+
- API Changes:
|
28
|
+
- Added WindowsWideFile option
|
29
|
+
|
30
|
+
Aug. 10, 2023 - Version 12.65
|
31
|
+
|
32
|
+
- Added a new QuickTime Keys tag
|
33
|
+
- Added a new CanonModelID (thanks Laurent Clevy)
|
34
|
+
- Added a new Canon LensType (thanks Norbert Wasser)
|
35
|
+
- Added number in brackets to converted Samsung MCCData value
|
36
|
+
- Decode a number of new Sony tags (thanks Jos Roost)
|
37
|
+
- Decode a few new FlashPix tags (github #217)
|
38
|
+
- Improved decoding of Nikon Z9 firmware 4.0 tags (thanks Warren Hatch)
|
39
|
+
- Improved parsing of PDF:Keywords to support semicolon-separated lists
|
40
|
+
- Enhanced -api option to show list of available options if no argument is
|
41
|
+
provided
|
42
|
+
- Lowered priority of IFD1 tags in ARW images so IFD0/SubIFD take precedence
|
43
|
+
- Changed QuickTime tag names for atID (AlbumTitleID to ArtistID) and plID
|
44
|
+
(PlayListID to AlbumID) (github issue #216), and added cmID (ComposerID)
|
45
|
+
- Changed Apple:MediaGroupUUID tag name back to ContentIdentifier
|
46
|
+
- Patched the -d option to handle the %s format code internally when writing
|
47
|
+
(avoids problems due to inconsistent behaviour of this format code in the
|
48
|
+
strptime function on different systems)
|
49
|
+
- Patched patch of version 12.32 to restore ability to read from named pipes
|
50
|
+
- Fixed bug which could cause a hang when processing a corrupt BigTIFF image
|
51
|
+
- Fixed document number for auxiliary image metadata in HEIC files
|
52
|
+
- Fixed misspelt Apple tag name (thanks Neal Krawetz)
|
53
|
+
- API Changes:
|
54
|
+
- Added AvailableOptions method
|
55
|
+
|
10
56
|
June 28, 2023 - Version 12.64
|
11
57
|
|
12
58
|
- Added a new Sony LensType (thanks Jos Roost)
|
data/bin/META.json
CHANGED
data/bin/META.yml
CHANGED
data/bin/README
CHANGED
@@ -108,8 +108,8 @@ your home directory, then you would type the following commands in a
|
|
108
108
|
terminal window to extract and run ExifTool:
|
109
109
|
|
110
110
|
cd ~/Desktop
|
111
|
-
gzip -dc Image-ExifTool-12.
|
112
|
-
cd Image-ExifTool-12.
|
111
|
+
gzip -dc Image-ExifTool-12.67.tar.gz | tar -xf -
|
112
|
+
cd Image-ExifTool-12.67
|
113
113
|
./exiftool t/images/ExifTool.jpg
|
114
114
|
|
115
115
|
Note: These commands extract meta information from one of the test images.
|
data/bin/exiftool
CHANGED
@@ -11,7 +11,7 @@ use strict;
|
|
11
11
|
use warnings;
|
12
12
|
require 5.004;
|
13
13
|
|
14
|
-
my $version = '12.
|
14
|
+
my $version = '12.67';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
my $exePath;
|
@@ -814,11 +814,17 @@ for (;;) {
|
|
814
814
|
/^(-?)(a|duplicates)$/i and $mt->Options(Duplicates => ($1 ? 0 : 1)), next;
|
815
815
|
if ($a eq 'api') {
|
816
816
|
my $opt = shift;
|
817
|
-
defined $opt
|
818
|
-
|
819
|
-
|
820
|
-
|
821
|
-
|
817
|
+
if (defined $opt and length $opt) {
|
818
|
+
my $val = ($opt =~ s/=(.*)//s) ? $1 : 1;
|
819
|
+
# empty string means an undefined value unless ^= is used
|
820
|
+
$val = undef unless $opt =~ s/\^$// or length $val;
|
821
|
+
$mt->Options($opt => $val);
|
822
|
+
} else {
|
823
|
+
print "Available API Options:\n";
|
824
|
+
my $availableOptions = Image::ExifTool::AvailableOptions();
|
825
|
+
printf(" %-17s - %s\n", $$_[0], $$_[2]) foreach @$availableOptions;
|
826
|
+
$helped = 1;
|
827
|
+
}
|
822
828
|
next;
|
823
829
|
}
|
824
830
|
/^arg(s|format)$/i and $argFormat = 1, next;
|
@@ -2874,7 +2880,7 @@ sub SetImageInfo($$$)
|
|
2874
2880
|
}
|
2875
2881
|
unless ($isStdout) {
|
2876
2882
|
$outfile = NextUnusedFilename($outfile);
|
2877
|
-
if ($et->Exists($outfile) and not $doSetFileName) {
|
2883
|
+
if ($et->Exists($outfile, 1) and not $doSetFileName) {
|
2878
2884
|
Warn "Error: '${outfile}' already exists - $infile\n";
|
2879
2885
|
EFile($infile);
|
2880
2886
|
++$countBadWr;
|
@@ -3005,7 +3011,7 @@ sub SetImageInfo($$$)
|
|
3005
3011
|
$outfile = Image::ExifTool::GetNewFileName(defined $outfile ? $outfile : $file, $newDir);
|
3006
3012
|
}
|
3007
3013
|
$outfile = NextUnusedFilename($outfile, $infile);
|
3008
|
-
if ($et->Exists($outfile)) {
|
3014
|
+
if ($et->Exists($outfile, 1)) {
|
3009
3015
|
if ($infile eq $outfile) {
|
3010
3016
|
undef $outfile; # not changing the file name after all
|
3011
3017
|
# (allow for case-insensitive filesystems)
|
@@ -4233,7 +4239,7 @@ sub NextUnusedFilename($;$)
|
|
4233
4239
|
}
|
4234
4240
|
$filename .= substr($fmt, $pos); # add rest of file name
|
4235
4241
|
# return now with filename unless file exists
|
4236
|
-
return $filename unless ($mt->Exists($filename) and not defined $usedFileName{$filename}) or $usedFileName{$filename};
|
4242
|
+
return $filename unless ($mt->Exists($filename, 1) and not defined $usedFileName{$filename}) or $usedFileName{$filename};
|
4237
4243
|
if (defined $okfile) {
|
4238
4244
|
return $filename if $filename eq $okfile;
|
4239
4245
|
my ($fn, $ok) = (AbsPath($filename), AbsPath($okfile));
|
@@ -4313,7 +4319,7 @@ sub OpenOutputFile($;@)
|
|
4313
4319
|
$outfile .= $textOut;
|
4314
4320
|
}
|
4315
4321
|
my $mode = '>';
|
4316
|
-
if ($mt->Exists($outfile)) {
|
4322
|
+
if ($mt->Exists($outfile, 1)) {
|
4317
4323
|
unless ($textOverwrite) {
|
4318
4324
|
Warn "Output file $outfile already exists for $file\n";
|
4319
4325
|
return ();
|
@@ -5576,7 +5582,7 @@ with this command:
|
|
5576
5582
|
|
5577
5583
|
produces output like this:
|
5578
5584
|
|
5579
|
-
-- Generated by ExifTool 12.
|
5585
|
+
-- Generated by ExifTool 12.67 --
|
5580
5586
|
File: a.jpg - 2003:10:31 15:44:19
|
5581
5587
|
(f/5.6, 1/60s, ISO 100)
|
5582
5588
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -6516,13 +6522,15 @@ load exiftool for each invocation.
|
|
6516
6522
|
|
6517
6523
|
=over 5
|
6518
6524
|
|
6519
|
-
=item B<-api> I<OPT[[^]=[VAL]]>
|
6525
|
+
=item B<-api> [I<OPT[[^]=[VAL]]>]
|
6520
6526
|
|
6521
6527
|
Set ExifTool API option. I<OPT> is an API option name. The option value is
|
6522
6528
|
set to 1 if I<=VAL> is omitted. If I<VAL> is omitted, the option value is
|
6523
|
-
set to undef if C<=> is used, or an empty string with C<^=>.
|
6524
|
-
|
6525
|
-
|
6529
|
+
set to undef if C<=> is used, or an empty string with C<^=>. If I<OPT> is
|
6530
|
+
not specified a list of available options is returned. The option name is
|
6531
|
+
not case senstive, but the option values are. See
|
6532
|
+
L<Image::ExifTool Options|Image::ExifTool/Options> for option details. This
|
6533
|
+
overrides API options set via the config file.
|
6526
6534
|
|
6527
6535
|
=item B<-common_args>
|
6528
6536
|
|
@@ -7316,10 +7324,13 @@ CreateDate and FileNumber tags, in the form "20060507_118-1861.jpg".
|
|
7316
7324
|
|
7317
7325
|
=head1 GEOTAGGING EXAMPLES
|
7318
7326
|
|
7319
|
-
ExifTool implements geotagging via 3 special tags: Geotag
|
7320
|
-
convenience is also implemented as an exiftool option), Geosync
|
7321
|
-
The examples below highlight some geotagging features. See
|
7322
|
-
L<https://exiftool.org/geotag.html> for additional documentation.
|
7327
|
+
ExifTool implements geotagging from GPS log files via 3 special tags: Geotag
|
7328
|
+
(which for convenience is also implemented as an exiftool option), Geosync
|
7329
|
+
and Geotime. The examples below highlight some geotagging features. See
|
7330
|
+
L<https://exiftool.org/geotag.html> for additional documentation. (Note
|
7331
|
+
that geotagging from known GPS coordinates is done by writing the
|
7332
|
+
L<GPS tags|Image::ExifTool::TagNames/GPS Tags> directly rather than using
|
7333
|
+
the B<-geotag> option.)
|
7323
7334
|
|
7324
7335
|
=over 5
|
7325
7336
|
|
@@ -16,7 +16,7 @@ use vars qw($VERSION);
|
|
16
16
|
use Image::ExifTool::Exif;
|
17
17
|
use Image::ExifTool::PLIST;
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.11';
|
20
20
|
|
21
21
|
sub ConvertPLIST($$);
|
22
22
|
|
@@ -110,24 +110,32 @@ sub ConvertPLIST($$);
|
|
110
110
|
},
|
111
111
|
# 0x0010 - int32s: 1 (SphereStatus, ref 2)
|
112
112
|
0x0011 => { # (if defined, there is a live photo associated with the video, #forum13565) (AssetIdentifier, ref 2)
|
113
|
-
Name => '
|
114
|
-
|
113
|
+
Name => 'ContentIdentifier',
|
114
|
+
Notes => 'called MediaGroupUUID when it appears as an XAttr',
|
115
|
+
# - originally called ContentIdentifier, forum8750
|
116
|
+
# - changed in 12.19 to MediaGroupUUID, NealKrawetz private communication
|
117
|
+
# - changed back to ContentIdentifier since Apple writes this to Keys content.identifier (forum14874)
|
115
118
|
Writable => 'string',
|
119
|
+
|
116
120
|
},
|
117
121
|
# 0x0012 - (QRMOutputType, ref 2)
|
118
122
|
# 0x0013 - (SphereExternalForceOffset, ref 2)
|
119
123
|
0x0014 => { # (StillImageCaptureType, ref 2)
|
120
124
|
Name => 'ImageCaptureType',
|
121
125
|
Writable => 'int32s',
|
122
|
-
Unknown => 1, # (don't know what the values mean)
|
123
126
|
# seen: 1,2,3,4,5,10,12
|
127
|
+
PrintConv => { #forum15096
|
128
|
+
1 => 'ProRAW',
|
129
|
+
2 => 'Portrait',
|
130
|
+
10 => 'Photo',
|
131
|
+
},
|
124
132
|
},
|
125
133
|
0x0015 => { # (ImageGroupIdentifier, ref 2)
|
126
134
|
Name => 'ImageUniqueID',
|
127
135
|
Writable => 'string',
|
128
136
|
},
|
129
137
|
# 0x0016 - string[29]: "AXZ6pMTOh2L+acSh4Kg630XCScoO\0" (PhotosOriginatingSignature, ref 2)
|
130
|
-
0x0017 => { #forum13565 (only valid if MediaGroupUUID exists) (StillImageCaptureFlags, ref 2)
|
138
|
+
0x0017 => { #forum13565 (only valid if MediaGroupUUID/ContentIdentifier exists) (StillImageCaptureFlags, ref 2)
|
131
139
|
Name => 'LivePhotoVideoIndex',
|
132
140
|
Notes => 'divide by RunTimeScale to get time in seconds',
|
133
141
|
},
|
@@ -153,7 +161,7 @@ sub ConvertPLIST($$);
|
|
153
161
|
# 0x001e - (OriginatingAppID, ref 2)
|
154
162
|
# 0x001f - int32s: 0,1 (PhotosAppFeatureFlags, ref 2)
|
155
163
|
0x0020 => { # (ImageCaptureRequestIdentifier, ref 2)
|
156
|
-
Name => '
|
164
|
+
Name => 'ImageCaptureRequestID',
|
157
165
|
Writable => 'string',
|
158
166
|
Unknown => 1,
|
159
167
|
},
|
@@ -15,7 +15,7 @@ use vars qw($VERSION);
|
|
15
15
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
16
|
use Image::ExifTool::Exif;
|
17
17
|
|
18
|
-
$VERSION = '1.
|
18
|
+
$VERSION = '1.08';
|
19
19
|
|
20
20
|
my $maxOffset = 0x7fffffff; # currently supported maximum data offset/size
|
21
21
|
|
@@ -216,6 +216,13 @@ sub ProcessBigIFD($$$)
|
|
216
216
|
$dirStart = Image::ExifTool::Get64u(\$nextIFD, 0);
|
217
217
|
$dirStart or last;
|
218
218
|
$offName = $nextOffName;
|
219
|
+
# protect against infinite loop
|
220
|
+
if ($$et{PROCESSED}{$dirStart}) {
|
221
|
+
$et->Warn("$dirName pointer references previous $$et{PROCESSED}{$dirStart} directory");
|
222
|
+
last;
|
223
|
+
} else {
|
224
|
+
$$et{PROCESSED}{$dirStart} = $dirName;
|
225
|
+
}
|
219
226
|
}
|
220
227
|
return 1;
|
221
228
|
}
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.68';
|
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)
|
@@ -608,18 +608,24 @@ $VERSION = '4.66';
|
|
608
608
|
'61182.33' => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
|
609
609
|
'61182.34' => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
|
610
610
|
'61182.35' => 'Canon RF 600mm F4L IS USM', #GiaZopatti
|
611
|
-
'61182.36' => 'Canon RF
|
612
|
-
'61182.37' => 'Canon RF
|
613
|
-
'61182.38' => 'Canon RF
|
614
|
-
'61182.39' => 'Canon RF 800mm F5.6L IS USM
|
615
|
-
'61182.40' => 'Canon RF
|
616
|
-
'61182.41' => 'Canon RF
|
617
|
-
'61182.42' => 'Canon RF 1200mm F8L IS USM
|
618
|
-
'61182.43' => 'Canon RF
|
619
|
-
'61182.44' => 'Canon RF
|
620
|
-
'61182.45' => 'Canon RF
|
611
|
+
'61182.36' => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
|
612
|
+
'61182.37' => 'Canon RF 600mm F4L IS USM + RF2x', #42
|
613
|
+
'61182.38' => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
|
614
|
+
'61182.39' => 'Canon RF 800mm F5.6L IS USM', #42
|
615
|
+
'61182.40' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
|
616
|
+
'61182.41' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
|
617
|
+
'61182.42' => 'Canon RF 1200mm F8L IS USM', #42
|
618
|
+
'61182.43' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
|
619
|
+
'61182.44' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
|
620
|
+
'61182.45' => 'Canon RF 135mm F1.8 L IS USM', #42
|
621
|
+
'61182.46' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
|
622
|
+
'61182.47' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
|
623
|
+
'61182.48' => 'Canon RF 100-300mm F2.8L IS USM', #42
|
624
|
+
'61182.49' => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
|
625
|
+
'61182.50' => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
|
626
|
+
'61182.51' => 'Canon RF 28mm F2.8 STM', #42
|
621
627
|
# we need the RFLensType values for the following...
|
622
|
-
'61182.
|
628
|
+
'61182.52' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH (NC)
|
623
629
|
65535 => 'n/a',
|
624
630
|
);
|
625
631
|
|
@@ -983,6 +989,8 @@ $VERSION = '4.66';
|
|
983
989
|
0x80000480 => 'EOS R50', #42
|
984
990
|
0x80000481 => 'EOS R6 Mark II', #42
|
985
991
|
0x80000487 => 'EOS R8', #42
|
992
|
+
0x80000491 => 'PowerShot V10', #25
|
993
|
+
0x80000498 => 'EOS R100', #25
|
986
994
|
0x80000520 => 'EOS D2000C', #IB
|
987
995
|
0x80000560 => 'EOS D6000C', #PH (guess)
|
988
996
|
);
|
@@ -1696,6 +1704,12 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
1696
1704
|
# Writable => 'int32u',
|
1697
1705
|
# Protected => 2,
|
1698
1706
|
},
|
1707
|
+
0x82 => { #github219 (found on 1DS)
|
1708
|
+
Name => 'RawDataLength',
|
1709
|
+
# (can't yet write 1DS raw files)
|
1710
|
+
# Writable => 'int32u',
|
1711
|
+
# Protected => 2,
|
1712
|
+
},
|
1699
1713
|
0x83 => { #PH
|
1700
1714
|
Name => 'OriginalDecisionDataOffset',
|
1701
1715
|
Writable => 'int32u',
|
@@ -6857,6 +6871,8 @@ my %ciMaxFocal = (
|
|
6857
6871
|
290 => 'Canon RF 400mm F2.8L IS USM + RF1.4x', #IB
|
6858
6872
|
291 => 'Canon RF 400mm F2.8L IS USM + RF2x', #IB
|
6859
6873
|
292 => 'Canon RF 600mm F4L IS USM', #GiaZopatti
|
6874
|
+
293 => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
|
6875
|
+
294 => 'Canon RF 600mm F4L IS USM + RF2x', #42
|
6860
6876
|
295 => 'Canon RF 800mm F5.6L IS USM', #42
|
6861
6877
|
296 => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
|
6862
6878
|
297 => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
|
@@ -6867,6 +6883,10 @@ my %ciMaxFocal = (
|
|
6867
6883
|
303 => 'Canon RF 135mm F1.8 L IS USM', #42
|
6868
6884
|
304 => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
|
6869
6885
|
305 => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
|
6886
|
+
306 => 'Canon RF 100-300mm F2.8L IS USM', #42
|
6887
|
+
307 => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
|
6888
|
+
308 => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
|
6889
|
+
313 => 'Canon RF 28mm F2.8 STM', #42
|
6870
6890
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
6871
6891
|
},
|
6872
6892
|
},
|
@@ -11,6 +11,7 @@
|
|
11
11
|
# 4) http://msdn.microsoft.com/en-us/library/aa380374.aspx
|
12
12
|
# 5) http://www.cpan.org/modules/by-authors/id/H/HC/HCARVEY/File-MSWord-0.1.zip
|
13
13
|
# 6) https://msdn.microsoft.com/en-us/library/cc313153(v=office.12).aspx
|
14
|
+
# 7) https://learn.microsoft.com/en-us/openspecs/office_file_formats/ms-oshared/3ef02e83-afef-4b6c-9585-c109edd24e07
|
14
15
|
#------------------------------------------------------------------------------
|
15
16
|
|
16
17
|
package Image::ExifTool::FlashPix;
|
@@ -21,7 +22,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
|
|
21
22
|
use Image::ExifTool::Exif;
|
22
23
|
use Image::ExifTool::ASF; # for GetGUID()
|
23
24
|
|
24
|
-
$VERSION = '1.
|
25
|
+
$VERSION = '1.46';
|
25
26
|
|
26
27
|
sub ProcessFPX($$);
|
27
28
|
sub ProcessFPXR($$$);
|
@@ -587,6 +588,7 @@ my %fpxFileType = (
|
|
587
588
|
However, ExifTool will also extract any other information found in the
|
588
589
|
UserDefined properties.
|
589
590
|
},
|
591
|
+
# 0x01 => 'CodePage', #7
|
590
592
|
0x02 => 'Category',
|
591
593
|
0x03 => 'PresentationTarget',
|
592
594
|
0x04 => 'Bytes',
|
@@ -631,12 +633,16 @@ my %fpxFileType = (
|
|
631
633
|
Name => 'AppVersion',
|
632
634
|
ValueConv => 'sprintf("%d.%.4d",$val >> 16, $val & 0xffff)',
|
633
635
|
},
|
634
|
-
# 0x18 ? seen -1
|
636
|
+
# 0x18 ? seen -1 (DigitalSignature, VtDigSig format, ref 7)
|
635
637
|
# 0x19 ? seen 0
|
636
638
|
# 0x1a ? seen 0
|
637
639
|
# 0x1b ? seen 0
|
638
640
|
# 0x1c ? seen 0,1
|
639
641
|
# 0x1d ? seen 1
|
642
|
+
0x1a => 'ContentType', #7, github#217
|
643
|
+
0x1b => 'ContentStatus', #7, github#217
|
644
|
+
0x1c => 'Language', #7, github#217
|
645
|
+
0x1d => 'DocVersion', #7, github#217
|
640
646
|
# 0x1e ? seen 1
|
641
647
|
# 0x1f ? seen 1,5
|
642
648
|
# 0x20 ? seen 0,5
|
@@ -31,7 +31,7 @@ use vars qw($VERSION);
|
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
32
32
|
use Image::ExifTool::Exif;
|
33
33
|
|
34
|
-
$VERSION = '1.
|
34
|
+
$VERSION = '1.89';
|
35
35
|
|
36
36
|
sub ProcessFujiDir($$$);
|
37
37
|
sub ProcessFaceRec($$$);
|
@@ -670,6 +670,7 @@ my %faceCategories = (
|
|
670
670
|
0x800 => 'Classic Negative', #forum10536
|
671
671
|
0x900 => 'Bleach Bypass', #forum10890
|
672
672
|
0xa00 => 'Nostalgic Neg', #forum12085
|
673
|
+
0xb00 => 'Reala ACE', #forum15190
|
673
674
|
},
|
674
675
|
},
|
675
676
|
0x1402 => { #2
|
@@ -897,6 +898,8 @@ my %faceCategories = (
|
|
897
898
|
25 => 'Aircraft Cockpit',
|
898
899
|
26 => 'Train Front',
|
899
900
|
27 => 'Train Cockpit',
|
901
|
+
28 => 'Animal Head (28)', #forum15192
|
902
|
+
29 => 'Animal Body (29)', #forum15192
|
900
903
|
},'REPEAT'],
|
901
904
|
},
|
902
905
|
# 0x4202 int8u[-1] - number of cooredinates in each rectangle? (ref 11)
|
@@ -1109,7 +1109,7 @@ sub SetGeoValues($$;$)
|
|
1109
1109
|
$iExt = $i1;
|
1110
1110
|
}
|
1111
1111
|
if (abs($time - $tn) > $geoMaxExtSecs) {
|
1112
|
-
$err or $err = 'Time is too far from nearest GPS fix';
|
1112
|
+
$err or $err = 'Time is too far from nearest GPS fix'.' '.abs($time-$tn).' '.$geoMaxExtSecs;
|
1113
1113
|
$et->VPrint(2, ' Nearest fix: ', PrintFixTime($tn), "\n") if $verbose > 2;
|
1114
1114
|
$fix = { } if $$geotag{DateTimeOnly};
|
1115
1115
|
} else {
|