exiftool_vendored 12.68.0 → 12.70.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.
- 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)',
|