2006-10-02 18:22:13 -04:00
<?xml version='1.0' encoding='UTF-8'?>
2006-10-04 14:02:04 -04:00
< !DOCTYPE xep SYSTEM 'xep.dtd' [
<!ENTITY % ents SYSTEM 'xep.ent'>
2006-10-02 18:22:13 -04:00
%ents;
]>
2006-10-04 14:02:04 -04:00
<?xml-stylesheet type='text/xsl' href='xep.xsl'?>
<xep >
2006-10-02 18:22:13 -04:00
<header >
<title > Jingle Video Content Description Format</title>
<abstract > This document defines a content description format for Jingle video sessions.</abstract>
&LEGALNOTICE;
<number > 0180</number>
<status > Experimental</status>
<type > Standards Track</type>
<jig > Standards JIG</jig>
<approver > Council</approver>
<dependencies >
<spec > XMPP Core</spec>
2006-10-04 14:02:04 -04:00
<spec > XEP-0166</spec>
2006-10-02 18:22:13 -04:00
</dependencies>
<supersedes />
<supersededby />
2006-12-21 16:25:58 -05:00
<shortname > TO BE ASSIGNED</shortname>
2006-10-02 18:22:13 -04:00
&stpeter;
<author >
<firstname > Milton</firstname>
<surname > Chen</surname>
<email > Milton.Chen@vseelab.com</email>
</author>
2006-12-21 16:25:58 -05:00
<revision >
<version > 0.4</version>
<date > 2006-12-21</date>
<initials > psa</initials>
<remark > <p > Modified spec to use provisional namespace before advancement to Draft (per XEP-0053).</p> </remark>
</revision>
2006-10-02 18:22:13 -04:00
<revision >
<version > 0.3</version>
<date > 2006-08-23</date>
<initials > psa</initials>
2006-10-04 14:02:04 -04:00
<remark > <p > Modified namespace to track XEP-0166.</p> </remark>
2006-10-02 18:22:13 -04:00
</revision>
<revision >
<version > 0.2</version>
<date > 2006-07-12</date>
<initials > psa</initials>
<remark > <p > Updated to use content type instead of media type.</p> </remark>
</revision>
<revision >
<version > 0.1</version>
<date > 2006-03-23</date>
<initials > psa/mc</initials>
2006-10-04 14:02:04 -04:00
<remark > <p > Initial version.</p> </remark>
2006-10-02 18:22:13 -04:00
</revision>
<revision >
<version > 0.0.1</version>
<date > 2006-03-20</date>
<initials > psa/mc</initials>
<remark > <p > First draft.</p> </remark>
</revision>
</header>
<section1 topic= 'Introduction' anchor= 'intro' >
2006-10-04 14:02:04 -04:00
<p > &xep0166; can be used to initiate and negotiate a wide range of peer-to-peer sessions. One session type of interest is video exchange. This document specifies a format for describing Jingle video sessions.</p>
2006-10-02 18:22:13 -04:00
</section1>
<section1 topic= 'Requirements' anchor= 'reqs' >
<p > The Jingle content description format defined herein is designed to meet the following requirements:</p>
<ol >
<li > Enable negotiation of parameters necessary for video exchange.</li>
<li > Map these parameters to Session Description Protocol (SDP; see &rfc4566; ) to enable interoperability.</li>
<li > Define informational messages related to video exchange chat.</li>
</ol>
</section1>
<section1 topic= 'Content Description Format' anchor= 'format' >
<p > A Jingle video session is described by one or more encodings contained within a wrapper &DESCRIPTION; element. In the language of <cite > RFC 4566</cite> these encodings are payload-types; therefore, each < payload-type/> child element specifies an encoding that can be used for the video stream. Such encodings are often used in the context of the Real-time Transfer Protocol (RTP; see &rfc3550; ) but may be used in other contexts as well. The most common encodings for the Audio/Video Profile (AVP) of RTP are listed in &rfc3551; (these "static" types are reserved from payload ID 0 through payload ID 96), although other encodings are allowed (these "dynamic" types use payload IDs 97 to 127) in accordance with the dynamic assignment rules described in Section 3 of <cite > RFC 3551</cite> . The &PAYLOADTYPE; element's 'id' attribute is REQUIRED and its 'name' attribute is RECOMMENDED. The encodings SHOULD be provided in order of preference.</p>
<example caption= "Video Description Format" > < ![CDATA[
2006-12-21 16:25:58 -05:00
<description xmlns= 'http://www.xmpp.org/extensions/xep-0166.html#ns/description/video' >
2006-10-02 18:22:13 -04:00
<payload-type id= '18' name= 'G729' />
<payload-type id= '97' name= 'IPCMWB' />
<payload-type id= '98' name= 'L16' transparent= 'true' />
<payload-type id= '13' name= 'CN' />
</description>
]]></example>
2006-10-04 14:02:04 -04:00
<p > The &DESCRIPTION; element is intended to be a child of a &JINGLE; element as specified in <cite > XEP-0166</cite> .</p>
2006-10-02 18:22:13 -04:00
<p > The defined attributes of the &PAYLOADTYPE; element are as follows:</p>
<table caption= 'Video Description Attributes' >
<tr >
<th > Attribute</th>
<th > Description</th>
<th > Datatype/Units</th>
</tr>
<tr >
<td > channels</td>
<td > The number of channels (e.g., 2 for stereoscopic video)</td>
<td > positiveInteger (defaults to 1)</td>
</tr>
<tr >
<td > height</td>
<td > The vertical extent of the displayed video, in pixels</td>
<td > positiveInteger</td>
</tr>
<tr >
<td > id</td>
<td > A unique identifier for the payload type</td>
<td > positiveInteger</td>
</tr>
<tr >
<td > layer</td>
<td > The relationship of a layer to the "bottom" of the stack, where 0 = bottom (the first layer)</td>
<td > nonNegativeInteger</td>
</tr>
<tr >
<td > name</td>
<td > A name for the payload type</td>
<td > string</td>
</tr>
<tr >
<td > transparent</td>
<td > Whether or not a layer is transparent</td>
<td > boolean</td>
</tr>
<tr >
<td > width</td>
<td > The horizontal extent of the displayed video, in pixels</td>
<td > positiveInteger</td>
</tr>
<tr >
<td > x</td>
<td > The horizontal starting point of a tile, in pixels from the origin point</td>
<td > positiveInteger</td>
</tr>
<tr >
<td > y</td>
<td > The vertical starting point of a tile, in pixels from the origin point</td>
<td > positiveInteger</td>
</tr>
</table>
</section1>
<section1 topic= 'Mapping to Session Description Protocol' anchor= 'sdp' >
<p > To follow.</p>
</section1>
<section1 topic= 'Service Discovery' anchor= 'disco' >
2006-12-21 16:25:58 -05:00
<p > If an entity supports the Jingle video content description format, it MUST advertise that fact by returning a feature of "http://www.xmpp.org/extensions/xep-0166.html#ns/description/video" in response to &xep0030; information requests.</p>
2006-10-02 18:22:13 -04:00
<example caption= "Service Discovery Information Request" > < ![CDATA[
<iq from= 'romeo@montague.net/orchard'
id='disco1'
to='juliet@capulet.com/balcony'
type='get'>
<query xmlns= 'http://jabber.org/protocol/disco#info' />
</iq>
]]></example>
<example caption= "Service Discovery Information Response" > < ![CDATA[
<iq from= 'juliet@capulet.com/balcony'
id='disco1'
to='romeo@montague.net/orchard'
type='result'>
<query xmlns= 'http://jabber.org/protocol/disco#info' >
...
2006-12-21 16:25:58 -05:00
<feature var= 'http://www.xmpp.org/extensions/xep-0166.html#ns' />
<feature var= 'http://www.xmpp.org/extensions/xep-0166.html#ns/description/video' />
2006-10-02 18:22:13 -04:00
...
</query>
</iq>
]]></example>
</section1>
<section1 topic= 'Informational Messages' anchor= 'info' >
2006-12-21 16:25:58 -05:00
<p > Informational messages may be sent by either party within the context of Jingle to communicate the status of a Jingle video session, device, or principal. The informational message MUST be an IQ-set containing a &JINGLE; element of type "content-info", where the informational message is a payload element qualified by the 'http://www.xmpp.org/extensions/xep-0166.html#ns/info/video' namespace. No payload elements have yet been defined, but will be specified in a future version of this document.</p>
2006-10-02 18:22:13 -04:00
</section1>
<section1 topic= 'Implementation Notes' anchor= 'impl' >
<section2 topic= 'Codecs' anchor= 'impl-codecs' >
<p > Support for the Theora codec <note > See < <link url= 'http://www.theora.org/' > http://www.theora.org/</link> > .</note> is RECOMMENDED.</p>
</section2>
</section1>
<section1 topic= 'Security Considerations' anchor= 'security' >
<p > The description of a format for video sessions introduces no known security vulnerabilities.</p>
</section1>
<section1 topic= 'IANA Considerations' anchor= 'iana' >
2006-10-04 14:02:04 -04:00
<p > This document requires no interaction with &IANA; .</p>
2006-10-02 18:22:13 -04:00
</section1>
2006-10-04 14:02:04 -04:00
<section1 topic= 'XMPP Registrar Considerations' anchor= 'registrar' >
2006-12-21 16:25:58 -05:00
<section2 topic= 'Protocol Namespaces' anchor= 'ns' >
<p > Until this specification advances to a status of Draft, its associated namespaces shall be "http://www.xmpp.org/extensions/xep-0180.html#ns" and "http://www.xmpp.org/extensions/xep-0180.html#ns-info"; upon advancement of this specification, the ®ISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053; .</p>
2006-10-02 18:22:13 -04:00
</section2>
<section2 topic= 'Jingle Content Description Formats' anchor= 'registrar-content' >
2006-12-21 16:25:58 -05:00
<p > The XMPP Registrar shall include "video" in its registry of Jingle content description formats. The registry submission is as follows:</p>
2006-10-02 18:22:13 -04:00
<code > < ![CDATA[
<content >
<name > video</name>
<desc > Jingle sessions that support video exchanges</desc>
2006-12-21 16:25:58 -05:00
<doc > XEP-0180</doc>
2006-10-02 18:22:13 -04:00
</content>
]]></code>
</section2>
</section1>
<section1 topic= 'XML Schemas' anchor= 'schema' >
<section2 topic= 'Content Description Format' anchor= 'schema-content' >
<code > < ![CDATA[
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
2006-12-21 16:25:58 -05:00
targetNamespace='http://www.xmpp.org/extensions/xep-0166.html#ns/description/video'
xmlns='http://www.xmpp.org/extensions/xep-0166.html#ns/description/video'
2006-10-02 18:22:13 -04:00
elementFormDefault='qualified'>
<xs:element name= 'description' >
<xs:complexType >
<xs:sequence >
<xs:element ref= 'payload-type' minOccurs= '0' maxOccurs= 'unbounded' />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name= 'payload-type' >
<xs:complexType >
<xs:simpleContent >
<xs:extension base= 'empty' >
<xs:attribute name= 'channels' type= 'xs:integer' use= 'optional' default= '1' />
<xs:attribute name= 'height' type= 'xs:nonNegativeInteger' use= 'optional' />
<xs:attribute name= 'id' type= 'xs:unsignedByte' use= 'required' />
<xs:attribute name= 'layer' type= 'xs:nonNegativeInteger' use= 'optional' />
<xs:attribute name= 'name' type= 'xs:string' use= 'optional' />
<xs:attribute name= 'rate' type= 'xs:short' use= 'optional' />
<xs:attribute name= 'transparent' type= 'xs:boolean' use= 'optional' />
<xs:attribute name= 'width' type= 'xs:nonNegativeInteger' use= 'optional' />
<xs:attribute name= 'x' type= 'xs:integer' use= 'optional' />
<xs:attribute name= 'y' type= 'xs:integer' use= 'optional' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:simpleType name= 'empty' >
<xs:restriction base= 'xs:string' >
<xs:enumeration value= '' />
</xs:restriction>
</xs:simpleType>
</xs:schema>
]]></code>
</section2>
<section2 topic= 'Informational Messages' anchor= 'schema-info' >
<p > To follow.</p>
</section2>
</section1>
2006-10-04 14:02:04 -04:00
</xep>