[xiph-commits] r3441 - in standards: . roe roe/examples
silvia at svn.annodex.net
silvia at svn.annodex.net
Sun Feb 10 06:04:47 PST 2008
Author: silvia
Date: 2008-02-10 06:04:46 -0800 (Sun, 10 Feb 2008)
New Revision: 3441
Added:
standards/roe/
standards/roe/examples/
standards/roe/examples/roe_example1.xml
standards/roe/examples/roe_example2.xml
standards/roe/examples/roe_example3.xml
standards/roe/roe_1_0.xsd
Modified:
standards/cmml_4_0.xsd
Log:
First version of ROE (or whatever else it will eventually be called).
ROE = Rich Open multitrack media Encapsulation
It is a XML description of how multitrack media files are composed together.
More on this at http://wiki.annodex.net/wiki/MovieDescriptionLanguage
Feedback welcome!
Also made some corrections to CMML4.0 spec.
Modified: standards/cmml_4_0.xsd
===================================================================
--- standards/cmml_4_0.xsd 2008-02-09 23:17:15 UTC (rev 3440)
+++ standards/cmml_4_0.xsd 2008-02-10 14:04:46 UTC (rev 3441)
@@ -13,6 +13,7 @@
CMML is a language to describe a timed text track, i.e. a timed text codec.
Namespace = http://www.annodex.org/cmml4.0
+ XHTML1 can be found here: http://www.w3.org/TR/xhtml1-schema/
For further information, see: http://www.annodex.net/
@@ -60,21 +61,20 @@
<xs:simpleType name="Timestamp">
<xs:annotation>
<xs:documentation>
- timestamps similar to [RFC2326]
+ timestamps similar to [RFC2326]
+ "smpte-24:" SMPTE time with a 24 fps basis
+ "smpte-24-drop:" SMPTE time with a 24/1.001 fps basis
+ "smpte-25:" SMPTE time with a 25 fps basis
+ "smpte-30:" SMPTE time with a 30 fps basis
+ "smpte-30-drop:" SMPTE time with a 30/1.001 fps basis
+ "smpte-50:" SMPTE time with a 50 fps basis
+ "smpte-60:" SMPTE time with a 60 fps basis
+ "smpte-60-drop:" SMPTE time with a 60/1.001 fps basis
+ "npt:" npt-time
+ "clock:" utc-time
</xs:documentation>
</xs:annotation>
- <xs:restriction base="xs:token">
- <xs:enumeration value="smpte-24:"/>
- <xs:enumeration value="smpte-24-drop:"/>
- <xs:enumeration value="smpte-25:"/>
- <xs:enumeration value="smpte-30:"/>
- <xs:enumeration value="smpte-30-drop:"/>
- <xs:enumeration value="smpte-50:"/>
- <xs:enumeration value="smpte-60:"/>
- <xs:enumeration value="smpte-60-drop:"/>
- <xs:enumeration value="npt:"/>
- <xs:enumeration value="clock:"/>
- </xs:restriction>
+ <xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="Playbacktime">
@@ -93,17 +93,7 @@
no clock time
</xs:documentation>
</xs:annotation>
- <xs:restriction base="xs:token">
- <xs:enumeration value="smpte-24:"/>
- <xs:enumeration value="smpte-24-drop:"/>
- <xs:enumeration value="smpte-25:"/>
- <xs:enumeration value="smpte-30:"/>
- <xs:enumeration value="smpte-30-drop:"/>
- <xs:enumeration value="smpte-50:"/>
- <xs:enumeration value="smpte-60:"/>
- <xs:enumeration value="smpte-60-drop:"/>
- <xs:enumeration value="npt:"/>
- </xs:restriction>
+ <xs:restriction base="xs:string" />
</xs:simpleType>
<xs:simpleType name="UTCtime">
@@ -184,10 +174,10 @@
</xs:documentation>
</xs:annotation>
<xs:complexType>
- <xs:all>
- <xs:element ref="title" minOccurs="0" maxOccurs="1"/>
- <xs:element ref="img" minOccurs="0" maxOccurs="1"/>
- <xs:element ref="base" minOccurs="0" maxOccurs="1"/>
+ <xs:all minOccurs="0">
+ <xs:element ref="title" />
+ <xs:element ref="img" />
+ <xs:element ref="base" />
</xs:all>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="style"/>
@@ -410,15 +400,13 @@
</xs:documentation>
</xs:annotation>
<xs:complexType mixed="true">
- <xs:complexContent>
- <xs:attributeGroup ref="attrs"/>
- <xs:attribute name="href" type="html:URI"/>
- <xs:attribute name="hreflang" type="html:LanguageCode"/>
- <xs:attribute name="rel" type="html:LinkTypes"/>
- <xs:attribute name="rev" type="html:LinkTypes"/>
- <xs:attribute name="target" type="html:FrameTarget"/>
- <xs:attribute name="type" type="html:ContentType"/>
- </xs:complexContent>
+ <xs:attributeGroup ref="attrs"/>
+ <xs:attribute name="href" type="html:URI"/>
+ <xs:attribute name="hreflang" type="html:LanguageCode"/>
+ <xs:attribute name="rel" type="html:LinkTypes"/>
+ <xs:attribute name="rev" type="html:LinkTypes"/>
+ <xs:attribute name="target" type="html:FrameTarget"/>
+ <xs:attribute name="type" type="html:ContentType"/>
</xs:complexType>
</xs:element>
Added: standards/roe/examples/roe_example1.xml
===================================================================
--- standards/roe/examples/roe_example1.xml (rev 0)
+++ standards/roe/examples/roe_example1.xml 2008-02-10 14:04:46 UTC (rev 3441)
@@ -0,0 +1,22 @@
+<ROE>
+ <head>
+ <link rel="alternate" type="text/html" href="http://example.com/complete_video.html" />
+ </head>
+ <body>
+ <track id="v" provides="video">
+ <seq>
+ <video id="v0" src="http://example.com/video.ogv" content-type="video/ogg" />
+ <video id="v1" src="http://example.com/theora.ogv?track=v1" content-type="video/theora" />
+ </seq>
+ </track>
+ <track id="a" provides="audio">
+ <audio id="a1" src="http://example.com/theora.ogv?track=a1" content-type="audio/vorbis" />
+ </track>
+ <track id="t" provides="caption">
+ <text src="http://example.com/cmml1.cmml" content-type="text/cmml" />
+ </track>
+ <track id="t2" provides="ticker">
+ <text src="http://example.com/cmml2.cmml" content-type="text/cmml" />
+ </track>
+ </body>
+</ROE>
\ No newline at end of file
Added: standards/roe/examples/roe_example2.xml
===================================================================
--- standards/roe/examples/roe_example2.xml (rev 0)
+++ standards/roe/examples/roe_example2.xml 2008-02-10 14:04:46 UTC (rev 3441)
@@ -0,0 +1,44 @@
+<ROE>
+ <head>
+ <link rel="alternate" type="text/html" href="http://example.com/complete_video.html" />
+ </head>
+ <body>
+ <track id="v" provides="video">
+ <seq>
+ <video id="v0" src="http://example.com/video.ogv" content-type="video/ogg" />
+ <video id="v1" src="http://example.com/theora.ogv?track=v1" content-type="video/theora" />
+ </seq>
+ </track>
+ <track id="a" provides="audio">
+ <audio id="a1" src="http://example.com/theora.ogv?track=a1" content-type="audio/vorbis" />
+ </track>
+ <track id="t1" provides="caption">
+ <text src="http://example.com/cmml1.cmml" content-type="text/cmml" >
+ <cmml role="caption" xmlns:cmml="http://www.annodex.org/spec/cmml/cmml40">
+ <cmml:head>
+ <cmml:title>random 1</cmml:title>
+ </cmml:head>
+ <cmml:clip start="t1" end="t2">
+ <cmml:body>
+ <html:p><html:span>rillian:</html:span>FOMS rocks</html:p>
+ </cmml:body>
+ </cmml:clip>
+ </cmml>
+ </text>
+ </track>
+ <track id="t2" provides="ticker">
+ <text src="http://example.com/cmml2.cmml" content-type="text/cmml" >
+ <cmml role="ticker" xmlns:cmml="http://www.annodex.org/spec/cmml/cmml40">
+ <cmml:head>
+ <cmml:title>random 2</cmml:title>
+ </cmml:head>
+ <cmml:clip start="t1" end="t2">
+ <cmml:body>
+ <html:p>The US stock market is down like usual.</html:p>
+ </cmml:body>
+ </cmml:clip>
+ </cmml>
+ </text>
+ </track>
+ </body>
+</ROE>
\ No newline at end of file
Added: standards/roe/examples/roe_example3.xml
===================================================================
--- standards/roe/examples/roe_example3.xml (rev 0)
+++ standards/roe/examples/roe_example3.xml 2008-02-10 14:04:46 UTC (rev 3441)
@@ -0,0 +1,60 @@
+<ROE>
+ <head>
+ <profile name="director's cut">
+ <partial track="v" select="v1" />
+ <partial track="a" />
+ </profile>
+ </head>
+ <body>
+ <track id="v" provides="video">
+ <switch distinction="angle">
+ <video id="v1" content-type="video/theora"
+ src="http://example.com/angle1.ogv?track=v1&t=t1/t2" />
+ <video id="v2" content-type="video/theora" src="http://example.com/angle2.ogv" />
+ </switch>
+ </track>
+ <track id="a" provides="audio">
+ <switch distinction="language">
+ <switch distinction="bitrate">
+ <audio id="a1b1" lang="en" content-type="audio/vorbis"
+ src="http://example.com/lang1b1.oga" />
+ <audio id="a1b2" lang="en" content-type="audio/vorbis"
+ src="http://example.com/lang1b2.oga" />
+ </switch>
+ <audio id="a2" lang="de" content-type="audio/vorbis"
+ src="http://example.com/lang2.oga" />
+ <seq>
+ <audio id="a3" lang="fr" content-type="audio/vorbis"
+ src="http://example.com/lang3.oga" />
+ <audio id="a4" lang="fr" content-type="audio/vorbis"
+ src="http://example.com/lang3a.org" />
+ </seq>
+ </switch>
+ </track>
+ <track id="t" provides="text overlay">
+ <switch distinction="language">
+ <text id="t1" lang="en" content-type="text/cmml"
+ src="http://example.com/transcript1.cmml" />
+ <text id="t2" lang="de" content-type="text/cmml"
+ src="http://example.com/transcript2.cmml" />
+ <text id="t3" lang="fr" content-type="text/cmml"
+ src="http://example.com/transcript3.cmml" />
+ </switch>
+ </track>
+ <track id="cc" provides="closed caption">
+ <switch distinction="language">
+ <text id="cc1" lang="en" content-type="text/cmml" src="http://example.com/cc1.cmml" />
+ <text id="cc2" lang="de" content-type="text/cmml" src="http://example.com/cc2.cmml" />
+ <text id="cc3" lang="fr" content-type="text/cmml" src="http://example.com/cc3.cmml" />
+ </switch>
+ </track>
+ <track id="l" provides="logo">
+ <seq>
+ <video id="O1" content-type="application/ogg"
+ src="http://example.com/mng.ogx?track=1" />
+ <video id="O2" content-type="application/ogg"
+ src="http://example.com/mng.ogx?track=2" />
+ </seq>
+ </track>
+ </body>
+</ROE>
\ No newline at end of file
Added: standards/roe/roe_1_0.xsd
===================================================================
--- standards/roe/roe_1_0.xsd (rev 0)
+++ standards/roe/roe_1_0.xsd 2008-02-10 14:04:46 UTC (rev 3441)
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<xs:schema version="1.0" xml:lang="en"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.xiph.org/roe"
+ xmlns="http://www.xiph.org/roe"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ elementFormDefault="qualified">
+
+ <xs:annotation>
+ <xs:documentation>
+ ROE - Rich Open multitrack media Encapsulation
+ Draft Version 1.0 in XML Schema
+ (very draft - might become a SMIL profile...)
+
+ ROE is a xml description format for multitrack media files
+
+ Namespace = http://www.xiph.org/roe1.0
+ XHTML1.0 can be found here: http://www.w3.org/TR/xhtml1-schema/
+ SMIL2.1 can be found here: http://www.w3.org/TR/SMIL2/smil-DTD.html
+ (SMIL3 DTD or Schema don't exist yet)
+
+ For further information, see: http://www.annodex.net/
+
+ Copyright (c) 2008- Annodex Association, Xiph.Org.
+ All Rights Reserved.
+
+ $Revision: 1.0 $
+ $Date$
+ $Id: roe_1_0.xsd 2008/02/01 13:00:00 ginger $
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:import namespace="http://www.w3.org/1999/xhtml"
+ schemaLocation="http://www.w3.org/2002/08/xhtml/xhtml1-strict.xsd"/>
+
+ <xs:annotation>
+ <xs:documentation>
+ ================== Simple Types ====================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ Simple Types in use in this XML schema and inherited from xhtml:
+ html:title
+ html:link
+ html:meta
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:simpleType name="TrackId">
+ <xs:annotation>
+ <xs:documentation>
+ Reference to an ID tag of a track element.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="MediaId">
+ <xs:annotation>
+ <xs:documentation>
+ Reference to an ID tag of a media element such as video, audio, text.
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+
+ <xs:simpleType name="Timestamp">
+ <xs:annotation>
+ <xs:documentation>
+ timestamps similar to [RFC2326]
+ "smpte-24:" SMPTE time with a 24 fps basis
+ "smpte-24-drop:" SMPTE time with a 24/1.001 fps basis
+ "smpte-25:" SMPTE time with a 25 fps basis
+ "smpte-30:" SMPTE time with a 30 fps basis
+ "smpte-30-drop:" SMPTE time with a 30/1.001 fps basis
+ "smpte-50:" SMPTE time with a 50 fps basis
+ "smpte-60:" SMPTE time with a 60 fps basis
+ "smpte-60-drop:" SMPTE time with a 60/1.001 fps basis
+ "npt:" npt-time
+ </xs:documentation>
+ </xs:annotation>
+ <xs:restriction base="xs:string" />
+ </xs:simpleType>
+
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Generic Attributes ===============================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ attribute groups in use in this XML schema and inherited from xhtml:
+ html:coreattrs
+ html:i18n
+ html:attrs
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Document Structure ===============================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Root Element ===============================
+ roe tag containing sequence of one head and one body tag
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="roe">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="head"/>
+ <xs:element ref="body"/>
+ </xs:sequence>
+ <xs:attributeGroup ref="html:i18n"/>
+ <xs:attribute name="id" type="xs:ID"/>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Document Head ===============================
+ head tag containing description of a specific timed text track
+ i18n = the base language of the head's attribute values and text
+ content
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="head">
+ <xs:complexType>
+ <xs:all minOccurs="0">
+ <xs:element ref="html:title"/>
+ <xs:element ref="html:link" maxOccurs="unbounded" />
+ <xs:element ref="html:meta" maxOccurs="unbounded" />
+ <xs:element ref="html:base" />
+ <xs:element ref="profile" maxOccurs="unbounded" />
+ </xs:all>
+ <xs:attributeGroup ref="html:i18n"/>
+ <xs:attribute name="id" type="xs:ID" use="optional"/>
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Profile Element ===============================
+ Profile defines a list of references to the tracks of a media resource
+ and possibly a selection from the alternative media sources of the trac,
+ to use for a particular pre-defined profile of the resource
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="profile">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="partial" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID" use="optional" />
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="partial">
+ <xs:complexType>
+ <xs:attribute name="track" type="TrackId" use="required" />
+ <xs:attribute name="select" type="MediaId" use="optional" />
+ <xs:attribute name="id" type="xs:ID" use="required" />
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Document Body ====================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="body">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="track" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="id" type="xs:ID" use="optional" />
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Track Element ====================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="track">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="switch" />
+ <xs:element ref="seq" minOccurs="0" />
+ </xs:sequence>
+ <xs:attribute name="provides" type="xs:string" use="required" />
+ <xs:attribute name="id" type="xs:ID" use="required" />
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Seq Element ====================================
+ Seq element encapsulates a sequence of media surces
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="seq">
+ <xs:complexType>
+ <xs:choice>
+ <xs:group ref="mediaSource" />
+ </xs:choice>
+ <xs:attribute name="id" type="xs:ID" use="optional" />
+ <xs:attribute name="start" type="Timestamp"/>
+ <xs:attribute name="end" type="Timestamp"/>
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Switch Element ====================================
+ Switch between alternates, distinguished for a specific reason
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="switch">
+ <xs:complexType>
+ <xs:choice>
+ <xs:group ref="mediaSource" />
+ <xs:element ref="seq" />
+ <xs:element ref="switch" />
+ </xs:choice>
+ <xs:attribute name="distinction" type="xs:string" use="required" />
+ <xs:attribute name="id" type="xs:ID" use="required" />
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+
+
+ <xs:annotation>
+ <xs:documentation>
+ =================== Media Sources ====================================
+ </xs:documentation>
+ </xs:annotation>
+
+ <xs:element name="mediaSource">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="param" minOccurs="0" maxOccurs="unbounded" />
+ </xs:sequence>
+ <xs:attribute name="content-type" type="xs:string" use="required" fixed="audio/vorbis" />
+ <xs:attribute name="src" type="xs:string" use="required" />
+ <xs:attributeGroup ref="html:i18n" />
+ <xs:attribute name="id" type="xs:ID" use="required" />
+ <xs:attribute name="start" type="Timestamp"/>
+ <xs:attribute name="end" type="Timestamp"/>
+ <xs:attribute name="title" type="xs:string"/>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="param">
+ <xs:complexType>
+ <xs:attribute name="id" type="xs:ID" use="optional" />
+ <xs:attribute name="name" type="xs:string" use="required" />
+ <xs:attribute name="value" type="xs:string" use="required" />
+ </xs:complexType>
+ </xs:element>
More information about the commits
mailing list