exiftool_vendored 13.24.0 → 13.26.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.
- checksums.yaml +4 -4
- data/bin/Changes +26 -3
- data/bin/META.json +1 -1
- data/bin/META.yml +1 -1
- data/bin/README +3 -3
- data/bin/build_geolocation +1 -1
- data/bin/exiftool +3 -3
- data/bin/lib/Image/ExifTool/Apple.pm +12 -2
- data/bin/lib/Image/ExifTool/Canon.pm +3 -2
- data/bin/lib/Image/ExifTool/DarwinCore.pm +22 -11
- data/bin/lib/Image/ExifTool/Geolocation.dat +0 -0
- data/bin/lib/Image/ExifTool/ICC_Profile.pm +1 -0
- data/bin/lib/Image/ExifTool/Nikon.pm +2 -1
- data/bin/lib/Image/ExifTool/Olympus.pm +2 -1
- data/bin/lib/Image/ExifTool/PCAP.pm +5 -5
- data/bin/lib/Image/ExifTool/PLIST.pm +2 -2
- data/bin/lib/Image/ExifTool/Pentax.pm +2 -1
- data/bin/lib/Image/ExifTool/QuickTime.pm +37 -11
- data/bin/lib/Image/ExifTool/RIFF.pm +15 -6
- data/bin/lib/Image/ExifTool/TagLookup.pm +25 -0
- data/bin/lib/Image/ExifTool/TagNames.pod +44 -8
- data/bin/lib/Image/ExifTool/WriteQuickTime.pl +10 -3
- data/bin/lib/Image/ExifTool/Writer.pl +9 -9
- data/bin/lib/Image/ExifTool/XMP.pm +22 -15
- data/bin/lib/Image/ExifTool/XMP2.pl +5 -1
- data/bin/lib/Image/ExifTool.pm +13 -7
- data/bin/lib/Image/ExifTool.pod +8 -41
- data/bin/perl-Image-ExifTool.spec +1 -1
- data/lib/exiftool_vendored/version.rb +1 -1
- metadata +2 -2
@@ -30,7 +30,7 @@ use strict;
|
|
30
30
|
use vars qw($VERSION $AUTOLOAD);
|
31
31
|
use Image::ExifTool qw(:DataAccess :Utils);
|
32
32
|
|
33
|
-
$VERSION = '1.
|
33
|
+
$VERSION = '1.71';
|
34
34
|
|
35
35
|
sub ConvertTimecode($);
|
36
36
|
sub ProcessSGLT($$$);
|
@@ -547,6 +547,10 @@ my %code2charset = (
|
|
547
547
|
Name => 'ID3',
|
548
548
|
SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
|
549
549
|
},
|
550
|
+
'ID3 ' => { # (NC)
|
551
|
+
Name => 'ID3-2',
|
552
|
+
SubDirectory => { TagTable => 'Image::ExifTool::ID3::Main' },
|
553
|
+
},
|
550
554
|
#
|
551
555
|
# WebP-specific tags
|
552
556
|
#
|
@@ -668,6 +672,9 @@ my %code2charset = (
|
|
668
672
|
Name => 'SEAL',
|
669
673
|
SubDirectory => { TagTable => 'Image::ExifTool::XMP::SEAL' },
|
670
674
|
},
|
675
|
+
# LGWV - written by Logic Pro
|
676
|
+
# minf, elm1, regn, umid, DGDA - written by Pro Tools
|
677
|
+
# MXrt, muma, chrp - written by Sequoia Pro
|
671
678
|
);
|
672
679
|
|
673
680
|
# the maker notes used by some digital cameras
|
@@ -1554,9 +1561,9 @@ my %code2charset = (
|
|
1554
1561
|
Name => 'Duration',
|
1555
1562
|
Require => {
|
1556
1563
|
0 => 'RIFF:AvgBytesPerSec',
|
1557
|
-
1 => 'FileSize',
|
1558
1564
|
},
|
1559
1565
|
Desire => {
|
1566
|
+
1 => 'FileSize', # (only used if 'data' length isn't available)
|
1560
1567
|
# check FrameCount because this calculation only applies
|
1561
1568
|
# to audio-only files (eg. WAV)
|
1562
1569
|
2 => 'FrameCount',
|
@@ -1564,8 +1571,9 @@ my %code2charset = (
|
|
1564
1571
|
},
|
1565
1572
|
# (can't calculate duration like this for compressed audio types)
|
1566
1573
|
RawConv => q{
|
1567
|
-
return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)
|
1568
|
-
return
|
1574
|
+
return undef if $$self{FileType} =~ /^(LA|OFR|PAC|WV)$/ or $val[2] or $val[3];
|
1575
|
+
return undef unless $val[0] and ($$self{RIFFDataLen} or $val[1]);
|
1576
|
+
return(($$self{RIFFDataLen} || $val[1]) / $val[0]);
|
1569
1577
|
},
|
1570
1578
|
PrintConv => 'ConvertDuration($val)',
|
1571
1579
|
},
|
@@ -2098,8 +2106,9 @@ sub ProcessRIFF($$)
|
|
2098
2106
|
$pos += 4;
|
2099
2107
|
$tag .= "_$buff";
|
2100
2108
|
$len -= 4; # already read 4 bytes (the LIST type)
|
2101
|
-
} elsif ($tag eq 'data'
|
2102
|
-
$len = $$et{DataSize64};
|
2109
|
+
} elsif ($tag eq 'data') {
|
2110
|
+
$len = $$et{DataSize64} if $len == 0xffffffff and $$et{DataSize64};
|
2111
|
+
$$et{RIFFDataLen} = ($$et{RIFFDataLen} || 0) + $len;
|
2103
2112
|
}
|
2104
2113
|
$et->VPrint(0, "RIFF '${tag}' chunk ($len bytes of data):\n");
|
2105
2114
|
if ($len <= 0) {
|
@@ -1029,6 +1029,8 @@ my %tagLookup = (
|
|
1029
1029
|
'appinfoversion' => { 503 => [\'AppInfo','AppInfoVersion'] },
|
1030
1030
|
'apple_0x004e' => { 1 => 0x4e },
|
1031
1031
|
'apple_0x004f' => { 1 => 0x4f },
|
1032
|
+
'apple_0x0054' => { 1 => 0x54 },
|
1033
|
+
'apple_0x005a' => { 1 => 0x5a },
|
1032
1034
|
'applekeywords' => { 343 => 'AAPL:Keywords' },
|
1033
1035
|
'applephotosvariationidentifier' => { 414 => 'apple.photos.variation-identifier' },
|
1034
1036
|
'applestoreaccount' => { 412 => 'apID' },
|
@@ -2764,6 +2766,7 @@ my %tagLookup = (
|
|
2764
2766
|
'eventearliestdate' => { 124 => [\'Event','EventEarliestDate'] },
|
2765
2767
|
'eventend' => { 546 => 'eventEnd' },
|
2766
2768
|
'eventenddayofyear' => { 124 => [\'Event','EventEndDayOfYear'] },
|
2769
|
+
'eventeventtype' => { 124 => [\'Event','EventEventType'] },
|
2767
2770
|
'eventfieldnotes' => { 124 => [\'Event','EventFieldNotes'] },
|
2768
2771
|
'eventfieldnumber' => { 124 => [\'Event','EventFieldNumber'] },
|
2769
2772
|
'eventhabitat' => { 124 => [\'Event','EventHabitat'] },
|
@@ -3686,6 +3689,7 @@ my %tagLookup = (
|
|
3686
3689
|
'humanobservationeventid' => { 124 => [\'HumanObservation','HumanObservationEventID'] },
|
3687
3690
|
'humanobservationeventremarks' => { 124 => [\'HumanObservation','HumanObservationEventRemarks'] },
|
3688
3691
|
'humanobservationeventtime' => { 124 => [\'HumanObservation','HumanObservationEventTime'] },
|
3692
|
+
'humanobservationeventtype' => { 124 => [\'HumanObservation','HumanObservationEventType'] },
|
3689
3693
|
'humanobservationfieldnotes' => { 124 => [\'HumanObservation','HumanObservationFieldNotes'] },
|
3690
3694
|
'humanobservationfieldnumber' => { 124 => [\'HumanObservation','HumanObservationFieldNumber'] },
|
3691
3695
|
'humanobservationhabitat' => { 124 => [\'HumanObservation','HumanObservationHabitat'] },
|
@@ -4375,6 +4379,7 @@ my %tagLookup = (
|
|
4375
4379
|
'machineobservationeventid' => { 124 => [\'MachineObservation','MachineObservationEventID'] },
|
4376
4380
|
'machineobservationeventremarks' => { 124 => [\'MachineObservation','MachineObservationEventRemarks'] },
|
4377
4381
|
'machineobservationeventtime' => { 124 => [\'MachineObservation','MachineObservationEventTime'] },
|
4382
|
+
'machineobservationeventtype' => { 124 => [\'MachineObservation','MachineObservationEventType'] },
|
4378
4383
|
'machineobservationfieldnotes' => { 124 => [\'MachineObservation','MachineObservationFieldNotes'] },
|
4379
4384
|
'machineobservationfieldnumber' => { 124 => [\'MachineObservation','MachineObservationFieldNumber'] },
|
4380
4385
|
'machineobservationhabitat' => { 124 => [\'MachineObservation','MachineObservationHabitat'] },
|
@@ -5152,6 +5157,7 @@ my %tagLookup = (
|
|
5152
5157
|
'occurrenceassociatedsequences' => { 124 => [\'Occurrence','OccurrenceAssociatedSequences'] },
|
5153
5158
|
'occurrenceassociatedtaxa' => { 124 => [\'Occurrence','OccurrenceAssociatedTaxa'] },
|
5154
5159
|
'occurrencebehavior' => { 124 => [\'Occurrence','OccurrenceBehavior'] },
|
5160
|
+
'occurrencecaste' => { 124 => [\'Occurrence','OccurrenceCaste'] },
|
5155
5161
|
'occurrencecatalognumber' => { 124 => [\'Occurrence','OccurrenceCatalogNumber'] },
|
5156
5162
|
'occurrencedegreeofestablishment' => { 124 => [\'Occurrence','OccurrenceDegreeOfEstablishment'] },
|
5157
5163
|
'occurrencedetails' => { 124 => [\'Occurrence','OccurrenceOccurrenceDetails'] },
|
@@ -5175,6 +5181,7 @@ my %tagLookup = (
|
|
5175
5181
|
'occurrencereproductivecondition' => { 124 => [\'Occurrence','OccurrenceReproductiveCondition'] },
|
5176
5182
|
'occurrencesex' => { 124 => [\'Occurrence','OccurrenceSex'] },
|
5177
5183
|
'occurrencestatus' => { 124 => [\'Occurrence','OccurrenceOccurrenceStatus'] },
|
5184
|
+
'occurrencevitality' => { 124 => [\'Occurrence','OccurrenceVitality'] },
|
5178
5185
|
'oecfcolumns' => { 533 => [\'OECF','OECFColumns'] },
|
5179
5186
|
'oecfnames' => { 533 => [\'OECF','OECFNames'] },
|
5180
5187
|
'oecfrows' => { 533 => [\'OECF','OECFRows'] },
|
@@ -5480,6 +5487,7 @@ my %tagLookup = (
|
|
5480
5487
|
'parametricshadowsplit' => { 527 => 'ParametricShadowSplit', 529 => 'ParametricShadowSplit' },
|
5481
5488
|
'parentalrating' => { 186 => 'WM/ParentalRating' },
|
5482
5489
|
'parentid' => { 541 => 'parentId' },
|
5490
|
+
'parentmeasurementid' => { 124 => [\'MeasurementOrFact','MeasurementOrFactParentMeasurementID'] },
|
5483
5491
|
'parentmediaeventid' => { 515 => 'ParentMediaEventID' },
|
5484
5492
|
'parentmeid' => { 515 => 'ParentMEID' },
|
5485
5493
|
'parentproductid' => { 412 => '@ppi' },
|
@@ -6858,9 +6866,11 @@ my %tagLookup = (
|
|
6858
6866
|
'taxonconceptid' => { 124 => [\'Taxon','TaxonTaxonConceptID'] },
|
6859
6867
|
'taxoncultivarepithet' => { 124 => [\'Taxon','TaxonCultivarEpithet'] },
|
6860
6868
|
'taxonfamily' => { 124 => [\'Taxon','TaxonFamily'] },
|
6869
|
+
'taxongenericname' => { 124 => [\'Taxon','TaxonGenericName'] },
|
6861
6870
|
'taxongenus' => { 124 => [\'Taxon','TaxonGenus'] },
|
6862
6871
|
'taxonhigherclassification' => { 124 => [\'Taxon','TaxonHigherClassification'] },
|
6863
6872
|
'taxonid' => { 124 => [\'Taxon','TaxonTaxonID'] },
|
6873
|
+
'taxoninfragenericepithet' => { 124 => [\'Taxon','TaxonInfragenericEpithet'] },
|
6864
6874
|
'taxoninfraspecificepithet' => { 124 => [\'Taxon','TaxonInfraspecificEpithet'] },
|
6865
6875
|
'taxonkingdom' => { 124 => [\'Taxon','TaxonKingdom'] },
|
6866
6876
|
'taxonnameaccordingto' => { 124 => [\'Taxon','TaxonNameAccordingTo'] },
|
@@ -6882,8 +6892,12 @@ my %tagLookup = (
|
|
6882
6892
|
'taxonscientificnameauthorship' => { 124 => [\'Taxon','TaxonScientificNameAuthorship'] },
|
6883
6893
|
'taxonscientificnameid' => { 124 => [\'Taxon','TaxonScientificNameID'] },
|
6884
6894
|
'taxonspecificepithet' => { 124 => [\'Taxon','TaxonSpecificEpithet'] },
|
6895
|
+
'taxonsubfamily' => { 124 => [\'Taxon','TaxonSubFamily'] },
|
6885
6896
|
'taxonsubgenus' => { 124 => [\'Taxon','TaxonSubgenus'] },
|
6897
|
+
'taxonsubtribe' => { 124 => [\'Taxon','TaxonSubTribe'] },
|
6898
|
+
'taxonsuperfamily' => { 124 => [\'Taxon','TaxonSuperFamily'] },
|
6886
6899
|
'taxontaxonomicstatus' => { 124 => [\'Taxon','TaxonTaxonomicStatus'] },
|
6900
|
+
'taxontribe' => { 124 => [\'Taxon','TaxonTribe'] },
|
6887
6901
|
'taxonverbatimtaxonrank' => { 124 => [\'Taxon','TaxonVerbatimTaxonRank'] },
|
6888
6902
|
'taxonvernacularname' => { 124 => [\'Taxon','TaxonVernacularName'] },
|
6889
6903
|
'tda1bandwidth' => { 145 => 0x196f },
|
@@ -7028,6 +7042,7 @@ my %tagLookup = (
|
|
7028
7042
|
'track' => { 412 => "\xa9trk", 420 => "\xa9trk" },
|
7029
7043
|
'trackcreatedate' => { 419 => 0x1 },
|
7030
7044
|
'trackmodifydate' => { 419 => 0x2 },
|
7045
|
+
'trackname' => { 420 => 'tnam' },
|
7031
7046
|
'tracknumber' => { 412 => 'trkn', 557 => 'trackNumber' },
|
7032
7047
|
'tracks' => { 557 => 'Tracks' },
|
7033
7048
|
'tracksframerate' => { 557 => [\'Tracks','TracksFrameRate'] },
|
@@ -7804,6 +7819,7 @@ my %tagExists = (
|
|
7804
7819
|
'alternateduotonecolors' => 1,
|
7805
7820
|
'alternateellipsoidheight' => 1,
|
7806
7821
|
'alternateellipsoidheightextended' => 1,
|
7822
|
+
'alternateformattrack' => 1,
|
7807
7823
|
'alternateheading' => 1,
|
7808
7824
|
'alternatelatitude' => 1,
|
7809
7825
|
'alternatelongitude' => 1,
|
@@ -8559,6 +8575,7 @@ my %tagExists = (
|
|
8559
8575
|
'cloneobject' => 1,
|
8560
8576
|
'clonetype' => 1,
|
8561
8577
|
'closedcaptioning' => 1,
|
8578
|
+
'closedcaptiontrack' => 1,
|
8562
8579
|
'cmddialsaperturesetting' => 1,
|
8563
8580
|
'cmddialschangemainsub' => 1,
|
8564
8581
|
'cmddialschangemainsubexposure' => 1,
|
@@ -9374,6 +9391,7 @@ my %tagExists = (
|
|
9374
9391
|
'extendedcontentdescr' => 1,
|
9375
9392
|
'extendedcontentencryption' => 1,
|
9376
9393
|
'extendedinfo' => 1,
|
9394
|
+
'extendedlanguagetag' => 1,
|
9377
9395
|
'extendedstreamprops' => 1,
|
9378
9396
|
'extendedtracktitle' => 1,
|
9379
9397
|
'extendedxmp' => 1,
|
@@ -9618,6 +9636,7 @@ my %tagExists = (
|
|
9618
9636
|
'fontweight' => 1,
|
9619
9637
|
'footerposition' => 1,
|
9620
9638
|
'footnotes' => 1,
|
9639
|
+
'forcedsubtitletrack' => 1,
|
9621
9640
|
'form' => 1,
|
9622
9641
|
'formatsdcard' => 1,
|
9623
9642
|
'formattag' => 1,
|
@@ -10008,6 +10027,7 @@ my %tagExists = (
|
|
10008
10027
|
'ics' => 1,
|
10009
10028
|
'id' => 1,
|
10010
10029
|
'id3' => 1,
|
10030
|
+
'id3-2' => 1,
|
10011
10031
|
'id3size' => 1,
|
10012
10032
|
'id3v1' => 1,
|
10013
10033
|
'id3v1_enh' => 1,
|
@@ -11102,6 +11122,7 @@ my %tagExists = (
|
|
11102
11122
|
'nominalplaytime' => 1,
|
11103
11123
|
'nominalvideobitrate' => 1,
|
11104
11124
|
'nomssmarttags' => 1,
|
11125
|
+
'non-primarysourcetrack' => 1,
|
11105
11126
|
'normallinetransfertiming' => 1,
|
11106
11127
|
'noseslimming' => 1,
|
11107
11128
|
'note' => 1,
|
@@ -12547,6 +12568,7 @@ my %tagExists = (
|
|
12547
12568
|
'subsystemversion' => 1,
|
12548
12569
|
'subtileblocksize' => 1,
|
12549
12570
|
'subtitledescription' => 1,
|
12571
|
+
'subtitletrack' => 1,
|
12550
12572
|
'suffix' => 1,
|
12551
12573
|
'suggestedpalette' => 1,
|
12552
12574
|
'summary' => 1,
|
@@ -12577,6 +12599,7 @@ my %tagExists = (
|
|
12577
12599
|
'synchronizedlyricstext' => 1,
|
12578
12600
|
'synchronizedlyricstype' => 1,
|
12579
12601
|
'synconly' => 1,
|
12602
|
+
'syncronizedtrack' => 1,
|
12580
12603
|
'syncsampletable' => 1,
|
12581
12604
|
'syncstate' => 1,
|
12582
12605
|
'synlyrics' => 1,
|
@@ -12747,6 +12770,7 @@ my %tagExists = (
|
|
12747
12770
|
'timecode' => 1,
|
12748
12771
|
'timecodeindex' => 1,
|
12749
12772
|
'timecodeindexparms' => 1,
|
12773
|
+
'timecodetrack' => 1,
|
12750
12774
|
'timeinfo' => 1,
|
12751
12775
|
'timelapse' => 1,
|
12752
12776
|
'timelineinfo' => 1,
|
@@ -12845,6 +12869,7 @@ my %tagExists = (
|
|
12845
12869
|
'trackvolume' => 1,
|
12846
12870
|
'trademark' => 1,
|
12847
12871
|
'transactionid' => 1,
|
12872
|
+
'transcripttrack' => 1,
|
12848
12873
|
'transfercharacteristic' => 1,
|
12849
12874
|
'transfercharacteristics' => 1,
|
12850
12875
|
'transferrange' => 1,
|
@@ -12,7 +12,7 @@ meta information extracted from or written to a file.
|
|
12
12
|
=head1 TAG TABLES
|
13
13
|
|
14
14
|
The tables listed below give the names of all tags recognized by ExifTool.
|
15
|
-
They contain a total of
|
15
|
+
They contain a total of 28431 tags, with 17665 unique tag names.
|
16
16
|
|
17
17
|
B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
|
18
18
|
table. A B<Tag ID> is the computer-readable equivalent of a tag name, and
|
@@ -6366,7 +6366,9 @@ These tags belong to the ExifTool XMP-xmpBJ family 1 group.
|
|
6366
6366
|
|
6367
6367
|
=head3 XMP xmpDM Tags
|
6368
6368
|
|
6369
|
-
XMP Dynamic Media namespace tags.
|
6369
|
+
XMP Dynamic Media namespace tags. See
|
6370
|
+
L<https://developer.adobe.com/xmp/docs/XMPNamespaces/xmpDM/> for the
|
6371
|
+
specification.
|
6370
6372
|
|
6371
6373
|
These tags belong to the ExifTool XMP-xmpDM family 1 group.
|
6372
6374
|
|
@@ -7832,6 +7834,8 @@ Tags extracted from the maker notes of iPhone images.
|
|
7832
7834
|
0x0042 SemanticStylePreset no
|
7833
7835
|
0x004e Apple_0x004e? no
|
7834
7836
|
0x004f Apple_0x004f? no
|
7837
|
+
0x0054 Apple_0x0054? no
|
7838
|
+
0x005a Apple_0x005a? no
|
7835
7839
|
|
7836
7840
|
=head3 Apple RunTime Tags
|
7837
7841
|
|
@@ -26666,6 +26670,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26666
26670
|
EventID string/_
|
26667
26671
|
EventRemarks lang-alt_
|
26668
26672
|
EventTime string_
|
26673
|
+
EventEventType string_
|
26669
26674
|
EventFieldNotes string_
|
26670
26675
|
EventFieldNumber string_
|
26671
26676
|
EventHabitat string_
|
@@ -26708,6 +26713,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26708
26713
|
HumanObservationEventID string/_
|
26709
26714
|
HumanObservationEventRemarks lang-alt_
|
26710
26715
|
HumanObservationEventTime string_
|
26716
|
+
HumanObservationEventType string_
|
26711
26717
|
HumanObservationFieldNotes string_
|
26712
26718
|
HumanObservationFieldNumber string_
|
26713
26719
|
HumanObservationHabitat string_
|
@@ -26742,6 +26748,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26742
26748
|
MachineObservationEventID string/_
|
26743
26749
|
MachineObservationEventRemarks lang-alt_
|
26744
26750
|
MachineObservationEventTime string_
|
26751
|
+
MachineObservationEventType string_
|
26745
26752
|
MachineObservationFieldNotes string_
|
26746
26753
|
MachineObservationFieldNumber string_
|
26747
26754
|
MachineObservationHabitat string_
|
@@ -26767,6 +26774,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26767
26774
|
MeasurementType string_
|
26768
26775
|
MeasurementUnit string_
|
26769
26776
|
MeasurementValue string_
|
26777
|
+
ParentMeasurementID string_
|
26770
26778
|
Occurrence DarwinCore Occurrence Struct
|
26771
26779
|
OccurrenceAssociatedMedia string_
|
26772
26780
|
OccurrenceAssociatedOccurrences string_
|
@@ -26774,6 +26782,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26774
26782
|
OccurrenceAssociatedSequences string_
|
26775
26783
|
OccurrenceAssociatedTaxa string_
|
26776
26784
|
OccurrenceBehavior string_
|
26785
|
+
OccurrenceCaste string_
|
26777
26786
|
OccurrenceCatalogNumber string_
|
26778
26787
|
OccurrenceDegreeOfEstablishment string_
|
26779
26788
|
OccurrenceDisposition string_
|
@@ -26797,6 +26806,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26797
26806
|
OccurrenceRecordNumber string_
|
26798
26807
|
OccurrenceReproductiveCondition string_
|
26799
26808
|
OccurrenceSex string_
|
26809
|
+
OccurrenceVitality string_
|
26800
26810
|
Organism DarwinCore Organism Struct
|
26801
26811
|
OrganismAssociatedOccurrences string_
|
26802
26812
|
OrganismAssociatedOrganisms string_
|
@@ -26834,8 +26844,10 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26834
26844
|
TaxonClass string_
|
26835
26845
|
TaxonCultivarEpithet string_
|
26836
26846
|
TaxonFamily string_
|
26847
|
+
TaxonGenericName string_
|
26837
26848
|
TaxonGenus string_
|
26838
26849
|
TaxonHigherClassification string_
|
26850
|
+
TaxonInfragenericEpithet string_
|
26839
26851
|
TaxonInfraspecificEpithet string_
|
26840
26852
|
TaxonKingdom string_
|
26841
26853
|
TaxonNameAccordingTo string_
|
@@ -26855,12 +26867,16 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26855
26867
|
TaxonScientificNameAuthorship string_
|
26856
26868
|
TaxonScientificNameID string_
|
26857
26869
|
TaxonSpecificEpithet string_
|
26870
|
+
TaxonSubFamily string_
|
26858
26871
|
TaxonSubgenus string_
|
26872
|
+
TaxonSubTribe string_
|
26873
|
+
TaxonSuperFamily string_
|
26859
26874
|
TaxonConceptID string_
|
26860
26875
|
TaxonID string_
|
26861
26876
|
TaxonTaxonomicStatus string_
|
26862
26877
|
TaxonRank string_
|
26863
26878
|
TaxonRemarks string_
|
26879
|
+
TaxonTribe string_
|
26864
26880
|
TaxonVerbatimTaxonRank string_
|
26865
26881
|
TaxonVernacularName lang-alt_
|
26866
26882
|
|
@@ -26925,6 +26941,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26925
26941
|
EventID string
|
26926
26942
|
EventRemarks lang-alt
|
26927
26943
|
EventTime string
|
26944
|
+
EventType string
|
26928
26945
|
FieldNotes string
|
26929
26946
|
FieldNumber string
|
26930
26947
|
Habitat string
|
@@ -26996,6 +27013,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
26996
27013
|
MeasurementType string
|
26997
27014
|
MeasurementUnit string
|
26998
27015
|
MeasurementValue string
|
27016
|
+
ParentMeasurementID string
|
26999
27017
|
|
27000
27018
|
=head3 DarwinCore Occurrence Struct
|
27001
27019
|
|
@@ -27007,6 +27025,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
27007
27025
|
AssociatedSequences string
|
27008
27026
|
AssociatedTaxa string
|
27009
27027
|
Behavior string
|
27028
|
+
Caste string
|
27010
27029
|
CatalogNumber string
|
27011
27030
|
DegreeOfEstablishment string
|
27012
27031
|
Disposition string
|
@@ -27030,6 +27049,7 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
27030
27049
|
RecordedByID string
|
27031
27050
|
ReproductiveCondition string
|
27032
27051
|
Sex string
|
27052
|
+
Vitality string
|
27033
27053
|
|
27034
27054
|
=head3 DarwinCore Organism Struct
|
27035
27055
|
|
@@ -27081,8 +27101,10 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
27081
27101
|
Class string
|
27082
27102
|
CultivarEpithet string
|
27083
27103
|
Family string
|
27104
|
+
GenericName string
|
27084
27105
|
Genus string
|
27085
27106
|
HigherClassification string
|
27107
|
+
InfragenericEpithet string
|
27086
27108
|
InfraspecificEpithet string
|
27087
27109
|
Kingdom string
|
27088
27110
|
NameAccordingTo string
|
@@ -27102,12 +27124,16 @@ These tags belong to the ExifTool XMP-dwc family 1 group.
|
|
27102
27124
|
ScientificNameAuthorship string
|
27103
27125
|
ScientificNameID string
|
27104
27126
|
SpecificEpithet string
|
27127
|
+
SubFamily string
|
27128
|
+
SubTribe string
|
27105
27129
|
Subgenus string
|
27130
|
+
SuperFamily string
|
27106
27131
|
TaxonConceptID string
|
27107
27132
|
TaxonID string
|
27108
27133
|
TaxonRank string
|
27109
27134
|
TaxonRemarks string
|
27110
27135
|
TaxonomicStatus string
|
27136
|
+
Tribe string
|
27111
27137
|
VerbatimTaxonRank string
|
27112
27138
|
VernacularName lang-alt
|
27113
27139
|
|
@@ -30998,7 +31024,7 @@ and are not currently writable.
|
|
30998
31024
|
'hvcC' HEVCConfiguration QuickTime HEVCConfig
|
30999
31025
|
'irot' Rotation int8u!
|
31000
31026
|
'ispe' ImageSpatialExtent no
|
31001
|
-
'pasp' PixelAspectRatio int32u!
|
31027
|
+
'pasp' PixelAspectRatio int32u[2]!
|
31002
31028
|
'pixi' ImagePixelDepth no
|
31003
31029
|
'rloc' RelativeLocation no
|
31004
31030
|
|
@@ -31133,6 +31159,7 @@ MP4 media box.
|
|
31133
31159
|
|
31134
31160
|
Tag ID Tag Name Writable
|
31135
31161
|
------ -------- --------
|
31162
|
+
'elng' ExtendedLanguageTag no
|
31136
31163
|
'hdlr' Handler QuickTime Handler
|
31137
31164
|
'mdhd' MediaHeader QuickTime MediaHeader
|
31138
31165
|
'minf' MediaInfo QuickTime MediaInfo
|
@@ -31532,8 +31559,15 @@ MP4 video media header.
|
|
31532
31559
|
------ -------- --------
|
31533
31560
|
'cdsc' ContentDescribes no
|
31534
31561
|
'chap' ChapterListTrackID no
|
31562
|
+
'clcp' ClosedCaptionTrack no
|
31563
|
+
'fall' AlternateFormatTrack no
|
31564
|
+
'folw' SubtitleTrack no
|
31565
|
+
'forc' ForcedSubtitleTrack no
|
31535
31566
|
'mpod' ElementaryStreamTrack no
|
31536
|
-
'
|
31567
|
+
'scpt' TranscriptTrack no
|
31568
|
+
'ssrc' Non-primarySourceTrack no
|
31569
|
+
'sync' SyncronizedTrack no
|
31570
|
+
'tmcd' TimecodeTrack no
|
31537
31571
|
|
31538
31572
|
=head3 QuickTime UserData Tags
|
31539
31573
|
|
@@ -31681,6 +31715,7 @@ the config file.
|
|
31681
31715
|
UnknownThumbnail string
|
31682
31716
|
'time' TimeStamp no
|
31683
31717
|
'titl' Title string/
|
31718
|
+
'tnam' TrackName string
|
31684
31719
|
'urat' UserRating undef/
|
31685
31720
|
'uuid' GarminSoftware string
|
31686
31721
|
GarminModel no
|
@@ -32096,6 +32131,7 @@ metadata to WEBP images, but can't yet write to other RIFF-based formats.
|
|
32096
32131
|
'EXIF' EXIF EXIF
|
32097
32132
|
UnknownEXIF no
|
32098
32133
|
'ICCP' ICC_Profile ICC_Profile
|
32134
|
+
'ID3 ' ID3-2 ID3
|
32099
32135
|
'IDIT' DateTimeOriginal no
|
32100
32136
|
'JUNK' OlympusJunk Olympus AVI
|
32101
32137
|
CasioJunk EXIF
|
@@ -40161,7 +40197,7 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
|
|
40161
40197
|
0x0bac CustomOption1 no
|
40162
40198
|
0x0bad CustomOption2 no
|
40163
40199
|
0x4bac CustomOption3 no
|
40164
|
-
0x4bad
|
40200
|
+
0x4bad CustomOption4 no
|
40165
40201
|
'ByteOrder' ByteOrder no
|
40166
40202
|
'IDB-2' DeviceName no
|
40167
40203
|
'IDB-3' Description no
|
@@ -40173,8 +40209,8 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
|
|
40173
40209
|
'IDB-9' TimeStampResolution no
|
40174
40210
|
'IDB-10' TimeZone no
|
40175
40211
|
'IDB-11' Filter no
|
40176
|
-
'IDB-12'
|
40177
|
-
'IDB-13'
|
40212
|
+
'IDB-12' OperatingSystem no
|
40213
|
+
'IDB-13' FrameCheckSequenceLength no
|
40178
40214
|
'IDB-14' TimeStampOffset no
|
40179
40215
|
'IDB-15' Hardware no
|
40180
40216
|
'IDB-16' TXSpeed no
|
@@ -40183,7 +40219,7 @@ Tags extracted from CAP, PCAP and PCAPNG Packet Capture files.
|
|
40183
40219
|
'LinkType' LinkType no
|
40184
40220
|
'PCAPVersion' PCAPVersion no
|
40185
40221
|
'SHB-2' Hardware no
|
40186
|
-
'SHB-3'
|
40222
|
+
'SHB-3' OperatingSystem no
|
40187
40223
|
'SHB-4' UserApplication no
|
40188
40224
|
'TimeStamp' TimeStamp no
|
40189
40225
|
|
@@ -1208,7 +1208,11 @@ sub WriteQuickTime($$$)
|
|
1208
1208
|
if (defined $itemIndex and $$et{ItemInfo}) {
|
1209
1209
|
my $items = $$et{ItemInfo};
|
1210
1210
|
my ($id, $prop, $isPrimary);
|
1211
|
-
my $primary = $$et{PrimaryItem}
|
1211
|
+
my $primary = $$et{PrimaryItem};
|
1212
|
+
unless (defined $primary) {
|
1213
|
+
($primary) = sort { $a <=> $b } keys %{$$et{ItemInfo}} if $$et{ItemInfo};
|
1214
|
+
$primary = 0 unless defined $primary;
|
1215
|
+
}
|
1212
1216
|
my $pitem = $$items{$primary} || { };
|
1213
1217
|
$$pitem{RefersTo} or $$pitem{RefersTo} = { };
|
1214
1218
|
ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
|
@@ -1512,7 +1516,10 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
|
|
1512
1516
|
++$$et{CHANGED};
|
1513
1517
|
my $grp = $et->GetGroup($langInfo, 1);
|
1514
1518
|
$et->VerboseValue("- $grp:$$langInfo{Name}", $val);
|
1515
|
-
|
1519
|
+
unless (defined $newData and not $$didTag{$nvHash}) {
|
1520
|
+
# must not delete items from iprp because it will mess up the ordering
|
1521
|
+
next unless defined $itemIndex;
|
1522
|
+
}
|
1516
1523
|
$et->VerboseValue("+ $grp:$$langInfo{Name}", $newData);
|
1517
1524
|
# add back necessary header and encode as necessary
|
1518
1525
|
if (defined $lang) {
|
@@ -1541,7 +1548,7 @@ ItemID2: foreach $id (reverse sort { $a <=> $b } keys %$items) {
|
|
1541
1548
|
$newData = $et->Encode($newData, 'UTF8');
|
1542
1549
|
} elsif ($format and not $$tagInfo{Binary}) {
|
1543
1550
|
# format new value for writing
|
1544
|
-
$newData = WriteValue($newData, $format);
|
1551
|
+
$newData = WriteValue($newData, $format, $$tagInfo{Count});
|
1545
1552
|
}
|
1546
1553
|
}
|
1547
1554
|
$$didTag{$nvHash} = 1; # set flag so we don't add this tag again
|
@@ -1296,15 +1296,15 @@ sub SetNewValuesFromFile($$;@)
|
|
1296
1296
|
# ! option to decide how it is handled here. !
|
1297
1297
|
# +------------------------------------------+
|
1298
1298
|
foreach (qw(ByteUnit Charset CharsetEXIF CharsetFileName CharsetID3 CharsetIPTC
|
1299
|
-
CharsetPhotoshop Composite DateFormat Debug EncodeHangs Escape
|
1300
|
-
ExtractEmbedded FastScan Filter FixBase Geolocation
|
1301
|
-
GeolocFeature GeolocMinPop GeolocMaxDist
|
1302
|
-
HexTagIDs IgnoreGroups IgnoreMinorErrors
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
TimeZone Unknown UserParam
|
1307
|
-
XAttrTags XMPAutoConv))
|
1299
|
+
CharsetPhotoshop Composite DateFormat Debug EncodeHangs Escape
|
1300
|
+
ExtendedXMP ExtractEmbedded FastScan Filter FixBase Geolocation
|
1301
|
+
GeolocAltNames GeolocFeature GeolocMinPop GeolocMaxDist
|
1302
|
+
GlobalTimeShift GPSQuadrant HexTagIDs IgnoreGroups IgnoreMinorErrors
|
1303
|
+
IgnoreTags ImageHashType KeepUTCTime Lang LargeFileSupport
|
1304
|
+
LigoGPSScale ListItem ListSep MDItemTags MissingTagValue NoPDFList
|
1305
|
+
NoWarning Password PrintConv QuickTimeUTC RequestTags SaveFormat
|
1306
|
+
SavePath ScanForXMP StructFormat SystemTags TimeZone Unknown UserParam
|
1307
|
+
Validate WindowsLongPath WindowsWideFile XAttrTags XMPAutoConv))
|
1308
1308
|
{
|
1309
1309
|
$srcExifTool->Options($_ => $$options{$_});
|
1310
1310
|
}
|
@@ -50,7 +50,7 @@ use Image::ExifTool::Exif;
|
|
50
50
|
use Image::ExifTool::GPS;
|
51
51
|
require Exporter;
|
52
52
|
|
53
|
-
$VERSION = '3.
|
53
|
+
$VERSION = '3.73';
|
54
54
|
@ISA = qw(Exporter);
|
55
55
|
@EXPORT_OK = qw(EscapeXML UnescapeXML);
|
56
56
|
|
@@ -3539,14 +3539,19 @@ NoLoop:
|
|
3539
3539
|
}
|
3540
3540
|
last unless $sti;
|
3541
3541
|
}
|
3542
|
-
#
|
3543
|
-
|
3544
|
-
|
3545
|
-
|
3546
|
-
|
3547
|
-
|
3548
|
-
|
3549
|
-
|
3542
|
+
# use existing definition if we already added this tag
|
3543
|
+
if ($$tagTablePtr{$tagID}) {
|
3544
|
+
$tagInfo = $$tagTablePtr{$tagID};
|
3545
|
+
} else {
|
3546
|
+
# generate new tagInfo hash based on existing top-level tag
|
3547
|
+
$tagInfo = { %$sti, Name => $flat . $$sti{Name} };
|
3548
|
+
# be careful not to copy elements we shouldn't...
|
3549
|
+
delete $$tagInfo{Description}; # Description will be different
|
3550
|
+
# can't copy group hash because group 1 will be different and
|
3551
|
+
# we need to check this when writing tag to a specific group
|
3552
|
+
delete $$tagInfo{Groups};
|
3553
|
+
$$tagInfo{Groups}{2} = $$sti{Groups}{2} if $$sti{Groups};
|
3554
|
+
}
|
3550
3555
|
last;
|
3551
3556
|
}
|
3552
3557
|
}
|
@@ -3592,13 +3597,15 @@ NoLoop:
|
|
3592
3597
|
#} elsif (grep / /, @$props) {
|
3593
3598
|
# $$tagInfo{List} = 1;
|
3594
3599
|
}
|
3595
|
-
|
3596
|
-
|
3597
|
-
|
3598
|
-
|
3599
|
-
$$
|
3600
|
+
unless ($$tagTablePtr{$tagID} and $$tagTablePtr{$tagID} eq $tagInfo) {
|
3601
|
+
# save property list for verbose "adding" message unless this tag already exists
|
3602
|
+
$added = \@tagList unless $$tagTablePtr{$tagID};
|
3603
|
+
# if this is an empty structure, we must add a Struct field
|
3604
|
+
if (not length $val and $$attrs{'rdf:parseType'} and $$attrs{'rdf:parseType'} eq 'Resource') {
|
3605
|
+
$$tagInfo{Struct} = { STRUCT_NAME => 'XMP Unknown' } unless $$tagInfo{Struct};
|
3606
|
+
}
|
3607
|
+
AddTagToTable($tagTablePtr, $tagID, $tagInfo);
|
3600
3608
|
}
|
3601
|
-
AddTagToTable($tagTablePtr, $tagID, $tagInfo);
|
3602
3609
|
last;
|
3603
3610
|
}
|
3604
3611
|
# decode value if necessary (et:encoding was used before exiftool 7.71)
|
@@ -170,7 +170,11 @@ my %sAppInfo = (
|
|
170
170
|
%xmpTableDefaults,
|
171
171
|
GROUPS => { 1 => 'XMP-xmpDM', 2 => 'Image' },
|
172
172
|
NAMESPACE => 'xmpDM',
|
173
|
-
NOTES =>
|
173
|
+
NOTES => q{
|
174
|
+
XMP Dynamic Media namespace tags. See
|
175
|
+
L<https://developer.adobe.com/xmp/docs/XMPNamespaces/xmpDM/> for the
|
176
|
+
specification.
|
177
|
+
},
|
174
178
|
absPeakAudioFilePath=> { },
|
175
179
|
album => { },
|
176
180
|
altTapeName => { },
|