summaryrefslogtreecommitdiff
path: root/lib/Image/ExifTool
diff options
context:
space:
mode:
authorexiftool <phil@work3.phy.queensu.ca>2017-10-17 09:50:53 -0400
committerexiftool <phil@work3.phy.queensu.ca>2017-10-17 09:50:53 -0400
commit97ab235f082f845d0047e8be72e0c50440601b79 (patch)
treebd51ba950e72ea294a8de94d4d3437fa5124afc8 /lib/Image/ExifTool
parent1c1112d3be1eea8276bd05a14378a88ba4561160 (diff)
Update to 10.64
Diffstat (limited to 'lib/Image/ExifTool')
-rw-r--r--lib/Image/ExifTool/BuildTagLookup.pm14
-rw-r--r--lib/Image/ExifTool/Canon.pm3
-rw-r--r--lib/Image/ExifTool/Exif.pm12
-rw-r--r--lib/Image/ExifTool/FLIR.pm3
-rw-r--r--lib/Image/ExifTool/Matroska.pm3
-rw-r--r--lib/Image/ExifTool/Nikon.pm9
-rw-r--r--lib/Image/ExifTool/QuickTime.pm4
-rw-r--r--lib/Image/ExifTool/README12
-rw-r--r--lib/Image/ExifTool/Sony.pm3
-rw-r--r--lib/Image/ExifTool/TagNames.pod21
-rw-r--r--lib/Image/ExifTool/WriteIPTC.pl22
-rw-r--r--lib/Image/ExifTool/Writer.pl25
-rw-r--r--lib/Image/ExifTool/XMP.pm19
-rw-r--r--lib/Image/ExifTool/XMP2.pl141
14 files changed, 170 insertions, 121 deletions
diff --git a/lib/Image/ExifTool/BuildTagLookup.pm b/lib/Image/ExifTool/BuildTagLookup.pm
index d2f27df0..4f13b9b2 100644
--- a/lib/Image/ExifTool/BuildTagLookup.pm
+++ b/lib/Image/ExifTool/BuildTagLookup.pm
@@ -34,7 +34,7 @@ use Image::ExifTool::Nikon;
use Image::ExifTool::Validate;
use Image::ExifTool::MacOS;
-$VERSION = '3.11';
+$VERSION = '3.12';
@ISA = qw(Exporter);
sub NumbersFirst($$);
@@ -372,12 +372,12 @@ This specification dictates a length for ASCII (C<string> or C<digits>) and
binary (C<undef>) values. These lengths are given in square brackets after
the B<Writable> format name. For tags where a range of lengths is allowed,
the minimum and maximum lengths are separated by a comma within the
-brackets. IPTC strings are not null terminated. When writing, ExifTool
-issues a minor warning and truncates the value if it is longer than allowed
-by the IPTC specification. Minor errors may be ignored with the
-IgnoreMinorErrors (-m) option, allowing longer values to be written, but
-beware that values like this may cause problems for some other IPTC readers.
-ExifTool will happily read IPTC values of any length.
+brackets. When writing, ExifTool issues a minor warning and truncates the
+value if it is longer than allowed by the IPTC specification. Minor errors
+may be ignored with the IgnoreMinorErrors (-m) option, allowing longer
+values to be written, but beware that values like this may cause problems
+for some other IPTC readers. ExifTool will happily read IPTC values of any
+length.
Separate IPTC date and time tags may be written with a combined date/time
value and ExifTool automagically takes the appropriate part of the date/time
diff --git a/lib/Image/ExifTool/Canon.pm b/lib/Image/ExifTool/Canon.pm
index 492e1604..2a9e1928 100644
--- a/lib/Image/ExifTool/Canon.pm
+++ b/lib/Image/ExifTool/Canon.pm
@@ -85,7 +85,7 @@ sub ProcessSerialData($$$);
sub ProcessFilters($$$);
sub SwapWords($);
-$VERSION = '3.81';
+$VERSION = '3.82';
# Note: Removed 'USM' from 'L' lenses since it is redundant - PH
# (or is it? Ref 32 shows 5 non-USM L-type lenses)
@@ -707,6 +707,7 @@ $VERSION = '3.81';
0x4150000 => 'PowerShot ELPH 185 / IXUS 185 / IXY 200',
0x4160000 => 'PowerShot SX430 IS',
0x4170000 => 'PowerShot SX730 HS',
+ 0x4180000 => 'PowerShot G1 X Mark III', #IB
0x6040000 => 'PowerShot S100 / Digital IXUS / IXY Digital',
# (see http://cweb.canon.jp/e-support/faq/answer/digitalcamera/10447-1.html for PowerShot/IXUS/IXY names)
diff --git a/lib/Image/ExifTool/Exif.pm b/lib/Image/ExifTool/Exif.pm
index 8efb731a..fe96c887 100644
--- a/lib/Image/ExifTool/Exif.pm
+++ b/lib/Image/ExifTool/Exif.pm
@@ -53,7 +53,7 @@ use vars qw($VERSION $AUTOLOAD @formatSize @formatName %formatNumber %intFormat
use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::MakerNotes;
-$VERSION = '3.93';
+$VERSION = '3.94';
sub ProcessExif($$$);
sub WriteExif($$$);
@@ -2438,11 +2438,17 @@ my %sampleFormat = (
0xa401 => {
Name => 'CustomRendered',
Writable => 'int16u',
+ Notes => 'only 0 and 1 are standard EXIF',
PrintConv => {
0 => 'Normal',
1 => 'Custom',
- # 4 - Apple iPhone5c horizontal orientation
- # 6 - Apple iPhone5c panorama
+ # 2 - also seen (Apple iOS)
+ 3 => 'HDR', # non-standard (Apple iOS)
+ # 4 - also seen (Apple iOS) - normal image from iOS Camera app (ref http://regex.info/blog/lightroom-goodies/metadata-presets)
+ 6 => 'Panorama', # non-standard (Apple iOS, horizontal or vertical)
+ # 7 - also seen (Apple iOS)
+ 8 => 'Portrait', # non-standard (Apple iOS, blurred background)
+ # 9 - also seen (Apple iOS) (HDR Portrait?)
},
},
0xa402 => {
diff --git a/lib/Image/ExifTool/FLIR.pm b/lib/Image/ExifTool/FLIR.pm
index e2b8f623..f9ae1609 100644
--- a/lib/Image/ExifTool/FLIR.pm
+++ b/lib/Image/ExifTool/FLIR.pm
@@ -24,7 +24,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
-$VERSION = '1.15';
+$VERSION = '1.16';
sub ProcessFLIR($$;$);
sub ProcessFLIRText($$$);
@@ -461,6 +461,7 @@ my %float8g = ( Format => 'float', PrintConv => 'sprintf("%.8g",$val)' );
0x390 => { Name => 'FocusStepCount', Format => 'int16u' },
0x45c => { Name => 'FocusDistance', Format => 'float', PrintConv => 'sprintf("%.1f m",$val)' },
# 0x43c - string: either "Live" or the file name
+ 0x464 => { Name => 'FrameRate', Format => 'int16u' }, #SebastianHani
);
# FLIR measurement tools record (ref 6)
diff --git a/lib/Image/ExifTool/Matroska.pm b/lib/Image/ExifTool/Matroska.pm
index 723a4cca..0a72e13d 100644
--- a/lib/Image/ExifTool/Matroska.pm
+++ b/lib/Image/ExifTool/Matroska.pm
@@ -14,7 +14,7 @@ use strict;
use vars qw($VERSION);
use Image::ExifTool qw(:DataAccess :Utils);
-$VERSION = '1.08';
+$VERSION = '1.09';
my %noYes = ( 0 => 'No', 1 => 'Yes' );
@@ -659,6 +659,7 @@ my %noYes = ( 0 => 'No', 1 => 'Yes' );
0 => 'Rectangular',
1 => 'Equirectangular',
2 => 'Cubemap',
+ 3 => 'Mesh',
},
},
0x7672 => [{
diff --git a/lib/Image/ExifTool/Nikon.pm b/lib/Image/ExifTool/Nikon.pm
index a8673a0a..ddf2272a 100644
--- a/lib/Image/ExifTool/Nikon.pm
+++ b/lib/Image/ExifTool/Nikon.pm
@@ -59,7 +59,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
-$VERSION = '3.38';
+$VERSION = '3.39';
sub LensIDConv($$$);
sub ProcessNikonAVI($$$);
@@ -446,7 +446,7 @@ sub GetAFPointGrid($$;$);
'26 40 3C 8E 2C 40 1C 02' => 'Sigma 28-300mm F3.5-6.3 Macro',
'02 3B 44 61 30 3D 02 00' => 'Sigma 35-80mm F4-5.6',
'02 40 44 73 2B 36 02 00' => 'Sigma 35-135mm F3.5-4.5 a',
- 'CC 4C 50 68 14 14 4B 06' => 'Sigma 50-100mm F1.8 DC HSM | A', #forum3833
+ 'CC 4C 50 68 14 14 4B 06' => 'Sigma 50-100mm F1.8 DC HSM | A', #30
'7A 47 50 76 24 24 4B 06' => 'Sigma 50-150mm F2.8 EX APO DC HSM',
'FD 47 50 76 24 24 4B 06' => 'Sigma 50-150mm F2.8 EX APO DC HSM II',
'98 48 50 76 24 24 4B 0E' => 'Sigma 50-150mm F2.8 EX APO DC OS HSM', #30
@@ -549,6 +549,7 @@ sub GetAFPointGrid($$;$);
'00 48 5C 8E 30 3C 00 06' => 'Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17NII)', #JD
'F1 47 5C 8E 30 3C DF 0E' => 'Tamron SP 70-300mm f/4-5.6 Di VC USD (A005)',
'EB 40 76 A6 38 40 DF 0E' => 'Tamron SP AF 150-600mm f/5-6.3 VC USD (A011)',
+ 'E3 40 76 A6 38 40 DF 4E' => 'Tamron SP 150-600mm f/5-6.3 Di VC USD G2', #30
'20 3C 80 98 3D 3D 1E 02' => 'Tamron AF 200-400mm f/5.6 LD IF (75D)',
'00 3E 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di LD (IF) (A08)',
'00 3F 80 A0 38 3F 00 02' => 'Tamron SP AF 200-500mm f/5-6.3 Di (A08)',
@@ -643,7 +644,7 @@ sub GetAFPointGrid($$;$);
'12 4A 5C 81 31 3D 09 00' => 'Soligor AF C/D Auto Zoom+Macro 70-210mm 1:4-5.6 UMCS',
'12 36 69 97 35 42 09 00' => 'Soligor AF Zoom 100-400mm 1:4.5-6.7 MC',
#
- 'BF 4E 26 26 1E 1E 01 04' => 'Irix 15mm f/2.4 Firefly', #forum3833
+ 'BF 4E 26 26 1E 1E 01 04' => 'Irix 15mm f/2.4 Firefly', #30
#
'00 00 00 00 00 00 00 01' => 'Manual Lens No CPU',
#
@@ -6883,7 +6884,7 @@ my %nikonFocalConversions = (
# HDR information (ref 32)
%Image::ExifTool::Nikon::HDRInfo = (
%binaryDataAttrs,
- GROUPS => { 0 => 'MakerNotes', 2 => 'Location' },
+ GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
0 => {
Name => 'HDRInfoVersion',
Format => 'string[4]',
diff --git a/lib/Image/ExifTool/QuickTime.pm b/lib/Image/ExifTool/QuickTime.pm
index 90a885ea..0b79ea0c 100644
--- a/lib/Image/ExifTool/QuickTime.pm
+++ b/lib/Image/ExifTool/QuickTime.pm
@@ -42,7 +42,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
-$VERSION = '2.04';
+$VERSION = '2.05';
sub FixWrongFormat($);
sub ProcessMOV($$;$);
@@ -652,6 +652,7 @@ my %graphicsMode = (
0 => 'Monoscopic',
1 => 'Stereoscopic Top-Bottom',
2 => 'Stereoscopic Left-Right',
+ 3 => 'Stereoscopic Stereo-Custom', # (provisional in spec as of 2017-10-10)
},
},
sv3d => {
@@ -695,6 +696,7 @@ my %graphicsMode = (
Name => 'EquirectangularProj',
SubDirectory => { TagTable => 'Image::ExifTool::QuickTime::equi' },
},
+ # mshp - MeshProjection (P.I.T.A. to decode, for not much reward, see ref)
);
# 'prhd' atom information (ref https://github.com/google/spatial-media/blob/master/docs/spherical-video-v2-rfc.md)
diff --git a/lib/Image/ExifTool/README b/lib/Image/ExifTool/README
index fa0d0ba3..2e77380f 100644
--- a/lib/Image/ExifTool/README
+++ b/lib/Image/ExifTool/README
@@ -14,13 +14,13 @@ the binary data block (floating point IDs allow multiple tags for the same
offset, with the integer part being used for the offset). The corresponding
hash value provides information about the tag (explained later).
-Twenty-five special keys (TABLE_NAME, SHORT_NAME, PROCESS_PROC, WRITE_PROC,
+Twenty-six special keys (TABLE_NAME, SHORT_NAME, PROCESS_PROC, WRITE_PROC,
CHECK_PROC, GROUPS, FORMAT, FIRST_ENTRY, TAG_PREFIX, PRINT_CONV, WRITABLE,
TABLE_DESC, NOTES, IS_OFFSET, IS_SUBDIR, EXTRACT_UNKNOWN, NAMESPACE, PREFERRED,
-SRC_TABLE, PRIORITY, WRITE_GROUP, LANG_INFO, VARS, DATAMEMBER and SET_GROUP1)
-are used to provide additional information about a table. The special keys have
-names that are all capitalized to avoid possible conflicts with tag keys. Below
-is an explanation of the meaning of each special key:
+SRC_TABLE, PRIORITY, AVOID, WRITE_GROUP, LANG_INFO, VARS, DATAMEMBER and
+SET_GROUP1) are used to provide additional information about a table. The
+special keys have names that are all capitalized to avoid possible conflicts
+with tag keys. Below is an explanation of the meaning of each special key:
TABLE_NAME : Name of this table (set automatically by GetTagTable()).
@@ -177,6 +177,8 @@ is an explanation of the meaning of each special key:
PRIORITY : Default Priority for all tags in this table.
+ AVOID : Flag set to Avoid writing all tags in this table.
+
WRITE_GROUP : Default WriteGroup for all tags in the table.
LANG_INFO : Code reference to a routine which returns a reference to a
diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm
index 3479741b..51ef5bb9 100644
--- a/lib/Image/ExifTool/Sony.pm
+++ b/lib/Image/ExifTool/Sony.pm
@@ -31,7 +31,7 @@ use Image::ExifTool qw(:DataAccess :Utils);
use Image::ExifTool::Exif;
use Image::ExifTool::Minolta;
-$VERSION = '2.66';
+$VERSION = '2.67';
sub ProcessSRF($$$);
sub ProcessSR2($$$);
@@ -1728,6 +1728,7 @@ my %meterInfo2 = (
357 => 'ILCE-6300', #IB
358 => 'ILCE-9', #JR
360 => 'ILCE-6500', #JR
+ 364 => 'DSC-RX0', #PH
},
},
0xb020 => { #2
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index 2c84d592..ee2bb8af 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/lib/Image/ExifTool/TagNames.pod
@@ -902,12 +902,12 @@ This specification dictates a length for ASCII (C<string> or C<digits>) and
binary (C<undef>) values. These lengths are given in square brackets after
the B<Writable> format name. For tags where a range of lengths is allowed,
the minimum and maximum lengths are separated by a comma within the
-brackets. IPTC strings are not null terminated. When writing, ExifTool
-issues a minor warning and truncates the value if it is longer than allowed
-by the IPTC specification. Minor errors may be ignored with the
-IgnoreMinorErrors (-m) option, allowing longer values to be written, but
-beware that values like this may cause problems for some other IPTC readers.
-ExifTool will happily read IPTC values of any length.
+brackets. When writing, ExifTool issues a minor warning and truncates the
+value if it is longer than allowed by the IPTC specification. Minor errors
+may be ignored with the IgnoreMinorErrors (-m) option, allowing longer
+values to be written, but beware that values like this may cause problems
+for some other IPTC readers. ExifTool will happily read IPTC values of any
+length.
Separate IPTC date and time tags may be written with a combined date/time
value and ExifTool automagically takes the appropriate part of the date/time
@@ -1324,7 +1324,7 @@ These tags belong to the ExifTool XMP-acdsee family 1 group.
Categories string/
Collections string/
DateTime date/
- DPP lang-alt
+ DPP lang-alt/
EditStatus string/
FixtureIdentifier string/
Keywords string/+
@@ -1332,10 +1332,10 @@ These tags belong to the ExifTool XMP-acdsee family 1 group.
ObjectCycle string/
OriginatingProgram string/
Rating real/
- Rawrppused boolean
+ Rawrppused boolean/
ReleaseDate string/
ReleaseTime string/
- RPP lang-alt
+ RPP lang-alt/
Snapshots string/+
Tagged boolean/
@@ -2393,7 +2393,7 @@ These tags belong to the ExifTool XMP-GSpherical family 1 group.
StereoMode string/
Stitched boolean/
StitchingSoftware string/
- TimeStamp date/
+ TimeStamp integer/
=head3 XMP ics Tags
@@ -7856,6 +7856,7 @@ for details.
900 DateTimeOriginal no
912 FocusStepCount no
1116 FocusDistance no
+ 1124 FrameRate no
=head3 FLIR MeasInfo Tags
diff --git a/lib/Image/ExifTool/WriteIPTC.pl b/lib/Image/ExifTool/WriteIPTC.pl
index 9a1c5cfe..a2a41a64 100644
--- a/lib/Image/ExifTool/WriteIPTC.pl
+++ b/lib/Image/ExifTool/WriteIPTC.pl
@@ -127,7 +127,7 @@ sub CheckIPTC($$$)
$len = $minlen;
}
}
- if (defined $minlen) {
+ if (defined $minlen and $fmt ne 'string') { # (must truncate strings later, after recoding)
$maxlen or $maxlen = $minlen;
if ($len < $minlen) {
unless ($$et{OPTIONS}{IgnoreMinorErrors}) {
@@ -185,6 +185,26 @@ sub FormatIPTC($$$$$;$)
} elsif ($$xlatPtr and $rec < 7 and $$valPtr =~ /[\x80-\xff]/) {
TranslateCodedString($et, $valPtr, $xlatPtr, $read);
}
+ # must check length now (after any string recoding)
+ if (not $read and $format =~ /^string\[(\d+),?(\d*)\]$/) {
+ my ($minlen, $maxlen) = ($1, $2);
+ my $len = length $$valPtr;
+ $maxlen or $maxlen = $minlen;
+ if ($len < $minlen) {
+ if ($et->Warn("String to short for IPTC:$$tagInfo{Name} (padded)", 2)) {
+ $$valPtr .= ' ' x ($minlen - $len);
+ }
+ } elsif ($len > $maxlen) {
+ if ($et->Warn("IPTC:$$tagInfo{Name} exceeds length limit (truncated)", 2)) {
+ $$valPtr = substr($$valPtr, 0, $maxlen);
+ # make sure UTF-8 is still valid
+ if (($$xlatPtr || $et->Options('Charset')) eq 'UTF8') {
+ require Image::ExifTool::XMP;
+ Image::ExifTool::XMP::FixUTF8($valPtr,'.');
+ }
+ }
+ }
+ }
}
}
diff --git a/lib/Image/ExifTool/Writer.pl b/lib/Image/ExifTool/Writer.pl
index 2022219e..f0454659 100644
--- a/lib/Image/ExifTool/Writer.pl
+++ b/lib/Image/ExifTool/Writer.pl
@@ -1619,7 +1619,7 @@ sub CountNewValues($)
# Save new values for subsequent restore
# Inputs: 0) ExifTool object reference
# Returns: Number of times new values have been saved
-# Notes: increments Save flag each time routine is called
+# Notes: increments SAVE_COUNT flag each time routine is called
sub SaveNewValues($)
{
my $self = shift;
@@ -3223,8 +3223,27 @@ sub IsOverwriting($$;$)
my $shiftType = $$tagInfo{Shift};
unless ($shiftType and $shiftType eq 'Time') {
unless (IsFloat($val)) {
- $self->Warn("Can't shift $$tagInfo{Name} (not a number)");
- return 0;
+ # do the ValueConv to try to get a number
+ my $conv = $$tagInfo{ValueConv};
+ if (defined $conv) {
+ local $SIG{'__WARN__'} = \&SetWarning;
+ undef $evalWarning;
+ if (ref $conv eq 'CODE') {
+ $val = &$conv($val, $self);
+ } elsif (not ref $conv) {
+ #### eval ValueConv ($val, $self)
+ $val = eval $conv;
+ $@ and $evalWarning = $@;
+ }
+ if ($evalWarning) {
+ $self->Warn("ValueConv $$tagInfo{Name}: " . CleanWarning());
+ return 0;
+ }
+ }
+ unless (IsFloat($val)) {
+ $self->Warn("Can't shift $$tagInfo{Name} (not a number)");
+ return 0;
+ }
}
$shiftType = 'Number'; # allow any number to be shifted
}
diff --git a/lib/Image/ExifTool/XMP.pm b/lib/Image/ExifTool/XMP.pm
index a842693f..b3f372db 100644
--- a/lib/Image/ExifTool/XMP.pm
+++ b/lib/Image/ExifTool/XMP.pm
@@ -48,7 +48,7 @@ use Image::ExifTool::Exif;
use Image::ExifTool::GPS;
require Exporter;
-$VERSION = '3.06';
+$VERSION = '3.07';
@ISA = qw(Exporter);
@EXPORT_OK = qw(EscapeXML UnescapeXML);
@@ -2402,12 +2402,13 @@ sub IsUTF8($)
}
#------------------------------------------------------------------------------
-# Fix malformed UTF8 (by replacing bad bytes with '?')
-# Inputs: 0) string reference
+# Fix malformed UTF8 (by replacing bad bytes with specified character)
+# Inputs: 0) string reference, 1) string to replace each bad byte,
+# may be '' to delete bad bytes, or undef to use '?'
# Returns: true if string was fixed, and updates string
-sub FixUTF8($)
+sub FixUTF8($;$)
{
- my $strPt = shift;
+ my ($strPt, $bad) = @_;
my $fixed;
pos($$strPt) = 0; # start at beginning of string
for (;;) {
@@ -2419,9 +2420,11 @@ sub FixUTF8($)
my $n = $ch < 0xe0 ? 1 : ($ch < 0xf0 ? 2 : 3);
next if $$strPt =~ /\G[\x80-\xbf]{$n}/g;
}
- # replace bad character with '?'
- substr($$strPt, $pos-1, 1) = '?';
- pos($$strPt) = $fixed = $pos;
+ # replace bad character
+ $bad = '?' unless defined $bad;
+ substr($$strPt, $pos-1, 1) = $bad;
+ pos($$strPt) = $pos-1 + length $bad;
+ $fixed = 1;
}
return $fixed;
}
diff --git a/lib/Image/ExifTool/XMP2.pl b/lib/Image/ExifTool/XMP2.pl
index db3371c7..152cab5b 100644
--- a/lib/Image/ExifTool/XMP2.pl
+++ b/lib/Image/ExifTool/XMP2.pl
@@ -674,7 +674,7 @@ my %sLinkedImage = (
#------------------------------------------------------------------------------
# PRISM
#
-# NOTE: The "Avoid" flag is set for all PRISM tags
+# NOTE: The "Avoid" flag is set for all PRISM tags (via tag table AVOID flag)
# my %obsolete = (
# Notes => 'obsolete in 2.0',
@@ -701,6 +701,7 @@ my %prismPublicationDate = (
%xmpTableDefaults,
GROUPS => { 0 => 'XMP', 1 => 'XMP-prism', 2 => 'Document' },
NAMESPACE => 'prism',
+ AVOID => 1,
NOTES => q{
Publishing Requirements for Industry Standard Metadata 3.0 namespace
tags. (see L<http://www.prismstandard.org/>)
@@ -918,6 +919,7 @@ my %prismPublicationDate = (
%xmpTableDefaults,
GROUPS => { 0 => 'XMP', 1 => 'XMP-prl', 2 => 'Document' },
NAMESPACE => 'prl',
+ AVOID => 1,
NOTES => q{
PRISM Rights Language 2.1 namespace tags. These tags have been deprecated
since the release of the PRISM Usage Rights 3.0. (see
@@ -933,6 +935,7 @@ my %prismPublicationDate = (
%xmpTableDefaults,
GROUPS => { 0 => 'XMP', 1 => 'XMP-pur', 2 => 'Document' },
NAMESPACE => 'pur',
+ AVOID => 1,
NOTES => q{
PRISM Usage Rights 3.0 namespace tags. (see
L<http://www.prismstandard.org/>)
@@ -964,6 +967,7 @@ my %prismPublicationDate = (
%xmpTableDefaults,
GROUPS => { 0 => 'XMP', 1 => 'XMP-pmi', 2 => 'Image' },
NAMESPACE => 'pmi',
+ AVOID => 1,
NOTES => q{
PRISM Metadata for Images 3.0 namespace tags. (see
L<http://www.prismstandard.org/>)
@@ -1030,6 +1034,7 @@ my %prismPublicationDate = (
%xmpTableDefaults,
GROUPS => { 0 => 'XMP', 1 => 'XMP-prm', 2 => 'Document' },
NAMESPACE => 'prm',
+ AVOID => 1,
NOTES => q{
PRISM Recipe Metadata 3.0 namespace tags. (see
L<http://www.prismstandard.org/>)
@@ -1093,17 +1098,18 @@ my %prismPublicationDate = (
%Image::ExifTool::XMP::PixelLive = (
GROUPS => { 1 => 'XMP-PixelLive', 2 => 'Image' },
NAMESPACE => 'PixelLive',
+ AVOID => 1,
NOTES => q{
PixelLive namespace tags. These tags are not writable becase they are very
uncommon and I haven't been able to locate a reference which gives the
namespace URI.
},
- AUTHOR => { Name => 'Author', Avoid => 1, Groups => { 2 => 'Author' } },
- COMMENTS => { Name => 'Comments', Avoid => 1 },
- COPYRIGHT => { Name => 'Copyright',Avoid => 1, Groups => { 2 => 'Author' } },
- DATE => { Name => 'Date', Avoid => 1, Groups => { 2 => 'Time' } },
- GENRE => { Name => 'Genre', Avoid => 1 },
- TITLE => { Name => 'Title', Avoid => 1 },
+ AUTHOR => { Name => 'Author', Groups => { 2 => 'Author' } },
+ COMMENTS => { Name => 'Comments' },
+ COPYRIGHT => { Name => 'Copyright', Groups => { 2 => 'Author' } },
+ DATE => { Name => 'Date', Groups => { 2 => 'Time' } },
+ GENRE => { Name => 'Genre' },
+ TITLE => { Name => 'Title' },
);
# Extensis Portfolio tags (extensis) (ref 11)
@@ -1185,6 +1191,7 @@ my %sSubVersion = (
%xmpTableDefaults,
GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee', 2 => 'Image' },
NAMESPACE => 'acdsee',
+ AVOID => 1,
NOTES => q{
ACD Systems ACDSee namespace tags.
@@ -1194,15 +1201,15 @@ my %sSubVersion = (
mumble to themselves instead of speaking out for the rest of the world to
hear.)
},
- author => { Avoid => 1, Groups => { 2 => 'Author' } },
- caption => { Avoid => 1 },
- categories => { Avoid => 1 },
- collections=> { Avoid => 1 },
- datetime => { Name => 'DateTime', Avoid => 1, Groups => { 2 => 'Time' }, %dateTimeInfo },
- keywords => { Avoid => 1, List => 'Bag' },
- notes => { Avoid => 1 },
- rating => { Avoid => 1, Writable => 'real' }, # integer?
- tagged => { Avoid => 1, Writable => 'boolean' },
+ author => { Groups => { 2 => 'Author' } },
+ caption => { },
+ categories => { },
+ collections=> { },
+ datetime => { Name => 'DateTime', Groups => { 2 => 'Time' }, %dateTimeInfo },
+ keywords => { List => 'Bag' },
+ notes => { },
+ rating => { Writable => 'real' }, # integer?
+ tagged => { Writable => 'boolean' },
rawrppused => { Writable => 'boolean' },
rpp => {
Name => 'RPP',
@@ -1217,13 +1224,13 @@ my %sSubVersion = (
Binary => 1,
},
# more tags (ref forum6840)
- FixtureIdentifier => { Avoid => 1 },
- EditStatus => { Avoid => 1 },
- ReleaseDate => { Avoid => 1 },
- ReleaseTime => { Avoid => 1 },
- OriginatingProgram => { Avoid => 1 },
- ObjectCycle => { Avoid => 1 },
- Snapshots => { Avoid => 1, List => 'Bag', Binary => 1 },
+ FixtureIdentifier => { },
+ EditStatus => { },
+ ReleaseDate => { },
+ ReleaseTime => { },
+ OriginatingProgram => { },
+ ObjectCycle => { },
+ Snapshots => { List => 'Bag', Binary => 1 },
);
# Picture Licensing Universal System namespace properties (xmpPLUS)
@@ -1231,13 +1238,14 @@ my %sSubVersion = (
%xmpTableDefaults,
GROUPS => { 1 => 'XMP-xmpPLUS', 2 => 'Author' },
NAMESPACE => 'xmpPLUS',
+ AVOID => 1,
NOTES => q{
XMP Picture Licensing Universal System (PLUS) tags as written by some older
Adobe applications. See L<PLUS XMP Tags|Image::ExifTool::TagNames/PLUS XMP Tags>
for the current PLUS tags.
},
- CreditLineReq => { Writable => 'boolean', Avoid => 1 },
- ReuseAllowed => { Writable => 'boolean', Avoid => 1 },
+ CreditLineReq => { Writable => 'boolean' },
+ ReuseAllowed => { Writable => 'boolean' },
);
# Creative Commons namespace properties (cc) (ref 5)
@@ -1354,14 +1362,15 @@ my %sSubVersion = (
%xmpTableDefaults,
GROUPS => { 1 => 'XMP-expressionmedia', 2 => 'Image' },
NAMESPACE => 'expressionmedia',
+ AVOID => 1,
NOTES => q{
Microsoft Expression Media namespace tags. These tags are avoided when
writing due to name conflicts with tags in other schemas.
},
- Event => { Avoid => 1 },
- Status => { Avoid => 1 },
- People => { Avoid => 1, List => 'Bag' },
- CatalogSets => { Avoid => 1, List => 'Bag' },
+ Event => { },
+ Status => { },
+ People => { List => 'Bag' },
+ CatalogSets => { List => 'Bag' },
);
# DigiKam namespace tags (ref PH)
@@ -1584,6 +1593,7 @@ my %sSubVersion = (
%xmpTableDefaults,
GROUPS => { 1 => 'XMP-GSpherical', 2 => 'Image' },
NAMESPACE => 'GSpherical',
+ AVOID => 1,
NOTES => q{
Not actually XMP. These RDF/XML tags are used in Google spherical MP4
videos. See
@@ -1591,38 +1601,38 @@ my %sSubVersion = (
for the specification.
},
# (avoid due to conflicts with XMP-GPano tags)
- Spherical => { Avoid => 1, Writable => 'boolean' },
- Stitched => { Avoid => 1, Writable => 'boolean' },
- StitchingSoftware => { Avoid => 1 },
- ProjectionType => { Avoid => 1 },
- StereoMode => { Avoid => 1 },
- SourceCount => { Avoid => 1, Writable => 'integer' },
- InitialViewHeadingDegrees => { Avoid => 1, Writable => 'real' },
- InitialViewPitchDegrees => { Avoid => 1, Writable => 'real' },
- InitialViewRollDegrees => { Avoid => 1, Writable => 'real' },
+ Spherical => { Writable => 'boolean' },
+ Stitched => { Writable => 'boolean' },
+ StitchingSoftware => { },
+ ProjectionType => { },
+ StereoMode => { },
+ SourceCount => { Writable => 'integer' },
+ InitialViewHeadingDegrees => { Writable => 'real' },
+ InitialViewPitchDegrees => { Writable => 'real' },
+ InitialViewRollDegrees => { Writable => 'real' },
Timestamp => {
Name => 'TimeStamp',
Groups => { 2 => 'Time' },
- Avoid => 1,
- Writable => 'date',
+ Writable => 'integer',
Shift => 'Time',
ValueConv => 'ConvertUnixTime($val)', #(NC)
ValueConvInv => 'GetUnixTime($val)',
PrintConv => '$self->ConvertDateTime($val)',
PrintConvInv => '$self->InverseDateTime($val)',
},
- FullPanoWidthPixels => { Avoid => 1, Writable => 'integer' },
- FullPanoHeightPixels => { Avoid => 1, Writable => 'integer' },
- CroppedAreaImageWidthPixels => { Avoid => 1, Writable => 'integer' },
- CroppedAreaImageHeightPixels=> { Avoid => 1, Writable => 'integer' },
- CroppedAreaLeftPixels => { Avoid => 1, Writable => 'integer' },
- CroppedAreaTopPixels => { Avoid => 1, Writable => 'integer' },
+ FullPanoWidthPixels => { Writable => 'integer' },
+ FullPanoHeightPixels => { Writable => 'integer' },
+ CroppedAreaImageWidthPixels => { Writable => 'integer' },
+ CroppedAreaImageHeightPixels=> { Writable => 'integer' },
+ CroppedAreaLeftPixels => { Writable => 'integer' },
+ CroppedAreaTopPixels => { Writable => 'integer' },
);
# Google depthmap information (ref https://developers.google.com/depthmap-metadata/reference)
%Image::ExifTool::XMP::GDepth = (
GROUPS => { 0 => 'XMP', 1 => 'XMP-GDepth', 2 => 'Image' },
NAMESPACE => { 'GDepth' => 'http://ns.google.com/photos/1.0/depthmap/' },
+ AVOID => 1, # (too potential tag name conflicts)
NOTES => q{
Google depthmap information. See
L<https://developers.google.com/depthmap-metadata/> for the specification.
@@ -1630,39 +1640,35 @@ my %sSubVersion = (
WRITABLE => 'string', # (default to string-type tags)
PRIORITY => 0,
Format => {
- Avoid => 1,
PrintConv => {
RangeInverse => 'RangeInverse',
RangeLinear => 'RangeLinear',
},
},
- Near => { Avoid => 1, Writable => 'real' },
- Far => { Avoid => 1, Writable => 'real' },
- Mime => { Avoid => 1 },
+ Near => { Writable => 'real' },
+ Far => { Writable => 'real' },
+ Mime => { },
Data => {
- Avoid => 1,
ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)',
},
- Units => { Avoid => 1 },
+ Units => { },
MeasureType => {
- Avoid => 1,
PrintConv => {
OpticalAxis => 'OpticalAxis',
OpticalRay => 'OpticalRay',
},
},
- ConfidenceMime => { Avoid => 1 },
+ ConfidenceMime => { },
Confidence => {
- Avoid => 1,
ValueConv => 'Image::ExifTool::XMP::DecodeBase64($val)',
ValueConvInv => 'Image::ExifTool::XMP::EncodeBase64($val)',
},
- Manufacturer=> { Avoid => 1 },
- Model => { Avoid => 1 },
- Software => { Avoid => 1 },
- ImageWidth => { Avoid => 1, Writable => 'real' },
- ImageHeight => { Avoid => 1, Writable => 'real' },
+ Manufacturer=> { },
+ Model => { },
+ Software => { },
+ ImageWidth => { Writable => 'real' },
+ ImageHeight => { Writable => 'real' },
);
# Getty Images namespace (ref PH)
@@ -1730,21 +1736,6 @@ my %sSubVersion = (
NAMESPACE => undef, # variable namespace
);
-# set "Avoid" flag for all PRISM tags
-my ($table, $key);
-foreach $table (
- \%Image::ExifTool::XMP::prism,
- \%Image::ExifTool::XMP::prl,
- \%Image::ExifTool::XMP::pur,
- \%Image::ExifTool::XMP::pmi,
- \%Image::ExifTool::XMP::prm)
-{
- foreach $key (TagTableKeys($table)) {
- $$table{$key}{Avoid} = 1;
- }
-}
-
-
1; #end
__END__