Merge branch 'feature/xep-0294' into premerge

This commit is contained in:
Jonas Schäfer 2021-03-28 14:30:31 +02:00
commit 6e78fdbf69
2 changed files with 60 additions and 39 deletions

View File

@ -8,7 +8,7 @@
<header> <header>
<title>Jingle RTP Header Extensions Negotiation</title> <title>Jingle RTP Header Extensions Negotiation</title>
<abstract>This specification defines an XMPP extension to negotiate <abstract>This specification defines an XMPP extension to negotiate
the use of the use of RTP Header Extension as defined by RFC 5285 the use of the use of RTP Header Extension as defined by RFC 8285
with Jingle RTP sessions</abstract> with Jingle RTP sessions</abstract>
&LEGALNOTICE; &LEGALNOTICE;
<number>0294</number> <number>0294</number>
@ -18,7 +18,7 @@
<approver>Council</approver> <approver>Council</approver>
<dependencies> <dependencies>
<spec>XEP-0167</spec> <spec>XEP-0167</spec>
<spec>RFC 5285</spec> <spec>RFC 8285</spec>
</dependencies> </dependencies>
<supersedes/> <supersedes/>
<supersededby/> <supersededby/>
@ -33,6 +33,12 @@
<email>olivier.crete@collabora.co.uk</email> <email>olivier.crete@collabora.co.uk</email>
<jid>olivier.crete@collabora.co.uk</jid> <jid>olivier.crete@collabora.co.uk</jid>
</author> </author>
<revision>
<version>1.1</version>
<date>2021-03-28</date>
<initials>ph</initials>
<remark><p>Add mapping for a=extmap-allow-mixed</p></remark>
</revision>
<revision> <revision>
<version>1.0</version> <version>1.0</version>
<date>2015-08-11</date> <date>2015-08-11</date>
@ -61,7 +67,7 @@
<section1 topic='Introduction' anchor='introduction'> <section1 topic='Introduction' anchor='introduction'>
<p>This documents specifies how to negotiate the use of the RTP <p>This documents specifies how to negotiate the use of the RTP
Header Extensions as defined by &rfc5285; with Jingle RTP Header Extensions as defined by &rfc8285; with Jingle RTP
sessions.</p> sessions.</p>
</section1> </section1>
@ -69,48 +75,52 @@
<p>The Jingle extension defined herein is designed to meet the following requirements:</p> <p>The Jingle extension defined herein is designed to meet the following requirements:</p>
<ol> <ol>
<li>Enable negotiations of the RTP Header extensions as defined in <li>Enable negotiations of the RTP Header extensions as defined in
<cite>RFC 5285</cite>.</li> <cite>RFC 8285</cite>.</li>
<li>Map these parameters to Session Description Protocol (SDP; see <li>Map these parameters to Session Description Protocol (SDP; see
&rfc4566;) to enable interoperability.</li> &rfc4566;) to enable interoperability.</li>
</ol> </ol>
</section1> </section1>
<section1 topic='New element' anchor='element'> <section1 topic='New elements' anchor='element'>
<p>This specification defines a new element, &lt;rtp-hdrext/&gt;, <p>This specification defines a new element, &lt;rtp-hdrext/&gt;,
that can be inserted in the &lt;description/&gt; element of a that can be inserted in the &lt;description/&gt; element of a
XEP-0167 RTP session.</p> XEP-0167 RTP session.</p>
<p>The attributes of the &lt;rtp-hdrext/&gt; element are:</p> <p>The attributes of the &lt;rtp-hdrext/&gt; element are:</p>
<table caption='rtp-hdrext attributes'> <table caption='rtp-hdrext attributes'>
<tr> <tr>
<th>Attribute</th> <th>Attribute</th>
<th>Description</th> <th>Description</th>
<th>Inclusion</th> <th>Inclusion</th>
<th>Possible values</th> <th>Possible values</th>
</tr> </tr>
<tr> <tr>
<td>id</td> <td>id</td>
<td>The ID of the extensions</td> <td>The ID of the extensions</td>
<td>REQUIRED</td> <td>REQUIRED</td>
<td>1-256, 4096-4351</td> <td>1-256, 4096-4351</td>
</tr> </tr>
<tr> <tr>
<td>uri</td> <td>uri</td>
<td>The URI that defines the extension</td> <td>The URI that defines the extension</td>
<td>REQUIRED</td> <td>REQUIRED</td>
<td>Any valid URI</td> <td>Any valid URI</td>
</tr> </tr>
<tr> <tr>
<td>senders</td> <td>senders</td>
<td>Which party is allowed to send the negotiated RTP Header Extensions</td> <td>Which party is allowed to send the negotiated RTP Header Extensions</td>
<td>OPTIONAL (defaults to "both")</td> <td>OPTIONAL (defaults to "both")</td>
<td>"initiator", "responder", and "both"</td> <td>"initiator", "responder", and "both"</td>
</tr> </tr>
</table> </table>
<p>Any type of RTP Header Extension that requires extra <p>Any type of RTP Header Extension that requires extra
parameters in the a=b form can embed &lt;parameter/&gt; elements to parameters in the a=b form can embed &lt;parameter/&gt; elements to
describe it. Any other form of parameter can be stored as the 'key' attribute in a parameter element with an empty value.</p> describe it. Any other form of parameter can be stored as the 'key' attribute in a parameter element with an empty value.</p>
<p>This specification defines a new element, &lt;extmap-allow-mixed/&gt;,
that can be inserted in the &lt;description/&gt; element of a
XEP-0167 RTP session. The element has no attributes.</p>
</section1> </section1>
@ -132,6 +142,9 @@ describe it. Any other form of parameter can be stored as the 'key' attribute in
field from "both" to "initator" or "responder", but MUST NOT modify it field from "both" to "initator" or "responder", but MUST NOT modify it
if it is "initator" or "responder".</p> if it is "initator" or "responder".</p>
<p>The usage of the &lt;extmap-allow-mixed/&gt; is governed by the
SDP Offer/Answer mechanism as well.</p>
<p>Example negotiation where the initiator offers to use the <p>Example negotiation where the initiator offers to use the
timestamp offset header extension as defined in &rfc5450; and also timestamp offset header extension as defined in &rfc5450; and also
the requests synchronisation metadata header extension (&rfc6051;) the requests synchronisation metadata header extension (&rfc6051;)
@ -150,11 +163,13 @@ describe it. Any other form of parameter can be stored as the 'key' attribute in
uri='urn:ietf:params:rtp-hdrext:ntp-56' uri='urn:ietf:params:rtp-hdrext:ntp-56'
id='4907'/> id='4907'/>
<payload-type id='96' name='THEORA' clockrate='90000'/> <payload-type id='96' name='THEORA' clockrate='90000'/>
<extmap-allow-mixed xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/>
</description> </description>
]]></example> ]]></example>
<p>Example reply where the responder accepts the timestamp offset <p>Example reply where the responder accepts the timestamp offset
and the 56-bit synchronisation metadata header extensions.</p> and the 56-bit synchronisation metadata header extensions as well as the
&lt;extmap-allow-mixed/&gt;.</p>
<example caption='Reponder sends description inside session-accept'><![CDATA[ <example caption='Reponder sends description inside session-accept'><![CDATA[
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'> <description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
@ -182,17 +197,22 @@ describe it. Any other form of parameter can be stored as the 'key' attribute in
<section1 topic='Mapping to Session Description Protocol' anchor='sdp-mapping'> <section1 topic='Mapping to Session Description Protocol' anchor='sdp-mapping'>
<p>The &lt;rtp-hdrext/&gt; element maps to the "a:extmap=" SDP line <p>The &lt;rtp-hdrext/&gt; element maps to the "a:extmap=" SDP line
defined in <cite>RFC 5285</cite>. The ID is mapped to the 'id' attribute, the defined in <cite>RFC 8285</cite>. The ID is mapped to the 'id' attribute, the
direction to the 'senders' attribute and the URI to the 'uri' direction to the 'senders' attribute and the URI to the 'uri'
attribute.</p> attribute.</p>
<p>Example conversion of a incomplete sample fragment of a SDP taken from <cite>RFC 5285</cite> section 6 into equivalent XMPP:</p> <p>The &lt;extmap-allow-mixed/&gt; element maps to the "a=extmap-allow-mixed" SDP line
defined in <cite>RFC 8285</cite>. Note that a session-level line might need to be mapped
to all &lt;description/&gt; elements.</p>
<p>Example conversion of a incomplete sample fragment of a SDP taken from <cite>RFC 8285</cite> section 7 into equivalent XMPP:</p>
<example caption='SDP fragment'><![CDATA[ <example caption='SDP fragment'><![CDATA[
m=video m=video
a=sendrecv a=sendrecv
a=extmap:1 URI-toffset a=extmap:1 URI-toffset
a=extmap:2/recvonly URI-gps-string a=extmap:2/recvonly URI-gps-string
a=extmap:3 URI-frametype a=extmap:3 URI-frametype
a=extmap-allow-mixed
]]></example> ]]></example>
<example caption='The same description in XMPP format'><![CDATA[ <example caption='The same description in XMPP format'><![CDATA[
<description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'> <description xmlns='urn:xmpp:jingle:apps:rtp:1' media='video'>
@ -206,6 +226,7 @@ a=extmap:3 URI-frametype
<rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0' <rtp-hdrext xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'
id='3' id='3'
uri='URI-frametype'/> uri='URI-frametype'/>
<extmap-allow-mixed xmlns='urn:xmpp:jingle:apps:rtp:rtp-hdrext:0'/>
</description> </description>
]]></example> ]]></example>
</section1> </section1>

View File

@ -626,7 +626,6 @@ THE SOFTWARE.
<!ENTITY rfc5246 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5246'>RFC 5246</link></span> <note>RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2 &lt;<link url='http://tools.ietf.org/html/rfc5246'>http://tools.ietf.org/html/rfc5246</link>&gt;.</note>" > <!ENTITY rfc5246 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5246'>RFC 5246</link></span> <note>RFC 5246: The Transport Layer Security (TLS) Protocol Version 1.2 &lt;<link url='http://tools.ietf.org/html/rfc5246'>http://tools.ietf.org/html/rfc5246</link>&gt;.</note>" >
<!ENTITY rfc5256 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5256'>RFC 5256</link></span> <note>RFC 5256: Internet Message Access Protocol - SORT and THREAD Extensions &lt;<link url='http://tools.ietf.org/html/rfc5256'>http://tools.ietf.org/html/rfc5256</link>&gt;.</note>" > <!ENTITY rfc5256 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5256'>RFC 5256</link></span> <note>RFC 5256: Internet Message Access Protocol - SORT and THREAD Extensions &lt;<link url='http://tools.ietf.org/html/rfc5256'>http://tools.ietf.org/html/rfc5256</link>&gt;.</note>" >
<!ENTITY rfc5280 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5280'>RFC 5280</link></span> <note>RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile &lt;<link url='http://tools.ietf.org/html/rfc5280'>http://tools.ietf.org/html/rfc5280</link>&gt;.</note>" > <!ENTITY rfc5280 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5280'>RFC 5280</link></span> <note>RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile &lt;<link url='http://tools.ietf.org/html/rfc5280'>http://tools.ietf.org/html/rfc5280</link>&gt;.</note>" >
<!ENTITY rfc5285 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5285'>RFC 5285</link></span> <note>RFC 5285: A General Mechanism for RTP Header Extensions &lt;<link url='http://tools.ietf.org/html/rfc5285'>http://tools.ietf.org/html/rfc5285</link>&gt;.</note>" >
<!ENTITY rfc5322 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5322'>RFC 5322</link></span> <note>RFC 5322: Internet Message Format &lt;<link url='http://tools.ietf.org/html/rfc5322'>http://tools.ietf.org/html/rfc5322</link>&gt;.</note>" > <!ENTITY rfc5322 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5322'>RFC 5322</link></span> <note>RFC 5322: Internet Message Format &lt;<link url='http://tools.ietf.org/html/rfc5322'>http://tools.ietf.org/html/rfc5322</link>&gt;.</note>" >
<!ENTITY rfc5359 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5359'>RFC 5359</link></span> <note>RFC 5359: Session Initiation Protocol Service Examples &lt;<link url='http://tools.ietf.org/html/rfc5359'>http://tools.ietf.org/html/rfc5359</link>&gt;.</note>" > <!ENTITY rfc5359 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5359'>RFC 5359</link></span> <note>RFC 5359: Session Initiation Protocol Service Examples &lt;<link url='http://tools.ietf.org/html/rfc5359'>http://tools.ietf.org/html/rfc5359</link>&gt;.</note>" >
<!ENTITY rfc5389 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5389'>RFC 5389</link></span> <note>RFC 5389: Session Traversal Utilities for NAT (STUN) &lt;<link url='http://tools.ietf.org/html/rfc5389'>http://tools.ietf.org/html/rfc5389</link>&gt;.</note>" > <!ENTITY rfc5389 "<span class='ref'><link url='http://tools.ietf.org/html/rfc5389'>RFC 5389</link></span> <note>RFC 5389: Session Traversal Utilities for NAT (STUN) &lt;<link url='http://tools.ietf.org/html/rfc5389'>http://tools.ietf.org/html/rfc5389</link>&gt;.</note>" >
@ -702,6 +701,7 @@ THE SOFTWARE.
<!ENTITY rfc8446 "<span class='ref'><link url='http://tools.ietf.org/html/rfc8446'>RFC 8446</link></span> <note>RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3 &lt;<link url='http://tools.ietf.org/html/rfc8446'>http://tools.ietf.org/html/rfc8446</link>&gt;.</note>" > <!ENTITY rfc8446 "<span class='ref'><link url='http://tools.ietf.org/html/rfc8446'>RFC 8446</link></span> <note>RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3 &lt;<link url='http://tools.ietf.org/html/rfc8446'>http://tools.ietf.org/html/rfc8446</link>&gt;.</note>" >
<!ENTITY rfc8467 "<span class='ref'><link url='http://tools.ietf.org/html/rfc8467'>RFC 8467</link></span> <note>RFC 8467: Padding Policies for Extension Mechanisms for DNS (EDNS(0)) &lt;<link url='http://tools.ietf.org/html/rfc8467'>http://tools.ietf.org/html/rfc8467</link>&gt;.</note>" > <!ENTITY rfc8467 "<span class='ref'><link url='http://tools.ietf.org/html/rfc8467'>RFC 8467</link></span> <note>RFC 8467: Padding Policies for Extension Mechanisms for DNS (EDNS(0)) &lt;<link url='http://tools.ietf.org/html/rfc8467'>http://tools.ietf.org/html/rfc8467</link>&gt;.</note>" >
<!ENTITY rfc8484 "<span class='ref'><link url='http://tools.ietf.org/html/rfc8484'>RFC 8484</link></span> <note>RFC 8484: DNS Queries over HTTPS (DoH) &lt;<link url='http://tools.ietf.org/html/rfc8484'>http://tools.ietf.org/html/rfc8484</link>&gt;.</note>" > <!ENTITY rfc8484 "<span class='ref'><link url='http://tools.ietf.org/html/rfc8484'>RFC 8484</link></span> <note>RFC 8484: DNS Queries over HTTPS (DoH) &lt;<link url='http://tools.ietf.org/html/rfc8484'>http://tools.ietf.org/html/rfc8484</link>&gt;.</note>" >
<!ENTITY rfc8285 "<span class='ref'><link url='http://tools.ietf.org/html/rfc8285'>RFC 8285</link></span> <note>RFC 8285: A General Mechanism for RTP Header Extensions &lt;<link url='http://tools.ietf.org/html/rfc8285'>http://tools.ietf.org/html/rfc8285</link>&gt;.</note>" >
<!-- Internet-Drafts --> <!-- Internet-Drafts -->