[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&amp;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