incremented protocol version

git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@2586 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2008-12-19 18:31:32 +00:00
parent f2c661ff57
commit 36b4ece3de
1 changed files with 49 additions and 48 deletions

View File

@ -30,11 +30,12 @@
&diana;
<revision>
<version>0.25</version>
<date>2008-12-18</date>
<date>2008-12-19</date>
<initials>psa</initials>
<remark>
<ul>
<li>Refactored encryption syntax.</li>
<li>Because the modified encryption syntax is not backwards-compatible, incremented protocol version from 0 to 1 and changed namespace from urn:xmpp:jingle:apps:rtp:zero to urn:xmpp:jingle:apps:rtp:1.</li>
<li>Added optional bandwidth element.</li>
<li>Added example of description-info action for modifying application parameters.</li>
<li>Corrected the schemas.</li>
@ -246,9 +247,9 @@
<section1 topic='Application Format' anchor='format'>
<p>A Jingle RTP session is described by a content type that contains one application format and one transport method. Each &lt;content/&gt; element defines a single RTP session. A Jingle negotiation MAY result in the establishment of multiple RTP sessions (e.g., one for audio and one for video). An application SHOULD consider all of the RTP sessions that are established via the same Jingle negotiation to be synchronized for purposes of streaming, playback, recording, etc.</p>
<p>The application format consists of one or more encodings contained within a wrapper &lt;description/&gt; element qualified by the 'urn:xmpp:jingle:apps:rtp:0' namespace &VNOTE;. In the language of <cite>RFC 4566</cite> each encoding is a payload-type; therefore, each &lt;payload-type/&gt; element specifies an encoding that can be used for the RTP stream, as illustrated in the following example.</p>
<p>The application format consists of one or more encodings contained within a wrapper &lt;description/&gt; element qualified by the 'urn:xmpp:jingle:apps:rtp:1' namespace &VNOTE;. In the language of <cite>RFC 4566</cite> each encoding is a payload-type; therefore, each &lt;payload-type/&gt; element specifies an encoding that can be used for the RTP stream, as illustrated in the following example.</p>
<code><![CDATA[
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
@ -349,7 +350,7 @@ Initiator Responder
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
@ -383,7 +384,7 @@ Initiator Responder
responder='juliet@capulet.lit/balcony'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
</description>
@ -429,7 +430,7 @@ m=<media> <port> <transport> <fmt list>
<p>In the context of Jingle audio sessions, the &lt;media&gt; parameter is "audio" or "video" or some other media type as specified by the 'media' attribute, the &lt;port&gt; parameter is the preferred port for such communications (which might be determined dynamically), and the &lt;fmt list&gt; parameter is the payload-type ID.</p>
<p>For example, consider the following static payload-type:</p>
<code><![CDATA[
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id="13" name="CN"/>
</description>
]]></code>
@ -440,7 +441,7 @@ m=audio 9999 RTP/AVP 13
<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 payload of 16-bit linear-encoded stereo audio sampled at 16KHz associated with dynamic payload-type 96:</p>
<code><![CDATA[
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
</description>
]]></code>
@ -451,7 +452,7 @@ a=rtpmap:96 speex/16000
]]></code>
<p>As noted, if additional parameters are to be specified, they shall be represented as attributes of the &lt;parameter/&gt; child of the &PAYLOADTYPE; element, as in the following example.</p>
<code><![CDATA[
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000' ptime='40'>
<parameter name='vbr' value='on'/>
<parameter name='cng' value='on'/>
@ -467,7 +468,7 @@ a=fmtp:96 vbr=on;cng=on
]]></code>
<p>The formatting is similar for video parameters, as shown in the following example.</p>
<code><![CDATA[
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='video'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
<payload-type id='98' name='theora' clockrate='90000'>
<parameter name='height' value='600'/>
<parameter name='width' value='800'/>
@ -502,7 +503,7 @@ delivery-method=inline; configuration=somebase16string;
</section1>
<section1 topic='Negotiation of SRTP' anchor='srtp'>
<p>&rfc3711; defines the Secure Real-time Transport Protocol, and &rfc4568; defines the SDP "crypto" attribute for signalling and negotiating the use of SRTP in the context of offer-answer protocols such as SIP. To enable the use of SRTP and gatewaying to non-XMPP technologies that make use of the "crypto" SDP attribute, we define a corresponding &lt;crypto/&gt; element qualified by the 'urn:xmpp:jingle:apps:rtp:0' namespace.</p>
<p>&rfc3711; defines the Secure Real-time Transport Protocol, and &rfc4568; defines the SDP "crypto" attribute for signalling and negotiating the use of SRTP in the context of offer-answer protocols such as SIP. To enable the use of SRTP and gatewaying to non-XMPP technologies that make use of the "crypto" SDP attribute, we define a corresponding &lt;crypto/&gt; element qualified by the 'urn:xmpp:jingle:apps:rtp:1' namespace.</p>
<p>If the initiator wishes to use SRTP, the session-initiate stanza MUST include an &lt;encryption/&gt; element, which MUST contain at least one &lt;crypto/&gt; element and MAY include multiple instances of the &lt;crypto/&gt; element. The &lt;encryption/&gt; element MUST be a child of the &lt;description/&gt; element. If the initiator requires the session to be encrypted, the &lt;encryption/&gt; element MUST include a 'required' attribute whose logical value is TRUE and whose lexical value is "true" or "1" &BOOLEANNOTE;, where this attribute defaults to a logical value of FALSE (i.e., a lexical value of "false" or "0").</p>
<p>The &lt;crypto/&gt; element is defined as empty (i.e., not containing any child elements); the XML attributes of the &lt;crypto/&gt; element are as follows:</p>
<ul>
@ -582,7 +583,7 @@ delivery-method=inline; configuration=somebase16string;
<section1 topic='Informational Messages' anchor='info'>
<section2 topic='Format' anchor='info-format'>
<p>Informational messages can be sent by either party within the context of Jingle to communicate the status of a Jingle RTP session, device, or principal. The informational message MUST be an IQ-set containing a &JINGLE; element of type "session-info", where the informational message is a payload element qualified by the 'urn:xmpp:jingle:apps:rtp:info:0' namespace; the following payload elements are defined: <note>A &lt;trying/&gt; element (equivalent to the SIP 100 Trying response code) is not necessary, since each session-level action is acknowledged via XMPP IQ semantics.</note></p>
<p>Informational messages can be sent by either party within the context of Jingle to communicate the status of a Jingle RTP session, device, or principal. The informational message MUST be an IQ-set containing a &JINGLE; element of type "session-info", where the informational message is a payload element qualified by the 'urn:xmpp:jingle:apps:rtp:info:1' namespace; the following payload elements are defined: <note>A &lt;trying/&gt; element (equivalent to the SIP 100 Trying response code) is not necessary, since each session-level action is acknowledged via XMPP IQ semantics.</note></p>
<table caption='Information Payload Elements'>
<tr>
<th>Element</th>
@ -617,7 +618,7 @@ delivery-method=inline; configuration=somebase16string;
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<active xmlns='urn:xmpp:jingle:apps:rtp:info:0'
<active xmlns='urn:xmpp:jingle:apps:rtp:info:1'
name='webcam'/>
</jingle>
</iq>
@ -631,7 +632,7 @@ delivery-method=inline; configuration=somebase16string;
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<hold xmlns='urn:xmpp:jingle:apps:rtp:info:0'/>
<hold xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
@ -644,7 +645,7 @@ delivery-method=inline; configuration=somebase16string;
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<mute xmlns='urn:xmpp:jingle:apps:rtp:info:0'
<mute xmlns='urn:xmpp:jingle:apps:rtp:info:1'
name='voice'/>
</jingle>
</iq>
@ -658,7 +659,7 @@ delivery-method=inline; configuration=somebase16string;
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:0'/>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
@ -677,7 +678,7 @@ delivery-method=inline; configuration=somebase16string;
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='webcam'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='video'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
<payload-type id='98' name='theora' clockrate='90000'>
<parameter name='height' value='768'/>
<parameter name='width' value='1024'/>
@ -691,7 +692,7 @@ delivery-method=inline; configuration=somebase16string;
</section1>
<section1 topic='Determining Support' anchor='support'>
<p>If an entity supports Jingle RTP session, it MUST advertise that fact by returning a feature of "urn:xmpp:jingle:apps:rtp:0" &VNOTE; in response to &xep0030; information requests.</p>
<p>If an entity supports Jingle RTP session, it MUST advertise that fact by returning a feature of "urn:xmpp:jingle:apps:rtp:1" &VNOTE; in response to &xep0030; information requests.</p>
<example caption="Service discovery information request"><![CDATA[
<iq from='romeo@montague.lit/orchard'
id='disco1'
@ -707,7 +708,7 @@ delivery-method=inline; configuration=somebase16string;
type='result'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<feature var='urn:xmpp:jingle:0'/>
<feature var='urn:xmpp:jingle:apps:rtp:0'/>
<feature var='urn:xmpp:jingle:apps:rtp:1'/>
</query>
</iq>
]]></example>
@ -750,7 +751,7 @@ Romeo Juliet
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
@ -777,7 +778,7 @@ Romeo Juliet
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:0'/>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
@ -854,7 +855,7 @@ Romeo Juliet
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
@ -881,7 +882,7 @@ Romeo Juliet
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:0'/>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
@ -903,7 +904,7 @@ Romeo Juliet
responder='juliet@capulet.lit/balcony'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
</description>
@ -1006,7 +1007,7 @@ Romeo Juliet
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
@ -1043,7 +1044,7 @@ Romeo Juliet
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:0'/>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
@ -1065,7 +1066,7 @@ Romeo Juliet
responder='juliet@capulet.lit/balcony'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
<encryption>
@ -1185,7 +1186,7 @@ Romeo Gateway Juliet
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
@ -1217,7 +1218,7 @@ Romeo Gateway Juliet
disposition='early-session'
name='hold music'
senders='responder'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='18' name='G729'/>
</description>
<transport xmlns='urn:xmpp:jingle:transports:raw-udp:1'>
@ -1253,7 +1254,7 @@ Romeo Gateway Juliet
disposition='early-session'
name='hold music'
senders='responder'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='18' name='G729'/>
</description>
<transport xmlns='urn:xmpp:jingle:transports:raw-udp:1'>
@ -1287,7 +1288,7 @@ Romeo Gateway Juliet
responder='juliet@capulet.lit/balcony'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
</description>
@ -1410,7 +1411,7 @@ Romeo Juliet
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='96' name='speex' clockrate='16000'/>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
@ -1420,7 +1421,7 @@ Romeo Juliet
<transport xmlns='urn:xmpp:jingle:transports:ice-udp:0'/>
</content>
<content creator='initiator' name='webcam'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='video'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
<payload-type id='98' name='theora' clockrate='90000'>
<parameter name='height' value='600'/>
<parameter name='width' value='800'/>
@ -1453,7 +1454,7 @@ Romeo Juliet
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:0'/>
<ringing xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
@ -1496,7 +1497,7 @@ Romeo Juliet
responder='juliet@capulet.lit/balcony'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='voice'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='audio'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='audio'>
<payload-type id='97' name='speex' clockrate='8000'/>
<payload-type id='18' name='G729'/>
</description>
@ -1539,7 +1540,7 @@ Romeo Juliet
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<hold xmlns='urn:xmpp:jingle:apps:rtp:info:0'/>
<hold xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
@ -1559,7 +1560,7 @@ Romeo Juliet
action='session-info'
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<active xmlns='urn:xmpp:jingle:apps:rtp:info:0'/>
<active xmlns='urn:xmpp:jingle:apps:rtp:info:1'/>
</jingle>
</iq>
]]></example>
@ -1581,7 +1582,7 @@ Romeo Juliet
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='responder' name='webcam'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='video'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
<payload-type id='98' name='theora' clockrate='90000'>
<parameter name='height' value='600'/>
<parameter name='width' value='800'/>
@ -1615,7 +1616,7 @@ Romeo Juliet
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='responder' name='webcam'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='video'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
<payload-type id='98' name='theora' clockrate='90000'>
<parameter name='height' value='600'/>
<parameter name='width' value='800'/>
@ -1651,7 +1652,7 @@ Romeo Juliet
initiator='romeo@montague.lit/orchard'
sid='a73sjjvkla37jfea'>
<content creator='initiator' name='webcam'>
<description xmlns='urn:xmpp:jingle:apps:rtp:0' media='video'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
<payload-type id='98' name='theora' clockrate='90000'>
<parameter name='height' value='768'/>
<parameter name='width' value='1024'/>
@ -1733,9 +1734,9 @@ Romeo Juliet
<section2 topic='Protocol Namespaces' anchor='registrar-ns'>
<p>This specification defines the following XML namespaces:</p>
<ul>
<li>urn:xmpp:jingle:apps:rtp:0</li>
<li>urn:xmpp:jingle:apps:rtp:errors:0</li>
<li>urn:xmpp:jingle:apps:rtp:info:0</li>
<li>urn:xmpp:jingle:apps:rtp:1</li>
<li>urn:xmpp:jingle:apps:rtp:errors:1</li>
<li>urn:xmpp:jingle:apps:rtp:info:1</li>
</ul>
<p>Upon advancement of this specification from a status of Experimental to a status of Draft, the &REGISTRAR; shall add the foregoing namespaces to the registry located at &NAMESPACES;, as described in Section 4 of &xep0053;.</p>
</section2>
@ -1781,8 +1782,8 @@ Romeo Juliet
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:jingle:apps:rtp:0'
xmlns='urn:xmpp:jingle:apps:rtp:0'
targetNamespace='urn:xmpp:jingle:apps:rtp:1'
xmlns='urn:xmpp:jingle:apps:rtp:1'
elementFormDefault='qualified'>
<xs:element name='description'>
@ -1873,8 +1874,8 @@ Romeo Juliet
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:jingle:apps:rtp:errors:0'
xmlns='urn:xmpp:jingle:apps:rtp:errors:0'
targetNamespace='urn:xmpp:jingle:apps:rtp:errors:1'
xmlns='urn:xmpp:jingle:apps:rtp:errors:1'
elementFormDefault='qualified'>
<xs:element name='crypto-required' type='empty'/>
@ -1896,8 +1897,8 @@ Romeo Juliet
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:jingle:apps:rtp:info:0'
xmlns='urn:xmpp:jingle:apps:rtp:info:0'
targetNamespace='urn:xmpp:jingle:apps:rtp:info:1'
xmlns='urn:xmpp:jingle:apps:rtp:info:1'
elementFormDefault='qualified'>
<xs:element name='active'>