exiftool_vendored 12.86.0 → 12.92.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +81 -1
  3. data/bin/MANIFEST +1 -0
  4. data/bin/META.json +2 -2
  5. data/bin/META.yml +17 -17
  6. data/bin/README +3 -2
  7. data/bin/build_geolocation +7 -4
  8. data/bin/config_files/onone.config +28 -0
  9. data/bin/exiftool +23 -15
  10. data/bin/lib/Image/ExifTool/AIFF.pm +8 -4
  11. data/bin/lib/Image/ExifTool/ASF.pm +4 -1
  12. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +12 -7
  13. data/bin/lib/Image/ExifTool/Canon.pm +75 -10
  14. data/bin/lib/Image/ExifTool/CanonRaw.pm +1 -1
  15. data/bin/lib/Image/ExifTool/CanonVRD.pm +1 -1
  16. data/bin/lib/Image/ExifTool/FujiFilm.pm +46 -4
  17. data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  18. data/bin/lib/Image/ExifTool/Geolocation.pm +6 -0
  19. data/bin/lib/Image/ExifTool/InDesign.pm +8 -4
  20. data/bin/lib/Image/ExifTool/Jpeg2000.pm +0 -1
  21. data/bin/lib/Image/ExifTool/Lang/de.pm +2 -2
  22. data/bin/lib/Image/ExifTool/Matroska.pm +66 -10
  23. data/bin/lib/Image/ExifTool/MinoltaRaw.pm +2 -2
  24. data/bin/lib/Image/ExifTool/Nikon.pm +36 -2
  25. data/bin/lib/Image/ExifTool/PNG.pm +10 -2
  26. data/bin/lib/Image/ExifTool/Panasonic.pm +1 -0
  27. data/bin/lib/Image/ExifTool/PanasonicRaw.pm +1 -0
  28. data/bin/lib/Image/ExifTool/Pentax.pm +80 -14
  29. data/bin/lib/Image/ExifTool/QuickTime.pm +51 -9
  30. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +111 -8
  31. data/bin/lib/Image/ExifTool/RIFF.pm +20 -10
  32. data/bin/lib/Image/ExifTool/Samsung.pm +28 -19
  33. data/bin/lib/Image/ExifTool/Sony.pm +21 -11
  34. data/bin/lib/Image/ExifTool/TagLookup.pm +6804 -6784
  35. data/bin/lib/Image/ExifTool/TagNames.pod +92 -21
  36. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +84 -15
  37. data/bin/lib/Image/ExifTool/Writer.pl +7 -4
  38. data/bin/lib/Image/ExifTool/XMP.pm +8 -8
  39. data/bin/lib/Image/ExifTool/XMP2.pl +51 -30
  40. data/bin/lib/Image/ExifTool/ZIP.pm +8 -4
  41. data/bin/lib/Image/ExifTool.pm +22 -16
  42. data/bin/lib/Image/ExifTool.pod +15 -6
  43. data/bin/perl-Image-ExifTool.spec +1 -1
  44. data/lib/exiftool_vendored/version.rb +1 -1
  45. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 545516d00429f2217884ee7dd4339504e84b836ee2b778fa44707a637bc4184c
4
- data.tar.gz: a3737fb33959d687603b58ec0062ae907853bbae9bcc856ca10d1ac560368658
3
+ metadata.gz: f86c2dcf64db70e03d4758fcba7dd1a711528fee369de76762474f076018d779
4
+ data.tar.gz: e21c4bebc90dee50fa43ee7b7d9fb4aa84ca699ce1403eb18011454bfc34e201
5
5
  SHA512:
6
- metadata.gz: a88fe3c5bad722bbc5e7bf0e0bd07edf8f4dc4707ed6af4895db6eaeacb0a28f14bd1ed72ad90dbfe43fb52eb86c9b569ac858ab5491c3910dfbe79d84cff75a
7
- data.tar.gz: c9fbb0c789ce33da188841f7d0e37de4fcfac563508941fd1ebcaace1d2c6d074c9d8b9bf0e6c5a570aba8601db0b361c6e66b0243923d1fe54ee918509d3cce
6
+ metadata.gz: 2189eadffa5201003f5247c0c97a3dc0cc5f26ff0fbac13a49691bee0bd779656c07be72fbc4803b1a3cc98bcf8cdad79e314d551cdd893fb789f2c929f7790d
7
+ data.tar.gz: aa2912573a6781d7d087e3b8449ea85841f6484c3cd3b8ba378e60fb5df49a3f485a6a74fceb705052cc565cb561043faca5ce970f4be3e71ef20d342b48af09
data/bin/Changes CHANGED
@@ -7,12 +7,88 @@ RSS feed: https://exiftool.org/rss.xml
7
7
  Note: The most recent production release is Version 12.76. (Other versions are
8
8
  considered development releases, and are not uploaded to MetaCPAN.)
