exiftool_vendored 12.22.0 → 12.34.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +201 -5
  3. data/bin/MANIFEST +22 -0
  4. data/bin/META.json +1 -1
  5. data/bin/META.yml +1 -1
  6. data/bin/README +45 -43
  7. data/bin/arg_files/xmp2exif.args +2 -1
  8. data/bin/config_files/acdsee.config +193 -6
  9. data/bin/config_files/convert_regions.config +25 -14
  10. data/bin/config_files/cuepointlist.config +70 -0
  11. data/bin/config_files/example.config +1 -1
  12. data/bin/exiftool +89 -70
  13. data/bin/fmt_files/gpx.fmt +1 -1
  14. data/bin/fmt_files/gpx_wpt.fmt +1 -1
  15. data/bin/lib/Image/ExifTool/BuildTagLookup.pm +17 -4
  16. data/bin/lib/Image/ExifTool/CBOR.pm +331 -0
  17. data/bin/lib/Image/ExifTool/Canon.pm +53 -21
  18. data/bin/lib/Image/ExifTool/Charset.pm +2 -0
  19. data/bin/lib/Image/ExifTool/DPX.pm +13 -2
  20. data/bin/lib/Image/ExifTool/DjVu.pm +6 -5
  21. data/bin/lib/Image/ExifTool/Exif.pm +120 -12
  22. data/bin/lib/Image/ExifTool/FlashPix.pm +35 -10
  23. data/bin/lib/Image/ExifTool/FujiFilm.pm +19 -8
  24. data/bin/lib/Image/ExifTool/Geotag.pm +13 -2
  25. data/bin/lib/Image/ExifTool/GoPro.pm +16 -1
  26. data/bin/lib/Image/ExifTool/ICC_Profile.pm +96 -4
  27. data/bin/lib/Image/ExifTool/ID3.pm +15 -3
  28. data/bin/lib/Image/ExifTool/JPEG.pm +74 -4
  29. data/bin/lib/Image/ExifTool/JSON.pm +30 -5
  30. data/bin/lib/Image/ExifTool/Jpeg2000.pm +395 -16
  31. data/bin/lib/Image/ExifTool/LIF.pm +153 -0
  32. data/bin/lib/Image/ExifTool/Lang/nl.pm +60 -59
  33. data/bin/lib/Image/ExifTool/M2TS.pm +103 -7
  34. data/bin/lib/Image/ExifTool/MIE.pm +2 -1
  35. data/bin/lib/Image/ExifTool/MRC.pm +341 -0
  36. data/bin/lib/Image/ExifTool/MWG.pm +3 -3
  37. data/bin/lib/Image/ExifTool/MXF.pm +1 -1
  38. data/bin/lib/Image/ExifTool/MacOS.pm +3 -3
  39. data/bin/lib/Image/ExifTool/Microsoft.pm +5 -3
  40. data/bin/lib/Image/ExifTool/Nikon.pm +17 -5
  41. data/bin/lib/Image/ExifTool/NikonSettings.pm +19 -2
  42. data/bin/lib/Image/ExifTool/Olympus.pm +9 -2
  43. data/bin/lib/Image/ExifTool/Other.pm +93 -0
  44. data/bin/lib/Image/ExifTool/PDF.pm +11 -12
  45. data/bin/lib/Image/ExifTool/PNG.pm +8 -7
  46. data/bin/lib/Image/ExifTool/Panasonic.pm +28 -3
  47. data/bin/lib/Image/ExifTool/Pentax.pm +28 -5
  48. data/bin/lib/Image/ExifTool/PhaseOne.pm +4 -3
  49. data/bin/lib/Image/ExifTool/Photoshop.pm +6 -0
  50. data/bin/lib/Image/ExifTool/QuickTime.pm +210 -65
  51. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +280 -139
  52. data/bin/lib/Image/ExifTool/README +9 -2
  53. data/bin/lib/Image/ExifTool/RIFF.pm +89 -12
  54. data/bin/lib/Image/ExifTool/Samsung.pm +48 -10
  55. data/bin/lib/Image/ExifTool/Sony.pm +204 -61
  56. data/bin/lib/Image/ExifTool/TagLookup.pm +206 -19
  57. data/bin/lib/Image/ExifTool/TagNames.pod +634 -195
  58. data/bin/lib/Image/ExifTool/Torrent.pm +18 -11
  59. data/bin/lib/Image/ExifTool/WriteIPTC.pl +1 -1
  60. data/bin/lib/Image/ExifTool/WritePDF.pl +1 -0
  61. data/bin/lib/Image/ExifTool/WritePNG.pl +2 -0
  62. data/bin/lib/Image/ExifTool/WritePostScript.pl +1 -0
  63. data/bin/lib/Image/ExifTool/WriteQuickTime.pl +58 -16
  64. data/bin/lib/Image/ExifTool/WriteXMP.pl +7 -3
  65. data/bin/lib/Image/ExifTool/Writer.pl +44 -0
  66. data/bin/lib/Image/ExifTool/XMP.pm +51 -18
  67. data/bin/lib/Image/ExifTool/XMP2.pl +4 -1
  68. data/bin/lib/Image/ExifTool/XMPStruct.pl +3 -1
  69. data/bin/lib/Image/ExifTool/ZISRAW.pm +121 -2
  70. data/bin/lib/Image/ExifTool.pm +188 -61
  71. data/bin/lib/Image/ExifTool.pod +89 -68
  72. data/bin/perl-Image-ExifTool.spec +43 -42
  73. data/lib/exiftool_vendored/version.rb +1 -1
  74. metadata +10 -9
