1
0
mirror of https://github.com/moparisthebest/xeps synced 2024-11-21 16:55:07 -05:00

xep-0294: add mapping for a=extmap-allow-mixed

This commit is contained in:
Philipp Hancke 2021-03-05 21:58:28 +01:00
parent 2b5ee06703
commit be6bc3a1e0
2 changed files with 51 additions and 34 deletions

View File

@ -19,6 +19,7 @@
<dependencies> <dependencies>
<spec>XEP-0167</spec> <spec>XEP-0167</spec>
<spec>RFC 5285</spec> <spec>RFC 5285</spec>
<spec>RFC 8285</spec>
</dependencies> </dependencies>
<supersedes/> <supersedes/>
<supersededby/> <supersededby/>
@ -61,7 +62,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 &rfc5285; and &rfc8285; with Jingle RTP
sessions.</p> sessions.</p>
</section1> </section1>
@ -69,48 +70,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 5285</cite> and <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 +137,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 +158,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'>
@ -186,6 +196,10 @@ describe it. Any other form of parameter can be stored as the 'key' attribute in
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>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 5285</cite> section 6 into equivalent XMPP:</p> <p>Example conversion of a incomplete sample fragment of a SDP taken from <cite>RFC 5285</cite> section 6 into equivalent XMPP:</p>
<example caption='SDP fragment'><![CDATA[ <example caption='SDP fragment'><![CDATA[
m=video m=video
@ -193,6 +207,7 @@ 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 +221,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

@ -702,6 +702,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 -->