9
9
 
10
+ July 24, 2024 - Version 12.92
11
+
12
+ - Removed -w from exiftool shebang
13
+
14
+ July 24, 2024 - Version 12.91
15
+
16
+ - Fixed 2 test files that were causing failed tests (ExifTool itself is
17
+ unchanged)
18
+
19
+ July 24, 2024 - Version 12.90
20
+
21
+ - Added support for reading Samsung trailer from PNG images
22
+ - Decode two more formats of timed GPS from MP4 videos
23
+ - Decode a few more Samung trailer tags (thanks Neal Krawetz)
24
+ - Decode Canon AntiFlicker tag
25
+ - Drop Nikon ShotInfo record when copying MakerNotes from NEF to JPG if it is
26
+ larger than 50000 bytes (then MakerNotes would be too large for a single
27
+ JPEG segment)
28
+ - Changed exiftool shebang from "#!/usr/bin/perl" to "#!/usr/bin/env perl"
29
+ - Revert change of 12.84 to iterate through sub-documents with the -p option
30
+ only if -ee is used
31
+
32
+ July 12, 2024 - Version 12.89
33
+
34
+ - Added new Sony lenses and updated decoding of some tags (thanks Jos Roost)
35
+ - Minor change to description of NKA files
36
+ - Fixed Archive::Zip problem in Windows executable version
37
+
38
+ July 11, 2024 - Version 12.88 - "New Windows/MacOS packages"
39
+
40
+ - NOTE: The install procedure for the Windows executable has changed!
41
+ - Windows EXE version now uses Oliver Betz's bundle with Strawberry Perl and
42
+ comes in 32- and 64-bit versions
43
+ - MacOS distribution now uses a flattened package
44
+ - Added ability to read/write deflate-compressed XMP in HEIC files
45
+ - Added a new Canon LensType (thanks Norbert Wasser)
46
+ - Added a new XMP-GCamera tag (thanks Herb)
47
+ - Added a new Nikon LensID
48
+ - Added a few new Canon AFAreaMode values (thanks Wernfried)
49
+ - Added config_files/onone.config to the distribution
50
+ - Decode timed accelerometer readings from NextBase 622GW videos
51
+ - Decode Pentax K-3III CameraOrentation (thanks Peter)
52
+ - Improved German translation for LensModel
53
+ - Enhanced the API StructFormat JSONQ setting to quote all JSON values, even
54
+ if they aren't in a structure
55
+ - Changed -geolocate option so specifying the Keys group writes
56
+ Keys:GPSPosition only if an input city is specified, and Keys:LocationName
57
+ only for input GPS coordinates
58
+ - Tweaked API Geolocation option recognized space-separated lat/lon even when
59
+ there is no decimal point in the numbers
60
+ - API Changes:
61
+ - Changed LargeFileSupport default to 2 and added a warning if a large
62
+ chunk is encountered. Set to 1 to avoid the warning.
63
+
64
+ June 13, 2024 - Version 12.87
65
+
66
+ - Added ability to write Google Container XMP tags (using the namespace prefix
67
+ 'GContainer' to avoid conflict with the Google Device Container prefix)
68
+ - Decode a few new tags for the Canon EOS R5 (thanks John Moyer)
69
+ - Decode battery information for the Pentax K-3 III (thanks Peter)
70
+ - Decode RAFCompression from FujiFilm RAF images (thanks Albert Shan)
71
+ - Avoid reporting FileSize for pipes
72
+ - Updated Geolocation databases from current geonames.org files
73
+ - Enhanced Geolocation feature to allow lat/lon to be input with a space
74
+ separator instead of a comma
75
+ - Skip over Matroska Cluster if necessary to read Tags when referenced from
76
+ SeekHead
77
+ - Changed conversion for Matroska SeekID (now in hex with tag name in
78
+ brackets) and SeekPosition (now returns an absolute offset)
79
+ - Fixed problem writing XMP-Device:EarthPos coordinates
80
+ - Fixed typo in a value of Canon:DigitalLensOptimizer (thanks Martin B.)
81
+ - Fixed decoding of Matroska VideoScanType
82
+ - Fixed misleading error message when -o option was used to write to an
83
+ unsupported file type
84
+
10
85
  June 7, 2024 - Version 12.86
11
86
 
12
87
  - Added a new value for a couple of Olympus tags (thanks Herb)
13
88
  - Improved handling of ID3 user-defined tags
14
89
  - Decode all JPEG segments from RICO box in Ricoh MOV videos
15
- - Decode a few new values for some tags written by Canon EOS R cameras
90
+ - Decode a few new values for some tags written by Canon EOS R cameras (thanks
91
+ John Moyer and Martin B.)
16
92
  - Patched some Olympus WB_RBLevels tags to allow 4 values to be written as per
17
93
  some newer models
18
94
  - Fixed issue when writing IPTC date tags with a date/time value containing
