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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +63 -15
  3. data/bin/META.json +1 -1
  4. data/bin/META.yml +1 -1
  5. data/bin/README +2 -2
  6. data/bin/exiftool +13 -13
  7. data/bin/lib/Image/ExifTool/CBOR.pm +18 -2
  8. data/bin/lib/Image/ExifTool/Canon.pm +68 -16
  9. data/bin/lib/Image/ExifTool/DJI.pm +3 -2
  10. data/bin/lib/Image/ExifTool/DNG.pm +25 -2
  11. data/bin/lib/Image/ExifTool/EXE.pm +54 -6
  12. data/bin/lib/Image/ExifTool/Exif.pm +175 -14
  13. data/bin/lib/Image/ExifTool/FujiFilm.pm +142 -20
  14. data/bin/lib/Image/ExifTool/GIF.pm +5 -1
  15. data/bin/lib/Image/ExifTool/ID3.pm +70 -7
  16. data/bin/lib/Image/ExifTool/InDesign.pm +1 -1
  17. data/bin/lib/Image/ExifTool/JPEG.pm +1 -1
  18. data/bin/lib/Image/ExifTool/Jpeg2000.pm +30 -15
  19. data/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
  20. data/bin/lib/Image/ExifTool/Nikon.pm +58 -18
  21. data/bin/lib/Image/ExifTool/Olympus.pm +7 -1
  22. data/bin/lib/Image/ExifTool/PNG.pm +8 -13
  23. data/bin/lib/Image/ExifTool/Panasonic.pm +15 -2
  24. data/bin/lib/Image/ExifTool/PhotoMechanic.pm +2 -2
  25. data/bin/lib/Image/ExifTool/QuickTime.pm +32 -5
  26. data/bin/lib/Image/ExifTool/README +14 -5
  27. data/bin/lib/Image/ExifTool/RIFF.pm +60 -10
  28. data/bin/lib/Image/ExifTool/Sony.pm +95 -34
  29. data/bin/lib/Image/ExifTool/TagLookup.pm +6937 -6714
  30. data/bin/lib/Image/ExifTool/TagNames.pod +812 -332
  31. data/bin/lib/Image/ExifTool/Text.pm +4 -5
  32. data/bin/lib/Image/ExifTool/Validate.pm +23 -20
  33. data/bin/lib/Image/ExifTool/WriteCanonRaw.pl +2 -2
  34. data/bin/lib/Image/ExifTool/WriteExif.pl +14 -4
  35. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +1 -0
  36. data/bin/lib/Image/ExifTool/WriteRIFF.pl +31 -6
  37. data/bin/lib/Image/ExifTool/Writer.pl +40 -14
  38. data/bin/lib/Image/ExifTool/XMP.pm +67 -2
  39. data/bin/lib/Image/ExifTool/XMP2.pl +35 -0
  40. data/bin/lib/Image/ExifTool.pm +79 -40
  41. data/bin/lib/Image/ExifTool.pod +9 -3
  42. data/bin/perl-Image-ExifTool.spec +1 -1
  43. data/lib/exiftool_vendored/version.rb +1 -1
  44. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8775a6c495517ead6255debf3b1c804d3e5648d563bea48171176632cfb5043b
4
- data.tar.gz: 305d08e52e2ef9b75538fe0305093dad86581448d56a21d66503863b11321a6f
3
+ metadata.gz: 8660bdc38a746e24a73d1b5a0b167250bce83398c78d24f4a2ef736b9bb7a5a4
4
+ data.tar.gz: 8fc11e9218cf70d7ab1bf608b39bcd12693aea6c20bdaf3d31907a95ff21b626
5
5
  SHA512:
6
- metadata.gz: aa79d6fa82ae949030c90fc5e07c0271eb837336e9ee8675a1bb468b1f4f5b430b0ce78678a75e5025520a1118b7defd21a8f06242ad019d2001e10d1f270e54
7
- data.tar.gz: ac7c7da4ef3ba52118a9bea9c0ccdc6a85f4d247e622e75c4e40567d582f0ca062eb68ad796a1a3745c5631c9800e243f45599a52cc8a2bfc99daf00af9cd928
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.60. (Other versions are
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 support for a new XMP-photomech tag
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 gamin)
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 is
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 JUMBF metadata in JPEG and Jpeg2000
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
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "12.68"
53
+ "version" : "12.70"
54
54
  }
data/bin/META.yml CHANGED
@@ -31,4 +31,4 @@ recommends:
31
31
  Time::HiRes: 0
32
32
  requires:
33
33
  perl: 5.004
34
- version: 12.68
34
+ version: 12.70
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.68.tar.gz | tar -xf -
112
- cd Image-ExifTool-12.68
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.68';
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>) when
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.68 --
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. Tags from alternate files are accessed via the corresponding
6597
- family 8 group name (eg. C<File1:TAG> for the B<-file1> option, C<File2:TAG>
6598
- for B<-file2>, etc). I<ALTFILE> may contain filename formatting codes like
6599
- the B<-w> option (%d, %f, etc), and/or tag names with a leading C<$> symbol
6600
- to access tags from the source file in the same way as the B<-p> option (so
6601
- any other dollar symbol in the file name must be doubled, eg.
6602
- C<money$$.jpg>). For example, assuming that the OriginalFileName tag has
6603
- been set in the edited file, a command to copy Rights from the original file
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.01';
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.69';
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 15-30mm F4.5-6.3 IS STM', #42
615
- '61182.39' => 'Canon RF 800mm F5.6L IS USM', #42
616
- '61182.40' => 'Canon RF 800mm F5.6L IS USM + RF1.4x', #42
617
- '61182.41' => 'Canon RF 800mm F5.6L IS USM + RF2x', #42
618
- '61182.42' => 'Canon RF 1200mm F8L IS USM', #42
619
- '61182.43' => 'Canon RF 1200mm F8L IS USM + RF1.4x', #42
620
- '61182.44' => 'Canon RF 1200mm F8L IS USM + RF2x', #42
621
- '61182.45' => 'Canon RF 135mm F1.8 L IS USM', #42
622
- '61182.46' => 'Canon RF 24-50mm F4.5-6.3 IS STM', #42
623
- '61182.47' => 'Canon RF-S 55-210mm F5-7.1 IS STM', #42
624
- '61182.48' => 'Canon RF 100-300mm F2.8L IS USM', #42
625
- '61182.49' => 'Canon RF 100-300mm F2.8L IS USM + RF1.4x', #42
626
- '61182.50' => 'Canon RF 100-300mm F2.8L IS USM + RF2x', #42
627
- '61182.51' => 'Canon RF 28mm F2.8 STM', #42
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.08';
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 => { # (sic)
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.23';
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.18';
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 => 'HPPA',
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
- 62 => 'AMD x86-64',
751
- 76 => 'Axis Communications 32-bit embedded processor',
752
- 87 => 'NEC v850',
753
- 88 => 'Renesas M32R',
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)',