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.
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)',