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>
2020-05-26 11:32:01 -04:00
<status > Draft</status>
2020-05-05 14:58:55 -04:00
<lastcall > 2020-05-19</lastcall>
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>
2017-01-01 17:34:35 -05:00
&fippo;
2021-10-23 09:38:51 -04:00
<revision >
<version > 1.0.1</version>
<date > 2021-10-23</date>
<initials > egp</initials>
<remark > <p > Add a XML Schema, and fix an example lacking a namespace.</p> </remark>
</revision>
2020-05-26 11:32:01 -04:00
<revision >
<version > 1.0.0</version>
<date > 2020-05-26</date>
<initials > XEP Editor (jsc)</initials>
<remark > <p > Move to Draft as per Council vote from 2020-05-20.</p> </remark>
</revision>
2017-09-11 11:49:11 -04:00
<revision >
<version > 0.3</version>
<date > 2017-09-11</date>
<initials > XEP Editor (jwi)</initials>
<remark > Defer due to lack of activity.</remark>
</revision>
2015-11-09 16:29:44 -05:00
<revision >
<version > 0.2</version>
<date > 2015-11-09</date>
<initials > ph</initials>
<remark > <p > remove obsolete mslabel and label lines.</p> </remark>
</revision>
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>
</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' />
2017-02-14 17:10:01 -05:00
</source>
2017-02-14 17:08:49 -05:00
]]></code>
2013-12-03 15:47:50 -05:00
<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>
2017-02-14 17:10:01 -05:00
<p > An example follows:</p>
2013-12-03 15:47:50 -05:00
<code >
a=ssrc:1656081975 cname:Yv/wvbCdsDW2Prgd
2015-11-09 16:29:44 -05:00
a=ssrc:1656081975 msid:MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIv MLTJKIHilGn71fNQoszkQ4jlPTuS5vJyKVIva0</code>
2013-12-03 15:47:50 -05:00
<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' />
2015-11-09 16:29:44 -05:00
</source> ]]></code>
2013-12-03 15:47:50 -05:00
</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 >
2015-11-09 16:29:44 -05:00
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' />
[...]
2015-11-09 16:29:44 -05:00
</ssrc-group> ]]></code>
2013-12-03 15:47:50 -05:00
</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[
2021-10-23 09:38:51 -04:00
<content xmlns= 'http://jabber.org/protocols/jingle' creator= 'initiator' name= 'webcam' >
2013-12-03 15:47:50 -05:00
<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>
2017-02-14 17:08:49 -05:00
]]></code>
2013-12-03 15:47:50 -05:00
</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[
2017-02-14 17:10:01 -05:00
<iq type= 'get'
2013-12-03 15:47:50 -05:00
from='calvin@usrobots.lit/lab'
to='herbie@usrobots.lit/home'
id='disco1'>
<query xmlns= 'http://jabber.org/protocol/disco#info' />
</iq>
2017-02-14 17:08:49 -05:00
]]></example>
2013-12-03 15:47:50 -05:00
<example caption= 'A disco#info response' > < ![CDATA[
2017-02-14 17:10:01 -05:00
<iq type= 'result'
2013-12-03 15:47:50 -05:00
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>
2017-02-14 17:08:49 -05:00
]]></example>
2013-12-03 15:47:50 -05:00
<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' >
2021-10-23 09:38:51 -04:00
<code > < ![CDATA[
<?xml version='1.0' encoding='UTF-8'?>
<xs:schema
xmlns:xs='http://www.w3.org/2001/XMLSchema'
targetNamespace='urn:xmpp:jingle:apps:rtp:ssma:0'
xmlns='urn:xmpp:jingle:apps:rtp:ssma:0'
elementFormDefault='qualified'>
<xs:annotation >
<xs:documentation >
The protocol documented by this schema is defined in
XEP-0339: http://www.xmpp.org/extensions/xep-0339.html
</xs:documentation>
</xs:annotation>
<xs:element name= 'ssrc-group' >
<xs:complexType >
<xs:sequence >
<xs:element ref= 'source'
minOccurs='0'
maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name= 'semantics' use= 'required' >
<xs:simpleType >
<xs:restriction base= 'xs:NCName' >
<xs:enumeration value= 'LS' />
<xs:enumeration value= 'FID' />
<xs:enumeration value= 'SRF' />
<xs:enumeration value= 'ANAT' />
<xs:enumeration value= 'FEC' />
<xs:enumeration value= 'DDP' />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name= 'source' >
<xs:complexType >
<xs:sequence >
<xs:element ref= 'parameter'
minOccurs='0'
maxOccurs='unbounded'/>
</xs:sequence>
<xs:attribute name= 'ssrc' type= 'xs:unsignedInt' use= 'required' />
</xs:complexType>
</xs:element>
<xs:element name= 'parameter' >
<xs:complexType >
<xs:attribute name= 'name' type= 'xs:string' use= 'required' />
<xs:attribute name= 'value' type= 'xs:string' use= 'optional' />
</xs:complexType>
</xs:element>
</xs:schema>
]]></code>
2013-12-03 15:47:50 -05:00
</section1>
</xep>