2013-12-03 15:47:50 -05:00
<?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;
2014-01-08 16:13:14 -05:00
<number > 0339</number>
<status > Experimental</status>
2013-12-03 15:47:50 -05:00
<type > Standards Track</type>
<sig > Standards</sig>
<approver > Council</approver>
<dependencies >
<spec > XEP-0166</spec>
</dependencies>
<supersedes />
<supersededby />
<shortname > NOT_YET_ASSIGNED</shortname>
2014-01-08 16:13:14 -05:00
<revision >
<version > 0.1</version>
<date > 2014-01-08</date>
<initials > psa</initials>
<remark > <p > Initial published version approved by the XMPP Council.</p> </remark>
</revision>
2013-12-03 15:47:50 -05:00
<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:< ssrc-id> < attribute>
a=ssrc:< ssrc-id> < attribute> :< value>
</code>
<p > This maps to Jingle as a < source/> element qualified by the 'urn:xmpp:jingle:apps:rtp:ssma:0' namespace. Since 'ssrc' is a media attribute in SDP, the < source/> element is included as child of the Jingle < description/> 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 < source/> element whose 'ssrc' attribute is set to the ssrc-id. The associated attributes map to < parameter/> 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:< semantics> < ssrc-id> ...
</code>
2014-01-08 16:13:14 -05:00
<p > This maps to Jingle as a < ssrc-group/> element qualified by the 'urn:xmpp:jingle:apps:rtp:ssma:0' namespace. Like the < source/> element, this is included as child of the Jingle < description/> element. The SDP 'semantics' parameter is mapped to the semantics attribute (for consistency with &xep0338; ) and the list of ssrc-ids is mapped to < source/> elements whole 'ssrc' attribute is set to the ssrc-id.</p>
2013-12-03 15:47:50 -05:00
<code > < ![CDATA[
2013-12-06 15:00:26 -05:00
<ssrc-group xmlns= 'urn:xmpp:jingle:apps:rtp:ssma:0' semantics= 'semantics' >
2013-12-03 15:47:50 -05:00
<source ssrc= 'ssrc-id' />
[...]
</ssrc-group>
]]></code>
</section2>
</section1>
<section1 topic= 'Example' anchor= 'example' >
2013-12-18 12:06:44 -05:00
<p > A minimal example follows:</p>
2013-12-03 15:47:50 -05:00
<code >
2013-12-15 11:22:02 -05:00
m=video 1 RTP/SAVPF 100 116 117
a=rtpmap:100 VP8/90000
a=ssrc-group:FID 2301230316 386328120
a=ssrc:2301230316 cname:T5qvrIZj42v//eYQ
a=ssrc:386328120 cname:uEYgNtStZyTF74sM
a=ssrc-group:FID 3139499595 2613715171
a=ssrc:3139499595 cname:re8jhxkly9bxzuxr
a=ssrc:2613715171 cname:f83avsiw6n1m7vi
2013-12-03 15:47:50 -05:00
</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' >
2013-12-15 11:22:02 -05:00
<payload-type id= '100' name= 'VP8' clockrate= '90000' />
2013-12-06 15:00:26 -05:00
<ssrc-group xmlns= 'urn:xmpp:jingle:apps:rtp:ssma:0' semantics= 'FID' >
2013-12-15 11:22:02 -05:00
<source ssrc= '2301230316' />
<source ssrc= '386328120' />
2013-12-03 15:47:50 -05:00
</ssrc-group>
2013-12-06 15:00:26 -05:00
<ssrc-group xmlns= 'urn:xmpp:jingle:apps:rtp:ssma:0' semantics= 'FID' >
2013-12-15 11:22:02 -05:00
<source ssrc= '3139499595' />
<source ssrc= '2613715171' />
2013-12-03 15:47:50 -05:00
</ssrc-group>
2013-12-15 11:22:02 -05:00
<source ssrc= '2301230316' xmlns= 'urn:xmpp:jingle:apps:rtp:ssma:0' >
<parameter name= 'cname' value= 'T5qvrIZj42v//eYQ' />
2013-12-03 15:47:50 -05:00
</source>
2013-12-15 11:22:02 -05:00
<source ssrc= '386328120' xmlns= 'urn:xmpp:jingle:apps:rtp:ssma:0' >
<parameter name= 'cname' value= 'uEYgNtStZyTF74sM' />
2013-12-03 15:47:50 -05:00
</source>
2013-12-15 11:22:02 -05:00
<source ssrc= '3139499595' xmlns= 'urn:xmpp:jingle:apps:rtp:ssma:0' >
<parameter name= 'cname' value= 're8jhxkly9bxzuxr' />
2013-12-03 15:47:50 -05:00
</source>
2013-12-15 11:22:02 -05:00
<source ssrc= '2613715171' xmlns= 'urn:xmpp:jingle:apps:rtp:ssma:0' >
<parameter name= 'cname' value= 'f83avsiw6n1m7vi' />
2013-12-03 15:47:50 -05:00
</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>
2013-12-15 11:22:02 -05:00
<!--
2013-12-03 15:47:50 -05:00
<section1 topic= 'Acknowledgements' anchor= 'acks' >
</section1>
2013-12-15 11:22:02 -05:00
-->
2013-12-03 15:47:50 -05:00
<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>
2013-12-03 15:41:06 -05:00
</ul>
2013-12-03 15:47:50 -05:00
<p > The ®ISTRAR; 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>