exiftool_vendored 12.99.0 → 13.03.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/bin/Changes +76 -3
  3. data/bin/META.json +1 -1
  4. data/bin/META.yml +1 -1
  5. data/bin/README +2 -2
  6. data/bin/arg_files/exif2xmp.args +4 -0
  7. data/bin/arg_files/xmp2exif.args +4 -0
  8. data/bin/exiftool +121 -50
  9. data/bin/lib/Image/ExifTool/Apple.pm +2 -2
  10. data/bin/lib/Image/ExifTool/CBOR.pm +4 -1
  11. data/bin/lib/Image/ExifTool/Canon.pm +35 -26
  12. data/bin/lib/Image/ExifTool/Exif.pm +15 -9
  13. data/bin/lib/Image/ExifTool/FlashPix.pm +5 -9
  14. data/bin/lib/Image/ExifTool/GIF.pm +143 -92
  15. data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  16. data/bin/lib/Image/ExifTool/Geotag.pm +6 -5
  17. data/bin/lib/Image/ExifTool/GoPro.pm +2 -2
  18. data/bin/lib/Image/ExifTool/JPEG.pm +9 -1
  19. data/bin/lib/Image/ExifTool/Jpeg2000.pm +2 -2
  20. data/bin/lib/Image/ExifTool/LNK.pm +1 -1
  21. data/bin/lib/Image/ExifTool/M2TS.pm +2 -2
  22. data/bin/lib/Image/ExifTool/MIE.pm +9 -3
  23. data/bin/lib/Image/ExifTool/MacOS.pm +2 -1
  24. data/bin/lib/Image/ExifTool/Matroska.pm +10 -2
  25. data/bin/lib/Image/ExifTool/Nikon.pm +5 -2
  26. data/bin/lib/Image/ExifTool/PDF.pm +35 -4
  27. data/bin/lib/Image/ExifTool/PNG.pm +14 -3
  28. data/bin/lib/Image/ExifTool/PPM.pm +11 -2
  29. data/bin/lib/Image/ExifTool/PhaseOne.pm +2 -1
  30. data/bin/lib/Image/ExifTool/QuickTime.pm +6 -1
  31. data/bin/lib/Image/ExifTool/QuickTimeStream.pl +69 -7
  32. data/bin/lib/Image/ExifTool/RIFF.pm +7 -2
  33. data/bin/lib/Image/ExifTool/TagLookup.pm +5596 -5582
  34. data/bin/lib/Image/ExifTool/TagNames.pod +75 -21
  35. data/bin/lib/Image/ExifTool/Text.pm +3 -2
  36. data/bin/lib/Image/ExifTool/Validate.pm +2 -2
  37. data/bin/lib/Image/ExifTool/WriteRIFF.pl +13 -4
  38. data/bin/lib/Image/ExifTool/Writer.pl +42 -66
  39. data/bin/lib/Image/ExifTool/XMP.pm +19 -4
  40. data/bin/lib/Image/ExifTool/XMP2.pl +60 -0
  41. data/bin/lib/Image/ExifTool/XMPStruct.pl +1 -2
  42. data/bin/lib/Image/ExifTool.pm +204 -86
  43. data/bin/lib/Image/ExifTool.pod +58 -31
  44. data/bin/perl-Image-ExifTool.spec +1 -1
  45. data/lib/exiftool_vendored/version.rb +1 -1
  46. metadata +2 -2
@@ -25,6 +25,7 @@ use strict;
25
25
  use Image::ExifTool qw(:Utils);
26
26
  use Image::ExifTool::XMP;
27
27
 
28
+ sub ProcessSEAL($$;$);
28
29
  sub Init_crd($);
29
30
 
30
31
  #------------------------------------------------------------------------------
@@ -2290,6 +2291,65 @@ my %sACDSeeRegionStruct = (
2290
2291
  },
2291
2292
  );
2292
2293
 
