exiftool-vendored.pl 12.78.0 → 12.82.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 (58) hide show
  1. package/bin/Changes +80 -3
  2. package/bin/MANIFEST +29 -2
  3. package/bin/META.json +1 -1
  4. package/bin/META.yml +1 -1
  5. package/bin/README +3 -2
  6. package/bin/config_files/acdsee.config +37 -57
  7. package/bin/config_files/example.config +6 -0
  8. package/bin/exiftool +67 -25
  9. package/bin/lib/Image/ExifTool/BuildTagLookup.pm +44 -31
  10. package/bin/lib/Image/ExifTool/CanonVRD.pm +2 -2
  11. package/bin/lib/Image/ExifTool/FujiFilm.pm +21 -5
  12. package/bin/lib/Image/ExifTool/GM.pm +543 -0
  13. package/bin/lib/Image/ExifTool/GeoLang/cs.pm +978 -0
  14. package/bin/lib/Image/ExifTool/GeoLang/de.pm +1975 -0
  15. package/bin/lib/Image/ExifTool/GeoLang/en_ca.pm +44 -0
  16. package/bin/lib/Image/ExifTool/GeoLang/en_gb.pm +124 -0
  17. package/bin/lib/Image/ExifTool/GeoLang/es.pm +2921 -0
  18. package/bin/lib/Image/ExifTool/GeoLang/fi.pm +1116 -0
  19. package/bin/lib/Image/ExifTool/GeoLang/fr.pm +3171 -0
  20. package/bin/lib/Image/ExifTool/GeoLang/it.pm +2750 -0
  21. package/bin/lib/Image/ExifTool/GeoLang/ja.pm +10256 -0
  22. package/bin/lib/Image/ExifTool/GeoLang/ko.pm +4499 -0
  23. package/bin/lib/Image/ExifTool/GeoLang/nl.pm +1270 -0
  24. package/bin/lib/Image/ExifTool/GeoLang/pl.pm +3019 -0
  25. package/bin/lib/Image/ExifTool/GeoLang/ru.pm +18220 -0
  26. package/bin/lib/Image/ExifTool/GeoLang/sk.pm +441 -0
  27. package/bin/lib/Image/ExifTool/GeoLang/sv.pm +714 -0
  28. package/bin/lib/Image/ExifTool/GeoLang/tr.pm +452 -0
  29. package/bin/lib/Image/ExifTool/GeoLang/zh_cn.pm +2225 -0
  30. package/bin/lib/Image/ExifTool/GeoLang/zh_tw.pm +72 -0
  31. package/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
  32. package/bin/lib/Image/ExifTool/Geolocation.pm +867 -146
  33. package/bin/lib/Image/ExifTool/Geotag.pm +13 -1
  34. package/bin/lib/Image/ExifTool/JSON.pm +7 -2
  35. package/bin/lib/Image/ExifTool/M2TS.pm +32 -4
  36. package/bin/lib/Image/ExifTool/MakerNotes.pm +2 -2
  37. package/bin/lib/Image/ExifTool/Microsoft.pm +1 -1
  38. package/bin/lib/Image/ExifTool/Nikon.pm +331 -22
  39. package/bin/lib/Image/ExifTool/NikonCustom.pm +55 -1
  40. package/bin/lib/Image/ExifTool/Olympus.pm +1 -0
  41. package/bin/lib/Image/ExifTool/OpenEXR.pm +37 -19
  42. package/bin/lib/Image/ExifTool/PNG.pm +3 -3
  43. package/bin/lib/Image/ExifTool/QuickTime.pm +40 -24
  44. package/bin/lib/Image/ExifTool/QuickTimeStream.pl +61 -30
  45. package/bin/lib/Image/ExifTool/README +8 -5
  46. package/bin/lib/Image/ExifTool/Sony.pm +1 -1
  47. package/bin/lib/Image/ExifTool/TagLookup.pm +4820 -4750
  48. package/bin/lib/Image/ExifTool/TagNames.pod +1000 -615
  49. package/bin/lib/Image/ExifTool/WriteQuickTime.pl +31 -8
  50. package/bin/lib/Image/ExifTool/WriteXMP.pl +1 -1
  51. package/bin/lib/Image/ExifTool/Writer.pl +58 -2
  52. package/bin/lib/Image/ExifTool/XMP.pm +20 -3
  53. package/bin/lib/Image/ExifTool/XMP2.pl +64 -0
  54. package/bin/lib/Image/ExifTool.pm +210 -97
  55. package/bin/lib/Image/ExifTool.pod +44 -18
  56. package/bin/perl-Image-ExifTool.spec +1 -1
  57. package/bin/pp_build_exe.args +4 -4
  58. package/package.json +3 -3
