exiftool_vendored 12.96.0 → 12.97.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 470de93eb9d8ccb910e0eb1526fb6b9e1e45cbbeb4a88f63c11ddb4bf33d12b8
4
- data.tar.gz: 90cf2dd30483d655432ef216f8af1751878fc02b140167eb2f301d856c96109d
3
+ metadata.gz: 40145323efe802f85d7d63896f6625f4f814d99c0b7af905187c5e4723a2d280
4
+ data.tar.gz: 507b11c61f464d9afab44d071d9da8e306378589cbe60b505b25336bce853bf7
5
5
  SHA512:
6
- metadata.gz: c22dbe664b9eb4ff2327da76ffeea627b45cc47815e3699202d162503c3129c3a31d5b6f2c380dffdedff2a4dccd6a2bd86b68a8ed2e9003b43168788f1df7f8
7
- data.tar.gz: 1c86569ae1b1a15088e5ff7a9b13b339ecec57b7df35f97d531e29908fe26d10967ccd71b0a4feba0d6a5e37849cbbfea7526000072fe34692141ce694169717
6
+ metadata.gz: 3cbeb84218d46abc790daa396a9b48adf8ce36b57c948fa854fa3c441b1d269b8ef5540363c2940ed620254156aee55e7814cf6ae38df9e28d5fc291ae119c2c
7
+ data.tar.gz: '097ce6e1cb57f52cf953407ffca02f4f466a7d7662d20eed17d3355644aa2680fdb397c1fbf8032ed461f2b2f0d374e3a02e47cb95e50cddcb80e2938d3bed02'
data/bin/Changes CHANGED
@@ -7,6 +7,19 @@ 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
+ Sept. 25, 2024 - Version 12.97
11
+
12
+ - Added ability to ignore up to 4095 bytes of garbage at the end of an INDD
13
+ file with the -m option
14
+ - Added a new Canon RFLensType value (thanks Norbert Wasser)
15
+ - Added a new Nikon Z LensID
16
+ - Decode a number of new Nikon Z6_3 tags (thanks Warren Hatch)
17
+ - Decode a few more FujiFilm tags (thanks Greybeard)
18
+ - Enhanced %C format code to allow file-name collisions to be avoided by using
19
+ a colon instead of a decimal in the format modifier
20
+ - Fixed bug which could result in hang when using %C code in an output file
21
+ name
22
+
10
23
  Sept. 1, 2024 - Version 12.96
11
24
 
12
25
  - More improvements to handling of trailers on video files (and add ability to
data/bin/META.json CHANGED
@@ -50,5 +50,5 @@
50
50
  }
51
51
  },
52
52
  "release_status" : "stable",
53
- "version" : "12.96"
53
+ "version" : "12.97"
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.96'
34
+ version: '12.97'
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.96.tar.gz | tar -xf -
113
- cd Image-ExifTool-12.96
112
+ gzip -dc Image-ExifTool-12.97.tar.gz | tar -xf -
113
+ cd Image-ExifTool-12.97
114
114
  ./exiftool t/images/ExifTool.jpg
115
115
 
116
116
  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.96';
14
+ my $version = '12.97';
15
15
 
16
16
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
17
17
  my $exePath;
@@ -4301,17 +4301,20 @@ sub Num2Alpha($)
4301
4301
  sub NextUnusedFilename($;$)