2294
+ %Image::ExifTool::XMP::seal = (
2295
+ GROUPS => { 0 => 'XMP', 1 => 'XMP-seal', 2 => 'Image' },
2296
+ NAMESPACE => 'seal',
2297
+ WRITABLE => 'string',
2298
+ NOTES => 'SEAL embedded in XMP.',
2299
+ seal => {
2300
+ Name => 'Seal',
2301
+ Binary => 1,
2302
+ SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
2303
+ },
2304
+ );
2305
+
2306
+ %Image::ExifTool::XMP::SEAL = (
2307
+ GROUPS => { 0 => 'XML', 1 => 'SEAL', 2 => 'Document' },
2308
+ PROCESS_PROC => \&ProcessSEAL,
2309
+ NOTES => q{
2310
+ These tags are used in SEAL content authentification, which is actually XML
2311
+ format, not XMP. ExifTool has read/delete support for SEAL information in
2312
+ JPG, TIFF, XMP, PNG, WEBP, HEIC, PPM, MOV and MP4 files, and read-only
2313
+ support in PDF, MKV and WAV. Use C<-seal:all=> on the command line to
2314
+ delete SEAL information in supported formats.
2315
+ },
2316
+ seal=> 'SEALVersion',
2317
+ kv => 'KeyVersion',
2318
+ ka => 'KeyAlgorithm',
2319
+ da => 'DigestAlgorithm',
2320
+ sf => 'SignatureFormat',
2321
+ d => 'Domain',
2322
+ b => 'ByteRange',
2323
+ 's' => 'Signature',
2324
+ info=> 'SEALComment',
2325
+ copyright => { Name => 'Copyright', Groups => { 2 => 'Author' } },
2326
+ );
2327
+
2328
+ #------------------------------------------------------------------------------
2329
+ # We found a SEAL property name/value
2330
+ # Inputs: 0) ExifTool ref, 1) tag table ref, 2) xmp property list ref
2331
+ # 3) property value, 4) attribute hash ref
2332
+ # Returns: 1 if valid tag was found
2333
+ sub FoundSEAL($$$$;$)
2334
+ {
2335
+ my ($et, $tagTablePtr, $props, $val, $attrs) = @_;
2336
+ # remove 'seal' container property from name
2337
+ my @sealProps = @$props;
2338
+ shift @sealProps if @sealProps and $sealProps[0] eq 'seal';
2339
+ return FoundXMP($et, $tagTablePtr, \@sealProps, $val, $attrs);
2340
+ }
2341
+
2342
+ #------------------------------------------------------------------------------
2343
+ # Process SEAL XML
2344
+ # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
2345
+ # Returns: 1 on success
2346
+ sub ProcessSEAL($$;$)
2347
+ {
2348
+ my ($et, $dirInfo, $tagTablePtr) = @_;
2349
+ $$dirInfo{XMPParseOpts}{FoundProc} = \&FoundSEAL;
2350
+ return ProcessXMP($et, $dirInfo, $tagTablePtr);
2351
+ }
2352
+
2293
2353
  #------------------------------------------------------------------------------
2294
2354
  # Generate crd tags
2295
2355
  # Inputs: 0) tag table ref
@@ -714,7 +714,6 @@ sub RestoreStruct($;$)
714
714
  my $fileOrder = $$et{FILE_ORDER};
715
715
  my $tagExtra = $$et{TAG_EXTRA};
716
716
  foreach $key (keys %{$$et{TAG_INFO}}) {
717
- $$tagExtra{$key} or next;
718
717
  my $structProps = $$tagExtra{$key}{Struct} or next;
719
718
  delete $$tagExtra{$key}{Struct}; # (don't re-use)
720
719
  my $tagInfo = $$et{TAG_INFO}{$key}; # tagInfo for flattened tag
@@ -880,7 +879,7 @@ sub RestoreStruct($;$)
880
879
  }
881
880
  # preserve original flattened tags if requested
882
881
  if ($keepFlat) {
883
- my $extra = $$tagExtra{$key} or next;
882
+ my $extra = $$tagExtra{$key};
884
883
  # restore list behaviour of this flattened tag
885
884
  if ($$extra{NoList}) {
886
885
  $$valueHash{$key} = $$extra{NoList};