1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-11-30 21:22:15 -05:00
git-svn-id: file:///home/ksmith/gitmigration/svn/xmpp/trunk@1887 4b5297f7-1745-476d-ba37-a9c6900126ab
This commit is contained in:
Peter Saint-Andre 2008-05-29 03:02:20 +00:00
parent 4a37fec1c8
commit 02462c6e4c

View File

@ -20,13 +20,19 @@
</dependencies> </dependencies>
<supersedes/> <supersedes/>
<supersededby/> <supersededby/>
<shortname>TO BE ASSIGNED</shortname> <shortname>NOT_YET_ASSIGNED</shortname>
&stpeter; &stpeter;
<author> <author>
<firstname>Milton</firstname> <firstname>Milton</firstname>
<surname>Chen</surname> <surname>Chen</surname>
<email>Milton.Chen@vseelab.com</email> <email>Milton.Chen@vseelab.com</email>
</author> </author>
<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> <revision>
<version>0.11</version> <version>0.11</version>
<date>2008-02-28</date> <date>2008-02-28</date>
@ -133,7 +139,9 @@
<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 &lt;description/&gt; 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 &lt;payload-type/&gt; element specifies an encoding that can be used for the audio stream, as illustrated in the following example.</p> <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 &lt;description/&gt; 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 &lt;payload-type/&gt; 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[ <example caption="Video description format"><![CDATA[
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp'> <description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp'>
<payload-type id='96' name='theora' clockrate='90000' height='720' width='1280'> <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='delivery-method' value='inline'/>
<parameter name='configuration' value='somebase16string'/> <parameter name='configuration' value='somebase16string'/>
<parameter name='sampling' value='YCbCr-4:2:2'/> <parameter name='sampling' value='YCbCr-4:2:2'/>
@ -144,7 +152,7 @@
</description> </description>
]]></example> ]]></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 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").</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 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> <p>The allowable attributes of the &PAYLOADTYPE; element are as follows:</p>
<table caption='Payload-Type Attributes'> <table caption='Payload-Type Attributes'>
@ -166,57 +174,21 @@
<td>positiveInteger</td> <td>positiveInteger</td>
<td>RECOMMENDED</td> <td>RECOMMENDED</td>
</tr> </tr>
<tr>
<td>height</td>
<td>The vertical extent of the displayed video, in pixels</td>
<td>positiveInteger</td>
<td>RECOMMENDED</td>
</tr>
<tr> <tr>
<td>id</td> <td>id</td>
<td>A unique identifier for the payload type</td> <td>A unique identifier for the payload type</td>
<td>positiveInteger</td> <td>positiveInteger</td>
<td>REQUIRED</td> <td>REQUIRED</td>
</tr> </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>
<td>OPTIONAL</td>
</tr>
<tr> <tr>
<td>name</td> <td>name</td>
<td>A name for the payload type</td> <td>A name for the payload type</td>
<td>string</td> <td>string</td>
<td>RECOMMENDED for static payload types, REQUIRED for dynamic payload types</td> <td>RECOMMENDED for static payload types, REQUIRED for dynamic payload types</td>
</tr> </tr>
<tr>
<td>transparent</td>
<td>Whether or not a layer is transparent</td>
<td>boolean</td>
<td>OPTIONAL</td>
</tr>
<tr>
<td>width</td>
<td>The horizontal extent of the displayed video, in pixels</td>
<td>positiveInteger</td>
<td>RECOMMENDED</td>
</tr>
<tr>
<td>x</td>
<td>The horizontal starting point of a tile, in pixels from the origin point</td>
<td>positiveInteger</td>
<td>OPTIONAL</td>
</tr>
<tr>
<td>y</td>
<td>The vertical starting point of a tile, in pixels from the origin point</td>
<td>positiveInteger</td>
<td>OPTIONAL</td>
</tr>
</table> </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>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 &lt;payload-type/&gt; element MAY contain one or more child elements that specify particular parameters related to the payload. For example, as described in &rtpspeex;, the "cng", "mode", and "vbr" parameters may be specified in relation to usage of the Speex <note>See &lt;<link url='http://www.speex.org/'>http://www.speex.org/</link>&gt;.</note> codec. Where such parameters are encoded via the "fmtp" SDP attribute, they shall be represented in Jingle via the following format:</p> <p>Each &lt;payload-type/&gt; 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 &lt;<link url='http://www.theora.org/'>http://www.theora.org/</link>&gt;.</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[ <code><![CDATA[
<parameter name='foo' value='bar'/> <parameter name='foo' value='bar'/>
]]></code> ]]></code>
@ -224,7 +196,7 @@
</section1> </section1>
<section1 topic='Negotiating a Jingle Video Session' anchor='negotiation'> <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 receive for Jingle video (each one encapsulated in a separate &PAYLOADTYPE; element):</p> <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[ <example caption="Initiation"><![CDATA[
<iq from='romeo@montague.net/orchard' <iq from='romeo@montague.net/orchard'
to='juliet@capulet.com/balcony' to='juliet@capulet.com/balcony'
@ -236,7 +208,9 @@
sid='v1d30k1ll3dth3r4d10st4r'> sid='v1d30k1ll3dth3r4d10st4r'>
<content content='initiator' name='this-is-the-video-content'> <content content='initiator' name='this-is-the-video-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'> <description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'>
<payload-type id='96' name='theora' clockrate='90000' height='720' width='1280'> <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='delivery-method' value='inline'/>
<parameter name='configuration' value='somebase16string'/> <parameter name='configuration' value='somebase16string'/>
<parameter name='sampling' value='YCbCr-4:2:2'/> <parameter name='sampling' value='YCbCr-4:2:2'/>
@ -269,7 +243,7 @@
to='romeo@montague.net/orchard' to='romeo@montague.net/orchard'
type='result' /> type='result' />
]]></example> ]]></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 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> <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[ <example caption="Responder accepts content type"><![CDATA[
<iq from='juliet@capulet.com/balcony' <iq from='juliet@capulet.com/balcony'
to='romeo@montague.net/orchard' to='romeo@montague.net/orchard'
@ -281,7 +255,9 @@
sid='v1d30k1ll3dth3r4d10st4r'> sid='v1d30k1ll3dth3r4d10st4r'>
<content content='initiator' name='this-is-the-video-content'> <content content='initiator' name='this-is-the-video-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'> <description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'>
<payload-type id='96' name='theora' height='720' width='1280'> <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='delivery-method' value='inline'/>
<parameter name='configuration' value='somebase16string'/> <parameter name='configuration' value='somebase16string'/>
<parameter name='sampling' value='YCbCr-4:2:2'/> <parameter name='sampling' value='YCbCr-4:2:2'/>
@ -314,7 +290,9 @@
sid='v1d30k1ll3dth3r4d10st4r'> sid='v1d30k1ll3dth3r4d10st4r'>
<content content='initiator' name='this-is-the-video-content'> <content content='initiator' name='this-is-the-video-content'>
<description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'> <description xmlns='urn:xmpp:tmp:jingle:apps:video-rtp' profile='RTP/AVP'>
<payload-type id='96' name='theora' height='720' width='1280'> <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='delivery-method' value='inline'/>
<parameter name='configuration' value='somebase16string'/> <parameter name='configuration' value='somebase16string'/>
<parameter name='sampling' value='YCbCr-4:2:2'/> <parameter name='sampling' value='YCbCr-4:2:2'/>
@ -371,17 +349,18 @@ m=video 9000 RTP/AVP 28
<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>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> <p>For example, consider a VC-1 payload such as that described in &rfc4425;:</p>
<example caption="Jingle format for dynamic payload-type"><![CDATA[ <example caption="Jingle format for dynamic payload-type"><![CDATA[
<payload-type id='98' name='vc1' height='288' width='352'/> <payload-type id='98' name='vc1'/>
]]></example> ]]></example>
<p>That Jingle-formatted information would be mapped to SDP as follows:</p> <p>That Jingle-formatted information would be mapped to SDP as follows:</p>
<example caption="SDP mapping of dynamic payload-type"><![CDATA[ <example caption="SDP mapping of dynamic payload-type"><![CDATA[
m=video 49170 RTP/AVP 98 m=video 49170 RTP/AVP 98
a=rtpmap:98 vc1/90000 a=rtpmap:98 vc1/90000
a=fmtp:98 width=352;height=288;
]]></example> ]]></example>
<p>As noted, if additional parameters are to be specified, they shall be represented as attributes of the &lt;payload-type/&gt; element or its child &lt;parameter/&gt; element, as in the following example.</p> <p>As noted, if additional parameters are to be specified, they shall be represented as attributes of the &lt;payload-type/&gt; element or its child &lt;parameter/&gt; element, as in the following example.</p>
<example caption="Jingle format for dynamic payload-type with parameters"><![CDATA[ <example caption="Jingle format for dynamic payload-type with parameters"><![CDATA[
<payload-type id='96' name='theora' height='720' width='1280'> <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='delivery-method' value='inline'/>
<parameter name='configuration' value='somebase16string'/> <parameter name='configuration' value='somebase16string'/>
<parameter name='sampling' value='YCbCr-4:2:2'/> <parameter name='sampling' value='YCbCr-4:2:2'/>
@ -499,7 +478,7 @@ delivery-method=inline; configuration=somebase16string;
<xs:sequence> <xs:sequence>
<xs:element ref='payload-type' minOccurs='0' maxOccurs='unbounded'/> <xs:element ref='payload-type' minOccurs='0' maxOccurs='unbounded'/>
</xs:sequence> </xs:sequence>
<xs:attribute name='profile' use='optional' type='xs:string'/> <xs:attribute name='profile' use='required' type='xs:string' default='RTP/AVP'/>
</xs:complexType> </xs:complexType>
</xs:element> </xs:element>
@ -510,14 +489,8 @@ delivery-method=inline; configuration=somebase16string;
</xs:sequence> </xs:sequence>
<xs:attribute name='channels' type='xs:integer' use='optional' default='1'/> <xs:attribute name='channels' type='xs:integer' use='optional' default='1'/>
<xs:attribute name='clockrate' type='xs:short' use='optional'/> <xs:attribute name='clockrate' type='xs:short' use='optional'/>
<xs:attribute name='height' type='xs:nonNegativeInteger' use='optional'/>
<xs:attribute name='id' type='xs:unsignedByte' use='required'/> <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='name' type='xs:string' 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:complexType> </xs:complexType>
</xs:element> </xs:element>