@@ -47,6 +123,10 @@ Apr. 23, 2024 - Version 12.84
47
123
  - Decode a few more Apple tags and a new CanonVRD tag
48
124
  - Enhanced Geolocation feature with the ability to return any number of nearby
49
125
  cities
126
+ - Allow coordinates to be entered without comma separator for the Geolocation
127
+ feature as long as both coordinates have a decimal point
128
+ - Changed -p option to iterate through sub-documents if they exist even if -ee
129
+ isn't used
50
130
  - Fixed long-standing bug in Windows version that didn't properly handle dates
51
131
  older than 50 years when writing FileModifyDate or FileCreateDate
52
132
  - Fixed API TimeZone option to work in Windows
data/bin/MANIFEST CHANGED
@@ -28,6 +28,7 @@ config_files/frameCount.config
28
28
  config_files/gps2utm.config
29
29
  config_files/guano.config
30
30
  config_files/nksc.config
31
+ config_files/onone.config
31
32
  config_files/photoshop_paths.config
32
33
  config_files/picasa_faces.config
33
34
  config_files/pix4d.config
data/bin/META.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "Phil Harvey (philharvey66 at gmail.com)"
5
5
  ],
6
6
  "dynamic_config" : 1,
7
- "generated_by" : "ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.133380",
7
+ "generated_by" : "ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.143240",
8
8
  "license" : [
9
9
  "perl_5"
10
10
  ],
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "12.86"
53
+ "version" : "12.92"
54
54
  }
data/bin/META.yml CHANGED
@@ -3,32 +3,32 @@ abstract: 'Read and write meta information'
3
3
  author:
4
4
  - 'Phil Harvey (philharvey66 at gmail.com)'
5
5
  build_requires:
6
- ExtUtils::MakeMaker: 0
6
+ ExtUtils::MakeMaker: '0'
7
7
  configure_requires:
8
- ExtUtils::MakeMaker: 0
8
+ ExtUtils::MakeMaker: '0'
9
9
  dynamic_config: 1
10
- generated_by: 'ExtUtils::MakeMaker version 6.66, CPAN::Meta::Converter version 2.133380'
10
+ generated_by: 'ExtUtils::MakeMaker version 7.34, CPAN::Meta::Converter version 2.143240'
11
11
  license: perl
12
12
  meta-spec:
13
13
  url: http://module-build.sourceforge.net/META-spec-v1.4.html
14
- version: 1.4
14
+ version: '1.4'
15
15
  name: Image-ExifTool
16
16
  no_index:
17
17
  directory:
18
18
  - t
19
19
  - inc
20
20
  recommends:
21
- Archive::Zip: 0
22
- Compress::Raw::Lzma: 0
23
- Compress::Zlib: 0
24
- Digest::MD5: 0
25
- Digest::SHA: 0
26
- IO::Compress::Brotli: 0
27
- IO::Compress::RawDeflate: 0
28
- IO::Uncompress::Brotli: 0
29
- IO::Uncompress::RawInflate: 0
30
- POSIX::strptime: 0
31
- Time::HiRes: 0
21
+ Archive::Zip: '0'
22
+ Compress::Raw::Lzma: '0'
23
+ Compress::Zlib: '0'
24
+ Digest::MD5: '0'
25
+ Digest::SHA: '0'
26
+ IO::Compress::Brotli: '0'
27
+ IO::Compress::RawDeflate: '0'
28
+ IO::Uncompress::Brotli: '0'
29
+ IO::Uncompress::RawInflate: '0'
30
+ POSIX::strptime: '0'
31
+ Time::HiRes: '0'
32
32
  requires:
33
- perl: 5.004
34
- version: 12.86
33
+ perl: '5.004'
34
+ version: '12.92'
data/bin/README CHANGED
@@ -109,8 +109,8 @@ your home directory, then you would type the following commands in a
109
109
  terminal window to extract and run ExifTool:
110
110
 
111
111
  cd ~/Desktop
112
- gzip -dc Image-ExifTool-12.86.tar.gz | tar -xf -
113
- cd Image-ExifTool-12.86
112
+ gzip -dc Image-ExifTool-12.92.tar.gz | tar -xf -
113
+ cd Image-ExifTool-12.92
114
114
  ./exiftool t/images/ExifTool.jpg
115
115
 
116
116
  Note: These commands extract meta information from one of the test images.
@@ -209,6 +209,7 @@ distribution package:
209
209
  gps2utm.config - Generate UTM coordinate tags from GPS info
210
210
  guano.config - Decode individual tags from Guano metadata
211
211
  nksc.config - Decode tags in Nikon ViewNX NKSC files
212
+ onone.config - Definitions for writing On1 XMP tags
212
213
  photoshop_paths.config - For extracting or copying Photoshop paths
213
214
  picasa_faces.config - Convert from Picasa to MWG/MP face regions
