mirror of https://github.com/moparisthebest/xeps
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
559 lines
27 KiB
559 lines
27 KiB
<?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 via RTP</title> |
|
<abstract> |
|
Note: This specification has been retracted in favor of XEP-0167, which now |
|
consolidates both audio and video chat via RTP and therefore contains the |
|
content originally published in this specification; please refer to XEP-0167 |
|
for the most up-to-date definition of XMPP video chat. |
|
|
|
This specification defines a Jingle application type for negotiating a video |
|
chat or other video session. |
|
The application type uses the Real-time Transport Protocol (RTP) for the |
|
underlying media exchange and provides a straightforward mapping to Session |
|
Description Protocol (SDP) for interworking with SIP media endpoints. |
|
</abstract> |
|
&LEGALNOTICE; |
|
<number>0180</number> |
|
<status>Retracted</status> |
|
<type>Standards Track</type> |
|
<sig>Standards</sig> |
|
<approver>Council</approver> |
|
<dependencies> |
|
<spec>XMPP Core</spec> |
|
<spec>XEP-0166</spec> |
|
</dependencies> |
|
<supersedes/> |
|
<supersededby> |
|
<spec>XEP-0167</spec> |
|
</supersededby> |
|
<shortname>NOT_YET_ASSIGNED</shortname> |
|
&stpeter; |
|
<author> |
|
<firstname>Milton</firstname> |
|
<surname>Chen</surname> |
|
<email>Milton.Chen@vseelab.com</email> |
|
</author> |
|
<revision> |
|
<version>0.13</version> |
|
<date>2008-06-04</date> |
|
<initials>psa</initials> |
|
<remark><p>Retracted in favor of XEP-0167, which now consolidates both audio and video chat via RTP and therefore contains the content originally published in this specification.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.12</version> |
|
<date>2008-05-28</date> |
|
<initials>psa</initials> |
|
<remark><p>Specified default value for profile attribute; clarified relationship to SDP offer-answer model; moved some attributes from payload-type element to optional parameter elements.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.11</version> |
|
<date>2008-02-28</date> |
|
<initials>psa</initials> |
|
<remark><p>Moved profile attribute from XEP-0166 to this specification.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.10</version> |
|
<date>2007-11-27</date> |
|
<initials>psa</initials> |
|
<remark><p>Further editorial review.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.9</version> |
|
<date>2007-11-15</date> |
|
<initials>psa</initials> |
|
<remark><p>Editorial review and consistency check.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.8</version> |
|
<date>2007-05-23</date> |
|
<initials>psa</initials> |
|
<remark><p>Corrected examples to use video codecs; added clockrate attribute.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.7</version> |
|
<date>2007-05-23</date> |
|
<initials>psa</initials> |
|
<remark><p>More completely specified how to include SDP parameters and codec-specific parameters (same approach as in XEP-0167); added and corrected Theora examples.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.6</version> |
|
<date>2007-04-17</date> |
|
<initials>psa</initials> |
|
<remark><p>Specified Jingle conformance, including the need to use a lossy transport and the process of sending and receiving video content.</p></remark> |
|
</revision> |
|
<revision> |
|
<version>0.5</version> |
|
<date>2007-03-23</date> |
|
<initials>psa</initials> |
|
<remark><p>Added negotiation flow and SDP mapping; renamed to mention RTP as the associated transport; corrected negotiation flow to be consistent with SIP/SDP (each party specifies a list of the payload types it can receive); added profile attribute to content element in order to specify RTP profile in use.</p></remark> |
|
</revision> |
|
<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 class='box'><em>Note: This specification has been retracted in favor of &xep0167;, which now consolidates both audio and video chat via RTP and therefore contains the content originally published in this specification; please refer to XEP-0167 for the most up-to-date definition of XMPP video chat.</em></p> |
|
<p>&xep0166; can be used to initiate and negotiate a wide range of peer-to-peer sessions. One session type of interest is video chat. This document specifies a format for describing Jingle video sessions, where the media exchange occurs using the Real-time Transport Protocol (see &rfc3550;).</p> |
|
</section1> |
|
|
|
<section1 topic='Requirements' anchor='reqs'> |
|
<p>The Jingle application format defined herein is designed to meet the following requirements:</p> |
|
<ol> |
|
<li>Enable negotiation of parameters necessary for video chat.</li> |
|
<li>Map these parameters to the Session Description Protocol (SDP; see &rfc4566;) to enable interoperability.</li> |
|
<li>Define informational messages related to video chat.</li> |
|
</ol> |
|
</section1> |
|
|
|
<section1 topic='Jingle Conformance' anchor='conformance'> |
|
<p>In accordance with Section 8 of <cite>XEP-0166</cite>, this document specifies the following information related to the Jingle Video via RTP application type:</p> |
|
<ol> |
|
<li><p>The application format negotiation process is defined in the <link url='#negotiation'>Negotiating a Jingle Video Session</link> section of this document.</p></li> |
|
<li><p>The semantics of the &DESCRIPTION; element are defined in the <link url='#format'>Application Format</link> section of this document.</p></li> |
|
<li><p>A mapping of Jingle semantics to the Session Description Protocol is provided in the <link url='#sdp'>Mapping to Session Description Protocol</link> section of this document.</p></li> |
|
<li><p>A Jingle video session SHOULD use a lossy transport method such as &xep0177; or the "ice-udp" method specified in &xep0176;.</p></li> |
|
<li> |
|
<p>Content is to be sent and received as follows:</p> |
|
<ul> |
|
<li><p>Outbound video content shall be encoded into RTP packets and each packet shall be sent individually over the transport. Each inbound packet received over the transport is an RTP packet.</p></li> |
|
</ul> |
|
</li> |
|
</ol> |
|
</section1> |
|
|
|
<section1 topic='Application Format' anchor='format'> |
|
<p>A Jingle video session is described by a content type that contains one application format and one transport method. The application format consists of one or more encodings contained within a wrapper <description/> element qualified by the 'urn:xmpp:tmp:jingle:apps:video-rtp' namespace &NSNOTE;. In the language of <cite>RFC 4566</cite> each encoding is a payload-type; therefore, each <payload-type/> element specifies an encoding that can be used for the audio stream, as illustrated in the following example.</p> |
|
<example caption="Video description format"><![CDATA[ |
|
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp'> |
|
<payload-type id='96' name='theora' clockrate='90000'> |
|
<parameter name='height' value='720'/> |
|
<parameter name='width' value='1280'/> |
|
<parameter name='delivery-method' value='inline'/> |
|
<parameter name='configuration' value='somebase16string'/> |
|
<parameter name='sampling' value='YCbCr-4:2:2'/> |
|
</payload-type> |
|
<payload-type id='28' name='nv' clockrate='90000'/> |
|
<payload-type id='25' name='CelB' clockrate='90000'/> |
|
<payload-type id='32' name='MPV' clockrate='90000'/> |
|
</description> |
|
]]></example> |
|
<p>The &DESCRIPTION; element is intended to be a child of a &CONTENT; element as specified in <cite>XEP-0166</cite>.</p> |
|
<p>The &DESCRIPTION; element SHOULD possess a 'profile' attribute that specifies the profile of RTP in use as would be encapsulated in SDP (e.g., "RTP/AVP" or "UDP/TLS/RTP/SAVP"). If not included, the default value of "RTP/AVP" MUST be assumed.</p> |
|
<p>The encodings SHOULD be provided in order of preference by placing the most-preferred &PAYLOADTYPE; element as the first child of the &DESCRIPTION; element (etc.).</p> |
|
<p>The allowable attributes of the &PAYLOADTYPE; element are as follows:</p> |
|
<table caption='Payload-Type Attributes'> |
|
<tr> |
|
<th>Attribute</th> |
|
<th>Description</th> |
|
<th>Datatype/Units</th> |
|
<th>Inclusion</th> |
|
</tr> |
|
<tr> |
|
<td>channels</td> |
|
<td>The number of channels (e.g., 2 for stereoscopic video)</td> |
|
<td>positiveInteger (defaults to 1)</td> |
|
<td>OPTIONAL</td> |
|
</tr> |
|
<tr> |
|
<td>clockrate</td> |
|
<td>The sampling frequency in Hertz</td> |
|
<td>positiveInteger</td> |
|
<td>RECOMMENDED</td> |
|
</tr> |
|
<tr> |
|
<td>id</td> |
|
<td>A unique identifier for the payload type</td> |
|
<td>positiveInteger</td> |
|
<td>REQUIRED</td> |
|
</tr> |
|
<tr> |
|
<td>name</td> |
|
<td>A name for the payload type</td> |
|
<td>string</td> |
|
<td>RECOMMENDED for static payload types, REQUIRED for dynamic payload types</td> |
|
</tr> |
|
</table> |
|
<p>In Jingle Video, the encodings are used in the context of RTP. 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 95), although other encodings are allowed (these "dynamic" types use payload IDs 96 to 127) in accordance with the dynamic assignment rules described in Section 3 of <cite>RFC 3551</cite>. The payload IDs are represented in the 'id' attribute.</p> |
|
<p>Each <payload-type/> element MAY contain one or more child elements that specify particular parameters related to the payload. For example, as described in &rtptheora;, the "configuration", "configuration-uri", "delivery-method", "height", "sampling", and "width" parameters may be specified in relation to usage of the Theora <note>See <<link url='http://www.theora.org/'>http://www.theora.org/</link>>.</note> codec. Where such parameters are encoded via the "fmtp" SDP attribute, they shall be represented in Jingle via the following format:</p> |
|
<code><![CDATA[ |
|
<parameter name='foo' value='bar'/> |
|
]]></code> |
|
<p>Note: The parameter names are effectively guaranteed to be unique, since &IANA; maintains a registry of SDP parameters (see <<link url='http://www.iana.org/assignments/sdp-parameters'>http://www.iana.org/assignments/sdp-parameters</link>>).</p> |
|
</section1> |
|
|
|
<section1 topic='Negotiating a Jingle Video Session' anchor='negotiation'> |
|
<p>When the initiator sends a session-initiate stanza to the responder, the &DESCRIPTION; element includes all of the payload types that the initiator can send and/or receive for Jingle video, each one encapsulated in a separate &PAYLOADTYPE; element (the rules specified in &rfc3264; SHOULD be followed regarding inclusion of payload types).</p> |
|
<example caption="Initiation"><![CDATA[ |
|
<iq from='romeo@montague.net/orchard' |
|
to='juliet@capulet.com/balcony' |
|
id='jinglevideo1' |
|
type='set'> |
|
<jingle xmlns='urn:xmpp:tmp:jingle'> |
|
action='session-initiate' |
|
initiator='romeo@montague.net/orchard' |
|
sid='v1d30k1ll3dth3r4d10st4r'> |
|
<content content='initiator' name='this-is-the-video-content'> |
|
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'> |
|
<payload-type id='96' name='theora' clockrate='90000'> |
|
<parameter name='height' value='720'/> |
|
<parameter name='width' value='1280'/> |
|
<parameter name='delivery-method' value='inline'/> |
|
<parameter name='configuration' value='somebase16string'/> |
|
<parameter name='sampling' value='YCbCr-4:2:2'/> |
|
</payload-type> |
|
<payload-type id='28' name='nv' clockrate='90000'/> |
|
<payload-type id='25' name='CelB' clockrate='90000'/> |
|
<payload-type id='32' name='MPV' clockrate='90000'/> |
|
</description> |
|
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> |
|
</content> |
|
</jingle> |
|
</iq> |
|
]]></example> |
|
<p>Upon receiving the session-initiate stanza, the responder determines whether it can proceed with the negotiation. The general Jingle error cases are specified in <cite>XEP-0166</cite> and illustrated &xep0167;. In addition, the responder must determine if it supports any of the payload types advertised by the initiator; if it supports none of the offered payload types, it must reject the session by returning a ¬acceptable; error with a Jingle-Video-specific condition of <unsupported-codecs/>:</p> |
|
<example caption="Responder does not support any of the codecs"><![CDATA[ |
|
<iq from='juliet@capulet.com/balcony' |
|
id='jingleaudio1' |
|
to='romeo@montague.net/orchard' |
|
type='error'> |
|
<error type='cancel'> |
|
<not-acceptable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/> |
|
<unsupported-codecs xmlns='urn:xmpp:tmp:jingle:apps:video:errors'/> |
|
</error> |
|
</iq> |
|
]]></example> |
|
<p>If there is no error, the responder acknowledges the session initiation request:</p> |
|
<example caption="Responder acknowledges session-initiate request"><![CDATA[ |
|
<iq from='juliet@capulet.com/balcony' |
|
id='jinglevideo1' |
|
to='romeo@montague.net/orchard' |
|
type='result' /> |
|
]]></example> |
|
<p>If the responder wishes to accept the content definition, it MUST send a content-accept action to the initiator, which SHOULD include a list of the payload types that it can send and/or receive. The list that the responder sends MAY include any payload types (not a subset of the payload types sent by the initiator) but SHOULD retain the ID numbers specified by the initiator. The order of the &PAYLOADTYPE; elements indicates the responder's preferences, with the most-preferred types first.</p> |
|
<example caption="Responder accepts content type"><![CDATA[ |
|
<iq from='juliet@capulet.com/balcony' |
|
to='romeo@montague.net/orchard' |
|
id='jinglevideo2' |
|
type='set'> |
|
<jingle xmlns='urn:xmpp:tmp:jingle'> |
|
action='content-accept' |
|
initiator='romeo@montague.net/orchard' |
|
sid='v1d30k1ll3dth3r4d10st4r'> |
|
<content content='initiator' name='this-is-the-video-content'> |
|
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'> |
|
<payload-type id='96' name='theora' clockrate='90000'> |
|
<parameter name='height' value='720'/> |
|
<parameter name='width' value='1280'/> |
|
<parameter name='delivery-method' value='inline'/> |
|
<parameter name='configuration' value='somebase16string'/> |
|
<parameter name='sampling' value='YCbCr-4:2:2'/> |
|
</payload-type> |
|
<payload-type id='32' name='MPV' clockrate='90000'/> |
|
<payload-type id='33' name='MP2T' clockrate='90000'/> |
|
</description> |
|
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'/> |
|
</content> |
|
</jingle> |
|
</iq> |
|
]]></example> |
|
<p>The initiator acknowledges the 'content-accept' with an empty IQ result:</p> |
|
<example caption="Initiator acknowledges modified application type"><![CDATA[ |
|
<iq from='romeo@montegue.net/orchard' |
|
to='juliet@capulet.com/balcony' |
|
id='jinglevideo2' |
|
type='result'/> |
|
]]></example> |
|
<p>After successful transport negotiation (for the ICE-UDP method, see <cite>XEP-0176</cite>), the responder then accepts the session:</p> |
|
<example caption="Responder definitively accepts the session"><![CDATA[ |
|
<iq from='juliet@capulet.com/balcony' |
|
id='accept1' |
|
to='romeo@montague.net/orchard' |
|
type='set'> |
|
<jingle xmlns='urn:xmpp:tmp:jingle' |
|
action='session-accept' |
|
initiator='romeo@montague.net/orchard' |
|
responder='juliet@capulet.com/balcony' |
|
sid='v1d30k1ll3dth3r4d10st4r'> |
|
<content content='initiator' name='this-is-the-video-content'> |
|
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'> |
|
<payload-type id='96' name='theora' clockrate='90000'> |
|
<parameter name='height' value='720'/> |
|
<parameter name='width' value='1280'/> |
|
<parameter name='delivery-method' value='inline'/> |
|
<parameter name='configuration' value='somebase16string'/> |
|
<parameter name='sampling' value='YCbCr-4:2:2'/> |
|
</payload-type> |
|
<payload-type id='32' name='MPV' clockrate='90000'/> |
|
<payload-type id='33' name='MP2T' clockrate='90000'/> |
|
</description> |
|
<transport xmlns='urn:xmpp:tmp:jingle:transports:ice-tcp'> |
|
<candidate component='1' |
|
foundation='1' |
|
generation='0' |
|
ip='192.0.2.3' |
|
network='1' |
|
port='45664' |
|
priority='1694498815' |
|
protocol='udp' |
|
pwd='asd88fgpdd777uzjYhagZg' |
|
rel-addr='10.0.1.1' |
|
rel-port='8998' |
|
rem-addr='192.0.2.1' |
|
rem-port='3478' |
|
type='srflx' |
|
ufrag='8hhy'/> |
|
</transport> |
|
</content> |
|
</jingle> |
|
</iq> |
|
]]></example> |
|
<p>And the initiator acknowledges session acceptance:</p> |
|
<example caption="Initiator acknowledges session acceptance"><![CDATA[ |
|
<iq from='romeo@montague.net/orchard' |
|
to='juliet@capulet.com/balcony' |
|
id='accept1' |
|
type='result' /> |
|
]]></example> |
|
<p>Note: For more examples, see <cite>XEP-0167</cite>.</p> |
|
</section1> |
|
|
|
<section1 topic='Mapping to Session Description Protocol' anchor='sdp'> |
|
<p>The SDP media type for Jingle Video via RTP is "video" (see Section 8.2.1 of <cite>RFC 4566</cite>).</p> |
|
<p>If the payload type is static (payload-type IDs 0 through 95 inclusive), it MUST be mapped to a media field defined in <cite>RFC 4566</cite>. The generic format for the media field is as follows:</p> |
|
<code><![CDATA[ |
|
m=<media> <port> <transport> <fmt list> |
|
]]></code> |
|
<p>In the context of Jingle video sessions, the <media> is "video", the <port> is the preferred port for such communications (which may be determined dynamically), the <transport> is whatever profile is negotiated via the 'profile' attribute of the &CONTENT; element in the Jingle negotiation (e.g., "RTP/AVT"), and the <fmt list> is the payload-type ID.</p> |
|
<p>For example, consider the following static payload-type:</p> |
|
<example caption="Jingle format for static payload-type"><![CDATA[ |
|
<payload-type id="28" name="nv"/> |
|
]]></example> |
|
<p>That Jingle-formatted information would be mapped to SDP as follows:</p> |
|
<example caption="SDP mapping of static payload-type"><![CDATA[ |
|
m=video 9000 RTP/AVP 28 |
|
]]></example> |
|
<p>If the payload type is dynamic (payload-type IDs 96 through 127 inclusive), it SHOULD be mapped to an SDP media field plus an SDP attribute field named "rtpmap".</p> |
|
<p>For example, consider a VC-1 payload such as that described in &rfc4425;:</p> |
|
<example caption="Jingle format for dynamic payload-type"><![CDATA[ |
|
<payload-type id='98' name='vc1'/> |
|
]]></example> |
|
<p>That Jingle-formatted information would be mapped to SDP as follows:</p> |
|
<example caption="SDP mapping of dynamic payload-type"><![CDATA[ |
|
m=video 49170 RTP/AVP 98 |
|
a=rtpmap:98 vc1/90000 |
|
]]></example> |
|
<p>As noted, if additional parameters are to be specified, they shall be represented as attributes of the <payload-type/> element or its child <parameter/> element, as in the following example.</p> |
|
<example caption="Jingle format for dynamic payload-type with parameters"><![CDATA[ |
|
<payload-type id='96' name='theora' clockrate='90000'> |
|
<parameter name='height' value='720'/> |
|
<parameter name='width' value='1280'/> |
|
<parameter name='delivery-method' value='inline'/> |
|
<parameter name='configuration' value='somebase16string'/> |
|
<parameter name='sampling' value='YCbCr-4:2:2'/> |
|
</payload-type> |
|
]]></example> |
|
<p>That Jingle-formatted information would be mapped to SDP as follows:</p> |
|
<example caption="SDP mapping of dynamic payload-type with parameters"><![CDATA[ |
|
m=video 49170 RTP/AVP 98 |
|
a=rtpmap:96 theora/90000 |
|
a=fmtp:96 sampling=YCbCr-4:2:2; width=1280; height=720; |
|
delivery-method=inline; configuration=somebase16string; |
|
]]></example> |
|
</section1> |
|
|
|
<section1 topic='Error Handling' anchor='errors'> |
|
<p>The Jingle-Video-specific error conditions are as follows:</p> |
|
<table caption='Other Error Conditions'> |
|
<tr> |
|
<th>Jingle Video Condition</th> |
|
<th>XMPP Condition</th> |
|
<th>Description</th> |
|
</tr> |
|
<tr> |
|
<td><unsupported-codecs/></td> |
|
<td>¬acceptable;</td> |
|
<td>The recipient does not support any of the offered video encodings.</td> |
|
</tr> |
|
</table> |
|
</section1> |
|
|
|
<section1 topic='Determining Support' anchor='support'> |
|
<p>If an entity supports Jingle video exchanges via RTP, it MUST advertise that fact by returning a feature of "urn:xmpp:tmp:jingle:apps:video" in response to &xep0030; information requests &NSNOTE;.</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='urn:xmpp:tmp:jingle'/> |
|
<feature var='urn:xmpp:tmp:jingle:apps:video-rtp'/> |
|
... |
|
</query> |
|
</iq> |
|
]]></example> |
|
<p>Naturally, support may also be discovered via the dynamic, presence-based profile of service discovery defined in &xep0115;.</p> |
|
</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 "session-info". No informational message payload elements have yet been defined for Jingle Video via RTP, but they may 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 is RECOMMENDED.</p> |
|
</section2> |
|
</section1> |
|
|
|
<section1 topic='Security Considerations' anchor='security'> |
|
<p>In order to secure the data stream, implementations SHOULD use encryption methods appropriate to the transport method and media being exchanged; for example, in the case of UDP, that would include Datagram Transport Layer Security (DTLS) as specified in &rfc4347;. &sdpdtls; defines such methods for the Session Description Protocol; the relevant RTP profile (e.g., "UDP/TLS/RTP/SAVP" for transporting the RTP stream over DTLS with UDP) shall be specified as the value of the &CONTENT; element's 'profile' attribute.</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:</p> |
|
<ul> |
|
<li>urn:xmpp:tmp:jingle:apps:video</li> |
|
<li>urn:xmpp:tmp:jingle:apps:video:errors</li> |
|
</ul> |
|
<p>Upon advancement of this specification, the ®ISTRAR; shall issue permanent namespaces in accordance with the process defined in Section 4 of &xep0053;.</p> |
|
<p>The following namespaces are requested, and are thought to be unique per the XMPP Registrar's requirements:</p> |
|
<ul> |
|
<li>urn:xmpp:jingle:app:video-rtp</li> |
|
<li>urn:xmpp:jingle:app:video-rtp:errors</li> |
|
</ul> |
|
</section2> |
|
<section2 topic='Jingle Application Formats' anchor='registrar-content'> |
|
<p>The XMPP Registrar shall include "video-rtp" in its registry of Jingle application formats. The registry submission is as follows:</p> |
|
<code><![CDATA[ |
|
<application> |
|
<name>video-rtp</name> |
|
<desc>Jingle sessions that support video exchange via the Real-time Transport Protocol</desc> |
|
<transport>lossy</transport> |
|
<doc>XEP-0180</doc> |
|
</application> |
|
]]></code> |
|
</section2> |
|
</section1> |
|
|
|
<section1 topic='XML Schemas' anchor='schema'> |
|
<section2 topic='Application Format' anchor='schema-content'> |
|
<code><![CDATA[ |
|
<?xml version='1.0' encoding='UTF-8'?> |
|
|
|
<xs:schema |
|
xmlns:xs='http://www.w3.org/2001/XMLSchema' |
|
targetNamespace='urn:xmpp:tmp:jingle:apps:video-rtp' |
|
xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' |
|
elementFormDefault='qualified'> |
|
|
|
<xs:element name='description'> |
|
<xs:complexType> |
|
<xs:sequence> |
|
<xs:element ref='payload-type' minOccurs='0' maxOccurs='unbounded'/> |
|
</xs:sequence> |
|
<xs:attribute name='profile' use='required' type='xs:string' default='RTP/AVP'/> |
|
</xs:complexType> |
|
</xs:element> |
|
|
|
<xs:element name='payload-type'> |
|
<xs:complexType> |
|
<xs:sequence minOccurs='0' maxOccurs='unbounded'> |
|
<xs:element ref='parameter'/> |
|
</xs:sequence> |
|
<xs:attribute name='channels' type='xs:integer' use='optional' default='1'/> |
|
<xs:attribute name='clockrate' type='xs:short' use='optional'/> |
|
<xs:attribute name='id' type='xs:unsignedByte' use='required'/> |
|
<xs:attribute name='name' type='xs:string' use='optional'/> |
|
</xs:complexType> |
|
</xs:element> |
|
|
|
<xs:element name='parameter'> |
|
<xs:complexType> |
|
<xs:simpleContent> |
|
<xs:extension base='empty'> |
|
<xs:attribute name='name' type='xs:string' use='required'/> |
|
<xs:attribute name='value' type='xs:string' use='required'/> |
|
</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='Errors' anchor='schema-errors'> |
|
<code><![CDATA[ |
|
<?xml version='1.0' encoding='UTF-8'?> |
|
|
|
<xs:schema |
|
xmlns:xs='http://www.w3.org/2001/XMLSchema' |
|
targetNamespace='urn:xmpp:tmp:jingle:apps:video:errors' |
|
xmlns='urn:xmpp:tmp:jingle:apps:video:errors' |
|
elementFormDefault='qualified'> |
|
|
|
<xs:element name='unsupported-codecs' type='empty'/> |
|
|
|
<xs:simpleType name='empty'> |
|
<xs:restriction base='xs:string'> |
|
<xs:enumeration value=''/> |
|
</xs:restriction> |
|
</xs:simpleType> |
|
|
|
</xs:schema> |
|
]]></code> |
|
</section2> |
|
</section1> |
|
</xep>
|
|
|