<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE xep SYSTEM 'xep.dtd' [ <!ENTITY % ents SYSTEM 'xep.ent'> %ents; ]> <?xml-stylesheet type='text/xsl' href='xep.xsl'?> <xep> <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> <sig>Standards</sig> <approver>Council</approver> <dependencies> <spec>XMPP Core</spec> <spec>XEP-0166</spec> </dependencies> <supersedes/> <supersededby/> <shortname>TO BE ASSIGNED</shortname> &stpeter; <author> <firstname>Milton</firstname> <surname>Chen</surname> <email>Milton.Chen@vseelab.com</email> </author> <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> <revision> <version>0.3</version> <date>2006-08-23</date> <initials>psa</initials> <remark><p>Modified namespace to track XEP-0166.</p></remark> </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> <remark><p>Initial version.</p></remark> </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'> <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> </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[ <description xmlns='http://www.xmpp.org/extensions/xep-0166.html#ns/description/video'> <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> <p>The &DESCRIPTION; element is intended to be a child of a &JINGLE; element as specified in <cite>XEP-0166</cite>.</p> <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'> <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> <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'> ... <feature var='http://www.xmpp.org/extensions/xep-0166.html#ns'/> <feature var='http://www.xmpp.org/extensions/xep-0166.html#ns/description/video'/> ... </query> </iq> ]]></example> </section1> <section1 topic='Informational Messages' anchor='info'> <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> </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'> <p>This document requires no interaction with &IANA;.</p> </section1> <section1 topic='XMPP Registrar Considerations' anchor='registrar'> <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> </section2> <section2 topic='Jingle Content Description Formats' anchor='registrar-content'> <p>The XMPP Registrar shall include "video" in its registry of Jingle content description formats. The registry submission is as follows:</p> <code><![CDATA[ <content> <name>video</name> <desc>Jingle sessions that support video exchanges</desc> <doc>XEP-0180</doc> </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' targetNamespace='http://www.xmpp.org/extensions/xep-0166.html#ns/description/video' xmlns='http://www.xmpp.org/extensions/xep-0166.html#ns/description/video' 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> </xep>