summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-09-03 12:10:27 +0200
committerCarl Hetherington <cth@carlh.net>2020-09-21 21:57:18 +0200
commit549011d53fa302fde3dcb6df4d946dc569a8b03e (patch)
treef85b0731b5acf20c2c560fd9f287380d5e1578c3
parentfc205951d1fec50d59bfbed9cb03c07cc95205d9 (diff)
Add namespaces and tweak CPL namespace so Xerces checks CompositionMetadataAsset.
-rw-r--r--src/verify.cc7
-rw-r--r--wscript4
-rw-r--r--xsd/Dolby-2012-AD.xsd14
-rw-r--r--xsd/SMPTE-429-16.xsd130
-rw-r--r--xsd/SMPTE-429-7-2006-CPL.xsd2
5 files changed, 155 insertions, 2 deletions
diff --git a/src/verify.cc b/src/verify.cc
index 9a0895f6..ddf308ca 100644
--- a/src/verify.cc
+++ b/src/verify.cc
@@ -206,10 +206,15 @@ public:
add("http://www.digicine.com/PROTO-ASDCP-CC-CPL-20070926#", "PROTO-ASDCP-CC-CPL-20070926.xsd");
add("interop-subs", "DCSubtitle.v1.mattsson.xsd");
add("http://www.smpte-ra.org/schemas/428-7/2010/DCST.xsd", "SMPTE-428-7-2010-DCST.xsd");
+ add("http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata", "SMPTE-429-16.xsd");
+ add("http://www.dolby.com/schemas/2012/AD", "Dolby-2012-AD.xsd");
}
InputSource* resolveEntity(XMLCh const *, XMLCh const * system_id)
{
+ if (!system_id) {
+ return 0;
+ }
string system_id_str = xml_ch_to_string (system_id);
boost::filesystem::path p = _xsd_dtd_directory;
if (_files.find(system_id_str) == _files.end()) {
@@ -278,6 +283,8 @@ validate_xml (T xml, boost::filesystem::path xsd_dtd_directory, list<Verificatio
schema.push_back("DCSubtitle.v1.mattsson.xsd");
schema.push_back("DCDMSubtitle-2010.xsd");
schema.push_back("PROTO-ASDCP-CC-CPL-20070926.xsd");
+ schema.push_back("SMPTE-429-16.xsd");
+ schema.push_back("Dolby-2012-AD.xsd");
/* XXX: I'm not especially clear what this is for, but it seems to be necessary */
string locations;
diff --git a/wscript b/wscript
index f4186521..25bee8df 100644
--- a/wscript
+++ b/wscript
@@ -248,7 +248,9 @@ def build(bld):
'PROTO-ASDCP-CC-CPL-20070926.xsd',
'Main-Stereo-Picture-CPL.xsd',
'DCSubtitle.v1.mattsson.xsd',
- 'DCDMSubtitle-2010.xsd' ]:
+ 'DCDMSubtitle-2010.xsd',
+ 'Dolby-2012-AD.xsd',
+ 'SMPTE-429-16.xsd' ]:
bld.install_files('${PREFIX}/share/libdcp/xsd', os.path.join('xsd', i))
bld.add_post_fun(post)
diff --git a/xsd/Dolby-2012-AD.xsd b/xsd/Dolby-2012-AD.xsd
new file mode 100644
index 00000000..f1c22199
--- /dev/null
+++ b/xsd/Dolby-2012-AD.xsd
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.dolby.com/schemas/2012/AD" xmlns:axd="http://www.dolby.com/schemas/2012/AD" xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL"/>
+ <xs:element name="AuxData" type="axd:DataTrackFileAssetType"/>
+ <xs:complexType name="DataTrackFileAssetType">
+ <xs:complexContent>
+ <xs:extension base="cpl:TrackFileAssetType">
+ <xs:sequence>
+ <xs:element minOccurs="0" name="DataType" type="xs:string"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+</xs:schema>
diff --git a/xsd/SMPTE-429-16.xsd b/xsd/SMPTE-429-16.xsd
new file mode 100644
index 00000000..0726f355
--- /dev/null
+++ b/xsd/SMPTE-429-16.xsd
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata" xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL" xmlns:meta="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL"/>
+ <xs:element name="CompositionMetadataAsset" type="meta:CompositionMetadataAssetType"/>
+ <xs:complexType name="CompositionMetadataAssetType">
+ <xs:complexContent>
+ <xs:extension base="cpl:GenericAssetType">
+ <xs:sequence>
+ <xs:element name="FullContentTitleText" type="cpl:UserText"/>
+ <xs:element minOccurs="0" name="ReleaseTerritory">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute default="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata#scope/release-territory/UNM49" name="scope" type="xs:anyURI"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element default="1" minOccurs="0" name="VersionNumber">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:nonNegativeInteger">
+ <xs:attribute default="final" name="status" type="meta:StatusEnum"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" name="Chain" type="xs:string"/>
+ <xs:element minOccurs="0" name="Distributor" type="xs:string"/>
+ <xs:element minOccurs="0" name="Facility" type="xs:string"/>
+ <xs:element minOccurs="0" name="AlternateContentVersionList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="1" name="ContentVersion" type="cpl:ContentVersionType"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" name="Luminance">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="meta:PositiveDecimal">
+ <xs:attribute name="units" type="meta:LuminanceUnitEnum" use="required"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" name="MainSoundConfiguration" type="xs:string"/>
+ <xs:element minOccurs="1" name="MainSoundSampleRate" type="cpl:Rational"/>
+ <xs:element minOccurs="1" name="MainPictureStoredArea">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Width" type="xs:positiveInteger"/>
+ <xs:element name="Height" type="xs:positiveInteger"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="1" name="MainPictureActiveArea">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Width" type="xs:positiveInteger"/>
+ <xs:element name="Height" type="xs:positiveInteger"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element minOccurs="0" name="MainSubtitleLanguageList">
+ <xs:simpleType>
+ <xs:restriction base="meta:LanguageListType">
+ <xs:minLength value="1"/>
+ </xs:restriction>
+ </xs:simpleType>
+ </xs:element>
+ <xs:element minOccurs="0" name="ExtensionMetadataList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" minOccurs="0" name="ExtensionMetadata" type="meta:ExtensionMetadataType"> </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:simpleType name="StatusEnum">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="final"/>
+ <xs:enumeration value="temp"/>
+ <xs:enumeration value="pre"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="LuminanceUnitEnum">
+ <xs:restriction base="xs:token">
+ <xs:enumeration value="foot-lambert"/>
+ <xs:enumeration value="candela-per-square-metre"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="PositiveDecimal">
+ <xs:restriction base="xs:decimal">
+ <xs:minExclusive value="0"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:simpleType name="LanguageListType">
+ <xs:restriction>
+ <xs:simpleType>
+ <xs:list itemType="xs:language"/>
+ </xs:simpleType>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="ExtensionMetadataType">
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element minOccurs="0" name="PropertyList">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element maxOccurs="unbounded" name="Property">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Value" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other" processContents="lax"/>
+ </xs:sequence>
+ <xs:attribute name="scope" type="xs:anyURI" use="required"/>
+ </xs:complexType>
+</xs:schema>
diff --git a/xsd/SMPTE-429-7-2006-CPL.xsd b/xsd/SMPTE-429-7-2006-CPL.xsd
index 0d2c48df..1b36f5c6 100644
--- a/xsd/SMPTE-429-7-2006-CPL.xsd
+++ b/xsd/SMPTE-429-7-2006-CPL.xsd
@@ -96,7 +96,7 @@
<xs:element name="MainPicture" type="cpl:PictureTrackFileAssetType" minOccurs="0"/>
<xs:element name="MainSound" type="cpl:SoundTrackFileAssetType" minOccurs="0"/>
<xs:element name="MainSubtitle" type="cpl:SubtitleTrackFileAssetType" minOccurs="0"/>
- <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
+ <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="strict" />
</xs:sequence>
</xs:complexType>
</xs:element>