exiftool_vendored 12.96.0 → 12.98.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: c1a9880dae5035dc08ddc167d771f69b84d15bc6e5f8d4bcb2eb410c22dd531f
4
+ data.tar.gz: 6e3b103009afb397df4213f33c9f695a961a153b647264dadfbf3917aba063fc
5
5
  SHA512:
6
- metadata.gz: c22dbe664b9eb4ff2327da76ffeea627b45cc47815e3699202d162503c3129c3a31d5b6f2c380dffdedff2a4dccd6a2bd86b68a8ed2e9003b43168788f1df7f8
7
- data.tar.gz: 1c86569ae1b1a15088e5ff7a9b13b339ecec57b7df35f97d531e29908fe26d10967ccd71b0a4feba0d6a5e37849cbbfea7526000072fe34692141ce694169717
6
+ metadata.gz: a09fd4ca266dd56cac58e246d5a899f34d90f0a93749e9b522129bb3d009e3d36b8ecef7187e54caf6c0a775ab7a9a234e32608b45ae08b778e4de9d3747872b
7
+ data.tar.gz: 4119e87dd640a1c9ee73041b5fb915b5cbfbee7c21689ebdefa826f933a35e29e40d7ec5cd952c68b62ab90c5cc544292346e7a45581f355b92ba7a49ca76ec1
data/bin/Changes CHANGED
@@ -7,6 +7,27 @@ 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
+ Oct. 8, 2024 - Version 12.98
11
+
12
+ - Added write support for PDF files with huge offsets
13
+ - Added a number of new Sony LensType values (thanks Jos Roost)
14
+ - Require -v4 or higher to output "JPG RST" lines
15
+ - Patched problem with -fast option when reading HEIC file via a pipe
16
+ - Patched to avoid hang when reading some corrupted XMP
17
+
18
+ Sept. 25, 2024 - Version 12.97
19
+
20
+ - Added ability to ignore up to 4095 bytes of garbage at the end of an INDD
21
+ file with the -m option
22
+ - Added a new Canon RFLensType value (thanks Norbert Wasser)
23
+ - Added a new Nikon Z LensID
24
+ - Decode a number of new Nikon Z6_3 tags (thanks Warren Hatch)
25
+ - Decode a few more FujiFilm tags (thanks Greybeard)
26
+ - Enhanced %C format code to allow file-name collisions to be avoided by using
27
+ a colon instead of a decimal in the format modifier
28
+ - Fixed bug which could result in hang when using %C code in an output file
29
+ name
30
+
10
31
  Sept. 1, 2024 - Version 12.96
11
32
 
12
33
  - More improvements to handling of trailers on video files (and add ability to
@@ -130,7 +151,7 @@ June 7, 2024 - Version 12.86
130
151
  - Patched some Olympus WB_RBLevels tags to allow 4 values to be written as per
131
152
  some newer models
132
153
  - Fixed issue when writing IPTC date tags with a date/time value containing
133
- subseconds with 4 or more digits
154
+ subseconds with 4 or more digits
134
155
 
135
156
  May 21, 2024 - Version 12.85
136
157
 
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.98"
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.98'
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.98.tar.gz | tar -xf -
113
+ cd Image-ExifTool-12.98
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.98';
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.98 --
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
@@ -6191,9 +6204,10 @@ B<-fileNUM> option is used to read an alternate file and the corresponding
6191
6204
  family 8 group name is specified for the tag. See the B<-fileNUM> option
6192
6205
  details for more information.
6193
6206
 
6194
- 5) The B<-a> option has no effect on the evaluation of the expression, and
6195
- the values of duplicate tags are accessible only by specifying a group name
6196
- (such as a family 4 instance number, eg. C<$Copy1:TAG>, C<$Copy2:TAG>, etc).
6207
+ 5) The B<-a> (Duplicates) option is implied when B<-if> is used without a
6208
+ fast I<NUM>, and the values of duplicate tags are accessible by specifying a
6209
+ group name in the expression (such as a family 4 instance number, eg.
6210
+ C<$Copy1:TAG>, C<$Copy2:TAG>, etc).
6197
6211
 
6198
6212
  6) A special "OK" UserParam is available to test the success of the previous
6199
6213
  command when B<-execute> was used, and may be used like any other tag in the
@@ -6459,9 +6473,9 @@ B<-f> adds 'flags' and 'struct' attributes if applicable. The flags are
6459
6473
  formatted as a comma-separated list of the following possible values:
6460
6474
  Avoid, Binary, List, Mandatory, Permanent, Protected, Unknown and Unsafe
6461
6475
  (see the L<Tag Name documentation|Image::ExifTool::TagNames>). For XMP List