@@ -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.54';
38
+ $VERSION = '3.55';
39
39
  @ISA = qw(Exporter);
40
40
 
41
41
  sub NumbersFirst($$);
@@ -95,16 +95,9 @@ my %tweakOrder = (
95
95
  Lytro => 'SigmaRaw',
96
96
  PhotoMechanic => 'FotoStation',
97
97
  Microsoft => 'PhotoMechanic',
98
- 'Microsoft::MP'=> 'Microsoft::MP1',
99
98
  GIMP => 'Microsoft',
100
- 'Nikon::CameraSettingsD300' => 'Nikon::ShotInfoD300b',
101
- 'Pentax::LensData' => 'Pentax::LensInfo2',
102
- 'Sony::SRF2' => 'Sony::SRF',
103
99
  DarwinCore => 'AFCP',
104
- 'MWG::Regions' => 'MWG::Composite',
105
- 'MWG::Keywords' => 'MWG::Regions',
106
- 'MWG::Collections' => 'MWG::Keywords',
107
- 'GoPro::fdsc' => 'GoPro::KBAT',
100
+ MWG => 'Shortcuts',
108
101
  );
109
102
 
110
103
  # list of all recognized Format strings
@@ -671,6 +664,15 @@ will extract all available information even for tags not listed.
671
664
  Tags in these tables are referred to as "pseudo" tags because their
672
665
  information is not stored in the file itself. As such, B<Writable> tags in
673
666
  these tables may be changed without having to rewrite the file.
667
+ },
668
+ GM => q{
669
+ These tags are extracted from GM/Cosworth PDR (Performance Data Recorder)
670
+ information found in videos from General Motors cars such as Corvette and
671
+ Camero.
672
+
673
+ Use the API L<PrintCSV|../ExifTool.html#PrintCSV> option to output all timed
674
+ PDR data in CSV format at greatly increased speed and with much lower memory
675
+ usage.
674
676
  },