4302
4302
  {
4303
4303
  my ($fmt, $okfile) = @_;
4304
- return $fmt unless $fmt =~ /%[-+]?\d*\.?\d*[lun]?[cC]/;
4304
+ return $fmt unless $fmt =~ /%[-+]?\d*[.:]?\d*[lun]?[cC]/;
4305
4305
  my %sep = ( '-' => '-', '+' => '_' );
4306
4306
  my ($copy, $alpha) = (0, 'a');
4307
+ my $lastFile;
4307
4308
  for (;;) {
4308
4309
  my ($filename, $pos) = ('', 0);
4309
- while ($fmt =~ /(%([-+]?)(\d*)(\.?)(\d*)([lun]?)([cC]))/g) {
4310
+ while ($fmt =~ /(%([-+]?)(\d*)([.:]?)(\d*)([lun]?)([cC]))/g) {
4310
4311
  $filename .= substr($fmt, $pos, pos($fmt) - $pos - length($1));
4311
4312
  $pos = pos($fmt);
4312
4313
  my ($sign, $wid, $dec, $wid2, $mod, $tok) = ($2, $3 || 0, $4, $5 || 0, $6, $7);
4313
4314
  my $seq;
4314
4315
  if ($tok eq 'C') {
4316
+ # increment sequence number for %C on collision if ':' is used
4317
+ $sign eq '-' ? ++$seqFileDir : ++$seqFileNum if $copy and $dec eq ':';
4315
4318
  $seq = $wid + ($sign eq '-' ? $seqFileDir : $seqFileNum) - 1;
4316
4319
  $wid = $wid2;
4317
4320
  } else {
@@ -4340,6 +4343,8 @@ sub NextUnusedFilename($;$)
4340
4343
  my ($fn, $ok) = (AbsPath($filename), AbsPath($okfile));
4341
4344
  return $okfile if defined $fn and defined $ok and $fn eq $ok;
4342
4345
  }
4346
+ return $filename if defined $lastFile and $lastFile eq $filename;
4347
+ $lastFile = $filename;
4343
4348
  ++$copy;
4344
4349
  ++$alpha;
4345
4350
  }
@@ -4639,6 +4644,10 @@ sub PrintErrors($$$)
4639
4644
  return $$info{Error};
4640
4645
  }
4641
4646
 
4647
+ #=====================================================================================
4648
+ # NOTE: Be sure to update windows_exiftool.txt with any changes to this documentation!
4649
+ #vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv
4650
+
4642
4651
  __END__
4643
4652
 
4644
4653
  =head1 NAME
@@ -5170,16 +5179,14 @@ B<-struct> option for details.
5170
5179
  E<quot>'-I<DSTTAG>E<lt>I<SRCTAG>'E<quot>) is not the same as interpolating
5171
5180
  its value inside a string (ie. E<quot>'-I<DSTTAG>E<lt>$I<SRCTAG>'E<quot>)
5172
5181
  for source tags which are list-type tags,
5173
- L<shortcut tags|Image::ExifTool::Shortcuts>, tag names containing wildcards,
5174
- or UserParam variables. When copying directly, the values of each matching
5175
- source tag are copied individually to the destination tag (as if they were
5176
- separate assignments). However, when interpolated inside a string, list
5177
- items and the values of shortcut tags are concatenated (with a separator set
5178
- by the B<-sep> option), and wildcards are not allowed. Also, UserParam
5179
- variables are available only when interpolated in a string. Another
5180
- difference is that a minor warning is generated if a tag doesn't exist when
5181
- interpolating its value in a string (with C<$>), but isn't when copying the
5182
- tag directly.
5182
+ L<shortcut tags|Image::ExifTool::Shortcuts>, or tag names containing
5183
+ wildcards. When copying directly, the values of each matching source tag
5184
+ are copied individually to the destination tag (as if they were separate
5185
+ assignments). However, when interpolated inside a string, list items and
5186
+ the values of shortcut tags are concatenated (with a separator set by the
5187
+ B<-sep> option), and wildcards are not allowed.Another difference is that a
5188
+ minor warning is generated if a tag doesn't exist when interpolating its
5189
+ value in a string (with C<$>), but isn't when copying the tag directly.
5183
5190
 
5184
5191
  Finally, the behaviour is different when a destination tag or group of
5185
5192
  C<All> is used. When copying directly, a destination group and/or tag name
@@ -5655,7 +5662,7 @@ with this command:
5655
5662
 
5656
5663
  produces output like this:
5657
5664
 
5658
- -- Generated by ExifTool 12.96 --
5665
+ -- Generated by ExifTool 12.97 --
5659
5666
  File: a.jpg - 2003:10:31 15:44:19
5660
5667
  (f/5.6, 1/60s, ISO 100)
5661
5668
  File: b.jpg - 2006:05:23 11:57:38
@@ -5897,7 +5904,13 @@ A leading '-' causes the number to be reset at the start of each new
5897
5904
  directory (in the original directory structure if the files are being
5898
5905
  moved), and '+' has no effect. The number before the decimal place gives
5899
5906
  the starting index, the number after the decimal place gives the field
5900
- width. The following examples show the output filenames when used with the
5907
+ width. To preserve synchronization with the processed file number, by
5908
+ default the copy number is not incremented to avoid file name collisions, so
5909
+ any existing same-named file will cause an error. However using a colon
5910
+ instead of a decimal point causes the number to be incremented to avoid
5911
+ collisions with existing files.
5912
+
5913
+ The following examples show the output filenames when used with the
5901
5914
  command C<exiftool rose.jpg star.jpg jet.jpg ...>:
5902
5915
 
5903
5916
  -w %C%f.txt # 0rose.txt, 1star.txt, 2jet.txt
@@ -6999,6 +6999,7 @@ my %ciMaxFocal = (
6999
6999
  314 => 'Canon RF 24-105mm F2.8 L IS USM Z', #42
7000
7000
  315 => 'Canon RF-S 10-18mm F4.5-6.3 IS STM', #42
7001
7001
  316 => 'Canon RF 35mm F1.4 L VCM', #42
7002
+ 318 => 'Canon RF 28-70mm F2.8 IS STM', #42
7002
7003
  # Note: add new RF lenses to %canonLensTypes with ID 61182
7003
7004
  },
7004
7005
  },