214
215
  pix4d.config - Definitions for writing Pix4D XMP tags
@@ -1,4 +1,4 @@
1
- #!/usr/bin/perl -w
1
+ #!/usr/bin/env perl
2
2
  #-------------------------------------------------------------------------------
3
3
  # File: build_geolocation
4
4
  #
@@ -15,6 +15,7 @@
15
15
  # 2024-04-24 - PH Fixed problem with population exponent when run
16
16
  # under ActivePerl
17
17
  # 2024-04-29 - PH Added feature types and default to db v1.03
18
+ # 2024-06-13 - PH Tweaked case of imported feature types
18
19
  #
19
20
  # Notes: Requires these files from https://download.geonames.org/export/
20
21
  #
@@ -208,8 +209,9 @@ Syntax: build_geolocation [OPTIONS] [DBFILE] ...
208
209
  Options:
209
210
  DBFILE - Input database file name or directory. Multiple input database
210
211
  files may be specified. The -p, -c and -cp options apply to
211
- the database that comes after them on the command line.
212
- Default is "$dbFile".
212
+ the database that comes after them on the command line. The
213
+ other input files are assumed to be in the same directory as
214
+ the first database file. Default is "$dbFile".
213
215
  -p POP - Minimum population for cities to include. POP may be a number
214
216
  or be of the form "CC[,C2...]=###" to set different limits for
215
217
  specific countries/regions, where CC and C2 are country codes