675
677
  PodTrailer => q{
676
678
  ~head1 NOTES
@@ -708,7 +710,7 @@ my %shortcutNotes = (
708
710
  color space when deleting all other metadata
709
711
  },
710
712
  CommonIFD0 => q{
711
- common metadata tags found in IFD0 of TIFF-format images. Used to simpify
713
+ common metadata tags found in IFD0 of TIFF-format images. Used to simplify
712
714
  deletion of all metadata from these images. See
713
715
  L<FAQ number 7|../faq.html#Q7> for details
714
716
  },
@@ -852,7 +854,7 @@ sub new
852
854
  my ($tagID, $binaryTable, $noID, $hexID, $isIPTC, $isXMP);
853
855
  $isIPTC = 1 if $writeProc and $writeProc eq \&Image::ExifTool::IPTC::WriteIPTC;
854
856
  # generate flattened tag names for structure fields if this is an XMP table
855
- if ($$table{GROUPS} and $$table{GROUPS}{0} eq 'XMP') {
857
+ if ($$table{GROUPS} and $$table{GROUPS}{0} eq 'XMP' or $$vars{ADD_FLATTENED}) {
856
858
  Image::ExifTool::XMP::AddFlattenedTags($table);
857
859
  $isXMP = 1;
858
860
  }
@@ -1526,7 +1528,8 @@ TagID: foreach $tagID (@keys) {
1526
1528
  my $fullName = ($strName =~ / / ? '' : 'XMP ') . "$strName Struct";
1527
1529
  my $info = $tagNameInfo{$fullName} = [ ];
1528
1530
  my $tag;
1529
- foreach $tag (sort keys %$struct) {
1531
+ my $order = $$struct{SORT_ORDER} || [ sort keys %$struct ];
1532
+ foreach $tag (@$order) {
1530
1533
  my $tagInfo = $$struct{$tag};
1531
1534
  next unless ref $tagInfo eq 'HASH' and $tag ne 'NAMESPACE' and $tag ne 'GROUPS';
1532
1535
  warn "WARNING: $strName Struct containes $tag\n" if $Image::ExifTool::specialTags{$tag};
@@ -1539,6 +1542,8 @@ TagID: foreach $tagID (@keys) {
1539
1542
  push @vals, $writable;
1540
1543
  $structs{$writable} = 1;
1541
1544
  $writable = "=$writable";
1545
+ } elsif (defined $$tagInfo{Writable}) {
1546
+ $writable = 'no';
1542
1547
  } else {
1543
1548
  $writable = 'string';
1544
1549
  }
@@ -1548,7 +1553,7 @@ TagID: foreach $tagID (@keys) {
1548
1553
  # handle PrintConv lookups in Structure elements
1549
1554
  my $printConv = $$tagInfo{PrintConv};
1550
1555
  if (ref $printConv eq 'HASH') {
1551
- foreach (sort keys %$printConv) {
1556
+ foreach (sort { NumbersFirst($a,$b) } keys %$printConv) {
1552
1557
  next if /^(OTHER|BITMASK)$/;
1553
1558
  push @vals, "$_ = $$printConv{$_}";
1554
1559
  }
@@ -1822,24 +1827,7 @@ sub TweakOrder($$)
1822
1827
  local $_;
1823
1828
  my ($sortedTables, $tweakOrder) = @_;
1824
1829
  my @tweak = sort keys %$tweakOrder;
1825
- my (%addedMain, @sorted);
1826
- # flag files which have a "Main" table
1827
- foreach (@$sortedTables) {
1828
- $addedMain{$1} = 0 if /^Image::ExifTool::(\w+)::(\w+)/ and $2 eq 'Main';
1829
- }
1830
- # make sure that the main table always comes first in each file
1831
- foreach (@$sortedTables) {
1832
- if (/^Image::ExifTool::(\w+)::(\w+)/) {
1833
- if ($addedMain{$1}) {
1834
- next if $2 eq 'Main'; # don't add again
1835
- } elsif (defined $addedMain{$1}) {
1836
- push @sorted, "Image::ExifTool::${1}::Main" if $2 ne 'Main';
1837
- $addedMain{$1} = 1;
1838
- }
1839
- }
1840
- push @sorted, $_;
1841
- }
1842
- @$sortedTables = @sorted;
1830
+ my (@sorted, %hasMain, %module, $entry);
1843
1831
  # apply manual tweaks
1844
1832
  while (@tweak) {
1845
1833
  my $table = shift @tweak;
@@ -1858,6 +1846,31 @@ sub TweakOrder($$)
1858
1846
  }
1859
1847
  @$sortedTables = (@notMoving, @moving, @after);
1860
1848
  }
1849
+ # flag modules which have a "Main" table, and organize tables by module name
1850
+ foreach (@$sortedTables) {
1851
+ if (not /^Image::ExifTool::(\w+)::(\w+)/) {
1852
+ push @sorted, $_;
1853
+ } else {
1854
+ $hasMain{$1} = 1 if $2 eq 'Main';
1855
+ push @sorted, $module{$1} = [ ] unless $module{$1};
1856
+ push @{$module{$1}}, $_;
1857
+ }
1858
+ }
1859
+ # force MWG::Composite table first
1860
+ my @mwg = ( 'Image::ExifTool::MWG::Composite' );
1861
+ /Composite/ or push @mwg, $_ foreach @{$module{MWG}};
1862
+ @{$module{MWG}} = @mwg;
1863
+ # make sure that the main table always comes first in each file
1864
+ # and that all other tables from this group follow
1865
+ @$sortedTables = ( );
1866
+ foreach $entry (@sorted) {
1867
+ ref $entry or push(@$sortedTables, $entry), next;
1868
+ $$entry[0] =~ /^Image::ExifTool::(\w+)::(\w+)/ or die 'Internal error';
1869
+ my $main = "Image::ExifTool::$1::Main";
1870
+ # main table must come first (even if it doesn't exist)
1871
+ push @$sortedTables, $main if $hasMain{$1};
1872
+ $_ eq $main or push(@$sortedTables, $_) foreach @$entry;
1873
+ }
1861
1874
  }
1862
1875
 
1863
1876
  #------------------------------------------------------------------------------
@@ -23,7 +23,7 @@ use vars qw($VERSION);
23
23
  use Image::ExifTool qw(:DataAccess :Utils);
24
24
  use Image::ExifTool::Canon;
25
25
 
26
- $VERSION = '1.38';
26
+ $VERSION = '1.39';
27
27
 
28
28
  sub ProcessCanonVRD($$;$);
29
29
  sub WriteCanonVRD($$;$);
@@ -1758,7 +1758,7 @@ sub ProcessDR4($$;$)
1758
1758
  } else {
1759
1759
  # load DR4 file into memory
1760
1760
  my $buff;
1761
- $raf->Read($buff, 8) == 8 and $buff eq "IIII\x04\0\x04\0" or return 0;
1761
+ $raf->Read($buff, 8) == 8 and $buff =~ /^IIII[\x04|\x05]\0\x04\0/ or return 0;
1762
1762
  $et->SetFileType();
1763
1763
  $raf->Seek(0, 2) or return $err = 1;
1764
1764
  $dirLen = $raf->Tell();
@@ -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.92';
34
+ $VERSION = '1.94';
35
35
 
36
36
  sub ProcessFujiDir($$$);
37
37
  sub ProcessFaceRec($$$);
@@ -528,6 +528,7 @@ my %faceCategories = (
528
528
  1 => 'Full-frame on GFX', #IB
529
529
  2 => 'Sports Finder Mode', # (mechanical shutter)
530
530
  4 => 'Electronic Shutter 1.25x Crop', # (continuous high)
531
+ 8 => 'Digital Tele-Conv', #forum15784
531
532
  },
532
533
  },
533
534
  0x104e => { #forum10800 (X-Pro3)
@@ -549,6 +550,16 @@ my %faceCategories = (
549
550
  3 => 'Electronic Front Curtain', #10
550
551
  },
551
552
  },
553
+ 0x1051 => { #forum15784
554
+ Name => 'CropFlag',
555
+ Writable => 'int8u',
556
+ Notes => q(
557
+ this tag exists only if the image was cropped, and is 0 for cropped JPG
558
+ image or 1 for a cropped RAF
559
+ ),
560
+ },
561
+ 0x1052 => { Name => 'CropTopLeft', Writable => 'int32u' }, #forum15784
562
+ 0x1053 => { Name => 'CropSize', Writable => 'int32u' }, #forum15784
552
563
  # 0x1100 - This may not work well for newer cameras (ref forum12682)
553
564
  0x1100 => [{
554
565
  Name => 'AutoBracketing',
@@ -1030,14 +1041,19 @@ my %faceCategories = (
1030
1041
  },
1031
1042
  0.5 => {
1032
1043
  Name => 'AFAreaZoneSize',
1033
- Mask => 0xf0000,
1044
+ Mask => 0xff0000,
1034
1045
  PrintConv => {
1035
1046
  0 => 'n/a',
1036
1047
  OTHER => sub {
1037
1048
  my ($val, $inv) = @_;
1038
- return "$val x $val" unless $inv;
1039
- $val =~ s/ ?x.*//;
1040
- return $val;
1049
+ my ($w, $h);
1050
+ if ($inv) {
1051
+ my ($w, $h) = $val =~ /(\d+)/g;
1052
+ return 0 unless $w and $h;
1053
+ return((($h << 5) & 0xf0) | ($w & 0x0f));
1054
+ }
1055
+ ($w, $h) = ($val & 0x0f, $val >> 5);
1056
+ return "$w x $h";
1041
1057
  },
1042
1058
  },
1043
1059
  },