@@ -31,7 +31,7 @@ use vars qw($VERSION);
31
31
  use Image::ExifTool qw(:DataAccess :Utils);
32
32
  use Image::ExifTool::Exif;
33
33
 
34
- $VERSION = '1.95';
34
+ $VERSION = '1.96';
35
35
 
36
36
  sub ProcessFujiDir($$$);
37
37
  sub ProcessFaceRec($$$);
@@ -1252,6 +1252,28 @@ my %faceCategories = (
1252
1252
  ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
1253
1253
  PrintConv => '$val=~tr/ /:/; $val',
1254
1254
  },
1255
+ 0x117 => {
1256
+ Name => 'RawZoomActive',
1257
+ Format => 'int32u',
1258
+ Count => 1,
1259
+ PrintConv => { 0 => 'No', 1 => 'Yes' },
1260
+ },
1261
+ 0x118 => {
1262
+ Name => 'RawZoomTopLeft',
1263
+ Format => 'int16u',
1264
+ Count => 2,
1265
+ Notes => 'relative to RawCroppedImageSize',
1266
+ ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
1267
+ PrintConv => '$val=~tr/ /x/; $val',
1268
+ },
1269
+ 0x119 => {
1270
+ Name => 'RawZoomSize',
1271
+ Format => 'int16u',
1272
+ Count => 2,
1273
+ Notes => 'relative to RawCroppedImageSize',
1274
+ ValueConv => 'my @v=reverse split(" ",$val);"@v"', # reverse to show width first
1275
+ PrintConv => '$val=~tr/ /x/; $val',
1276
+ },
1255
1277
  0x121 => [
1256
1278
  {
1257
1279
  Name => 'RawImageSize',
@@ -14,7 +14,7 @@ use strict;
14
14
  use vars qw($VERSION);
15
15
  use Image::ExifTool qw(:DataAccess :Utils);
16
16
 
17
- $VERSION = '1.07';
17
+ $VERSION = '1.08';
18
18
 
19
19
  # map for writing metadata to InDesign files (currently only write XMP)
20
20
  my %indMap = (
@@ -101,8 +101,22 @@ sub ProcessIND($$)
101
101
  for (;;) {
102
102
  $raf->Read($hdr, 32) or last;
103
103
  unless (length($hdr) == 32 and $hdr =~ /^\Q$objectHeaderGUID/) {
104
- # this must be null padding or we have an error
105
- $hdr =~ /^\0+$/ or $err = 'Corrupt file or unsupported InDesign version';
104
+ # this must be null padding or we have a possible error
105
+ last if $hdr =~ /^\0+$/;
106
+ # (could be up to 4095 bytes of non-null garbage plus 4095 null bytes from ExifTool)
107
+ $raf->Read($buff, 8196) and $hdr .= $buff;
108
+ $hdr =~ s/\0+$//; # remove trailing nulls
109
+ if (length($hdr) > 4095) {
110
+ $err = 'Corrupt file or unsupported InDesign version';
111
+ last;
112
+ }
113
+ my $non = 'Non-null padding at end of file';
114
+ if (not $outfile) {
115
+ $et->Warn($non, 1);
116
+ } elsif (not $et->Error($non, 1)) {
117
+ Write($outfile, $hdr) or $err = 1;
118
+ $writeLen += length $hdr;
119
+ }
106
120
  last;
107
121
  }
108
122
  my $len = Get32u(\$hdr, 24);
@@ -1543,7 +1543,7 @@ sub ProcessJP2($$)
1543
1543
 
1544
1544
  # check to be sure this is a valid JPG2000 file
1545
1545
  return 0 unless $raf->Read($hdr,12) == 12;
1546
- unless ($hdr eq "\0\0\0\x0cjP \x0d\x0a\x87\x0a" or # (ref 1)
1546
+ unless ($hdr eq "\0\0\0\x0cjP \x0d\x0a\x87\x0a" or # (ref 1)
1547
1547
  $hdr eq "\0\0\0\x0cjP\x1a\x1a\x0d\x0a\x87\x0a" or # (ref 2)
1548
1548
  $$et{IsJXL})
1549
1549
  {