data/bin/exiftool CHANGED
@@ -10,7 +10,7 @@
10
10
  use strict;
11
11
  require 5.004;
12
12
 
13
- my $version = '12.22';
13
+ my $version = '12.34';
14
14
 
15
15
  # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
16
16
  my $exeDir;
@@ -286,6 +286,7 @@ my @recommends = qw(
286
286
  Digest::SHA
287
287
  IO::Compress::Bzip2
288
288
  POSIX::strptime
289
+ Time::Local
289
290
  Unicode::LineBreak
290
291
  IO::Compress::RawDeflate
291
292
  IO::Uncompress::RawInflate
@@ -1618,7 +1619,7 @@ if (@newValues) {
1618
1619
  next;
1619
1620
  }
1620
1621
  my %opts = ( Shift => 0 ); # shift values if possible instead of adding/deleting
1621
- # allow writing of 'unsafe' tags unless specified by wildcard
1622
+ # allow writing of 'Unsafe' tags unless specified by wildcard
1622
1623
  $opts{Protected} = 1 unless $tag =~ /[?*]/;
1623
1624
 
1624
1625
  if ($tag =~ s/<// and defined $newVal) {
@@ -1953,10 +1954,19 @@ sub GetImageInfo($$)
1953
1954
  my $pipe = $file;
1954
1955
  if ($doUnzip) {
1955
1956
  # pipe through gzip or bzip2 if necessary
1956
- if ($file =~ /\.gz$/i) {
1957
- $pipe = qq{gzip -dc "$file" |};
1958
- } elsif ($file =~ /\.bz2$/i) {
1959
- $pipe = qq{bzip2 -dc "$file" |};
1957
+ if ($file =~ /\.(gz|bz2)$/i) {
1958
+ my $type = lc $1;
1959
+ if ($file =~ /[^-_.'A-Za-z0-9\/\\]/) {
1960
+ Warn "Error: Insecure zip file name. Skipped\n";
1961
+ EFile($file);
1962
+ ++$countBad;
1963
+ return;
1964
+ }
1965
+ if ($type eq 'gz') {
1966
+ $pipe = qq{gzip -dc "$file" |};
1967
+ } else {
1968
+ $pipe = qq{bzip2 -dc "$file" |};
1969
+ }
1960
1970
  }
1961
1971
  }
1962
1972
  # evaluate -if expression for conditional processing
@@ -2217,7 +2227,7 @@ sub GetImageInfo($$)
2217
2227
  my $f = $file;
2218
2228
  CleanXML(\$f);
2219
2229
  print $fp "\n<rdf:Description rdf:about='${f}'";
2220
- print $fp "\n xmlns:et='http://ns.exiftool.ca/1.0/'";
2230
+ print $fp "\n xmlns:et='http://ns.exiftool.org/1.0/'";
2221
2231
  print $fp " et:toolkit='Image::ExifTool $Image::ExifTool::VERSION'";
2222
2232
  # define namespaces for all tag groups
2223
2233
  my (%groups, @groups, $grp0, $grp1);
@@ -2239,7 +2249,7 @@ sub GetImageInfo($$)
2239
2249
  unless ($grp eq $grp1 and $grp =~ /^(ExifTool|File|Composite|Unknown)$/) {
2240
2250
  $grp .= "/$grp1";
2241
2251
  }
2242
- print $fp "\n xmlns:$grp1='http://ns.exiftool.ca/$grp/1.0/'";
2252
+ print $fp "\n xmlns:$grp1='http://ns.exiftool.org/$grp/1.0/'";
2243
2253
  }
2244
2254
  print $fp '>' if $outFormat < 1; # finish rdf:Description token unless short format
2245
2255
  $ind = $outFormat >= 0 ? ' ' : ' ';
@@ -2275,11 +2285,11 @@ TAG: foreach $tag (@foundTags) {
2275
2285
  # avoid extracting Protected binary tags (eg. data blocks) [insider information]
2276
2286
  my $lcTag = lc $tag;
2277
2287
  $lcTag =~ s/ .*//;
2278
- next unless $$et{REQ_TAG_LOOKUP}{$lcTag};
2288
+ next unless $$et{REQ_TAG_LOOKUP}{$lcTag} or ($$et{OPTIONS}{RequestAll} || 0) > 2;
2279
2289
  }
2280
2290
  $val = ConvertBinary($val); # convert SCALAR references
2281
2291
  next unless defined $val;
2282
- if ($structOpt) {
2292
+ if ($structOpt and ref $val) {
2283
2293
  # serialize structure if necessary
2284
2294
  $val = Image::ExifTool::XMP::SerializeStruct($val) unless $xml or $json;
2285
2295
  } elsif (ref $val eq 'ARRAY') {
@@ -3051,12 +3061,14 @@ sub SetImageInfo($$$)
3051
3061
  # temporarily disable CTRL-C during this critical operation
3052
3062
  $critical = 1;
3053
3063
  undef $tmpFile; # handle deletion of temporary file ourself
3054
- if ($et->Open(\*ORIG_FILE, $file, '>')) {
3064
+ if ($et->Open(\*ORIG_FILE, $file, '+<')) {
3055
3065
  binmode(ORIG_FILE);
3056
3066
  while (read(NEW_FILE, $buff, 65536)) {
3057
3067
  print ORIG_FILE $buff or $err = 1;
3058
3068
  }
3059
3069
  close(NEW_FILE);
3070
+ # Handle files being shorter than the original
3071
+ eval { truncate(ORIG_FILE, tell(ORIG_FILE)) } or $err = 1;
3060
3072
  close(ORIG_FILE) or $err = 1;
3061
3073
  if ($err) {
3062
3074
  Warn "Couldn't overwrite in place - $file\n";
@@ -3240,7 +3252,8 @@ sub FormatXML($$$)
3240
3252
  } elsif (ref $val eq 'HASH') {
3241
3253
  $gt = " rdf:parseType='Resource'>";
3242
3254
  my $val2 = '';
3243
- foreach (sort keys %$val) {
3255
+ my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
3256
+ foreach (@keys) {
3244
3257
  # (some variable-namespace XML structure fields may have a different group)
3245
3258
  my $tok = /:/ ? $_ : ($grp . ':' . $_);
3246
3259
  $val2 .= "\n$ind <$tok" . FormatXML($$val{$_}, "$ind ", $grp) . "</$tok>";
@@ -3317,7 +3330,8 @@ sub FormatJSON($$$)
3317
3330
  } elsif (ref $val eq 'HASH') {
3318
3331
  my ($bra, $ket, $sep) = $json == 1 ? ('{','}',':') : ('Array(',')',' =>');
3319
3332
  print $fp $bra;
3320
- foreach (sort keys %$val) {
3333
+ my @keys = $$val{_ordered_keys_} ? @{$$val{_ordered_keys_}} : sort keys %$val;
3334
+ foreach (@keys) {
3321
3335
  print $fp ',' if $comma;
3322
3336
  my $key = EscapeJSON($_, 1);
3323
3337
  print $fp qq(\n$ind $key$sep );
@@ -4262,7 +4276,10 @@ sub FilterArgfileLine($)
4262
4276
  # escaped by an odd number of backslashes, and escape a single backslash
4263
4277
  # if it occurs at the end of the string
4264
4278
  $arg =~ s{\\(.)|(["\$\@]|\\$)}{'\\'.($2 || $1)}sge;
4265
- $arg = eval qq{"$arg"}; # un-escape characters in C string
4279
+ # un-escape characters in C string
4280
+ my %esc = ( a => "\a", b => "\b", f => "\f", n => "\n",
4281
+ r => "\r", t => "\t", '"' => '"', '\\' => '\\' );
4282
+ $arg =~ s/\\(.)/$esc{$1}||'\\'.$1/egs;
4266
4283
  } else {
4267
4284
  $arg =~ s/^\s+//; # remove leading white space
4268
4285
  $arg =~ s/[\x0d\x0a]+$//s; # remove trailing newline
@@ -4468,47 +4485,48 @@ supported by ExifTool (r = read, w = write, c = create):
4468
4485
 
4469
4486
  File Types
4470
4487
  ------------+-------------+-------------+-------------+------------
4471
- 360 r/w | DPX r | ITC r | ODP r | RIFF r
4472
- 3FR r | DR4 r/w/c | J2C r | ODS r | RSRC r
4473
- 3G2 r/w | DSS r | JNG r/w | ODT r | RTF r
4474
- 3GP r/w | DV r | JP2 r/w | OFR r | RW2 r/w
4475
- A r | DVB r/w | JPEG r/w | OGG r | RWL r/w
4476
- AA r | DVR-MS r | JSON r | OGV r | RWZ r
4477
- AAE r | DYLIB r | K25 r | ONP r | RM r
4478
- AAX r/w | EIP r | KDC r | OPUS r | SEQ r
4479
- ACR r | EPS r/w | KEY r | ORF r/w | SKETCH r
4480
- AFM r | EPUB r | LA r | OTF r | SO r
4481
- AI r/w | ERF r/w | LFP r | PAC r | SR2 r/w
4482
- AIFF r | EXE r | LNK r | PAGES r | SRF r
4483
- APE r | EXIF r/w/c | LRV r/w | PBM r/w | SRW r/w
4484
- ARQ r/w | EXR r | M2TS r | PCD r | SVG r
4485
- ARW r/w | EXV r/w/c | M4A/V r/w | PCX r | SWF r
4486
- ASF r | F4A/V r/w | MACOS r | PDB r | THM r/w
4487
- AVI r | FFF r/w | MAX r | PDF r/w | TIFF r/w
4488
- AVIF r/w | FITS r | MEF r/w | PEF r/w | TORRENT r
4489
- AZW r | FLA r | MIE r/w/c | PFA r | TTC r
4490
- BMP r | FLAC r | MIFF r | PFB r | TTF r
4491
- BPG r | FLIF r/w | MKA r | PFM r | TXT r
4492
- BTF r | FLV r | MKS r | PGF r | VCF r
4493
- CHM r | FPF r | MKV r | PGM r/w | VRD r/w/c
4494
- COS r | FPX r | MNG r/w | PLIST r | VSD r
4495
- CR2 r/w | GIF r/w | MOBI r | PICT r | WAV r
4496
- CR3 r/w | GPR r/w | MODD r | PMP r | WDP r/w
4497
- CRM r/w | GZ r | MOI r | PNG r/w | WEBP r
4498
- CRW r/w | HDP r/w | MOS r/w | PPM r/w | WEBM r
4499
- CS1 r/w | HDR r | MOV r/w | PPT r | WMA r
4500
- CSV r | HEIC r/w | MP3 r | PPTX r | WMV r
4501
- CZI r | HEIF r/w | MP4 r/w | PS r/w | WTV r
4502
- DCM r | HTML r | MPC r | PSB r/w | WV r
4503
- DCP r/w | ICC r/w/c | MPG r | PSD r/w | X3F r/w
4504
- DCR r | ICS r | MPO r/w | PSP r | XCF r
4505
- DFONT r | IDML r | MQV r/w | QTIF r/w | XLS r
4506
- DIVX r | IIQ r/w | MRW r/w | R3D r | XLSX r
4507
- DJVU r | IND r/w | MXF r | RA r | XMP r/w/c
4508
- DLL r | INSP r/w | NEF r/w | RAF r/w | ZIP r
4509
- DNG r/w | INSV r | NRW r/w | RAM r |
4510
- DOC r | INX r | NUMBERS r | RAR r |
4511
- DOCX r | ISO r | O r | RAW r/w |
4488
+ 360 r/w | DR4 r/w/c | JNG r/w | ODP r | RIFF r
4489
+ 3FR r | DSS r | JP2 r/w | ODS r | RSRC r
4490
+ 3G2 r/w | DV r | JPEG r/w | ODT r | RTF r
4491
+ 3GP r/w | DVB r/w | JSON r | OFR r | RW2 r/w
4492
+ A r | DVR-MS r | JXL r | OGG r | RWL r/w
4493
+ AA r | DYLIB r | K25 r | OGV r | RWZ r
4494
+ AAE r | EIP r | KDC r | ONP r | RM r
4495
+ AAX r/w | EPS r/w | KEY r | OPUS r | SEQ r
4496
+ ACR r | EPUB r | LA r | ORF r/w | SKETCH r
4497
+ AFM r | ERF r/w | LFP r | ORI r/w | SO r
4498
+ AI r/w | EXE r | LIF r | OTF r | SR2 r/w
4499
+ AIFF r | EXIF r/w/c | LNK r | PAC r | SRF r
4500
+ APE r | EXR r | LRV r/w | PAGES r | SRW r/w
4501
+ ARQ r/w | EXV r/w/c | M2TS r | PBM r/w | SVG r
4502
+ ARW r/w | F4A/V r/w | M4A/V r/w | PCD r | SWF r
4503
+ ASF r | FFF r/w | MACOS r | PCX r | THM r/w
4504
+ AVI r | FITS r | MAX r | PDB r | TIFF r/w
4505
+ AVIF r/w | FLA r | MEF r/w | PDF r/w | TORRENT r
4506
+ AZW r | FLAC r | MIE r/w/ | PEF r/w | TTC r
4507
+ BMP r | FLIF r/w | MIFF r c | PFA r | TTF r
4508
+ BPG r | FLV r | MKA r | PFB r | TXT r
4509
+ BTF r | FPF r | MKS r | PFM r | VCF r
4510
+ CHM r | FPX r | MKV r | PGF r | VRD r/w/c
4511
+ COS r | GIF r/w | MNG r/w | PGM r/w | VSD r
4512
+ CR2 r/w | GPR r/w | MOBI r | PLIST r | WAV r
4513
+ CR3 r/w | GZ r | MODD r | PICT r | WDP r/w
4514
+ CRM r/w | HDP r/w | MOI r | PMP r | WEBP r
4515
+ CRW r/w | HDR r | MOS r/w | PNG r/w | WEBM r
4516
+ CS1 r/w | HEIC r/w | MOV r/w | PPM r/w | WMA r
4517
+ CSV r | HEIF r/w | MP3 r | PPT r | WMV r
4518
+ CZI r | HTML r | MP4 r/w | PPTX r | WTV r
4519
+ DCM r | ICC r/w/c | MPC r | PS r/w | WV r
4520
+ DCP r/w | ICS r | MPG r | PSB r/w | X3F r/w
4521
+ DCR r | IDML r | MPO r/w | PSD r/w | XCF r
4522
+ DFONT r | IIQ r/w | MQV r/w | PSP r | XLS r
4523
+ DIVX r | IND r/w | MRC r | QTIF r/w | XLSX r
4524
+ DJVU r | INSP r/w | MRW r/w | R3D r | XMP r/w/c
4525
+ DLL r | INSV r | MXF r | RA r | ZIP r
4526
+ DNG r/w | INX r | NEF r/w | RAF r/w |
4527
+ DOC r | ISO r | NRW r/w | RAM r |
4528
+ DOCX r | ITC r | NUMBERS r | RAR r |
4529
+ DPX r | J2C r | O r | RAW r/w |
4512
4530
 
4513
4531
  Meta Information
4514
4532
  ----------------------+----------------------+---------------------
@@ -4716,11 +4734,11 @@ I<TAG> may contain one or more leading family 0, 1, 2 or 7 group names,
4716
4734
  prefixed by optional family numbers, and separated colons. If no group name
4717
4735
  is specified, the tag is created in the preferred group, and updated in any
4718
4736
  other location where a same-named tag already exists. The preferred group
4719
- is the first group in the following list where I<TAG> is valid: 1) EXIF, 2)
4720
- IPTC, 3) XMP.
4737
+ in JPEG and TIFF-format images is the first group in the following list
4738
+ where I<TAG> is valid: 1) EXIF, 2) IPTC, 3) XMP.
4721
4739
 
4722
4740
  The wildcards C<*> and C<?> may be used in tag names to assign the same
4723
- value to multiple tags. When specified with wildcards, "unsafe" tags are
4741
+ value to multiple tags. When specified with wildcards, "Unsafe" tags are
4724
4742
  not written. A tag name of C<All> is equivalent to C<*> (except that it
4725
4743
  doesn't require quoting, while arguments with wildcards do on systems with
4726
4744
  shell globbing), and is often used when deleting all metadata (ie. C<-All=>)
@@ -4866,10 +4884,10 @@ See L</COPYING EXAMPLES> for examples using B<-tagsFromFile>.
4866
4884
  Notes:
4867
4885
 
4868
4886
  1) Some tags (generally tags which may affect the appearance of the image)
4869
- are considered "unsafe" to write, and are only copied if specified
4887
+ are considered "Unsafe" to write, and are only copied if specified
4870
4888
  explicitly (ie. no wildcards). See the
4871
4889
  L<tag name documentation|Image::ExifTool::TagNames> for more details about
4872
- "unsafe" tags.
4890
+ "Unsafe" tags.
4873
4891
 
4874
4892
  2) Be aware of the difference between excluding a tag from being copied
4875
4893
  (--I<TAG>), and deleting a tag (-I<TAG>=). Excluding a tag prevents it from
@@ -4967,7 +4985,7 @@ intermediate file (C<out.args> in this example):
4967
4985
  exiftool -@ out.args -sep ', ' dst.jpg
4968
4986
 
4969
4987
  Note: Be careful when copying information with this technique since it is
4970
- easy to write tags which are normally considered "unsafe". For instance,
4988
+ easy to write tags which are normally considered "Unsafe". For instance,
4971
4989
  the FileName and Directory tags are excluded in the example above to avoid
4972
4990
  renaming and moving the destination file. Also note that the second command
4973
4991
  above will produce warning messages for any tags which are not writable.
@@ -4987,8 +5005,8 @@ are in the default output. By default, list items are separated by a
4987
5005
  newline when extracted with the B<-b> option, but this may be changed (see
4988
5006
  the B<-sep> option for details). May be combined with B<-j>, B<-php> or
4989
5007
  B<-X> to extract binary data in JSON, PHP or XML format, but note that
4990
- "unsafe" tags must be specified explicitly to be extracted as binary in
4991
- these formats.
5008
+ "Unsafe" tags are not extracted as binary unless they are specified explicitly or
5009
+ the API RequestAll option is set to 3 or higher.
4992
5010
 
4993
5011
  With a leading double dash (B<--b> or B<--binary>), tags which contain
4994
5012
  binary data are suppressed in the output when reading.
@@ -5189,7 +5207,7 @@ By default the resulting group name is simplified by removing any leading
5189
5207
  C<Main:> and collapsing adjacent identical group names, but this can be
5190
5208
  avoided by placing a colon before the first family number (eg. B<-g:3:1>).
5191
5209
  Use the B<-listg> option to list group names for a specified family. The
5192
- SavePath and SaveFormat API options are automatically enabled if the
5210
+ API SavePath and SaveFormat options are automatically enabled if the
5193
5211
  respective family 5 or 6 group names are requested. See the
5194
5212
  L<API GetGroup documentation|Image::ExifTool/GetGroup> for more information.
5195
5213
 
@@ -5392,7 +5410,7 @@ with this command:
5392
5410
 
5393
5411
  produces output like this:
5394
5412
 
5395
- -- Generated by ExifTool 12.22 --
5413
+ -- Generated by ExifTool 12.34 --
5396
5414
  File: a.jpg - 2003:10:31 15:44:19
5397
5415
  (f/5.6, 1/60s, ISO 100)
5398
5416
  File: b.jpg - 2006:05:23 11:57:38
@@ -5409,7 +5427,7 @@ are effectively processed as separate input files.
5409
5427
  If a specified tag does not exist, a minor warning is issued and the line
5410
5428
  with the missing tag is not printed. However, the B<-f> option may be used
5411
5429
  to set the value of missing tags to '-' (but this may be configured via the
5412
- MissingTagValue API option), or the B<-m> option may be used to ignore minor
5430
+ API MissingTagValue option), or the B<-m> option may be used to ignore minor
5413
5431
  warnings and leave the missing values empty. Alternatively, B<-q -q> may be
5414
5432
  used to simply suppress the warning messages.
5415
5433
 
@@ -5708,9 +5726,10 @@ The B<-t> option adds tag table information to the output (see B<-t> for
5708
5726
  details).
5709
5727
 
5710
5728
  Note: This output is NOT the same as XMP because it uses
5711
- dynamically-generated property names corresponding to the ExifTool tag
5712
- names, and not the standard XMP properties. To write XMP instead, use the
5713
- B<-o> option with an XMP extension for the output file.
5729
+ dynamically-generated property names corresponding to the ExifTool tag names
5730
+ with ExifTool family 1 group names as namespaces, and not the standard XMP
5731
+ properties and namespaces. To write XMP instead, use the B<-o> option with
5732
+ an XMP extension for the output file.
5714
5733
 
5715
5734
  =back
5716
5735
 
@@ -6357,7 +6376,7 @@ exit status of the command (see L</EXIT STATUS>).
6357
6376
 
6358
6377
  Save the names of files giving errors (I<NUM> missing or 1), files that were
6359
6378
  unchanged (I<NUM> is 2), files that fail the B<-if> condition (I<NUM> is 4),
6360
- or any combination thereof (by summing I<NUM>, eg. B<-efile3> is the same
6379
+ or any combination thereof by summing I<NUM> (eg. B<-efile3> is the same
6361
6380
  has having both B<-efile> and B<-efile2> options with the same I<ERRFILE>).
6362
6381
  By default, file names are appended to any existing I<ERRFILE>, but
6363
6382
  I<ERRFILE> is overwritten if an exclamation point is added to the option
@@ -13,7 +13,7 @@
13
13
  # 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
14
14
  #
15
15
  # Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
16
- # 2) The -ee option is to extract the full track from video files.
16
+ # 2) The -ee3 option is to extract the full track from video files.
17
17
  # 3) The -fileOrder option may be used to control the order of the
18
18
  # generated track points when processing multiple files.
19
19
  #------------------------------------------------------------------------------
@@ -14,7 +14,7 @@
14
14
  # 2019/10/24 - PH Preserve sub-seconds in GPSDateTime value
15
15
  #
16
16
  # Notes: 1) Input file(s) must contain GPSLatitude and GPSLongitude.
17
- # 2) The -ee option is to extract the full track from video files.
17
+ # 2) The -ee3 option is to extract the full track from video files.
18
18
  # 3) The -fileOrder option may be used to control the order of the
19
19
  # generated track points when processing multiple files.
20
20
  #------------------------------------------------------------------------------
@@ -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.44';
38
+ $VERSION = '3.46';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -68,6 +68,7 @@ my %tweakOrder = (
68
68
  IPTC => 'Exif', # put IPTC after EXIF,
69
69
  GPS => 'XMP', # etc...
70
70
  Composite => 'Extra',
71
+ CBOR => 'JSON',
71
72
  GeoTiff => 'GPS',
72
73
  CanonVRD=> 'CanonCustom',
73
74
  DJI => 'Casio',
@@ -459,7 +460,7 @@ According to the specification, integer-format QuickTime date/time tags
459
460
  should be stored as UTC. Unfortunately, digital cameras often store local
460
461
  time values instead (presumably because they don't know the time zone). For
461
462
  this reason, by default ExifTool does not assume a time zone for these
462
- values. However, if the L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> API option is set, then ExifTool will
463
+ values. However, if the API L<QuickTimeUTC|../ExifTool.html#QuickTimeUTC> option is set, then ExifTool will
463
464
  assume these values are properly stored as UTC, and will convert them to
464
465
  local time when extracting.
465
466
 
@@ -468,6 +469,11 @@ the PrintConv option is enabled and no time zone is specified. This is
468
469
  because Apple software may display crazy values if the time zone is missing
469
470
  for some tags.
470
471
 
472
+ By default ExifTool will remove null padding from some QuickTime containers
473
+ in Canon CR3 files when writing, but the
474
+ L<QuickTimePad|../ExifTool.html#QuickTimePad> option may be used to preserve
475
+ the original size by padding with nulls if necessary.
476
+
471
477
  See
472
478
  L<https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/>
473
479
  for the official specification.
@@ -639,7 +645,7 @@ overlapping EXIF, IPTC and XMP tags to be reconciled when reading, and
639
645
  synchronized when writing. The MWG Composite tags below are designed to aid
640
646
  in the implementation of these recommendations. As well, the MWG defines
641
647
  new XMP tags which are listed in the subsequent tables below. See
642
- L<https://web.archive.org/web/20181006115950/http://www.metadataworkinggroup.org/specs/>
648
+ L<https://web.archive.org/web/20180919181934/http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf>
643
649
  for the official MWG specification.
644
650
  },
645
651
  MacOS => q{
@@ -2117,7 +2123,7 @@ sub WriteTagNames($$)
2117
2123
  $short = $$shortName{$tableName};
2118
2124
  my @names = split ' ', $short;
2119
2125
  my $class = shift @names;
2120
- if (@names) {
2126
+ if (@names and $class ne 'Other') {
2121
2127
  # add heading for tables without a Main
2122
2128
  unless ($heading eq $class) {
2123
2129
  $heading = $class;
@@ -2145,6 +2151,13 @@ sub WriteTagNames($$)
2145
2151
  $short = $$shortName{$tableName};
2146
2152
  $short = $tableName unless $short;
2147
2153
  $url = "$short.html";
2154
+ # handle various tables in "Other.pm"
2155
+ if ($short =~ /^Other (.*)/) {
2156
+ $short = $1;
2157
+ $url = 'Other.html#' . $1;
2158
+ } else {
2159
+ $url = "$short.html";
2160
+ }
2148
2161
  print HTMLFILE "<a href='${url}'>$short</a>";
2149
2162
  ++$count;
2150
2163
  }