@@ -250,7 +252,7 @@ Input files (download from https://download.geonames.org/export/dump/):
250
252
  $countryFile - mandatory country names file
251
253
  $regionFile - mandatory region names file
252
254
  $admin2File - mandatory subregion names file
253
- $featureFile - optional feature codes file
255
+ $featureFile - optional feature codes file(s)
254
256
  $altNamesFile - optional alternate names file (must exist to
255
257
  to generate $outAltNames and $geoLang files)
256
258
 
@@ -478,6 +480,7 @@ if (open INFILE, '<', "$dbdir/$featureFile") {
478
480
  next unless $featureCodes{$items[0]};
479
481
  my $name = ucfirst $items[1];
480
482
  $name =~ s/ ([a-z])/ \U$1/g;
483
+ $name =~ s/(.)\b(Of|Or|A|An|On|In|The|By|For|And)\b/$1\L$2/g;
481
484
  $featureNames{$items[0]} = $name;
482
485
  }
483
486
  close INFILE;
@@ -0,0 +1,28 @@
1
+ #------------------------------------------------------------------------------
2
+ # File: onone.config
3
+ #
4
+ # Description: This config file defines On1 XMP tags for writing.
5
+ #
6
+ # Usage: exiftool -config onone.config -UserFlag=VALUE FILE ...
7
+ #
8
+ # Requires: ExifTool version 10.28 or later
9
+ #
10
+ # Revisions: 2024/07/10 - P. Harvey Created
11
+ #------------------------------------------------------------------------------
12
+
13
+ %Image::ExifTool::UserDefined = (
14
+ 'Image::ExifTool::XMP::Main' => {
15
+ onone => {
16
+ SubDirectory => { TagTable => 'Image::ExifTool::UserDefined::onone' },
17
+ },
18
+ },
19
+ );
20
+
21
+ %Image::ExifTool::UserDefined::onone = (
22
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-onone', 2 => 'Other' },
23
+ NAMESPACE => { 'onone' => 'http://www.ononesoftware.com/vcb/1.0/' },
24
+ WRITABLE => 'string',
25
+ UserFlag => { },
26
+ );
27
+
28
+ 1; #end
data/bin/exiftool CHANGED
@@ -1,4 +1,4 @@
1
- #!/usr/bin/perl -w
1
+ #!/usr/bin/env perl
2
2
  #------------------------------------------------------------------------------
3
3
  # File: exiftool
4
4
  #
@@ -11,7 +11,7 @@ use strict;
11
11
  use warnings;
12
12
  require 5.004;
13
13
 
14
- my $version = '12.86';
14
+ my $version = '12.92';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -51,7 +51,7 @@ sub CleanXML($);
51
51
  sub EncodeXML($);
52
52
  sub FormatXML($$$);
53
53
  sub EscapeJSON($;$);
54
- sub FormatJSON($$$);
54
+ sub FormatJSON($$$;$);
55
55
  sub PrintCSV();
56
56
  sub AddGroups($$$$);
57
57
  sub ConvertBinary($);
@@ -1802,7 +1802,12 @@ if ($outOpt) {
1802
1802
  my $type = GetFileType($outOpt);
1803
1803
  if ($type) {
1804
1804
  # (must test original file name because we can write .webp but not other RIFF types)
1805
- unless (CanWrite($outOpt)) {
1805
+ my $canWrite = CanWrite($outOpt);
1806
+ unless ($canWrite) {
1807
+ if (defined $canWrite and $canWrite eq '') {
1808
+ $type = Image::ExifTool::GetFileExtension($outOpt);
1809
+ $type = uc($outOpt) unless defined $type;
1810
+ }
1806
1811
  Warn "Can't write $type files\n";
1807
1812
  $rtnVal = 1;
1808
1813
  next;
@@ -2305,8 +2310,8 @@ sub GetImageInfo($$)
2305
2310
  # output using print format file (-p) option
2306
2311
  my ($type, $doc, $grp, $lastDoc, $cache);
2307
2312
  $fileTrailer = '';
2308
- # repeat for each sub-document if necessary
2309
- if ($$et{DOC_COUNT}) {
2313
+ # repeat for each embedded document if necessary (only if -ee used)
2314
+ if ($et->Options('ExtractEmbedded')) {
2310
2315
  # (cache tag keys if there are sub-documents)
2311
2316
  $lastDoc = $$et{DOC_COUNT} and $cache = { };
2312
2317
  } else {
@@ -2366,7 +2371,7 @@ sub GetImageInfo($$)
2366
2371
  my $errs = $et->GetInfo('Warning', 'Error');
2367
2372
  PrintErrors($et, $errs, $file) and EFile($file);
2368
2373
  } elsif (not $disableOutput) {
2369
- my ($tag, $line, %noDups, %csvInfo, $bra, $ket, $sep);
2374
+ my ($tag, $line, %noDups, %csvInfo, $bra, $ket, $sep, $quote);
2370
2375
  if ($fp) {
2371
2376
  # print file header (only once)
2372
2377
  if ($fileHeader) {
@@ -2409,6 +2414,7 @@ sub GetImageInfo($$)
2409
2414
  } elsif ($json) {
2410
2415
  # set delimiters for JSON or PHP output
2411
2416
  ($bra, $ket, $sep) = $json == 1 ? ('{','}',':') : ('Array(',')',' =>');
2417
+ $quote = 1 if $$et{OPTIONS}{StructFormat} and $$et{OPTIONS}{StructFormat} eq 'JSONQ';
2412
2418
  print $fp ",\n" if $comma;
2413
2419
  print $fp qq($bra\n "SourceFile"$sep ), EscapeJSON(MyConvertFileName($et,$file),1);
2414
2420
  $comma = 1;
@@ -2702,7 +2708,7 @@ TAG: foreach $tag (@foundTags) {
2702
2708
  }
2703
2709
  }
2704
2710
  }
2705
- FormatJSON($fp, $val, $ind);
2711
+ FormatJSON($fp, $val, $ind, $quote);
2706
2712
  $comma = 1;
2707
2713
  next;
2708
2714
  }
@@ -3494,17 +3500,17 @@ sub EscapeJSON($;$)
3494
3500
 
3495
3501
  #------------------------------------------------------------------------------
3496
3502
  # Print JSON or PHP value
3497
- # Inputs: 0) file reference, 1) value, 2) indentation
3498
- sub FormatJSON($$$)
3503
+ # Inputs: 0) file reference, 1) value, 2) indentation, 3) true to quote numbers
3504
+ sub FormatJSON($$$;$)
3499
3505
  {
3500
3506
  local $_;
3501
- my ($fp, $val, $ind) = @_;
3507
+ my ($fp, $val, $ind, $quote) = @_;
3502
3508
  my $comma;
3503
3509
  if (not ref $val) {
3504
- print $fp EscapeJSON($val);
3510
+ print $fp EscapeJSON($val, $quote);
3505
3511
  } elsif (ref $val eq 'ARRAY') {
3506
3512
  if ($joinLists and not ref $$val[0]) {
3507
- print $fp EscapeJSON(join $listSep, @$val);
3513
+ print $fp EscapeJSON(join($listSep, @$val), $quote);
3508
3514
  } else {
3509
3515
  my ($bra, $ket) = $json == 1 ? ('[',']') : ('Array(',')');
3510
3516
  print $fp $bra;
@@ -5678,7 +5684,7 @@ with this command:
5678
5684
 
5679
5685
  produces output like this:
5680
5686
 
5681
- -- Generated by ExifTool 12.86 --
5687
+ -- Generated by ExifTool 12.92 --
5682
5688
  File: a.jpg - 2003:10:31 15:44:19
5683
5689
  (f/5.6, 1/60s, ISO 100)
5684
5690
  File: b.jpg - 2006:05:23 11:57:38
@@ -6119,7 +6125,9 @@ B<-if> and B<-fileOrder> options for details.
6119
6125
  =item B<-fileOrder>[I<NUM>] [-]I<TAG>
6120
6126
 
6121
6127
  Set file processing order according to the sorted value of the specified
6122
- I<TAG>. For example, to process files in order of date:
6128
+ I<TAG>. Without this option, files are processed in the order returned by
6129
+ the system, which is commonly by file name, but this is filesystem
6130
+ dependent. For example, to process files in order of date:
6123
6131
 
6124
6132
  exiftool -fileOrder DateTimeOriginal DIR
6125
6133
 
@@ -18,7 +18,7 @@ use vars qw($VERSION);
18
18
  use Image::ExifTool qw(:DataAccess :Utils);
19
19
  use Image::ExifTool::ID3;
20
20
 
21
- $VERSION = '1.12';
21
+ $VERSION = '1.13';
22
22
 
23
23
  # information for time/date-based tags (time zero is Jan 1, 1904)
24
24
  my %timeInfo = (
@@ -226,9 +226,13 @@ sub ProcessAIFF($$)
226
226
  # AIFF chunks are padded to an even number of bytes
227
227
  my $len2 = $len + ($len & 0x01);
228
228
  if ($len2 > 100000000) {
229
- if ($len2 >= 0x80000000 and not $et->Options('LargeFileSupport')) {
230
- $et->Warn('End of processing at large chunk (LargeFileSupport not enabled)');
231
- last;
229
+ if ($len2 >= 0x80000000) {
230
+ if (not $et->Options('LargeFileSupport')) {
231
+ $et->Warn('End of processing at large chunk (LargeFileSupport not enabled)');
232
+ last;
233
+ } elsif ($et->Options('LargeFileSupport') eq '2') {
234
+ $et->WarnOnce('Skipping large chunk (LargeFileSupport is 2)');
235
+ }
232
236
  }
233
237
  if ($tagInfo) {
234
238
  $et->Warn("Skipping large $$tagInfo{Name} chunk (> 100 MB)");
@@ -17,7 +17,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
17
17
  use Image::ExifTool::Exif;
18
18
  use Image::ExifTool::RIFF;
19
19
 
20
- $VERSION = '1.25';
20
+ $VERSION = '1.26';
21
21
 
22
22
  sub ProcessASF($$;$);
23
23
  sub ProcessContentDescription($$$);
@@ -780,6 +780,9 @@ sub ProcessASF($$;$)
780
780
  if ($size > 0x7fffffff * 4294967296) {
781
781
  $err = 'Invalid ASF object size';
782
782
  } elsif ($et->Options('LargeFileSupport')) {
783
+ if ($et->Options('LargeFileSupport') eq '2') {
784
+ $et->WarnOnce('Skipping large ASF object (LargeFileSupport is 2)');
785
+ }
783
786
  if ($raf->Seek($size, 1)) {
784
787
  $et->VPrint(0, " Skipped large ASF object ($size bytes)\n");
785
788
  $pos += $size;
@@ -35,7 +35,7 @@ use Image::ExifTool::Sony;
35
35
  use Image::ExifTool::Validate;
36
36
  use Image::ExifTool::MacOS;
37
37
 
38
- $VERSION = '3.57';
38
+ $VERSION = '3.58';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -98,6 +98,8 @@ my %tweakOrder = (
98
98
  GIMP => 'Microsoft',
99
99
  DarwinCore => 'AFCP',
100
100
  MWG => 'Shortcuts',
101
+ 'FujiFilm::RAF' => 'FujiFilm::RAFHeader',
102
+ 'FujiFilm::RAFData' => 'FujiFilm::RAF',
101
103
  );
102
104
 
103
105
  # list of all recognized Format strings
@@ -423,11 +425,11 @@ parameters, as well as proprietary information written by many camera
423
425
  models. Tags with a question mark after their name are not extracted unless
424
426
  the L<Unknown|../ExifTool.html#Unknown> option is set.
425
427
 
426
- When writing, ExifTool creates both QuickTime and XMP tags by default, but
427
- the group may be specified to write one or the other separately. If no
428
- location is specified, newly created QuickTime tags are added in the
429
- L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags> location if
430
- possible, otherwise in
428
+ When writing video files, ExifTool creates both QuickTime and XMP tags by
429
+ default, but the group may be specified to write one or the other
430
+ separately. If no location is specified, newly created QuickTime tags are
431
+ added in the L<ItemList|Image::ExifTool::TagNames/QuickTime ItemList Tags>
432
+ location if possible, otherwise in
431
433
  L<UserData|Image::ExifTool::TagNames/QuickTime UserData Tags>, and
432
434
  finally in L<Keys|Image::ExifTool::TagNames/QuickTime Keys Tags>,
433
435
  but this order may be changed by setting the PREFERRED level of the
@@ -478,7 +480,7 @@ the original size by padding with nulls if necessary.
478
480
 
479
481
  See
480
482
  L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
481
- for the official specification.
483
+ for the official QuickTime specification.
482
484
  },
483
485
  Photoshop => q{
484
486
  Photoshop tags are found in PSD and PSB files, as well as inside embedded
@@ -906,6 +908,9 @@ TagID: foreach $tagID (@keys) {
906
908
  @infoArray = GetTagInfoList($table,$tagID);
907
909
  }
908
910
  foreach $tagInfo (@infoArray) {
911
+ if ($binaryTable and $$tagInfo{Writable} and $$tagInfo{Writable} ne '1') {
912
+ warn("$tableName $$tagInfo{Name} Writable should be 1, not $$tagInfo{Writable}\n");
913
+ }
909
914
  my $name = $$tagInfo{Name};
910
915
  if ($$tagInfo{WritePseudo}) {
911
916
  push @writePseudo, $name;
@@ -88,7 +88,7 @@ sub ProcessCTMD($$$);
88
88
  sub ProcessExifInfo($$$);
89
89
  sub SwapWords($);
90
90
 
91
- $VERSION = '4.76';
91
+ $VERSION = '4.79';
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)
@@ -630,6 +630,7 @@ $VERSION = '4.76';
630
630
  '61182.53' => 'Canon RF 28mm F2.8 STM', #42
631
631
  '61182.54' => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
632
632
  '61182.55' => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
633
+ '61182.56' => 'Canon RF 35mm F1.4 L VCM', #42
633
634
  65535 => 'n/a',
634
635
  );
635
636
 
@@ -2128,6 +2129,13 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2128
2129
  TagTable => 'Image::ExifTool::Canon::RawBurstInfo',
2129
2130
  }
2130
2131
  },
2132
+ 0x4059 => { #forum16111
2133
+ Name => 'LevelInfo',
2134
+ SubDirectory => {
2135
+ Validate => 'Image::ExifTool::Canon::Validate($dirData,$subdirStart,$size)',
2136
+ TagTable => 'Image::ExifTool::Canon::LevelInfo',
2137
+ }
2138
+ },
2131
2139
  );
2132
2140
 
2133
2141
  #..............................................................................
@@ -2590,6 +2598,7 @@ my %offOn = ( 0 => 'Off', 1 => 'On' );
2590
2598
  },
2591
2599
  # 47 - related to aspect ratio: 100=4:3,70=1:1/16:9,90=3:2,60=4:5 (PH G12)
2592
2600
  # (roughly image area in percent - 4:3=100%,1:1/16:9=75%,3:2=89%,4:5=60%)
2601
+ # 48 - 3 for CR2/CR3, 4 or 7 for JPG, -1 for edited JPG (see forum16127)
2593
2602
  51 => { #forum16036 (EOS R models)
2594
2603
  Name => 'Clarity',
2595
2604
  PrintConv => {
@@ -4722,12 +4731,15 @@ my %ciMaxFocal = (
4722
4731
  FIRST_ENTRY => 0,
4723
4732
  PRIORITY => 0,
4724
4733
  GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
4725
- NOTES => 'CameraInfo tags for the EOS R6.',
4734
+ NOTES => 'CameraInfo tags for the EOS R5 and R6.',
4735
+ # (see forum16111 for more notes on these tags)
4736
+ # 0x0a5d - some sort of sequence number starting from 1 (ref forum16111)
4726
4737
  0x0af1 => { #forum15210/15579
4727
4738
  Name => 'ShutterCount',
4728
4739
  Format => 'int32u',
4729
4740
  Notes => 'includes electronic + mechanical shutter',
4730
4741
  },
4742
+ # 0x0bb7 - counts down during focus stack (ref forum16111)
4731
4743
  );
4732
4744
 
4733
4745
  # ref https://exiftool.org/forum/index.php?topic=15356.0
@@ -6389,8 +6401,14 @@ my %ciMaxFocal = (
6389
6401
  10 => 'AF Point Expansion (8 point)', #forum6237
6390
6402
  11 => 'Flexizone Multi (49 point)', #PH (NC, EOS M, live view; 750D 49 points)
6391
6403
  12 => 'Flexizone Multi (9 point)', #PH (750D, 9 points)
6392
- 13 => 'Flexizone Single', #PH (EOS M default, live view)
6404
+ 13 => 'Flexizone Single', #PH (EOS M default, live view) (R7 calls this '1-point AF', ref github268)
6393
6405
  14 => 'Large Zone AF', #PH/forum6237 (7DmkII)
6406
+ 16 => 'Large Zone AF (vertical)', #forum16223
6407
+ 17 => 'Large Zone AF (horizontal)', #forum16223
6408
+ 19 => 'Flexible Zone AF 1', #github268 (R7)
6409
+ 20 => 'Flexible Zone AF 2', #github268 (R7)
6410
+ 21 => 'Flexible Zone AF 3', #github268 (R7)
6411
+ 22 => 'Whole Area AF', #github268 (R7)
6394
6412
  },
6395
6413
  },
6396
6414
  2 => {
@@ -6905,6 +6923,10 @@ my %ciMaxFocal = (
6905
6923
  Name => 'FlashExposureLock',
6906
6924
  PrintConv => \%offOn,
6907
6925
  },
6926
+ 32 => { #forum16257
6927
+ Name => 'AntiFlicker',
6928
+ PrintConv => \%offOn,
6929
+ },
6908
6930
  0x3d => { #IB
6909
6931
  Name => 'RFLensType',
6910
6932
  Format => 'int16u',
@@ -6969,6 +6991,7 @@ my %ciMaxFocal = (
6969
6991
  313 => 'Canon RF 28mm F2.8 STM', #42
6970
6992
  314 => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
6971
6993
  315 => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
6994
+ 316 => 'Canon RF 35mm F1.4 L VCM', #42
6972
6995
  # Note: add new RF lenses to %canonLensTypes with ID 61182
6973
6996
  },
6974
6997
  },
@@ -8768,7 +8791,7 @@ my %ciMaxFocal = (
8768
8791
  Name => 'DigitalLensOptimizer',
8769
8792
  PrintConv => {
8770
8793
  0 => 'Off',
8771
- 1 => 'Stanard',
8794
+ 1 => 'Standard',
8772
8795
  2 => 'High',
8773
8796
  },
8774
8797
  },
@@ -9106,19 +9129,19 @@ my %filterConv = (
9106
9129
  2 => 'Disable',
9107
9130
  },
9108
9131
  },
9109
- 18 => { #52
9132
+ 18 => { #52/forum16223
9110
9133
  Name => 'AFStatusViewfinder',
9111
- Condition => '$$self{Model} =~ /1D X/',
9112
- Notes => '1D X only',
9134
+ Condition => '$$self{Model} =~ /EOS-1D X|EOS R/',
9135
+ Notes => '1D X and R models',
9113
9136
  PrintConv => {
9114
9137
  0 => 'Show in Field of View',
9115
9138
  1 => 'Show Outside View',
9116
9139
  },
9117
9140
  },
9118
- 19 => { #52
9141
+ 19 => { #52/forum16223
9119
9142
  Name => 'InitialAFPointInServo',
9120
- Condition => '$$self{Model} =~ /1D X/',
9121
- Notes => '1D X only',
9143
+ Condition => '$$self{Model} =~ /EOS-1D X|EOS R/',
9144
+ Notes => '1D X and R models',
9122
9145
  PrintConv => {
9123
9146
  0 => 'Initial AF Point Selected',
9124
9147
  1 => 'Manual AF Point',
@@ -9150,6 +9173,48 @@ my %filterConv = (
9150
9173
  2 => 'RawBurstImageCount',
9151
9174
  );
9152
9175
 
9176
+ # level information (ref forum16111, EOS R5)
9177
+ %Image::ExifTool::Canon::LevelInfo = (
9178
+ %binaryDataAttrs,
9179
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
9180
+ FORMAT => 'int32s',
9181
+ FIRST_ENTRY => 1,
9182
+ 4 => {
9183
+ Name => 'RollAngle',
9184
+ Notes => 'converted to degrees of clockwise camera rotation',
9185
+ ValueConv => '$val > 1800 and $val -= 3600; -$val / 10',
9186
+ ValueConvInv => '$val > 0 and $val -= 360; int(-$val * 10 + 0.5)',
9187
+ },
9188
+ 5 => {
9189
+ Name => 'PitchAngle',
9190
+ Notes => 'converted to degrees of upward camera tilt',
9191
+ ValueConv => '$val > 1800 and $val -= 3600; $val / 10',
9192
+ ValueConvInv => '$val < 0 and $val += 360; int($val * 10 + 0.5)',
9193
+ },
9194
+ 7 => {
9195
+ Name => 'FocalLength',
9196
+ ValueConv => '$val / 10',
9197
+ ValueConvInv => 'int($val * 10 + 0.5)',
9198
+ PrintConv => '"$val mm"',
9199
+ PrintConvInv => '$val=~s/\s*mm//;$val',
9200
+ },
9201
+ 8 => {
9202
+ Name => 'MinFocalLength',
9203
+ ValueConv => '$val / 10',
9204
+ ValueConvInv => 'int($val * 10 + 0.5)',
9205
+ PrintConv => '"$val mm"',
9206
+ PrintConvInv => '$val=~s/\s*mm//;$val',
9207
+ },
9208
+ 9 => {
9209
+ Name => 'MaxFocalLength',
9210
+ ValueConv => '$val / 10',
9211
+ ValueConvInv => 'int($val * 10 + 0.5)',
9212
+ PrintConv => '"$val mm"',
9213
+ PrintConvInv => '$val=~s/\s*mm//;$val',
9214
+ },
9215
+
9216
+ );
9217
+
9153
9218
  # Canon UUID atoms (ref PH, SX280)
9154
9219
  %Image::ExifTool::Canon::uuid = (
9155
9220
  GROUPS => { 0 => 'MakerNotes', 1 => 'Canon', 2 => 'Video' },