exiftool_vendored 12.68.0 → 12.70.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 +63 -15
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +2 -2
- data/bin/exiftool +13 -13
- data/bin/lib/Image/ExifTool/CBOR.pm +18 -2
- data/bin/lib/Image/ExifTool/Canon.pm +68 -16
- data/bin/lib/Image/ExifTool/DJI.pm +3 -2
- data/bin/lib/Image/ExifTool/DNG.pm +25 -2
- data/bin/lib/Image/ExifTool/EXE.pm +54 -6
- data/bin/lib/Image/ExifTool/Exif.pm +175 -14
- data/bin/lib/Image/ExifTool/FujiFilm.pm +142 -20
- data/bin/lib/Image/ExifTool/GIF.pm +5 -1
- data/bin/lib/Image/ExifTool/ID3.pm +70 -7
- data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
- data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
- data/bin/lib/Image/ExifTool/Jpeg2000.pm +30 -15
- data/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
- data/bin/lib/Image/ExifTool/Nikon.pm +58 -18
- data/bin/lib/Image/ExifTool/Olympus.pm +7 -1
- data/bin/lib/Image/ExifTool/PNG.pm +8 -13
- data/bin/lib/Image/ExifTool/Panasonic.pm +15 -2
- data/bin/lib/Image/ExifTool/PhotoMechanic.pm +2 -2
- data/bin/lib/Image/ExifTool/QuickTime.pm +32 -5
- data/bin/lib/Image/ExifTool/README +14 -5
- data/bin/lib/Image/ExifTool/RIFF.pm +60 -10
- data/bin/lib/Image/ExifTool/Sony.pm +95 -34
- data/bin/lib/Image/ExifTool/TagLookup.pm +6937 -6714
- data/bin/lib/Image/ExifTool/TagNames.pod +812 -332
- data/bin/lib/Image/ExifTool/Text.pm +4 -5
- data/bin/lib/Image/ExifTool/Validate.pm +23 -20
- data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
- data/bin/lib/Image/ExifTool/WriteExif.pl +14 -4
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -0
- data/bin/lib/Image/ExifTool/WriteRIFF.pl +31 -6
- data/bin/lib/Image/ExifTool/Writer.pl +40 -14
- data/bin/lib/Image/ExifTool/XMP.pm +67 -2
- data/bin/lib/Image/ExifTool/XMP2.pl +35 -0
- data/bin/lib/Image/ExifTool.pm +79 -40
- data/bin/lib/Image/ExifTool.pod +9 -3
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8660bdc38a746e24a73d1b5a0b167250bce83398c78d24f4a2ef736b9bb7a5a4
|
4
|
+
data.tar.gz: 8fc11e9218cf70d7ab1bf608b39bcd12693aea6c20bdaf3d31907a95ff21b626
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 77b2a89162d45e272bb27aa0481c57ea95fae1e677081aad86976accda1492f622e46d789c39818e4de31b1e1fa8fb951c4687a20ecfe7d5435a98df30b73a19
|
7
|
+
data.tar.gz: 9d59b5179a8b89b99456845bc087b643290efe2bcfddffbed73eb224b7fb7f669a43f1e5c29f60ae60bf3d00ac3142372cee21932c65d321e1868f35fa5e567e
|
data/bin/Changes
CHANGED
@@ -4,24 +4,74 @@ ExifTool Version History
|
|
4
4
|
|
5
5
|
RSS feed: https://exiftool.org/rss.xml
|
6
6
|
|
7
|
-
Note: The most recent production release is Version 12.
|
7
|
+
Note: The most recent production release is Version 12.70. (Other versions are
|
8
8
|
considered development releases, and are not uploaded to MetaCPAN.)
|
9
9
|
|
10
|
+
Nov. 19, 2023 - Version 12.70 (production release)
|
11
|
+
|
12
|
+
- This marks the 20th anniversary of the initial ExifTool release!
|
13
|
+
- Added ability to read/delete C2PA CAI JUMBF metadata from TIFF-based images
|
14
|
+
(eg. DNG), QuickTime-based files (eg. MP4) and WebP images, and read JUMBF
|
15
|
+
from other RIFF-based files (eg. WAV, AVI), GIF images and ID3v2 metadata
|
16
|
+
- Added read/write support for JPH images
|
17
|
+
- Added ability to read Leica Q3 maker notes
|
18
|
+
- Added ability to recognize and write FujiFilm M-RAW RAF images (multiple raw
|
19
|
+
images in a single file) and the ability to read preview-less RAF images
|
20
|
+
- Added support for reading a number of obscure Microsoft EXIF tags
|
21
|
+
- Added a few new Sony lenses and support for the ILCE-9M3 (thanks Jos Roost)
|
22
|
+
- Added a couple of new Panasonic Leica lenses
|
23
|
+
- Added a couple of new Canon RF lenses (thanks Norbert Wasser)
|
24
|
+
- Added a number of new CPUType values for ELF executables
|
25
|
+
- Added some new Olympus CameraType values
|
26
|
+
- Decode a few more ID3v2.2 tags (github #142)
|
27
|
+
- Decode a few new Canon G5X Mark II tags (thanks Martin B.)
|
28
|
+
- Decode WB_RGGBLevels for a few more Nikon cameras
|
29
|
+
- Extract information from FujiFilm M-RAW header
|
30
|
+
- Improved decoding of a few Nikon Z tags (thanks Warren Hatch)
|
31
|
+
- Marked misspelt XMP-drone-dji:GPSLongtitude tag to Avoid when writing
|
32
|
+
- Changed RIFF MaxDataRate conversion to use SI prefixes by default
|
33
|
+
- Fixed decoding of unknown ColorBalance information for some Nikon models
|
34
|
+
- Fixed an incorrect Nikon Z LensID
|
35
|
+
- API Changes:
|
36
|
+
- Added ByteUnit option
|
37
|
+
|
38
|
+
Oct. 26, 2023 - Version 12.69
|
39
|
+
|
40
|
+
- Added support for DNG version 1.7.0.0
|
41
|
+
- Added a new XMP-GCamera tag
|
42
|
+
- Added a number of new Nikon Z lenses (thanks Warren Hatch and Stefan)
|
43
|
+
- Added a number of new XMP-crs tags
|
44
|
+
- Extract XML metadata from some Hasselblad images
|
45
|
+
- Tweaked -fast2 option to read metadata from inside mdat atom of HEIC images
|
46
|
+
- Patched FFF reader to be more tolerant of the mess made by incompetent
|
47
|
+
Hasselblad programmers (wrong IFD count for some values)
|
48
|
+
- Patched WebP reader to be more tolerant of the mess made by incompetent
|
49
|
+
Google programmers (EXIF with wrong header and XMP with wrong ID)
|
50
|
+
- Fixed writing of MakerNotes as a block to CR3 images (now properly stored in
|
51
|
+
the CMT3 chunk instead of the ExifIFD) and added ability to delete them from
|
52
|
+
the ExifIFD of CR3 images
|
53
|
+
- Fixed problem which could cause runtime error when copying MakerNotes from a
|
54
|
+
file that contains multiple maker note blocks
|
55
|
+
- Fixed problem which could cause "use of uninitialized variable" warnings
|
56
|
+
when reading images from some Nikon cameras
|
57
|
+
- Fixed List type for new XMP-photomech:CreatorIdentity tag
|
58
|
+
|
10
59
|
Oct. 16, 2023 - Version 12.68
|
11
60
|
|
12
61
|
- Added preliminary read support for XISF images
|
13
|
-
- Added the ability to delete JUMBF metadata from PNG images
|
62
|
+
- Added the ability to delete CAI JUMBF metadata from PNG images
|
14
63
|
- Added support for writing Canon burst-roll CR3 images
|
15
|
-
- Added a new Nikon Z9 SubjectDetection value, and improved Zf support
|
64
|
+
- Added a new Nikon Z9 SubjectDetection value, and improved Zf support (thanks
|
65
|
+
Warren Hatch)
|
16
66
|
- Added a couple of new PentaxModelID values
|
17
67
|
- Added a few couple of new tag values for the Pentax K-3 Mark III Monochrome (github #226)
|
18
|
-
- Added a
|
68
|
+
- Added a new XMP-photomech tag
|
69
|
+
- Added a new QuickTime ItemList tag
|
19
70
|
- Added a new Nikon LensID
|
20
71
|
- Added a new Canon LensType
|
21
|
-
- Added a new QuickTime ItemList tag
|
22
72
|
- Support decimal values for FujiFilm ShadowTone and HighlightTone tags
|
23
73
|
- Decode some new Sony tags (thanks Jos Roost)
|
24
|
-
- Decode ShutterCount for Canon EOS R6 (thanks
|
74
|
+
- Decode ShutterCount for Canon EOS R6 (thanks Martin B.)
|
25
75
|
- Decode QuickTime VideoFullRangeFlag
|
26
76
|
- Decode JPGCompression for the Nikon D3S
|
27
77
|
- Enhanced -geotag feature to allow writing QuickTime:GPSCoordinates
|
@@ -176,8 +226,6 @@ Apr. 5, 2023 - Version 12.60 (production release)
|
|
176
226
|
- Fixed problem where setting the Geotime value didn't work when using an
|
177
227
|
advanced-formatting expression containing a greater-than symbol (>)
|
178
228
|
|
179
|
-
History of older versions (back to Nov. 19, 2003 - Version 1.00) -->
|
180
|
-
|
181
229
|
Mar. 28, 2023 - Version 12.59
|
182
230
|
|
183
231
|
- COMPATIBILITY WARNING: Changed the calculated ImageDataMD5 for JPEG images
|
@@ -307,7 +355,7 @@ Dec. 6, 2022 - Version 12.52
|
|
307
355
|
Nov. 21, 2022 - Version 12.51
|
308
356
|
|
309
357
|
- Added a new Olympus LensType (thanks Herb)
|
310
|
-
- Extract C2PA JUMBF metadata from PNG images and extract C2PA Salt values
|
358
|
+
- Extract C2PA CAI JUMBF metadata from PNG images and extract C2PA Salt values
|
311
359
|
- Decode NikonSettings for Z9 firmware 3.0 (thanks Warren Hatch)
|
312
360
|
- Decode additional camm metadata from Insta360 Pro2 MP4 videos
|
313
361
|
- Improved Verbose output when writing Composite tags to add a "+" sign to
|
@@ -690,8 +738,8 @@ Oct. 16, 2021 - Version 12.33
|
|
690
738
|
|
691
739
|
Sept. 30, 2021 - Version 12.32
|
692
740
|
|
693
|
-
- Added support for CBOR-format metadata in JUMBF (note that JUMBF support
|
694
|
-
still experimental)
|
741
|
+
- Added support for CBOR-format metadata in CAI JUMBF (note that JUMBF support
|
742
|
+
is still experimental)
|
695
743
|
- Added a new Nikon LensID
|
696
744
|
- Added a new Pentax LensType
|
697
745
|
- Decode timed GPS for two more dashcam formats
|
@@ -750,7 +798,7 @@ July 9, 2021 - Version 12.29
|
|
750
798
|
- Improved a QuickTime "File format error" message to be more meaningful, and
|
751
799
|
made it a minor error
|
752
800
|
- Changed PNG writer to add EXIF before IDAT
|
753
|
-
- Some changes the way JUMBF metadata is handled
|
801
|
+
- Some changes the way CAI JUMBF metadata is handled
|
754
802
|
- Patched to read timed GPS from a different type of INSV videos
|
755
803
|
- Patched a security issue
|
756
804
|
- Fixed problem where ExifTool could hang when processing mebx timed metadata
|
@@ -826,7 +874,7 @@ Apr. 13, 2021 - Version 12.24
|
|
826
874
|
- Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard)
|
827
875
|
- Updated acdsee.config in distribution (thanks StarGeek)
|
828
876
|
- Recognize AutoCAD DXF files
|
829
|
-
- More work on experimental JUMBF read support
|
877
|
+
- More work on experimental CAI JUMBF read support
|
830
878
|
- More work on experimental JPEG XL read/write support
|
831
879
|
- Patched security vulnerability in DjVu reader
|
832
880
|
|
@@ -834,8 +882,8 @@ Apr. 1, 2021 - Version 12.23
|
|
834
882
|
|
835
883
|
- Added support for Olympus ORI files
|
836
884
|
- Added experimental read/write support for JPEG XL images
|
837
|
-
- Added experimental read support for
|
838
|
-
images
|
885
|
+
- Added experimental read support for CAI (Content Authenticity Initiative)
|
886
|
+
JUMBF-format metadata in JPEG and Jpeg2000 images
|
839
887
|
- Added built-in support for parsing GPS track from Denver ACG-8050 videos
|
840
888
|
with the -ee option
|
841
889
|
- Added a some new Sony lenses (thanks Jos Roost and LibRaw)
|
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.70.tar.gz | tar -xf -
|
112
|
+
cd Image-ExifTool-12.70
|
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.70';
|
15
15
|
|
16
16
|
# add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
|
17
17
|
my $exePath;
|
@@ -4738,7 +4738,7 @@ L<Input-output text formatting|/Input-output text formatting>
|
|
4738
4738
|
-n (--printConv) No print conversion
|
4739
4739
|
-p FMTFILE (-printFormat) Print output in specified format
|
4740
4740
|
-php Export tags as a PHP Array
|
4741
|
-
-s[NUM] (-short) Short output format
|
4741
|
+
-s[NUM] (-short) Short output format (-s for tag names)
|
4742
4742
|
-S (-veryShort) Very short output format
|
4743
4743
|
-sep STR (-separator) Set separator string for list items
|
4744
4744
|
-sort Sort output alphabetically
|
@@ -4951,7 +4951,7 @@ while C<-all:all=> deletes entire blocks.
|
|
4951
4951
|
application segments which are not associated with another deletable group.
|
4952
4952
|
For example, specifying C<-APP14:All=> will NOT delete the APP14 "Adobe"
|
4953
4953
|
segment because this is accomplished with C<-Adobe:All>. But note that
|
4954
|
-
these unnamed APP segments may not be excluded with C<--APPxx:all>
|
4954
|
+
these unnamed APP segments may not be excluded with C<--APPxx:all> when
|
4955
4955
|
deleting all information.
|
4956
4956
|
|
4957
4957
|
6) When shifting a value, the shift is applied to the original value of the
|
@@ -5582,7 +5582,7 @@ with this command:
|
|
5582
5582
|
|
5583
5583
|
produces output like this:
|
5584
5584
|
|
5585
|
-
-- Generated by ExifTool 12.
|
5585
|
+
-- Generated by ExifTool 12.70 --
|
5586
5586
|
File: a.jpg - 2003:10:31 15:44:19
|
5587
5587
|
(f/5.6, 1/60s, ISO 100)
|
5588
5588
|
File: b.jpg - 2006:05:23 11:57:38
|
@@ -6593,15 +6593,15 @@ option no longer suppresses the output "{readyNUM}" message.
|
|
6593
6593
|
|
6594
6594
|
Read tags from an alternate source file. Among other things, this allows
|
6595
6595
|
tags from different files to be compared and combined using the B<-if> and
|
6596
|
-
B<-p> options.
|
6597
|
-
family 8 group name (eg. C<File1:TAG> for
|
6598
|
-
for B<-file2>, etc). I<ALTFILE> may
|
6599
|
-
the B<-w> option (%d, %f, etc),
|
6600
|
-
|
6601
|
-
|
6602
|
-
C<money$$.jpg>). For example, assuming that
|
6603
|
-
been set in the edited file, a command to copy
|
6604
|
-
could look like this:
|
6596
|
+
B<-p> options. I<NUM> is any string of digits. Tags from alternate files
|
6597
|
+
are accessed via the corresponding family 8 group name (eg. C<File1:TAG> for
|
6598
|
+
the B<-file1> option, C<File2:TAG> for B<-file2>, etc). I<ALTFILE> may
|
6599
|
+
contain filename formatting codes like the B<-w> option (%d, %f, etc),
|
6600
|
+
and/or tag names with a leading C<$> symbol to access tags from the source
|
6601
|
+
file in the same way as the B<-p> option (so any other dollar symbol in the
|
6602
|
+
file name must be doubled, eg. C<money$$.jpg>). For example, assuming that
|
6603
|
+
the OriginalFileName tag has been set in the edited file, a command to copy
|
6604
|
+
Rights from the original file could look like this:
|
6605
6605
|
|
6606
6606
|
exiftool -file1 '$originalfilename' '-rights<file1:rights' edited.jpg
|
6607
6607
|
|
@@ -7,6 +7,7 @@
|
|
7
7
|
#
|
8
8
|
# References: 1) https://c2pa.org/public-draft/
|
9
9
|
# 2) https://datatracker.ietf.org/doc/html/rfc7049
|
10
|
+
# 3) https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml
|
10
11
|
#------------------------------------------------------------------------------
|
11
12
|
|
12
13
|
package Image::ExifTool::CBOR;
|
@@ -15,7 +16,7 @@ use vars qw($VERSION);
|
|
15
16
|
use Image::ExifTool qw(:DataAccess :Utils);
|
16
17
|
use Image::ExifTool::JSON;
|
17
18
|
|
18
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.02';
|
19
20
|
|
20
21
|
sub ProcessCBOR($$$);
|
21
22
|
sub ReadCBORValue($$$$);
|
@@ -28,15 +29,27 @@ my %cborType6 = (
|
|
28
29
|
3 => 'negative bignum',
|
29
30
|
4 => 'decimal fraction',
|
30
31
|
5 => 'bigfloat',
|
32
|
+
16 => 'COSE Encrypt0', #3 (COSE Single Recipient Encrypted Data Object)
|
33
|
+
17 => 'COSE Mac0', #3 (COSE Mac w/o Recipients Object)
|
34
|
+
18 => 'COSE Sign1', #3 (COSE Single Signer Data Object)
|
35
|
+
19 => 'COSE Countersignature', #3 (COSE standalone V2 countersignature)
|
31
36
|
21 => 'expected base64url encoding',
|
32
37
|
22 => 'expected base64 encoding',
|
33
38
|
23 => 'expected base16 encoding',
|
34
39
|
24 => 'encoded CBOR data',
|
40
|
+
25 => 'string number', #3 (reference the nth previously seen string)
|
41
|
+
26 => 'serialized Perl', #3 (Serialised Perl object with classname and constructor arguments)
|
42
|
+
27 => 'serialized code', #3 (Serialised language-independent object with type name and constructor arguments)
|
43
|
+
28 => 'shared value', #3 (mark value as (potentially) shared)
|
44
|
+
29 => 'shared value number', #3 (reference nth marked value)
|
45
|
+
30 => 'rational', #3 (Rational number)
|
46
|
+
31 => 'missing array value', #3 (Absent value in a CBOR Array)
|
35
47
|
32 => 'URI',
|
36
48
|
33 => 'base64url',
|
37
49
|
34 => 'base64',
|
38
50
|
35 => 'regular expression',
|
39
51
|
36 => 'MIME message',
|
52
|
+
# (lots more after this in ref 3, but don't include them unless we see them)
|
40
53
|
55799 => 'CBOR magic number',
|
41
54
|
);
|
42
55
|
|
@@ -212,7 +225,7 @@ sub ReadCBORValue($$$$)
|
|
212
225
|
{
|
213
226
|
$val = $$val[1] * ($num == 4 ? 10 : 2) ** $$val[0];
|
214
227
|
}
|
215
|
-
} elsif ($fmt == 7) {
|
228
|
+
} elsif ($fmt == 7) {
|
216
229
|
if ($dat == 31) {
|
217
230
|
undef $val; # "break" = end of indefinite array/hash (not used in C2PA)
|
218
231
|
} elsif ($dat < 24) {
|
@@ -263,6 +276,7 @@ sub ProcessCBOR($$$)
|
|
263
276
|
my ($val, $err, $tag, $i);
|
264
277
|
|
265
278
|
$et->VerboseDir('CBOR', undef, $$dirInfo{DirLen});
|
279
|
+
SetByteOrder('MM');
|
266
280
|
|
267
281
|
$$et{cbor_datapos} = $$dirInfo{DataPos} + $$dirInfo{Base};
|
268
282
|
|
@@ -320,6 +334,8 @@ under the same terms as Perl itself.
|
|
320
334
|
|
321
335
|
=item L<https://datatracker.ietf.org/doc/html/rfc7049>
|
322
336
|
|
337
|
+
=item L<https://www.iana.org/assignments/cbor-tags/cbor-tags.xhtml>
|
338
|
+
|
323
339
|
=back
|
324
340
|
|
325
341
|
=head1 SEE ALSO
|
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
|
|
88
88
|
sub ProcessExifInfo($$$);
|
89
89
|
sub SwapWords($);
|
90
90
|
|
91
|
-
$VERSION = '4.
|
91
|
+
$VERSION = '4.71';
|
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)
|
@@ -611,22 +611,23 @@ $VERSION = '4.69';
|
|
611
611
|
'61182.35' => 'Canon RF 600mm F4L IS USM', #GiaZopatti
|
612
612
|
'61182.36' => 'Canon RF 600mm F4L IS USM + RF1.4x', #42
|
613
613
|
'61182.37' => 'Canon RF 600mm F4L IS USM + RF2x', #42
|
614
|
-
'61182.38' => 'Canon RF
|
615
|
-
'61182.39' => 'Canon RF 800mm F5.6L IS USM', #42
|
616
|
-
'61182.40' => 'Canon RF 800mm F5.6L IS USM +
|
617
|
-
'61182.41' => 'Canon RF
|
618
|
-
'61182.42' => 'Canon RF 1200mm F8L IS USM', #42
|
619
|
-
'61182.43' => 'Canon RF 1200mm F8L IS USM +
|
620
|
-
'61182.44' => 'Canon RF
|
621
|
-
'61182.45' => 'Canon RF
|
622
|
-
'61182.46' => 'Canon RF
|
623
|
-
'61182.47' => 'Canon RF
|
624
|
-
'61182.48' => 'Canon RF
|
625
|
-
'61182.49' => 'Canon RF 100-300mm F2.8L IS USM
|
626
|
-
'61182.50' => 'Canon RF 100-300mm F2.8L IS USM +
|
627
|
-
'61182.51' => 'Canon RF
|
614
|
+
'61182.38' => 'Canon RF 800mm F5.6L IS USM', #42
|
615
|
+
'61182.39' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
|
616
|
+
'61182.40' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
|
617
|
+
'61182.41' => 'Canon RF 1200mm F8L IS USM', #42
|
618
|
+
'61182.42' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
|
619
|
+
'61182.43' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
|
620
|
+
'61182.44' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH
|
621
|
+
'61182.45' => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
|
622
|
+
'61182.46' => 'Canon RF 135mm F1.8 L IS USM', #42
|
623
|
+
'61182.47' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
|
624
|
+
'61182.48' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
|
625
|
+
'61182.49' => 'Canon RF 100-300mm F2.8L IS USM', #42
|
626
|
+
'61182.50' => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
|
627
|
+
'61182.51' => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
|
628
|
+
'61182.52' => 'Canon RF 10-20mm F4 L IS STM', #42
|
629
|
+
'61182.53' => 'Canon RF 28mm F2.8 STM', #42
|
628
630
|
# we need the RFLensType values for the following...
|
629
|
-
'61182.52' => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH (NC)
|
630
631
|
65535 => 'n/a',
|
631
632
|
);
|
632
633
|
|
@@ -1395,6 +1396,11 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
|
|
1395
1396
|
Condition => '$$self{Model} =~ /\bEOS R6$/',
|
1396
1397
|
SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoR6' },
|
1397
1398
|
},
|
1399
|
+
{
|
1400
|
+
Name => 'CanonCameraInfoG5XII',
|
1401
|
+
Condition => '$$self{Model} =~ /\bG5 X Mark II$/',
|
1402
|
+
SubDirectory => { TagTable => 'Image::ExifTool::Canon::CameraInfoG5XII' },
|
1403
|
+
},
|
1398
1404
|
{
|
1399
1405
|
Name => 'CanonCameraInfoPowerShot',
|
1400
1406
|
# valid if format is int32u[138] or int32u[148]
|
@@ -4714,6 +4720,44 @@ my %ciMaxFocal = (
|
|
4714
4720
|
},
|
4715
4721
|
);
|
4716
4722
|
|
4723
|
+
# ref https://exiftool.org/forum/index.php?topic=15356.0
|
4724
|
+
%Image::ExifTool::Canon::CameraInfoG5XII = (
|
4725
|
+
%binaryDataAttrs,
|
4726
|
+
FIRST_ENTRY => 0,
|
4727
|
+
PRIORITY => 0,
|
4728
|
+
GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
|
4729
|
+
NOTES => 'CameraInfo tags for the EOS R6.',
|
4730
|
+
0x0293 => {
|
4731
|
+
Name => 'ShutterCount',
|
4732
|
+
Format => 'int32u',
|
4733
|
+
Notes => 'includes electronic + mechanical shutter',
|
4734
|
+
# - advances by 1 for each photo file, regardless of mechanical or electronic shutter
|
4735
|
+
# - does not advance for regular video files
|
4736
|
+
# - advances for time lapse video files
|
4737
|
+
# - creating a new directory or resetting the counter from the menu doesn't affect this shutter count
|
4738
|
+
},
|
4739
|
+
0x0b21 => {
|
4740
|
+
Name => 'DirectoryIndex',
|
4741
|
+
Groups => { 2 => 'Image' },
|
4742
|
+
Format => 'int32u',
|
4743
|
+
},
|
4744
|
+
0x0b2d => {
|
4745
|
+
Name => 'FileIndex',
|
4746
|
+
Format => 'int32u',
|
4747
|
+
Groups => { 2 => 'Image' },
|
4748
|
+
Format => 'int32u',
|
4749
|
+
ValueConv => '$val + 1',
|
4750
|
+
ValueConvInv => '$val - 1',
|
4751
|
+
},
|
4752
|
+
#0x0b39 => {
|
4753
|
+
# Name => 'DirectoryIndex',
|
4754
|
+
# Groups => { 2 => 'Image' },
|
4755
|
+
# Format => 'int32u',
|
4756
|
+
# ValueConv => '$val - 1',
|
4757
|
+
# ValueConvInv => '$val + 1',
|
4758
|
+
#},
|
4759
|
+
);
|
4760
|
+
|
4717
4761
|
# Canon camera information for 70D (MakerNotes tag 0x0d) (ref PH)
|
4718
4762
|
%Image::ExifTool::Canon::CameraInfo70D = (
|
4719
4763
|
%binaryDataAttrs,
|
@@ -6898,6 +6942,7 @@ my %ciMaxFocal = (
|
|
6898
6942
|
298 => 'Canon RF 1200mm F8L IS USM', #42
|
6899
6943
|
299 => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
|
6900
6944
|
300 => 'Canon RF 1200mm F8L IS USM + RF2x', #42
|
6945
|
+
301 => 'Canon RF 5.2mm F2.8L Dual Fisheye 3D VR', #PH
|
6901
6946
|
302 => 'Canon RF 15-30mm F4.5-6.3 IS STM', #42
|
6902
6947
|
303 => 'Canon RF 135mm F1.8 L IS USM', #42
|
6903
6948
|
304 => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
|
@@ -6905,6 +6950,7 @@ my %ciMaxFocal = (
|
|
6905
6950
|
306 => 'Canon RF 100-300mm F2.8L IS USM', #42
|
6906
6951
|
307 => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
|
6907
6952
|
308 => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
|
6953
|
+
312 => 'Canon RF 10-20mm F4 L IS STM', #42
|
6908
6954
|
313 => 'Canon RF 28mm F2.8 STM', #42
|
6909
6955
|
# Note: add new RF lenses to %canonLensTypes with ID 61182
|
6910
6956
|
},
|
@@ -9100,8 +9146,14 @@ my %filterConv = (
|
|
9100
9146
|
CMT3 => { # (CR3 files)
|
9101
9147
|
Name => 'MakerNoteCanon',
|
9102
9148
|
PreservePadding => 1,
|
9149
|
+
Writable => 'undef', # (writable directory!)
|
9150
|
+
# (note that ExifTool 12.68 and earlier lacked the ability to write this as a block,
|
9151
|
+
# and would instead add the maker notes the the CMT2 ExifIFD. To remove these
|
9152
|
+
# incorrectly-placed maker notes, use "exiftool -exififd:makernotes= FILE")
|
9153
|
+
MakerNotes => 1,
|
9103
9154
|
SubDirectory => {
|
9104
9155
|
TagTable => 'Image::ExifTool::Canon::Main',
|
9156
|
+
DirName => 'MakerNotes', # (necessary for mechanism that prevents these from being deleted)
|
9105
9157
|
ProcessProc => \&ProcessCMT3,
|
9106
9158
|
WriteProc => \&Image::ExifTool::WriteTIFF,
|
9107
9159
|
},
|
@@ -16,7 +16,7 @@ use Image::ExifTool::Exif;
|
|
16
16
|
use Image::ExifTool::XMP;
|
17
17
|
use Image::ExifTool::GPS;
|
18
18
|
|
19
|
-
$VERSION = '1.
|
19
|
+
$VERSION = '1.09';
|
20
20
|
|
21
21
|
sub ProcessDJIInfo($$$);
|
22
22
|
|
@@ -143,9 +143,10 @@ my %convFloat2 = (
|
|
143
143
|
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "N")',
|
144
144
|
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lat")',
|
145
145
|
},
|
146
|
-
GpsLongtitude => { # (
|
146
|
+
GpsLongtitude => { # [sic] (misspelt in DJI original file)
|
147
147
|
Name => 'GPSLongtitude',
|
148
148
|
Writable => 'real',
|
149
|
+
Avoid => 1, # (in case someone tries to write "GPSLong*")
|
149
150
|
PrintConv => 'Image::ExifTool::GPS::ToDMS($self, $val, 1, "E")',
|
150
151
|
PrintConvInv => 'Image::ExifTool::GPS::ToDegrees($val, 1, "lon")',
|
151
152
|
},
|
@@ -17,7 +17,7 @@ use Image::ExifTool::Exif;
|
|
17
17
|
use Image::ExifTool::MakerNotes;
|
18
18
|
use Image::ExifTool::CanonRaw;
|
19
19
|
|
20
|
-
$VERSION = '1.
|
20
|
+
$VERSION = '1.24';
|
21
21
|
|
22
22
|
sub ProcessOriginalRaw($$$);
|
23
23
|
sub ProcessAdobeData($$$);
|
@@ -120,6 +120,25 @@ sub WriteAdobeStuff($$$);
|
|
120
120
|
},
|
121
121
|
);
|
122
122
|
|
123
|
+
# (DNG 1.7)
|
124
|
+
%Image::ExifTool::DNG::ImageSeq = (
|
125
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
126
|
+
0 => { Name => 'SeqID', Format => 'var_string' },
|
127
|
+
1 => { Name => 'SeqType', Format => 'var_string' },
|
128
|
+
2 => { Name => 'SeqFrameInfo', Format => 'var_string' },
|
129
|
+
3 => { Name => 'SeqIndex', Format => 'int32u' },
|
130
|
+
7 => { Name => 'SeqCount', Format => 'int32u' },
|
131
|
+
11 => { Name => 'SeqFinal', Format => 'int8u', PrintConv => { 0 => 'No', 1 => 'Yes' } },
|
132
|
+
);
|
133
|
+
|
134
|
+
# (DNG 1.7)
|
135
|
+
%Image::ExifTool::DNG::ProfileDynamicRange = (
|
136
|
+
PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
|
137
|
+
0 => { Name => 'PDRVersion', Format => 'int16u' },
|
138
|
+
2 => { Name => 'DynamicRange', Format => 'int16u', PrintConv => { 0 => 'Standard', 1 => 'High' } },
|
139
|
+
4 => { Name => 'HintMaxOutputValue', Format => 'float' },
|
140
|
+
);
|
141
|
+
|
123
142
|
# fill in maker notes
|
124
143
|
{
|
125
144
|
my $tagInfo;
|
@@ -786,7 +805,11 @@ sub ProcessAdobeMakN($$$)
|
|
786
805
|
return 1 unless $$tagInfo{Writable};
|
787
806
|
}
|
788
807
|
$val = substr($$dataPt, 20) unless defined $val;
|
789
|
-
$et->FoundTag($tagInfo, $val);
|
808
|
+
my $key = $et->FoundTag($tagInfo, $val);
|
809
|
+
if ($$et{MAKER_NOTE_FIXUP}) {
|
810
|
+
$$et{TAG_EXTRA}{$key}{Fixup} = $$et{MAKER_NOTE_FIXUP};
|
811
|
+
delete $$et{MAKER_NOTE_FIXUP};
|
812
|
+
}
|
790
813
|
}
|
791
814
|
}
|
792
815
|
return 1;
|
@@ -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.19';
|
25
25
|
|
26
26
|
sub ProcessPEResources($$);
|
27
27
|
sub ProcessPEVersion($$);
|
@@ -726,6 +726,7 @@ my %languageCode = (
|
|
726
726
|
Name => 'CPUType',
|
727
727
|
Format => 'int16u',
|
728
728
|
# ref /usr/include/linux/elf-em.h
|
729
|
+
# ref https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
|
729
730
|
PrintConv => {
|
730
731
|
0 => 'None',
|
731
732
|
1 => 'AT&T WE 32100',
|
@@ -736,21 +737,68 @@ my %languageCode = (
|
|
736
737
|
6 => 'i486',
|
737
738
|
7 => 'i860',
|
738
739
|
8 => 'MIPS R3000',
|
740
|
+
9 => 'IBM System/370',
|
739
741
|
10 => 'MIPS R4000',
|
740
|
-
15 => '
|
742
|
+
15 => 'HP PA-RISC',
|
741
743
|
18 => 'Sun v8plus',
|
744
|
+
19 => 'Intel 80960',
|
742
745
|
20 => 'PowerPC',
|
743
746
|
21 => 'PowerPC 64-bit',
|
744
747
|
22 => 'IBM S/390',
|
745
748
|
23 => 'Cell BE SPU',
|
749
|
+
36 => 'NEC V800',
|
750
|
+
37=> 'Fujitsu FR20',
|
751
|
+
38 => 'TRW RH-32',
|
752
|
+
39 => 'Motorola RCE',
|
753
|
+
40 => 'Arm (up to Armv7/AArch32)',
|
754
|
+
41 => 'Digital Alpha',
|
746
755
|
42 => 'SuperH',
|
747
756
|
43 => 'SPARC v9 64-bit',
|
757
|
+
44 => 'Siemens TriCore',
|
758
|
+
45 => 'Argonaut RISC Core',
|
748
759
|
46 => 'Renesas H8/300,300H,H8S',
|
760
|
+
47 => 'Hitachi H8/300H',
|
761
|
+
48 => 'Hitachi H8S',
|
762
|
+
49 => 'Hitachi H8/500',
|
749
763
|
50 => 'HP/Intel IA-64',
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
764
|
+
0x33 => 'Stanford MIPS-X',
|
765
|
+
0x34 => 'Motorola ColdFire',
|
766
|
+
0x35 => 'Motorola M68HC12',
|
767
|
+
0x36 => 'Fujitsu MMA Multimedia Accelerator',
|
768
|
+
0x37 => 'Siemens PCP',
|
769
|
+
0x38 => 'Sony nCPU embedded RISC processor',
|
770
|
+
0x39 => 'Denso NDR1 microprocessor',
|
771
|
+
0x3a => 'Motorola Star*Core processor',
|
772
|
+
0x3b => 'Toyota ME16 processor',
|
773
|
+
0x3c => 'STMicroelectronics ST100 processor',
|
774
|
+
0x3d => 'Advanced Logic Corp. TinyJ embedded processor family',
|
775
|
+
0x3e => 'AMD x86-64',
|
776
|
+
0x3f => 'Sony DSP Processor',
|
777
|
+
0x40 => 'Digital Equipment Corp. PDP-10',
|
778
|
+
0x41 => 'Digital Equipment Corp. PDP-11',
|
779
|
+
0x42 => 'Siemens FX66 microcontroller',
|
780
|
+
0x43 => 'STMicroelectronics ST9+ 8/16 bit microcontroller',
|
781
|
+
0x44 => 'STMicroelectronics ST7 8-bit microcontroller',
|
782
|
+
0x45 => 'Motorola MC68HC16 Microcontroller',
|
783
|
+
0x46 => 'Motorola MC68HC11 Microcontroller',
|
784
|
+
0x47 => 'Motorola MC68HC08 Microcontroller',
|
785
|
+
0x48 => 'Motorola MC68HC05 Microcontroller',
|
786
|
+
0x49 => 'Silicon Graphics SVx',
|
787
|
+
0x4a => 'STMicroelectronics ST19 8-bit microcontroller',
|
788
|
+
0x4b => 'Digital VAX',
|
789
|
+
0x4c => 'Axis Communications 32-bit embedded processor',
|
790
|
+
0x4d => 'Infineon Technologies 32-bit embedded processor',
|
791
|
+
0x4e => 'Element 14 64-bit DSP Processor',
|
792
|
+
0x4f => 'LSI Logic 16-bit DSP Processor',
|
793
|
+
0x57 => 'NEC v850',
|
794
|
+
0x58 => 'Renesas M32R',
|
795
|
+
0x8c => 'TMS320C6000 Family',
|
796
|
+
0xaf => 'MCST Elbrus e2k',
|
797
|
+
0xb7 => 'Arm 64-bits (Armv8/AArch64)',
|
798
|
+
0xdc => 'Zilog Z80',
|
799
|
+
0xf3 => 'RISC-V',
|
800
|
+
0xf7 => 'Berkeley Packet Filter',
|
801
|
+
0x101 => 'WDC 65C816',
|
754
802
|
0x5441 => 'Fujitsu FR-V',
|
755
803
|
0x9026 => 'Alpha', # (interim value)
|
756
804
|
0x9041 => 'm32r (old)',
|