xeps/inbox/jingle-sources.xml

176 lines
7.7 KiB
XML

<?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>Source-Specific Media Attributes in Jingle</title>
<abstract>This specification provides an XML mapping for translating the RFC 5766 Source-Specific Media Attributes from SDP to Jingle</abstract>
&LEGALNOTICE;
<number>xxxx</number>
<status>ProtoXEP</status>
<type>Standards Track</type>
<sig>Standards</sig>
<approver>Council</approver>
<dependencies>
<spec>XEP-0166</spec>
</dependencies>
<supersedes/>
<supersededby/>
<shortname>NOT_YET_ASSIGNED</shortname>
<revision>
<version>0.0.1</version>
<date>2013-11-25</date>
<initials>ph</initials>
<remark><p>First draft.</p></remark>
</revision>
&fippo;
</header>
<section1 topic="Introduction" anchor="intro">
<p>&rfc5576; provides a mechanism to describe attributes of individual media sources (identified by their synchronization source) within a media stream. A mapping to Jingle as an extension to &xep0167; is defined in this document.</p>
</section1>
<section1 topic='Mapping to Session Description Protocol' anchor='sdp'>
<section2 topic='The ssrc attribute' anchor='sdp-ssrc'>
<p>The SDP format defined in <cite>RFC 5576</cite> is shown below.</p>
<code>
a=ssrc:&lt;ssrc-id&gt; &lt;attribute&gt;
a=ssrc:&lt;ssrc-id&gt; &lt;attribute&gt;:&lt;value&gt;
</code>
<p>This maps to Jingle as a &lt;source/&gt; element qualified by the 'urn:xmpp:jingle:apps:rtp:ssma:0' namespace. Since 'ssrc' is a media attribute in SDP, the &lt;source/&gt; element is included as child of the Jingle &lt;description/&gt; element.</p>
<code><![CDATA[
<source ssrc='ssrc-id' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'>
<parameter name='attribute'/>
<parameter name='attribute' value='value'/>
</source>
]]></code>
<p>Each ssrc-id maps to a &lt;source/&gt; element whose 'ssrc' attribute is set to the ssrc-id. The associated attributes map to &lt;parameter/&gt; children with 'name' and 'value' attributes. If there is no value in the SDP, the value parameter shall be omitted.</p>
<p>An example follows:</p>
<code>
a=ssrc:1656081975 cname:Yv/wvbCdsDW2Prgd
a=ssrc:1656081975 msid:MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIv MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIva0
a=ssrc:1656081975 mslabel:MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIv
a=ssrc:1656081975 label:MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIva0
</code>
<code><![CDATA[
<source ssrc='1656081975' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'>
<parameter name='cname' value='Yv/wvbCdsDW2Prgd'/>
<parameter name='msid' value='MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIv MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIva0'/>
<parameter name='mslabel' value='MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIv'/>
<parameter name='label' value='MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIva0'/>
</source>
]]></code>
</section2>
<section2 topic='The ssrc-group attribute' anchor='sdp-ssrc-group'>
<p>The SDP format defined in <cite>RFC 5576</cite> is shown below.</p>
<code>
a=ssrc-group:&lt;semantics&gt; &lt;ssrc-id&gt; ...
</code>
<p>This maps to Jingle as a &lt;ssrc-group/&gt; element qualified by the 'urn:xmpp:jingle:apps:rtp:ssma:0' namespace. Like the &lt;source/&gt; element, this is included as child of the Jingle &lt;description/&gt; element. The SDP 'semantics' parameter is mapped to the semantics attribute (for consistency with <cite>FIXME jingle-grouping FIXME</cite>) and the list of ssrc-ids is mapped to &lt;source/&gt; elements whole 'ssrc' attribute is set to the ssrc-id.</p>
<code><![CDATA[
<ssrc-group xmlns='urn:xmpp:jingle:apps:rtp:ssma:0' semantics='semantics'>
<source ssrc='ssrc-id'/>
[...]
</ssrc-group>
]]></code>
</section2>
</section1>
<section1 topic='Example' anchor='example'>
<p>The following example is taken from <cite>RFC 5576</cite>.</p>
<code>
m=video 49174 RTP/AVPF 96 98
a=rtpmap:96 H.264/90000
a=rtpmap:98 rtx/90000
a=fmtp:98 apt=96;rtx-time=3000
a=ssrc-group:FID 11111 22222
a=ssrc:11111 cname:user3@example.com
a=ssrc:22222 cname:user3@example.com
a=ssrc-group:FID 33333 44444
a=ssrc:33333 cname:user3@example.com
a=ssrc:44444 cname:user3@example.com
</code>
<p>This is mapped to Jingle as follows:</p>
<code><![CDATA[
<content creator='initiator' name='webcam'>
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
<payload-type id='96' name='H.264' clockrate='90000'/>
<payload-type id='98' name='rtx' clockrate='90000'>
<parameter name='apt' value='96'/>
<parameter name='rtx-time' value='3000'/>
</payload-type>
<ssrc-group xmlns='urn:xmpp:jingle:apps:rtp:ssma:0' semantics='FID'>
<source ssrc='11111'/>
<source ssrc='22222'/>
</ssrc-group>
<ssrc-group xmlns='urn:xmpp:jingle:apps:rtp:ssma:0' semantics='FID'>
<source ssrc='33333'/>
<source ssrc='44444'/>
</ssrc-group>
<source ssrc='11111' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'>
<parameter name='cname' value='user3@example.com'/>
</source>
<source ssrc='22222' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'>
<parameter name='cname' value='user3@example.com'/>
</source>
<source ssrc='33333' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'>
<parameter name='cname' value='user3@example.com'/>
</source>
<source ssrc='44444' xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'>
<parameter name='cname' value='user3@example.com'/>
</source>
</description>
</content>
]]></code>
</section1>
<section1 topic='Determining Support' anchor='disco'>
<p>If an entity supports source specific media attributes as described in <cite>RFC 5576</cite>, it MUST advertise that fact in its responses to &xep0030; information ("disco#info") requests by returning a feature of 'urn:ietf:rfc:5576':</p>
<example caption='A disco#info query'><![CDATA[
<iq type='get'
from='calvin@usrobots.lit/lab'
to='herbie@usrobots.lit/home'
id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#info'/>
</iq>
]]></example>
<example caption='A disco#info response'><![CDATA[
<iq type='result'
from='herbie@usrobots.lit/home'
to='calvin@usrobots.lit/lab'
id='disco1'>
<query xmlns='http://jabber.org/protocol/disco#info'>
<feature var='urn:xmpp:jingle:1'/>
<feature var='urn:ietf:rfc:5576'/>
</query>
</iq>
]]></example>
<p>In order for an application to determine whether an entity supports this protocol, where possible it SHOULD use the dynamic, presence-based profile of service discovery defined in &xep0115;. However, if an application has not received entity capabilities information from an entity, it SHOULD use explicit service discovery instead.</p>
</section1>
<section1 topic='Acknowledgements' anchor='acks'>
<p>The SDP syntax examples are taken from <cite>RFC 5576</cite>.</p>
</section1>
<section1 topic='Security Considerations' anchor='security'>
<p>This document introduces no additional security considerations above and beyond those defined in the documents on which it depends.</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='registrar-ns'>
<p>This specification defines the following XML namespace:</p>
<ul>
<li>urn:xmpp:jingle:apps:rtp:ssma:0</li>
</ul>
<p>The &REGISTRAR; includes the foregoing namespace to the registry located at &NAMESPACES;, as described in Section 4 of &xep0053;.</p>
</section2>
<section2 topic='Protocol Versioning' anchor='registrar-versioning'>
&NSVER;
</section2>
</section1>
<section1 topic='XML Schema' anchor='schema'>
<p>TODO</p>
</section1>
</xep>