6462
- tags, the list type (Alt, Bag or Seq) is added to the flags, and flattened
6463
- structure tags are indicated by a Flattened flag with 'struct' giving the ID
6464
- of the parent structure.
6476
+ tags, the list type (Alt, Bag or Seq) is also given, and flattened structure
6477
+ tags are indicated by a Flattened flag with 'struct' giving the ID of the
6478
+ parent structure.
6465
6479
 
6466
6480
  Note that none of the B<-list> options require an input I<FILE>.
6467
6481
 
@@ -41,7 +41,7 @@ require 5.002;
41
41
  require Exporter;
42
42
 
43
43
  use vars qw($VERSION @ISA @EXPORT_OK);
44
- $VERSION = '1.12';
44
+ $VERSION = '1.13';
45
45
  @ISA = qw(Exporter);
46
46
 
47
47
  sub Read($$$);
@@ -158,7 +158,10 @@ sub Seek($$;$)
158
158
  $self->Slurp(); # read whole file into buffer
159
159
  $newPos = $num + $self->{LEN}; # relative to end of file
160
160
  }
161
- if ($newPos >= 0) {
161
+ if ($newPos >= 0 and
162
+ # can't go backwards in unbuffered non-seekable file
163
+ (not $self->{NoBuffer} or $newPos >= $self->{POS}))
164
+ {
162
165
  $self->{POS} = $newPos;
163
166
  $rtnVal = 1;
164
167
  }
@@ -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.09';
18
18
 
19
19
  # map for writing metadata to InDesign files (currently only write XMP)
20
20
  my %indMap = (
@@ -101,8 +101,23 @@ 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, 8192) and $hdr .= $buff;
108
+ my $n = length $hdr;
109
+ $hdr =~ s/\0+$//; # remove trailing nulls
110
+ if ($n > 8190 or length($hdr) > 4095) {
111
+ $err = 'Corrupt file or unsupported InDesign version';
112
+ last;
113
+ }
114
+ my $non = 'Non-null padding at end of file';
115
+ if (not $outfile) {
116
+ $et->Warn($non, 1);
117
+ } elsif (not $et->Error($non, 1)) {
118
+ Write($outfile, $hdr) or $err = 1;
119
+ $writeLen += length $hdr;
120
+ }
106
121
  last;
107
122
  }
108
123
  my $len = Get32u(\$hdr, 24);
@@ -16,7 +16,7 @@ use strict;
16
16
  use vars qw($VERSION);
17
17
  use Image::ExifTool qw(:DataAccess :Utils);
18
18
 
19
- $VERSION = '1.40';
19
+ $VERSION = '1.41';
20
20
 
21
21
  sub ProcessJpeg2000Box($$$);
22
22
  sub ProcessJUMD($$$);
@@ -574,6 +574,7 @@ my %j2cMarker = (
574
574
  2 => {
575
575
  Name => 'CompatibleBrands',
576
576
  Format => 'undef[$size-8]',
577
+ List => 1, # (for documentation only)
577
578
  # ignore any entry with a null, and return others as a list
578
579
  ValueConv => 'my @a=($val=~/.{4}/sg); @a=grep(!/\0/,@a); \@a',
579
580
  },
@@ -1543,7 +1544,7 @@ sub ProcessJP2($$)
1543
1544
 
1544
1545
  # check to be sure this is a valid JPG2000 file
1545
1546
  return 0 unless $raf->Read($hdr,12) == 12;
1546
- unless ($hdr eq "\0\0\0\x0cjP \x0d\x0a\x87\x0a" or # (ref 1)
1547
+ unless ($hdr eq "\0\0\0\x0cjP \x0d\x0a\x87\x0a" or # (ref 1)
1547
1548
  $hdr eq "\0\0\0\x0cjP\x1a\x1a\x0d\x0a\x87\x0a" or # (ref 2)
1548
1549
  $$et{IsJXL})
1549
1550
  {
@@ -328,6 +328,14 @@ sub ParsePID($$$$$)
328
328
  $more = 1; # read past unknown 0x15 packets if ExtractEmbedded > 2
329
329
  }
330
330
  }
331
+ # still have a lot of questions about how to decode this...
332
+ # (see https://exiftool.org/forum/index.php?topic=16486 and ../testpics/gps_video/forum16486.ts)
333
+ # } elsif ($type == 6) {
334
+ # my @a = unpack('x17x2NNx2nx2nx2nx2Cx2a4x2a5x2Nx2Nx2nx2Nx2Nx2Nx2nx2nx2Nx2nx2n', $$dataPt . " ");
335
+ # my $hi = shift @a;
336
+ # $a[0] = Image::ExifTool::ConvertUnixTime(($a[0] + $hi * 4294967296) * 1e-6, undef, 6);
337
+ # print "@a\n";
338
+ # $more = 1;
331
339
  } elsif ($type < 0) {
332
340
  if ($$dataPt =~ /^(.{164})?(.{24})A[NS][EW]/s) {
333
341
  # (Blueskysea B4K, Novatek NT96670)