| rfc8851xml2.original.xml | rfc8851.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> | |||
| <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.7 --> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ | ||||
| ]> | ||||
| <?rfc toc="yes"?> | ||||
| <?rfc sortrefs="yes"?> | ||||
| <?rfc symrefs="yes"?> | ||||
| <rfc ipr="trust200902" docName="draft-ietf-mmusic-rid-15" category="std" updates | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" | |||
| ="4855"> | category="std" updates="4855" number="8851" submissionType="IETF" | |||
| consensus="true" obsoletes="" xml:lang="en" tocInclude="true" | ||||
| sortRefs="true" symRefs="true" version="3" | ||||
| docName="draft-ietf-mmusic-rid-15"> | ||||
| <!-- xml2rfc v2v3 conversion 2.30.0 --> | ||||
| <front> | <front> | |||
| <title abbrev="RTP Restrictions">RTP Payload Format Restrictions</title> | <title abbrev="RTP Restrictions">RTP Payload Format Restrictions</title> | |||
| <seriesInfo name="RFC" value="8851"/> | ||||
| <author initials="A.B." surname="Roach (Editor)" fullname="Adam Roach"> | <author initials="A.B." surname="Roach" fullname="Adam Roach" role="editor"> | |||
| <organization>Mozilla</organization> | <organization>Mozilla</organization> | |||
| <address> | <address> | |||
| <email>adam@nostrum.com</email> | <email>adam@nostrum.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="May" year="2020"/> | ||||
| <date year="2018" month="May" day="15"/> | <keyword>WebRTC</keyword> | |||
| <keyword>Multiplexing</keyword> | ||||
| <abstract> | <abstract> | |||
| <t>In this specification, we define a framework for specifying restriction | ||||
| <t>In this specification, we define a framework for specifying restrictions | s | |||
| on RTP streams in the Session Description Protocol. | on RTP streams in the Session Description Protocol (SDP). | |||
| This framework defines a new “rid” (“restriction identifier”) SDP attribute to u | This framework defines a new "rid" ("restriction identifier") SDP attribute to | |||
| nambiguously | unambiguously identify the RTP streams within an RTP session and restrict the | |||
| identify the RTP Streams within an RTP Session and restrict the streams’ payload | streams' payload format parameters in a codec-agnostic way beyond what is | |||
| format parameters in a codec-agnostic way beyond what is provided with the | provided with the regular payload types.</t> | |||
| regular Payload Types.</t> | <t>This specification updates RFC 4855 to give additional guidance on choi | |||
| ce of | ||||
| <t>This specification updates RFC4855 to give additional guidance on choice of | Format Parameter (fmtp) names and their relation to the restrictions | |||
| Format Parameter (fmtp) names, and on their relation to the restrictions | ||||
| defined by this document.</t> | defined by this document.</t> | |||
| </abstract> | </abstract> | |||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="terminology" numbered="true" toc="default"> | ||||
| <section anchor="terminology" title="Terminology"> | <name>Terminology</name> | |||
| <t>The terms "source RTP stream", "endpoint", "RTP session", and "RTP stre | ||||
| <t>The terms “Source RTP Stream”, “Endpoint”, “RTP Session”, and “RTP Stream” | am" | |||
| are used as defined in <xref target="RFC7656"/>.</t> | are used as defined in <xref target="RFC7656" format="default"/>.</t> | |||
| <t><xref target="RFC4566" format="default"/> and <xref target="RFC3264" fo | ||||
| <t><xref target="RFC4566"/> and <xref target="RFC3264"/> terminology is also use | rmat="default"/> terminology is also used where appropriate.</t> | |||
| d where appropriate.</t> | </section> | |||
| <section anchor="sec-intro" numbered="true" toc="default"> | ||||
| </section> | <name>Introduction</name> | |||
| <section anchor="sec-intro" title="Introduction"> | <t>The payload type (PT) field in RTP provides a mapping between the RTP p | |||
| ayload | ||||
| <t>The Payload Type (PT) field in RTP provides a mapping between the RTP payload | format and the associated SDP media description. For a given PT, the SDP | |||
| format and the associated SDP media description. The SDP rtpmap and/or fmtp | rtpmap and/or fmtp attributes are used to describe the properties of | |||
| attributes are used, for a given PT, to describe the properties of | ||||
| the media that is carried in the RTP payload.</t> | the media that is carried in the RTP payload.</t> | |||
| <t>Recent advances in standards have given rise to rich | ||||
| <t>Recent advances in standards have given rise to rich | multimedia applications requiring support for either multiple RTP streams within | |||
| multimedia applications requiring support for multiple RTP Streams within an | an | |||
| RTP session <xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"/>, | RTP session <xref target="RFC8843" format="default"/> <xref target="RFC8853" for | |||
| <xref target="I-D.ietf-mmusic-sdp-simulcast"/> or having to support a large numb | mat="default"/> or a | |||
| er of codecs. | large number of codecs. | |||
| These demands have unearthed challenges inherent with:</t> | These demands have unearthed challenges inherent with:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>The restricted RTP PT space in specifying the various payload | |||
| <t>The restricted RTP PT space in specifying the various payload | configurations</li> | |||
| configurations,</t> | <li>The codec-specific constructs for the payload formats in SDP</li> | |||
| <t>The codec-specific constructs for the payload formats in SDP,</t> | <li>Missing or underspecified payload format parameters</li> | |||
| <t>Missing or underspecified payload format parameters,</t> | <li>Overloading of PTs to indicate not just codec configurations, but | |||
| <t>Overloading of PTs to indicate not just codec configurations, but | individual streams within an RTP session</li> | |||
| individual streams within an RTP session.</t> | </ul> | |||
| </list></t> | <t>To expand on these points: <xref target="RFC3550" format="default"/> | |||
| assigns 7 bits for the PT in the RTP header. However, the assignment of | ||||
| <t>To expand on these points: <xref target="RFC3550"/> assigns 7 bits for the PT | static mapping of RTP payload type numbers to payload formats and | |||
| in the RTP | multiplexing of RTP with other protocols (such as the RTP Control | |||
| header. However, the assignment of static mapping of RTP payload type numbers | Protocol (RTCP)) could result in a limited number of payload type | |||
| to payload formats and multiplexing of RTP with other protocols (such as RTCP) | numbers available for application usage. In scenarios where the number | |||
| could result in a limited number of payload type numbers available for | of possible RTP payload configurations exceeds the available PT space | |||
| application usage. In scenarios where the number of possible RTP payload | within an RTP session, there is a need for a way to represent the | |||
| configurations exceeds the available PT space within an RTP Session, there is | additional restrictions on payload configurations and effectively map an | |||
| a need for a way to represent the additional restrictions on payload configurati | RTP stream to its corresponding restrictions. This issue is exacerbated | |||
| ons | by the increase in techniques -- such as simulcast and layered codecs -- | |||
| and to effectively map an RTP Stream to its corresponding restrictions. This | that introduce additional streams into RTP sessions.</t> | |||
| issue is exacerbated by the increase in techniques – such as simulcast and | <t>This specification defines a new SDP framework for restricting source R | |||
| layered codecs – which introduce additional streams into RTP Sessions.</t> | TP | |||
| streams (Section 2.1.10 of <xref target="RFC7656" format="default"/>), along wit | ||||
| <t>This specification defines a new SDP framework for restricting Source RTP | h | |||
| Streams (Section 2.1.10 <xref target="RFC7656"/>), along with | ||||
| the SDP attributes to restrict payload formats in a codec-agnostic way. | the SDP attributes to restrict payload formats in a codec-agnostic way. | |||
| This framework can be thought of as a complementary extension to the way | This framework can be thought of as a complementary extension to the way | |||
| the media format parameters are specified in SDP today, via the “a=fmtp” | the media format parameters are specified in SDP today, via the "a=fmtp" | |||
| attribute.</t> | attribute.</t> | |||
| <t>The additional restrictions on individual streams are indicated with a | ||||
| <t>The additional restrictions on individual streams are indicated with a new | new | |||
| “a=rid” (“restriction identifier”) SDP attribute. Note that the restrictions com | "a=rid" ("restriction identifier") SDP attribute. Note that the restrictions com | |||
| municated via this | municated via this | |||
| attribute only serve to further restrict the parameters that are established | attribute only serve to further restrict the parameters that are established | |||
| on a PT format. They do not relax any restrictions imposed by other mechanisms.< /t> | on a PT format. They do not relax any restrictions imposed by other mechanisms.< /t> | |||
| <t>This specification makes use of the RTP Stream Identifier Source Descri | ||||
| <t>This specification makes use of the RTP Stream Identifier Source Description | ption | |||
| (SDES) RTCP item defined in <xref target="I-D.ietf-avtext-rid"/> to provide cor | (SDES) RTCP item defined in <xref target="RFC8852" format="default"/> to provid | |||
| relation | e correlation | |||
| between the RTP Packets and their format specification in the SDP.</t> | between the RTP packets and their format specification in the SDP.</t> | |||
| <t>As described in <xref target="sec-rid_unaware" format="default"/>, this | ||||
| <t>As described in <xref target="sec-rid_unaware"/>, this mechanism achieves bac | mechanism achieves backwards | |||
| kwards | compatibility via the normal SDP processing rules, which require unknown "a=" | |||
| compatibility via the normal SDP processing rules, which require unknown a= | ||||
| lines to be ignored. This means that implementations need to be prepared | lines to be ignored. This means that implementations need to be prepared | |||
| to handle successful offers and answers from other implementations that | to handle successful offers and answers from other implementations that | |||
| neither indicate nor honor the restrictions requested by this mechanism.</t> | neither indicate nor honor the restrictions requested by this mechanism.</t> | |||
| <t>Further, as described in <xref target="sec-sdp_o_a" format="default"/> | ||||
| <t>Further, as described in <xref target="sec-sdp_o_a"/> and its subsections, th | and its subsections, this mechanism | |||
| is mechanism | ||||
| achieves extensibility by: (a) having offerers include all supported | achieves extensibility by: (a) having offerers include all supported | |||
| restrictions in their offer, and (b) having answerers ignore “a=rid” lines that | restrictions in their offer, and (b) having answerers ignore "a=rid" lines that | |||
| specify unknown restrictions.</t> | specify unknown restrictions.</t> | |||
| </section> | ||||
| </section> | <section anchor="key-words-for-requirements" numbered="true" toc="default"> | |||
| <section anchor="key-words-for-requirements" title="Key Words for Requirements"> | <name>Key Words for Requirements</name> | |||
| <t> | ||||
| <t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQU | |||
| NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, | IRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL | |||
| “MAY”, and “OPTIONAL” in this document are to be interpreted as | NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14> | |||
| described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and | RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
| only when, they | "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to | |||
| appear in all capitals, as shown here.</t> | be interpreted as | |||
| described in BCP 14 <xref target="RFC2119" format="default"/> <xref tar | ||||
| </section> | get="RFC8174" format="default"/> | |||
| <section anchor="sec-rid_attribute" title="SDP “a=rid” Media Level Attribute"> | when, and only when, they appear in all capitals, as shown here. | |||
| </t> | ||||
| <t>This section defines new SDP media-level attribute <xref target="RFC4566"/>, | </section> | |||
| “a=rid”, | <section anchor="sec-rid_attribute" numbered="true" toc="default"> | |||
| <name>SDP "a=rid" Media Level Attribute</name> | ||||
| <t>This section defines new SDP media-level attribute <xref | ||||
| target="RFC4566" format="default"/>, "a=rid", | ||||
| used to communicate a set of restrictions to be | used to communicate a set of restrictions to be | |||
| applied to an identified RTP Stream. Roughly speaking, this attribute takes the | applied to an identified RTP stream. Roughly speaking, this attribute takes | |||
| following form (see <xref target="sec-abnf"/> for a formal definition).</t> | the following form (see <xref target="sec-abnf" format="default"/> for a | |||
| formal definition):</t> | ||||
| <figure><artwork><![CDATA[ | <sourcecode type="sdp"><![CDATA[ | |||
| a=rid:<rid-id> <direction> [pt=<fmt-list>;]<restriction>=<value>... | a=rid:<rid-id> <direction> [pt=<fmt-list>;]<restriction>=<value>... | |||
| ]]></sourcecode> | ||||
| ]]></artwork></figure> | <t>An "a=rid" SDP media attribute specifies restrictions defining a unique | |||
| RTP payload configuration identified via the "rid-id" field. This | ||||
| <t>An “a=rid” SDP media attribute specifies restrictions defining a unique | value binds the restriction to the RTP stream identified by its RTP | |||
| RTP payload configuration identified via the “rid-id” field. This | Stream Identifier Source Description (SDES) item <xref target="RFC8852" format=" | |||
| value binds the restriction to the RTP Stream identified by its RTP | default"/>. | |||
| Stream Identifier Source Description (SDES) item <xref target="I-D.ietf-avtext-r | Implementations that use the "a=rid" parameter in SDP <bcp14>MUST</bcp14> suppor | |||
| id"/>. | t | |||
| Implementations that use the “a=rid” parameter in SDP MUST support | the RtpStreamId SDES item described in <xref target="RFC8852" format="default"/> | |||
| the RtpStreamId SDES item described in <xref target="I-D.ietf-avtext-rid"/>. Suc | . Such | |||
| h | implementations <bcp14>MUST</bcp14> send that SDES item for all streams in an SD | |||
| implementations MUST send that SDES item for all streams in an SDP media descrip | P media description | |||
| tion | ("m=") that have "a=rid" lines remaining after applying the rules in | |||
| (“m=”) that have “a=rid” lines remaining after applying the rules in | <xref target="sec-sdp_o_a" format="default"/> and its subsections.</t> | |||
| <xref target="sec-sdp_o_a"/> and its subsections.</t> | <t>Implementations that use the "a=rid" parameter in SDP and make use of | |||
| redundancy RTP streams <xref target="RFC7656" format="default"/> -- e.g., RTP RT | ||||
| <t>Implementations that use the “a=rid” parameter in SDP and that | X | |||
| make use of redundancy RTP streams <xref target="RFC7656"/>, e.g. RTP RTX | <xref target="RFC4588" format="default"/> or Forward Error Correction (FEC) <xre | |||
| <xref target="RFC4588"/> or FEC <xref target="RFC5109"/>, | f target="RFC5109" format="default"/> -- for any of the | |||
| for any of the source RTP streams that have “a=rid” lines remaining | source RTP streams that have "a=rid" lines remaining | |||
| after applying the rules in <xref target="sec-sdp_o_a"/> and its subsections, MU | after applying the rules in <xref target="sec-sdp_o_a" format="default"/> and it | |||
| ST | s subsections <bcp14>MUST</bcp14> | |||
| support the RepairedRtpStreamId SDES item described in | support the RepairedRtpStreamId SDES item described in | |||
| <xref target="I-D.ietf-avtext-rid"/> for those redundancy RTP streams. RepairedR | <xref target="RFC8852" format="default"/> for those redundancy RTP streams. Repa | |||
| tpStreamId | iredRtpStreamId | |||
| MUST be used for redundancy RTP streams to which it can be applied. | <bcp14>MUST</bcp14> be used for redundancy RTP streams to which it can be applie | |||
| d. | ||||
| Use of RepairedRtpStreamId is not applicable for | Use of RepairedRtpStreamId is not applicable for | |||
| redundancy formats that directly associate RTP streams | redundancy formats that directly associate RTP streams | |||
| through shared SSRCs (for example <xref target="I-D.ietf-payload-flexible-fec-sc | through shared synchronization sources (SSRCs) -- for example, <xref | |||
| heme"/>) | target="RFC8627" format="default"/> -- | |||
| or other cases that RepairedRtpStreamId cannot support, such as referencing | or other cases that RepairedRtpStreamId cannot support, such as referencing | |||
| multiple source streams.</t> | multiple source streams.</t> | |||
| <t>RepairedRtpStreamId is used to provide the binding between the redundan | ||||
| <t>RepairedRtpStreamId is used to provide the binding between the redundancy RTP | cy RTP | |||
| stream and its source RTP stream, by setting the RepairedRtpStreamId value for | stream and its source RTP stream by setting the RepairedRtpStreamId value for | |||
| the redundancy RTP stream to the RtpStreamId value of the source RTP stream. | the redundancy RTP stream to the RtpStreamId value of the source RTP stream. | |||
| The redundancy RTP stream MAY (but need not) have an “a=rid” line of its own, | The redundancy RTP stream <bcp14>MAY</bcp14> (but need not) have an "a=rid" line of its own, | |||
| in which case the RtpStreamId SDES item value will be different from the | in which case the RtpStreamId SDES item value will be different from the | |||
| corresponding source RTP stream.</t> | corresponding source RTP stream.</t> | |||
| <t>It is important to note that this indirection may result in the tempora | ||||
| <t>It is important to note that this indirection may result in the temporary | ry | |||
| inability to correctly associate source and redundancy data when the SSRC | inability to correctly associate source and redundancy data when the SSRC | |||
| associated with the RtpStreamId or RepairedRtpStreamId is dynamically changed | associated with the RtpStreamId or RepairedRtpStreamId is dynamically changed | |||
| during the RTP session. This can be avoided if all RTP packets, source and | during the RTP session. This can be avoided if all RTP packets, source and | |||
| repair, after the change include their RtpStreamId or RepairedRtpStreamId, | repair, include their RtpStreamId or RepairedRtpStreamId, | |||
| respectively. To maximize the probability of reception and utility of | respectively, after the change. To maximize the probability of reception and ut | |||
| ility of | ||||
| redundancy information after such a change, all the source packets referenced | redundancy information after such a change, all the source packets referenced | |||
| by the first several repair packets SHOULD include such information. It is | by the first several repair packets <bcp14>SHOULD</bcp14> include such informati | |||
| RECOMMENDED that the number of such packets is large enough to give a high | on. It is | |||
| probability of actual updated association. Section 4.1.1 of <xref target="RFC828 | <bcp14>RECOMMENDED</bcp14> that the number of such packets is large enough to gi | |||
| 5"/> | ve a high | |||
| probability of actual updated association. Section 4.1.1 of <xref target="RFC828 | ||||
| 5" format="default"/> | ||||
| provides relevant guidance for RTP header extension transmission | provides relevant guidance for RTP header extension transmission | |||
| considerations. Alternatively, to avoid this issue, redundancy mechanisms | considerations. Alternatively, to avoid this issue, redundancy mechanisms | |||
| that directly reference its source data may be used, such as | that directly reference its source data may be used, such as | |||
| <xref target="I-D.ietf-payload-flexible-fec-scheme"/>.</t> | <xref target="RFC8627" format="default"/>.</t> | |||
| <t>The "direction" field identifies the direction of the RTP stream packet | ||||
| <t>The “direction” field identifies the direction of the RTP Stream packets to | s to | |||
| which the indicated restrictions are applied. It may be either “send” or | which the indicated restrictions are applied. It may be either "send" or | |||
| “recv”. Note that these restriction directions are expressed independently of | "recv". Note that these restriction directions are expressed independently of | |||
| any “inactive”, “sendonly”, “recvonly”, or “sendrecv” attributes associated | any "inactive", "sendonly", "recvonly", or "sendrecv" attributes associated | |||
| with the media section. It is, for example, valid to indicate “recv” | with the media section. It is, for example, valid to indicate "recv" | |||
| restrictions on a “sendonly” stream; those restrictions would apply if, at a | restrictions on a "sendonly" stream; those restrictions would apply if, at a | |||
| future point in time, the stream were changed to “sendrecv” or “recvonly”.</t> | future point in time, the stream were changed to "sendrecv" or "recvonly".</t> | |||
| <t>The optional "pt=<fmt-list>" lists one or more PT values that can | ||||
| <t>The optional “pt=<fmt-list>” lists one or more PT values that can be us | be used | |||
| ed | in the associated RTP stream. If the "a=rid" attribute contains | |||
| in the associated RTP Stream. If the “a=rid” attribute contains | no "pt", then any of the PT values specified in the corresponding "m=" | |||
| no “pt”, then any of the PT values specified in the corresponding “m=” | ||||
| line may be used.</t> | line may be used.</t> | |||
| <t>The list of zero or more codec-agnostic restrictions | ||||
| <t>The list of zero or more codec-agnostic restrictions | (<xref target="sec-rid_level_restrictions" format="default"/>) describes the res | |||
| (<xref target="sec-rid_level_restrictions"/>) describe the restrictions that the | trictions that the | |||
| corresponding RTP Stream will conform to.</t> | corresponding RTP stream will conform to.</t> | |||
| <t>This framework <bcp14>MAY</bcp14> be used in combination with the "a=fm | ||||
| <t>This framework MAY be used in combination with the “a=fmtp” SDP attribute | tp" SDP attribute | |||
| for describing the media format parameters for a given RTP Payload Type. In | for describing the media format parameters for a given RTP payload type. In | |||
| such scenarios, the “a=rid” restrictions (<xref target="sec-rid_level_restrictio | such scenarios, the "a=rid" restrictions (<xref target="sec-rid_level_restrictio | |||
| ns"/>) | ns" format="default"/>) | |||
| further restrict the equivalent “a=fmtp” attributes.</t> | further restrict the equivalent "a=fmtp" attributes.</t> | |||
| <t>A given SDP media description <bcp14>MAY</bcp14> have zero or more "a=r | ||||
| <t>A given SDP media description MAY have zero or more “a=rid” lines describing | id" lines describing | |||
| various possible RTP payload configurations. A given “rid-id” MUST NOT | various possible RTP payload configurations. A given "rid-id" <bcp14>MUST NOT</b | |||
| be repeated in a given media description (“m=” section).</t> | cp14> | |||
| be repeated in a given media description ("m=" section).</t> | ||||
| <t>The “a=rid” media attribute MAY be used for any RTP-based media transport. I | <t>The "a=rid" media attribute <bcp14>MAY</bcp14> be used for any RTP-base | |||
| t | d media transport. It | |||
| is not defined for other transports, although other documents may extend its | is not defined for other transports, although other documents may extend its | |||
| semantics for such transports.</t> | semantics for such transports.</t> | |||
| <t>Though the restrictions specified by the "rid" restrictions follow a | ||||
| <t>Though the restrictions specified by the “rid” restrictions follow a | ||||
| syntax similar to session-level and media-level parameters, they are defined | syntax similar to session-level and media-level parameters, they are defined | |||
| independently. All “rid” restrictions MUST be registered with IANA, using | independently. All "rid" restrictions <bcp14>MUST</bcp14> be registered with IA | |||
| the registry defined in <xref target="sec-iana"/>.</t> | NA, using | |||
| the registry defined in <xref target="sec-iana" format="default"/>.</t> | ||||
| <t><xref target="sec-abnf"/> gives a formal Augmented Backus-Naur Form (ABNF) <x | <t><xref target="sec-abnf" format="default"/> gives a formal Augmented Bac | |||
| ref target="RFC5234"/> | kus-Naur Form (ABNF) <xref target="RFC5234" format="default"/> | |||
| grammar for the “rid” attribute. The “a=rid” media attribute is not dependent | grammar for the "rid" attribute. The "a=rid" media attribute is not dependent | |||
| on charset.</t> | on charset.</t> | |||
| </section> | ||||
| <section anchor="sec-rid_level_restrictions" numbered="true" toc="default"> | ||||
| <name>"a=rid" Restrictions</name> | ||||
| </section> | <t> | |||
| <section anchor="sec-rid_level_restrictions" title="“a=rid” restrictions"> | This section defines the "a=rid" restrictions that can be used to restrict the | |||
| RTP payload encoding format in a codec-agnostic way. Please also see | ||||
| <t>This section defines the “a=rid” restrictions that can be used to restrict | the preceding section for a description of how the "pt" parameter is used. | |||
| the RTP payload encoding format in a codec-agnostic way.</t> | </t> | |||
| <t>The following restrictions are intended to apply to video codecs in a | <t>The following restrictions are intended to apply to video codecs in a | |||
| codec-independent fashion.</t> | codec-independent fashion.</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li><strong>max-width</strong>, for spatial resolution in pixels. In th | |||
| <t>max-width, for spatial resolution in pixels. In the case that stream | e case that | |||
| orientation signaling is used to modify the intended display orientation, | stream-orientation signaling is used to modify the intended display | |||
| this attribute refers to the width of the stream when a rotation of zero | orientation, this attribute refers to the width of the stream when a | |||
| degrees is encoded.</t> | rotation of zero degrees is encoded.</li> | |||
| <t>max-height, for spatial resolution in pixels. In the case that stream | <li><strong>max-height</strong>, for spatial resolution in pixels. In t | |||
| orientation signaling is used to modify the intended display orientation, | he case that | |||
| stream-orientation signaling is used to modify the intended display | ||||
| orientation, | ||||
| this attribute refers to the height of the stream when a rotation of zero | this attribute refers to the height of the stream when a rotation of zero | |||
| degrees is encoded.</t> | degrees is encoded.</li> | |||
| <t>max-fps, for frame rate in frames per second. For encoders that do not use | <li><strong>max-fps</strong>, for frame rate in frames per second. For | |||
| a fixed framerate for encoding, this value is used to restrict the minimum | encoders that do not use | |||
| a fixed frame rate for encoding, this value is used to restrict the minimum | ||||
| amount of time between frames: the time between any two consecutive frames | amount of time between frames: the time between any two consecutive frames | |||
| SHOULD NOT be less than 1/max-fps seconds.</t> | <bcp14>SHOULD NOT</bcp14> be less than 1/max-fps seconds.</li> | |||
| <t>max-fs, for frame size in pixels per frame. This is the product of frame | <li><strong>max-fs</strong>, for frame size in pixels per frame. This is | |||
| width and frame height, in pixels, for rectangular frames.</t> | the product of frame | |||
| <t>max-br, for bit rate in bits per second. The restriction applies to the | width and frame height, in pixels, for rectangular frames.</li> | |||
| media payload only, and does not include overhead introduced by other layers | <li><strong>max-br</strong>, for bitrate in bits per second. The restri | |||
| ction applies to the | ||||
| media payload only and does not include overhead introduced by other layers | ||||
| (e.g., RTP, UDP, IP, or Ethernet). The exact means of keeping within this | (e.g., RTP, UDP, IP, or Ethernet). The exact means of keeping within this | |||
| limit are left up to the implementation, and instantaneous excursions | limit are left up to the implementation, and instantaneous excursions | |||
| outside the limit are permissible. For any given one-second sliding window, | outside the limit are permissible. For any given one-second sliding window, | |||
| however, the total number of bits in the payload portion of RTP SHOULD NOT | however, the total number of bits in the payload portion of RTP <bcp14>SHOULD NO | |||
| exceed the value specified in “max-br.”</t> | T</bcp14> | |||
| <t>max-pps, for pixel rate in pixels per second. This value SHOULD be handled | exceed the value specified in "max-br."</li> | |||
| <li><strong>max-pps</strong>, for pixel rate in pixels per second. This | ||||
| value <bcp14>SHOULD</bcp14> be handled | ||||
| identically to max-fps, after performing the following conversion: max-fps = | identically to max-fps, after performing the following conversion: max-fps = | |||
| max-pps / (width * height). If the stream resolution changes, this value is | max-pps / (width * height). If the stream resolution changes, this value is | |||
| recalculated. Due to this recalculation, excursions outside the specified | recalculated. Due to this recalculation, excursions outside the specified | |||
| maximum are possible near resolution change boundaries.</t> | maximum are possible near resolution-change boundaries.</li> | |||
| <t>max-bpp, for maximum number of bits per pixel, calculated as an average of | <li><strong>max-bpp</strong>, for maximum number of bits per pixel, calc | |||
| ulated as an average of | ||||
| all samples of any given coded picture. This is expressed as | all samples of any given coded picture. This is expressed as | |||
| a floating point value, with an allowed range of 0.0001 to 48.0. These | a floating point value, with an allowed range of 0.0001 to 48.0. These | |||
| values MUST NOT be encoded with more than four digits to the right of the | values <bcp14>MUST NOT</bcp14> be encoded with more than four digits to the righ | |||
| decimal point.</t> | t of the | |||
| <t>depend, to identify other streams that the stream depends on. The value | decimal point.</li> | |||
| <li><strong>depend</strong>, to identify other streams that the stream d | ||||
| epends on. The value | ||||
| is a comma-separated list of rid-ids. These rid-ids identify RTP streams | is a comma-separated list of rid-ids. These rid-ids identify RTP streams | |||
| that this stream depends on in order to allow for proper interpretation. | that this stream depends on in order to allow for proper interpretation. | |||
| The mechanism defined in this document allows for such dependencies | The mechanism defined in this document allows for such dependencies | |||
| to be expressed only when the streams are in the same media section.</t> | to be expressed only when the streams are in the same media section.</li> | |||
| </list></t> | </ul> | |||
| <t>All the restrictions are optional and subject to negotiation based on t | ||||
| <t>All the restrictions are optional and are subject to negotiation based on the | he | |||
| SDP Offer/Answer rules described in <xref target="sec-sdp_o_a"/>.</t> | SDP offer/answer rules described in <xref target="sec-sdp_o_a" format="default"/ | |||
| >.</t> | ||||
| <t>This list is intended to be an initial set of restrictions. Future documents | <t>This list is intended to be an initial set of restrictions. Future docu | |||
| may define additional restrictions; see <xref target="sec-iana_rid"/>. While th | ments | |||
| is document | may define additional restrictions; see <xref target="sec-iana_rid" format="defa | |||
| ult"/>. While this document | ||||
| does not define restrictions for audio codecs or any media types other than | does not define restrictions for audio codecs or any media types other than | |||
| video, there is no reason such | video, there is no reason such | |||
| restrictions should be precluded from definition and registration by other | restrictions should be precluded from definition and registration by other | |||
| documents.</t> | documents.</t> | |||
| <t><xref target="sec-abnf" format="default"/> provides formal Augmented Ba | ||||
| <t><xref target="sec-abnf"/> provides formal Augmented Backus-Naur Form (ABNF) < | ckus-Naur Form (ABNF) <xref target="RFC5234" format="default"/> | |||
| xref target="RFC5234"/> | grammar for each of the "a=rid" restrictions defined in this section.</t> | |||
| grammar for each of the “a=rid” restrictions defined in this section.</t> | </section> | |||
| <section anchor="sec-sdp_o_a" numbered="true" toc="default"> | ||||
| </section> | <name>SDP Offer/Answer Procedures</name> | |||
| <section anchor="sec-sdp_o_a" title="SDP Offer/Answer Procedures"> | <t>This section describes the SDP offer/answer procedures <xref target="RF | |||
| C3264" format="default"/> when | ||||
| <t>This section describes the SDP Offer/Answer <xref target="RFC3264"/> procedur | ||||
| es when | ||||
| using this framework.</t> | using this framework.</t> | |||
| <t>Note that "rid-id" values are only required to be unique within a | ||||
| <t>Note that “rid-id” values are only required to be unique within a | media section ("m=" line); they do not necessarily need to be unique within an | |||
| media section (“m-line”); they do not necessarily need to be unique within an | ||||
| entire RTP session. In traditional usage, each media section is sent on its | entire RTP session. In traditional usage, each media section is sent on its | |||
| own unique 5-tuple (that is: combination of sending address, sending port, | own unique 5-tuple (that is: combination of sending address, sending port, | |||
| receiving address, receiving port, and transport protocol), which provides an | receiving address, receiving port, and transport protocol), which provides an | |||
| unambiguous scope. Similarly, when using BUNDLE | unambiguous scope. | |||
| <xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"/>, MID values associate RT | ||||
| P streams | ||||
| uniquely to a single media description. When RID is used with the BUNDLE | ||||
| mechanism, streams will be associated with both MID and RID SDES items.</t> | ||||
| <section anchor="sec-gen_offer" title="Generating the Initial SDP Offer"> | ||||
| <t>For each RTP media description in the offer, the offerer MAY choose to includ | Similarly, when using BUNDLE <xref target="RFC8843" format="default"/>, | |||
| e one | Media Identification (MID) values associate RTP streams | |||
| or more “a=rid” lines to specify a configuration profile for the given set of | uniquely to a single media description. | |||
| RTP Payload Types.</t> | ||||
| <t>In order to construct a given “a=rid” line, the offerer must follow these | When restriction identifier (RID) is used with the BUNDLE | |||
| mechanism, streams will be associated with both MID and RID SDES items.</t> | ||||
| <section anchor="sec-gen_offer" numbered="true" toc="default"> | ||||
| <name>Generating the Initial SDP Offer</name> | ||||
| <t>For each RTP media description in the offer, the offerer <bcp14>MAY</ | ||||
| bcp14> choose to include one | ||||
| or more "a=rid" lines to specify a configuration profile for the given set of | ||||
| RTP payload types.</t> | ||||
| <t>In order to construct a given "a=rid" line, the offerer must follow t | ||||
| hese | ||||
| steps:</t> | steps:</t> | |||
| <ol spacing="normal" type="1"> | ||||
| <t><list style="numbers"> | <li>It <bcp14>MUST</bcp14> generate a "rid-id" that is unique within a | |||
| <t>It MUST generate a “rid-id” that is unique within a media | media | |||
| description</t> | description.</li> | |||
| <t>It MUST set the direction for the “rid-id” to one of | <li>It <bcp14>MUST</bcp14> set the direction for the "rid-id" to one o | |||
| “send” or “recv”</t> | f | |||
| <t>It MAY include a listing of SDP media formats (usually corresponding to RTP | "send" or "recv".</li> | |||
| payload types) allowed to appear in the RTP Stream. Any Payload Types | <li>It <bcp14>MAY</bcp14> include a listing of SDP media formats (usua | |||
| chosen MUST be a valid payload type for the media section (that is, it must | lly corresponding to RTP | |||
| be listed on the “m=” line). The order of the listed formats is | payload types) allowed to appear in the RTP stream. Any payload type | |||
| chosen <bcp14>MUST</bcp14> be a valid payload type for the media section (that i | ||||
| s, it must | ||||
| be listed on the "m=" line). The order of the listed formats is | ||||
| significant; the alternatives are listed from (left) most preferred to | significant; the alternatives are listed from (left) most preferred to | |||
| (right) least preferred. When using RID, this preference overrides the | (right) least preferred. When using RID, this preference overrides the | |||
| normal codec preference as expressed by format type ordering on the | normal codec preference as expressed by format type ordering on the | |||
| “m=”-line, using regular SDP rules.</t> | "m=" line, using regular SDP rules.</li> | |||
| <t>The Offerer then chooses zero or more “a=rid” restrictions | <li>The offerer then chooses zero or more "a=rid" restrictions | |||
| (<xref target="sec-rid_level_restrictions"/>) to be applied to the RTP Stream, a | (<xref target="sec-rid_level_restrictions" format="default"/>) to be applied to | |||
| nd | the RTP stream and | |||
| adds them to the “a=rid” line.</t> | adds them to the "a=rid" line.</li> | |||
| <t>If the offerer wishes the answerer to have the ability to specify a | <li>If the offerer wishes the answerer to have the ability to specify | |||
| restriction, but does not wish to set a value itself, it includes the | a | |||
| name of the restriction in the “a=rid” line, but without any indicated | restriction but does not wish to set a value itself, it includes the | |||
| value.</t> | name of the restriction in the "a=rid" line, but without any indicated | |||
| </list></t> | value.</li> | |||
| </ol> | ||||
| <t>Note: If an “a=fmtp” attribute is also used to provide media-format-specific | <t>Note: If an "a=fmtp" attribute is also used to provide media-format-s | |||
| parameters, then the “a=rid” restrictions will further restrict the | pecific | |||
| equivalent “a=fmtp” parameters for the given Payload Type for the specified | parameters, then the "a=rid" restrictions will further restrict the | |||
| RTP Stream.</t> | equivalent "a=fmtp" parameters for the given payload type for the specified | |||
| RTP stream.</t> | ||||
| <t>If a given codec would require an “a=fmtp” line when used without “a=rid” the | <t>If a given codec would require an "a=fmtp" line when used without "a= | |||
| n | rid", then | |||
| the offer MUST include a valid corresponding “a=fmtp” line even when using | the offer <bcp14>MUST</bcp14> include a valid corresponding "a=fmtp" line even w | |||
| “a=rid”.</t> | hen using | |||
| "a=rid".</t> | ||||
| </section> | </section> | |||
| <section anchor="answerer-processing-the-sdp-offer" title="Answerer processing t | <section anchor="answerer-processing-the-sdp-offer" numbered="true" toc="d | |||
| he SDP Offer"> | efault"> | |||
| <name>Answerer Processing the SDP Offer</name> | ||||
| <section anchor="sec-rid_unaware" title="“a=rid”-unaware Answerer"> | <section anchor="sec-rid_unaware" numbered="true" toc="default"> | |||
| <name>"a=rid"-Unaware Answerer</name> | ||||
| <t>If the receiver doesn’t support the framework defined in this | <t>If the receiver doesn't support the framework defined in this | |||
| specification, the entire “a=rid” line is ignored following the standard | specification, the entire "a=rid" line is ignored following the standard | |||
| <xref target="RFC3264"/> Offer/Answer rules.</t> | offer/answer rules <xref target="RFC3264" format="default"/>.</t> | |||
| <t><xref target="sec-gen_offer" format="default"/> requires the offer | ||||
| <t><xref target="sec-gen_offer"/> requires the offer to include a valid “a=fmtp” | to include a valid "a=fmtp" line | |||
| line | for any media formats that otherwise require it (in other words, the "a=rid" | |||
| for any media formats that otherwise require it (in other words, the “a=rid” | line cannot be used to replace "a=fmtp" configuration). As a result, | |||
| line cannot be used to replace “a=fmtp” configuration). As a result, | ignoring the "a=rid" line is always guaranteed to result in a valid | |||
| ignoring the “a=rid” line is always guaranteed to result in a valid | ||||
| session description.</t> | session description.</t> | |||
| </section> | ||||
| </section> | <section anchor="sec-rid_offer_recv" numbered="true" toc="default"> | |||
| <section anchor="sec-rid_offer_recv" title="“a=rid”-aware Answerer"> | <name>"a=rid"-Aware Answerer</name> | |||
| <t>If the answerer supports the "a=rid" attribute, the following verif | ||||
| <t>If the answerer supports the “a=rid” attribute, the following verification | ication | |||
| steps are executed, in order, for each “a=rid” line in a received offer:</t> | steps are executed, in order, for each "a=rid" line in a received offer:</t> | |||
| <ol spacing="normal" type="1"> | ||||
| <t><list style="numbers"> | <li>The answerer ensures that the "a=rid" line is syntactically well | |||
| <t>The answerer ensures that the “a=rid” line is syntactically well | formed. In the case of a syntax error, the "a=rid" line is discarded.</li> | |||
| formed. In the case of a syntax error, the “a=rid” line is discarded.</t> | <li>The answerer extracts the rid-id from the "a=rid" line and verif | |||
| <t>The answerer extracts the rid-id from the “a=rid” line and verifies its | ies its | |||
| uniqueness within a media section. In the case of a duplicate, the entire | uniqueness within a media section. In the case of a duplicate, the entire | |||
| “a=rid” line, and all “a=rid” lines with rid-ids that duplicate this line, | "a=rid" line, and all "a=rid" lines with rid-ids that duplicate this line, | |||
| are discarded and MUST NOT be included in the SDP Answer.</t> | are discarded and <bcp14>MUST NOT</bcp14> be included in the SDP answer.</li> | |||
| <t>If the “a=rid” line contains a “pt=”, the list of payload types | <li>If the "a=rid" line contains a "pt=", the list of payload types | |||
| is verified against the list of valid payload types for the media section | is verified against the list of valid payload types for the media section | |||
| (that is, those listed on the “m=” line). Any PT missing from the “m=” line | (that is, those listed on the "m=" line). Any PT missing from the "m=" line | |||
| is discarded from the set of values in the “pt=”. If no values are left | is discarded from the set of values in the "pt=". If no values are left | |||
| in the “pt=” parameter after this processing, then the “a=rid” line is discarded | in the "pt=" parameter after this processing, then the "a=rid" line is discarded | |||
| .</t> | .</li> | |||
| <t>If the “direction” field is “recv”, the answerer ensures that the specified | <li>If the "direction" field is "recv", the answerer ensures that th | |||
| “a=rid” restrictions are supported. In the case of an unsupported | e specified | |||
| restriction, the “a=rid” line is discarded.</t> | "a=rid" restrictions are supported. In the case of an unsupported | |||
| <t>If the “depend” restriction is included, the answerer MUST make | restriction, the "a=rid" line is discarded.</li> | |||
| <li>If the "depend" restriction is included, the answerer <bcp14>MUS | ||||
| T</bcp14> make | ||||
| sure that the listed rid-ids unambiguously match the | sure that the listed rid-ids unambiguously match the | |||
| rid-ids in the media description. Any “depend” “a=rid” lines that do not are | rid-ids in the media description. Any "depend" "a=rid" lines that do not are | |||
| discarded.</t> | discarded.</li> | |||
| <t>The answerer verifies that the restrictions are consistent | <li>The answerer verifies that the restrictions are consistent | |||
| with at least one of the codecs to be used with the RTP Stream. If the | with at least one of the codecs to be used with the RTP stream. If the | |||
| “a=rid” line contains a “pt=”, it contains the list of such | "a=rid" line contains a "pt=", it contains the list of such | |||
| codecs; otherwise, the list of such codecs is taken from the associated | codecs; otherwise, the list of such codecs is taken from the associated | |||
| “m=” line. See <xref target="sec-feature_interactions"/> for more detail. If th | "m=" line. See <xref target="sec-feature_interactions" format="default"/> for m | |||
| e | ore detail. If the | |||
| “a=rid” restrictions are incompatible with the other codec properties | "a=rid" restrictions are incompatible with the other codec properties | |||
| for all codecs, then the “a=rid” line is discarded.</t> | for all codecs, then the "a=rid" line is discarded.</li> | |||
| </list></t> | </ol> | |||
| <t>Note that the answerer does not need to understand every restrictio | ||||
| <t>Note that the answerer does not need to understand every restriction present | n present | |||
| in a “send” line: if a stream sender restricts the stream in a way that the | in a "send" line: if a stream sender restricts the stream in a way that the | |||
| receiver does not understand, this causes no issues with interoperability.</t> | receiver does not understand, this causes no issues with interoperability.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="sec-rid_answer_send" numbered="true" toc="default"> | |||
| <section anchor="sec-rid_answer_send" title="Generating the SDP Answer"> | <name>Generating the SDP Answer</name> | |||
| <t>Having performed verification of the SDP offer as described in | ||||
| <t>Having performed verification of the SDP offer as described in | <xref target="sec-rid_offer_recv" format="default"/>, the answerer shall perform | |||
| <xref target="sec-rid_offer_recv"/>, the answerer shall perform the following st | the following steps to | |||
| eps to | ||||
| generate the SDP answer.</t> | generate the SDP answer.</t> | |||
| <t>For each "a=rid" line that has not been discarded by previous process | ||||
| <t>For each “a=rid” line that has not been discarded by previous processing:</t> | ing:</t> | |||
| <ol spacing="normal" type="1"> | ||||
| <t><list style="numbers"> | <li>The value of the "direction" field is reversed: "send" is changed | |||
| <t>The value of the “direction” field is reversed: “send” is changed | to "recv", and "recv" is changed to "send".</li> | |||
| to “recv”, and “recv” is changed to “send”.</t> | <li>The answerer <bcp14>MAY</bcp14> choose to modify specific "a=rid" | |||
| <t>The answerer MAY choose to modify specific “a=rid” restriction values in | restriction values in | |||
| the answer SDP. In such a case, the modified value MUST be more restrictive | the answer SDP. In such a case, the modified value <bcp14>MUST</bcp14> be more r | |||
| than the ones specified in the offer. The answer MUST NOT include any | estrictive | |||
| restrictions that were not present in the offer.</t> | than the ones specified in the offer. The answer <bcp14>MUST NOT</bcp14> includ | |||
| <t>The answerer MUST NOT modify the “rid-id” present in the offer.</t> | e any | |||
| <t>If the “a=rid” line contains a “pt=”, the answerer is allowed to | restrictions that were not present in the offer.</li> | |||
| discard one or more media formats from a given “a=rid” line. If the answerer | <li>The answerer <bcp14>MUST NOT</bcp14> modify the "rid-id" present i | |||
| chooses to discard all the media formats from an “a=rid” line, the | n the offer.</li> | |||
| answerer MUST discard the entire “a=rid” line. If the offer did not contain | <li>If the "a=rid" line contains a "pt=", the answerer is allowed to | |||
| a “pt=” for a given “a=rid” line, then the answer MUST NOT | discard one or more media formats from a given "a=rid" line. If the answerer | |||
| contain a “pt=” in the corresponding line.</t> | chooses to discard all the media formats from an "a=rid" line, the | |||
| <t>In cases where the answerer is unable to support the payload configuration | answerer <bcp14>MUST</bcp14> discard the entire "a=rid" line. If the offer did n | |||
| specified in a given “a=rid” line with a direction of “recv” in the offer, | ot contain | |||
| the answerer MUST discard the corresponding “a=rid” line. This includes | a "pt=" for a given "a=rid" line, then the answer <bcp14>MUST NOT</bcp14> | |||
| contain a "pt=" in the corresponding line.</li> | ||||
| <li>In cases where the answerer is unable to support the payload confi | ||||
| guration | ||||
| specified in a given "a=rid" line with a direction of "recv" in the offer, | ||||
| the answerer <bcp14>MUST</bcp14> discard the corresponding "a=rid" line. This i | ||||
| ncludes | ||||
| situations in which the answerer does not understand one or more of the | situations in which the answerer does not understand one or more of the | |||
| restrictions in an “a=rid” line with a direction of “recv”.</t> | restrictions in an "a=rid" line with a direction of "recv".</li> | |||
| </list></t> | </ol> | |||
| <t>Note: In the case that the answerer uses different PT values to repre | ||||
| <t>Note: in the case that the answerer uses different PT values to represent a | sent a | |||
| codec than the offerer did, the “a=rid” values in the answer use the PT values | codec than the offerer did, the "a=rid" values in the answer use the PT values | |||
| that are present in its answer.</t> | that are present in its answer.</t> | |||
| </section> | ||||
| </section> | <section anchor="sec-rid_answer_recv" numbered="true" toc="default"> | |||
| <section anchor="sec-rid_answer_recv" title="Offerer Processing of the SDP Answe | <name>Offerer Processing of the SDP Answer</name> | |||
| r"> | <t>The offerer <bcp14>SHALL</bcp14> follow these steps when processing t | |||
| he answer:</t> | ||||
| <t>The offerer SHALL follow these steps when processing the answer:</t> | <ol spacing="normal" type="1"> | |||
| <li>The offerer matches the "a=rid" line in the answer to the "a=rid" | ||||
| <t><list style="numbers"> | line | |||
| <t>The offerer matches the “a=rid” line in the answer to the “a=rid” line | in the offer using the "rid-id". If no matching line can be located | |||
| in the offer using the “rid-id”. If no matching line can be located | in the offer, the "a=rid" line is ignored.</li> | |||
| in the offer, the “a=rid” line is ignored.</t> | <li>If the answer contains any restrictions that were not present in t | |||
| <t>If the answer contains any restrictions that were not present in the offer, | he offer, | |||
| then the offerer SHALL discard the “a=rid” line.</t> | then the offerer <bcp14>SHALL</bcp14> discard the "a=rid" line.</li> | |||
| <t>If the restrictions have been changed between the offer and the | <li>If the restrictions have been changed between the offer and the | |||
| answer, the offerer MUST ensure that the modifications are more restrictive | answer, the offerer <bcp14>MUST</bcp14> ensure that the modifications are more r | |||
| than they were in the original offer, and that they can be supported; if | estrictive | |||
| not, the offerer SHALL discard the “a=rid” line.</t> | than they were in the original offer and that they can be supported; if | |||
| <t>If the “a=rid” line in the answer contains a “pt=” but the | not, the offerer <bcp14>SHALL</bcp14> discard the "a=rid" line.</li> | |||
| offer did not, the offerer SHALL discard the “a=rid” line.</t> | <li>If the "a=rid" line in the answer contains a "pt=" but the | |||
| <t>If the “a=rid” line in the answer contains a “pt=” and the | offer did not, the offerer <bcp14>SHALL</bcp14> discard the "a=rid" line.</li> | |||
| <li>If the "a=rid" line in the answer contains a "pt=" and the | ||||
| offer did as well, the offerer verifies that the list of payload types is a | offer did as well, the offerer verifies that the list of payload types is a | |||
| subset of those sent in the corresponding “a=rid” line in the offer. Note | subset of those sent in the corresponding "a=rid" line in the offer. Note | |||
| that this matching must be performed semantically rather than on literal PT | that this matching must be performed semantically rather than on literal PT | |||
| values, as the remote end may not be using symmetric PTs. For the purpose | values, as the remote end may not be using symmetric PTs. For the purpose | |||
| of this comparison: for each PT listed on the “a=rid” line in the answer, | of this comparison: for each PT listed on the "a=rid" line in the answer, | |||
| the offerer looks up the corresponding “a=rtpmap” and “a=fmtp” lines in the | the offerer looks up the corresponding "a=rtpmap" and "a=fmtp" lines in the | |||
| answer. It then searches the list of “pt=” values indicated in the offer, | answer. It then searches the list of "pt=" values indicated in the offer | |||
| and attempts to find one with an equivalent set of “a=rtpmap” and “a=fmtp” | and attempts to find one with an equivalent set of "a=rtpmap" and "a=fmtp" | |||
| lines in the offer. If all PTs in the answer can be matched, then the “pt=” | lines in the offer. If all PTs in the answer can be matched, then the "pt=" | |||
| values pass validation; otherwise, it fails. If this validation fails, the | values pass validation; otherwise, it fails. If this validation fails, the | |||
| offerer SHALL discard the “a=rid” line. Note that this semantic comparison | offerer <bcp14>SHALL</bcp14> discard the "a=rid" line. Note that this semantic c omparison | |||
| necessarily requires an understanding of the meaning of codec parameters, | necessarily requires an understanding of the meaning of codec parameters, | |||
| rather than a rote byte-wise comparison of their values.</t> | rather than a rote byte-wise comparison of their values.</li> | |||
| <t>If the “a=rid” line contains a “pt=”, the offerer verifies that | <li>If the "a=rid" line contains a "pt=", the offerer verifies that | |||
| the attribute values provided in the “a=rid” attributes are consistent | the attribute values provided in the "a=rid" attributes are consistent | |||
| with the corresponding codecs and their other parameters. See | with the corresponding codecs and their other parameters. See | |||
| <xref target="sec-feature_interactions"/> for more detail. If the “a=rid” restri ctions | <xref target="sec-feature_interactions" format="default"/> for more detail. If t he "a=rid" restrictions | |||
| are incompatible with the other codec properties, then the offerer | are incompatible with the other codec properties, then the offerer | |||
| SHALL discard the “a=rid” line.</t> | <bcp14>SHALL</bcp14> discard the "a=rid" line.</li> | |||
| <t>The offerer verifies that the restrictions are consistent | <li>The offerer verifies that the restrictions are consistent | |||
| with at least one of the codecs to be used with the RTP Stream. If the | with at least one of the codecs to be used with the RTP stream. If the | |||
| “a=rid” line contains a “pt=”, it contains the list of such | "a=rid" line contains a "pt=", it contains the list of such | |||
| codecs; otherwise, the list of such codecs is taken from the associated | codecs; otherwise, the list of such codecs is taken from the associated | |||
| “m=” line. See <xref target="sec-feature_interactions"/> for more detail. If th | "m=" line. See <xref target="sec-feature_interactions" format="default"/> for m | |||
| e | ore detail. If the | |||
| “a=rid” restrictions are incompatible with the other codec properties | "a=rid" restrictions are incompatible with the other codec properties | |||
| for all codecs, then the offerer SHALL discard the “a=rid” line.</t> | for all codecs, then the offerer <bcp14>SHALL</bcp14> discard the "a=rid" line.< | |||
| </list></t> | /li> | |||
| </ol> | ||||
| <t>Any “a=rid” line present in the offer that was not matched by step 1 above | <t>Any "a=rid" line present in the offer that was not matched by step 1 | |||
| has been discarded by the answerer, and does not form part of the negotiated | above | |||
| restrictions on an RTP Stream. The offerer MAY still apply any restrictions | has been discarded by the answerer and does not form part of the negotiated | |||
| it indicated in an “a=rid” line with a direction field of “send”, but | restrictions on an RTP stream. The offerer <bcp14>MAY</bcp14> still apply any re | |||
| strictions | ||||
| it indicated in an "a=rid" line with a direction field of "send", but | ||||
| it is not required to do so.</t> | it is not required to do so.</t> | |||
| <t>It is important to note that there are several ways in which an offer | ||||
| <t>It is important to note that there are several ways in which an offer can | can | |||
| contain a media section with “a=rid” lines, but the corresponding media | contain a media section with "a=rid" lines, although the corresponding media | |||
| section in the response does not. This includes situations in which the | section in the response does not. This includes situations in which the | |||
| answerer does not support “a=rid” at all, or does not support the indicated | answerer does not support "a=rid" at all or does not support the indicated | |||
| restrictions. Under such circumstances, the offerer MUST be prepared to | restrictions. Under such circumstances, the offerer <bcp14>MUST</bcp14> be prepa | |||
| red to | ||||
| receive a media stream to which no restrictions have been applied.</t> | receive a media stream to which no restrictions have been applied.</t> | |||
| </section> | ||||
| </section> | <section anchor="modifying-the-session" numbered="true" toc="default"> | |||
| <section anchor="modifying-the-session" title="Modifying the Session"> | <name>Modifying the Session</name> | |||
| <t>Offers and answers inside an existing session follow the rules for in | ||||
| <t>Offers and answers inside an existing session follow the rules for initial | itial | |||
| session negotiation. Such an offer MAY propose a change in the number of RIDs | session negotiation. Such an offer <bcp14>MAY</bcp14> propose a change in the n | |||
| umber of RIDs | ||||
| in use. To avoid race conditions with media, any RIDs with proposed changes | in use. To avoid race conditions with media, any RIDs with proposed changes | |||
| SHOULD use a new ID, rather than re-using one from the previous offer/answer | <bcp14>SHOULD</bcp14> use a new ID rather than reusing one from the previous off | |||
| exchange. RIDs without proposed changes SHOULD re-use the ID from the previous | er/answer | |||
| exchange. RIDs without proposed changes <bcp14>SHOULD</bcp14> reuse the ID from | ||||
| the previous | ||||
| exchange.</t> | exchange.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="sec-declarative_sdp" numbered="true" toc="default"> | |||
| <section anchor="sec-declarative_sdp" title="Use with Declarative SDP"> | <name>Use with Declarative SDP</name> | |||
| <t>This document does not define the use of a RID in declarative SDP. If | ||||
| <t>This document does not define the use of RID in declarative SDP. If | ||||
| concrete use cases for RID in declarative SDP use are identified | concrete use cases for RID in declarative SDP use are identified | |||
| in the future, we expect that additional specifications will address | in the future, we expect that additional specifications will address | |||
| such use.</t> | such use.</t> | |||
| </section> | ||||
| </section> | <section anchor="sec-feature_interactions" numbered="true" toc="default"> | |||
| <section anchor="sec-feature_interactions" title="Interaction with Other Techniq | <name>Interaction with Other Techniques</name> | |||
| ues"> | <t>Historically, a number of other approaches have been defined that allow | |||
| <t>Historically, a number of other approaches have been defined that allow | ||||
| restricting media streams via SDP. These include:</t> | restricting media streams via SDP. These include:</t> | |||
| <ul spacing="normal"> | ||||
| <li>Codec-specific configuration set via format parameters ("a=fmtp") -- | ||||
| for | ||||
| example, the H.264 "max-fs" format parameter <xref target="RFC6184" format="defa | ||||
| ult"/></li> | ||||
| <t><list style="symbols"> | <li>Size restrictions imposed by the "a=imageattr" attribute | |||
| <t>Codec-specific configuration set via format parameters (“a=fmtp”); for | <xref target="RFC6236" format="default"/></li> | |||
| example, the H.264 “max-fs” format parameter <xref target="RFC6184"/></t> | </ul> | |||
| <t>Size restrictions imposed by image attribute attributes (“a=imageattr”) | <t>When the mechanism described in this document is used in conjunction wi | |||
| <xref target="RFC6236"/></t> | th | |||
| </list></t> | ||||
| <t>When the mechanism described in this document is used in conjunction with | ||||
| these other restricting mechanisms, it is intended to impose additional | these other restricting mechanisms, it is intended to impose additional | |||
| restrictions beyond those communicated in other techniques.</t> | restrictions beyond those communicated in other techniques.</t> | |||
| <t>In an offer, this means that "a=rid" lines, when combined with other | ||||
| <t>In an offer, this means that “a=rid” lines, when combined with other | ||||
| restrictions on the media stream, are expected to result in a non-empty intersec tion. | restrictions on the media stream, are expected to result in a non-empty intersec tion. | |||
| For example, if image attributes are used to indicate that a PT has a minimum | For example, if image attributes are used to indicate that a PT has a minimum | |||
| width of 640, then specification of “max-width=320” in an “a=rid” line that is | width of 640, then specification of "max-width=320" in an "a=rid" line that is | |||
| then applied to that PT is nonsensical. According to the rules of | then applied to that PT is nonsensical. According to the rules of | |||
| <xref target="sec-rid_offer_recv"/>, this will result in the corresponding “a=ri d” line | <xref target="sec-rid_offer_recv" format="default"/>, this will result in the co rresponding "a=rid" line | |||
| being ignored by the recipient.</t> | being ignored by the recipient.</t> | |||
| <t>In an answer, the "a=rid" lines, when combined with the other | ||||
| <t>In an answer, the “a=rid” lines, when combined with the other | ||||
| restrictions on the media stream, are also expected to result in a non-empty | restrictions on the media stream, are also expected to result in a non-empty | |||
| intersection. If the implementation generating an answer wishes to restrict a | intersection. If the implementation generating an answer wishes to restrict a | |||
| property of the stream below that which would be allowed by other parameters | property of the stream below that which would be allowed by other parameters | |||
| (e.g., those specified in “a=fmtp” or “a=imageattr”), its only recourse is to | (e.g., those specified in "a=fmtp" or "a=imageattr"), its only recourse is to | |||
| discard the “a=rid” line altogether, as described in <xref target="sec-rid_answe | discard the "a=rid" line altogether, as described in <xref target="sec-rid_answe | |||
| r_send"/>. | r_send" format="default"/>. | |||
| If it instead attempts to restrict the stream beyond what is allowed by other | If it instead attempts to restrict the stream beyond what is allowed by other | |||
| mechanisms, then the offerer will ignore the corresponding “a=rid” line, as | mechanisms, then the offerer will ignore the corresponding "a=rid" line, as | |||
| described in <xref target="sec-rid_answer_recv"/>.</t> | described in <xref target="sec-rid_answer_recv" format="default"/>.</t> | |||
| <t>The following subsections demonstrate these interactions using commonly | ||||
| <t>The following subsections demonstrate these interactions using commonly-used | used | |||
| video codecs. These descriptions are illustrative of the interaction principles | video codecs. These descriptions are illustrative of the interaction principles | |||
| outlined above, and are not normative.</t> | outlined above and are not normative.</t> | |||
| <section anchor="interaction-with-vp8-format-parameters" numbered="true" t | ||||
| <section anchor="interaction-with-vp8-format-parameters" title="Interaction with | oc="default"> | |||
| VP8 Format Parameters"> | <name>Interaction with VP8 Format Parameters</name> | |||
| <t><xref target="RFC7741" format="default"/> defines two format paramete | ||||
| <t><xref target="RFC7741"/> defines two format parameters for the VP8 codec. | rs for the VP8 codec. | |||
| Both correspond to restrictions on receiver capabilities, and never | Both correspond to restrictions on receiver capabilities and never | |||
| indicate sending restrictions.</t> | indicate sending restrictions.</t> | |||
| <section anchor="max-fr-maximum-framerate" numbered="true" toc="default" | ||||
| <section anchor="max-fr-maximum-framerate" title="max-fr - Maximum Framerate"> | > | |||
| <name>max-fr - Maximum Frame Rate</name> | ||||
| <t>The VP8 “max-fr” format parameter corresponds to the “max-fps” restriction | <t>The VP8 "max-fr" format parameter corresponds to the "max-fps" rest | |||
| riction | ||||
| defined in this specification. If an RTP sender is generating a stream using | defined in this specification. If an RTP sender is generating a stream using | |||
| a format defined with this format parameter, and the sending restrictions | a format defined with this format parameter, and the sending restrictions | |||
| defined via “a=rid” include a “max-fps” parameter, then the sent stream | defined via "a=rid" include a "max-fps" parameter, then the sent stream | |||
| will conform to the smaller of the two values.</t> | will conform to the smaller of the two values.</t> | |||
| </section> | ||||
| </section> | <section anchor="max-fs-maximum-framesize-in-vp8-macroblocks" numbered=" | |||
| <section anchor="max-fs-maximum-framesize-in-vp8-macroblocks" title="max-fs - Ma | true" toc="default"> | |||
| ximum Framesize, in VP8 Macroblocks"> | <name>max-fs - Maximum Frame Size, in VP8 Macroblocks</name> | |||
| <t>The VP8 "max-fs" format parameter corresponds to the "max-fs" | ||||
| <t>The VP8 “max-fs” format parameter corresponds to the “max-fs” | ||||
| restriction defined in this document, by way of a conversion factor of the | restriction defined in this document, by way of a conversion factor of the | |||
| number of pixels per macroblock (typically 256). If an RTP sender is | number of pixels per macroblock (typically 256). If an RTP sender is | |||
| generating a stream using a format defined with this format parameter, and | generating a stream using a format defined with this format parameter, and | |||
| the sending restrictions defined via “a=rid” include a “max-fs” parameter, | the sending restrictions defined via "a=rid" include a "max-fs" parameter, | |||
| then the sent stream will conform to the smaller of the two values; | then the sent stream will conform to the smaller of the two values; | |||
| that is, the number of pixels per frame will not exceed:</t> | that is, the number of pixels per frame will not exceed:</t> | |||
| <figure><artwork><![CDATA[ | <sourcecode> | |||
| min(rid_max_fs, fmtp_max_fs * macroblock_size) | min(rid_max_fs, fmtp_max_fs * macroblock_size) | |||
| ]]></artwork></figure> | </sourcecode> | |||
| <t>This fmtp parameter also has bearing on the | ||||
| max-height and max-width parameters. | ||||
| <t>This fmtp parameter also has bearing on the | <xref section="6.1" sectionFormat="of" target="RFC7741" format="default"/> requi | |||
| max-height and max-width parameters. Section 6.1 of | res that the width and height of the frame in | |||
| <xref target="RFC7741"/> requires that the width and height of the frame in | macroblocks be less than int(sqrt(fmtp_max_fs * 8)). | |||
| macroblocks are also required to be less than int(sqrt(fmtp_max_fs * 8)). | ||||
| Accordingly, the maximum width of a transmitted stream will be limited to:</t> | Accordingly, the maximum width of a transmitted stream will be limited to:</t> | |||
| <figure><artwork><![CDATA[ | <sourcecode> | |||
| min(rid_max_width, int(sqrt(fmtp_max_fs * 8)) * macroblock_width) | min(rid_max_width, int(sqrt(fmtp_max_fs * 8)) * macroblock_width) | |||
| ]]></artwork></figure> | </sourcecode> | |||
| <t>Similarly, the stream’s height will be limited to:</t> | <t>Similarly, the stream's height will be limited to:</t> | |||
| <figure><artwork><![CDATA[ | <sourcecode> | |||
| min(rid_max_height, int(sqrt(fmtp_max_fs * 8)) * macroblock_height) | min(rid_max_height, int(sqrt(fmtp_max_fs * 8)) * macroblock_height) | |||
| ]]></artwork></figure> | </sourcecode> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="interaction-with-h264-format-parameters" numbered="true" | |||
| <section anchor="interaction-with-h264-format-parameters" title="Interaction wit | toc="default"> | |||
| h H.264 Format Parameters"> | <name>Interaction with H.264 Format Parameters</name> | |||
| <t><xref target="RFC6184" format="default"/> defines format parameters f | ||||
| <t><xref target="RFC6184"/> defines format parameters for the H.264 video codec. | or the H.264 video codec. The majority | |||
| The majority | ||||
| of these parameters do not correspond to codec-independent restrictions:</t> | of these parameters do not correspond to codec-independent restrictions:</t> | |||
| <ul spacing="normal"> | ||||
| <t><list style="symbols"> | <li>deint-buf-cap</li> | |||
| <t>deint-buf-cap</t> | <li>in-band-parameter-sets</li> | |||
| <t>in-band-parameter-sets</t> | <li>level-asymmetry-allowed</li> | |||
| <t>level-asymmetry-allowed</t> | <li>max-rcmd-nalu-size</li> | |||
| <t>max-rcmd-nalu-size</t> | <li>max-cpb</li> | |||
| <t>max-cpb</t> | <li>max-dpb</li> | |||
| <t>max-dpb</t> | <li>packetization-mode</li> | |||
| <t>packetization-mode</t> | <li>redundant-pic-cap</li> | |||
| <t>redundant-pic-cap</t> | <li>sar-supported</li> | |||
| <t>sar-supported</t> | <li>sar-understood</li> | |||
| <t>sar-understood</t> | <li>sprop-deint-buf-req</li> | |||
| <t>sprop-deint-buf-req</t> | <li>sprop-init-buf-time</li> | |||
| <t>sprop-init-buf-time</t> | <li>sprop-interleaving-depth</li> | |||
| <t>sprop-interleaving-depth</t> | <li>sprop-level-parameter-sets</li> | |||
| <t>sprop-level-parameter-sets</t> | <li>sprop-max-don-diff</li> | |||
| <t>sprop-max-don-diff</t> | <li>sprop-parameter-sets</li> | |||
| <t>sprop-parameter-sets</t> | <li>use-level-src-parameter-sets</li> | |||
| <t>use-level-src-parameter-sets</t> | </ul> | |||
| </list></t> | <t>Note that the max-cpb and max-dpb format parameters for H.264 corresp | |||
| ond to | ||||
| <t>Note that the max-cpb and max-dpb format parameters for H.264 correspond to | ||||
| restrictions on the stream, but they are specific to the way the H.264 codec | restrictions on the stream, but they are specific to the way the H.264 codec | |||
| operates, and do not have codec-independent equivalents.</t> | operates, and do not have codec-independent equivalents.</t> | |||
| <t>The <xref target="RFC6184" format="default"/> codec format parameters | ||||
| <t>The <xref target="RFC6184"/> codec format parameters covered in the following | covered in the following sections | |||
| sections | correspond to restrictions on receiver capabilities and never indicate | |||
| correspond to restrictions on receiver capabilities, and never indicate | ||||
| sending restrictions.</t> | sending restrictions.</t> | |||
| <section anchor="profile-level-id-and-max-recv-level-negotiated-sub-prof | ||||
| <section anchor="profile-level-id-and-max-recv-level-negotiated-sub-profile" tit | ile" numbered="true" toc="default"> | |||
| le="profile-level-id and max-recv-level - Negotiated Sub-Profile"> | <name>profile-level-id and max-recv-level - Negotiated Subprofile</nam | |||
| e> | ||||
| <t>These parameters include a “level” indicator, which acts as an index | <t>These parameters include a "level" indicator, which acts as an inde | |||
| into Table A-1 of <xref target="H264"/>. This table contains a number of paramet | x | |||
| ers, | into Table A-1 of <xref target="H264" format="default"/>. This table contains a | |||
| number of parameters, | ||||
| several of which correspond to the restrictions defined in this | several of which correspond to the restrictions defined in this | |||
| document. <xref target="RFC6184"/> also defines format parameters for the H.264 | document. <xref target="RFC6184" format="default"/> also defines format paramete rs for the H.264 | |||
| codec that may increase the maximum values indicated by the negotiated | codec that may increase the maximum values indicated by the negotiated | |||
| level. The following sections describe the interaction between these | level. The following sections describe the interaction between these | |||
| parameters and the restrictions defined by this document. In all cases, | parameters and the restrictions defined by this document. In all cases, | |||
| the H.264 parameters being discussed are the maximum of those indicated | the H.264 parameters being discussed are the maximum of those indicated | |||
| by <xref target="H264"></xref> Table A-1 and those indicated in the correspondin | by <xref target="H264" format="default"/> Table A-1 and those indicated in the c | |||
| g “a=fmtp” line.</t> | orresponding "a=fmtp" line.</t> | |||
| </section> | ||||
| </section> | <section anchor="max-br-maxbr-maximum-video-bitrate" numbered="true" toc | |||
| <section anchor="max-br-maxbr-maximum-video-bitrate" title="max-br / MaxBR - Max | ="default"> | |||
| imum Video Bitrate"> | <name>max-br / MaxBR - Maximum Video Bitrate</name> | |||
| <t>The H.264 "MaxBR" parameter (and its equivalent "max-br" format | ||||
| <t>The H.264 “MaxBR” parameter (and its equivalent “max-br” format | parameter) corresponds to the "max-bps" restriction | |||
| parameter) corresponds to the “max-bps” restriction | ||||
| defined in this specification, by way of a conversion factor of 1000 | defined in this specification, by way of a conversion factor of 1000 | |||
| or 1200; see <xref target="RFC6184"/> for details regarding which factor gets | or 1200; see <xref target="RFC6184" format="default"/> for details regarding whi ch factor gets | |||
| used under differing circumstances.</t> | used under differing circumstances.</t> | |||
| <t>If an RTP sender is generating a stream using | ||||
| <t>If an RTP sender is generating a stream using | ||||
| a format defined with this format parameter, and the sending restrictions | a format defined with this format parameter, and the sending restrictions | |||
| defined via “a=rid” include a “max-fps” parameter, then the sent stream | defined via "a=rid" include a "max-fps" parameter, then the sent stream | |||
| will conform to the smaller of the two values – that is:</t> | will conform to the smaller of the two values -- that is:</t> | |||
| <figure><artwork><![CDATA[ | <sourcecode> | |||
| min(rid_max_br, h264_MaxBR * conversion_factor) | min(rid_max_br, h264_MaxBR * conversion_factor) | |||
| ]]></artwork></figure> | </sourcecode> | |||
| </section> | ||||
| </section> | <section anchor="max-fs-maxfs-maximum-framesize-in-h264-macroblocks" num | |||
| <section anchor="max-fs-maxfs-maximum-framesize-in-h264-macroblocks" title="max- | bered="true" toc="default"> | |||
| fs / MaxFS - Maximum Framesize, in H.264 Macroblocks"> | <name>max-fs / MaxFS - Maximum Frame Size, in H.264 Macroblocks</name> | |||
| <t>The H.264 "MaxFs" parameter (and its equivalent "max-fs" | ||||
| <t>The H.264 “MaxFs” parameter (and its equivalent “max-fs” | format parameter) corresponds roughly to the "max-fs" restriction | |||
| format parameter) corresponds roughly to the “max-fs” restriction | ||||
| defined in this document, by way of a conversion factor of 256 | defined in this document, by way of a conversion factor of 256 | |||
| (the number of pixels per macroblock).</t> | (the number of pixels per macroblock).</t> | |||
| <t>If an RTP sender is generating a stream using | ||||
| <t>If an RTP sender is generating a stream using | ||||
| a format defined with this format parameter, and the sending restrictions | a format defined with this format parameter, and the sending restrictions | |||
| defined via “a=rid” include a “max-fs” parameter, then the sent stream | defined via "a=rid" include a "max-fs" parameter, then the sent stream | |||
| will conform to the smaller of the two values – that is:</t> | will conform to the smaller of the two values -- that is:</t> | |||
| <sourcecode> | ||||
| <figure><artwork><![CDATA[ | ||||
| min(rid_max_fs, h264_MaxFs * 256) | min(rid_max_fs, h264_MaxFs * 256) | |||
| ]]></artwork></figure> | </sourcecode> | |||
| </section> | ||||
| </section> | <section anchor="sec-h264_max_mbps" numbered="true" toc="default"> | |||
| <section anchor="sec-h264_max_mbps" title="max-mbps / MaxMBPS - Maximum Macroblo | <name>max-mbps / MaxMBPS - Maximum Macroblock Processing Rate</name> | |||
| ck Processing Rate"> | <t>The H.264 "MaxMBPS" parameter (and its equivalent "max-mbps" | |||
| format parameter) corresponds roughly to the "max-pps" restriction | ||||
| <t>The H.264 “MaxMBPS” parameter (and its equivalent “max-mbps” | ||||
| format parameter) corresponds roughly to the “max-pps” restriction | ||||
| defined in this document, by way of a conversion factor of 256 | defined in this document, by way of a conversion factor of 256 | |||
| (the number of pixels per macroblock).</t> | (the number of pixels per macroblock).</t> | |||
| <t>If an RTP sender is generating a stream using | ||||
| <t>If an RTP sender is generating a stream using | ||||
| a format defined with this format parameter, and the sending restrictions | a format defined with this format parameter, and the sending restrictions | |||
| defined via “a=rid” include a “max-pps” parameter, then the sent stream | defined via "a=rid" include a "max-pps" parameter, then the sent stream | |||
| will conform to the smaller of the two values – that is:</t> | will conform to the smaller of the two values -- that is:</t> | |||
| <sourcecode> | ||||
| <figure><artwork><![CDATA[ | ||||
| min(rid_max_pps, h264_MaxMBPS * 256) | min(rid_max_pps, h264_MaxMBPS * 256) | |||
| ]]></artwork></figure> | </sourcecode> | |||
| </section> | ||||
| </section> | <section anchor="max-smbps-maximum-decoded-picture-buffer" numbered="tru | |||
| <section anchor="max-smbps-maximum-decoded-picture-buffer" title="max-smbps - Ma | e" toc="default"> | |||
| ximum Decoded Picture Buffer"> | <name>max-smbps - Maximum Decoded Picture Buffer</name> | |||
| <t>The H.264 "max-smbps" format parameter operates the same way as the | ||||
| <t>The H.264 “max-smbps” format parameter operates the same way as the | "max-mbps" format parameter, under the hypothetical assumption that all | |||
| “max-mpbs” format parameter, under the hypothetical assumption that all | ||||
| macroblocks are static macroblocks. It is handled by applying the | macroblocks are static macroblocks. It is handled by applying the | |||
| conversion factor described in Section 8.1 of <xref target="RFC6184"/>, and the | conversion factor described in Section 8.1 of <xref target="RFC6184" format="def ault"/>, and the | |||
| result of this conversion is applied as described in | result of this conversion is applied as described in | |||
| <xref target="sec-h264_max_mbps"/>.</t> | <xref target="sec-h264_max_mbps" format="default"/>.</t> | |||
| </section> | ||||
| </section> | </section> | |||
| </section> | <section anchor="redundancy-formats-and-payload-type-restrictions" numbere | |||
| <section anchor="redundancy-formats-and-payload-type-restrictions" title="Redund | d="true" toc="default"> | |||
| ancy Formats and Payload Type Restrictions"> | <name>Redundancy Formats and Payload Type Restrictions</name> | |||
| <t><xref target="sec-rid_attribute" format="default"/> specifies that re | ||||
| <t><xref target="sec-rid_attribute"/> specifies that redundancy formats using re | dundancy formats using redundancy RTP streams bind | |||
| dundancy RTP streams bind | ||||
| the redundancy RTP stream to the source RTP stream with either the | the redundancy RTP stream to the source RTP stream with either the | |||
| RepairedRtpStreamId SDES item, or other mechanisms. However, there exist | RepairedRtpStreamId SDES item or other mechanisms. However, there exist | |||
| redundancy RTP payload formats that result in the redundancy being included in | redundancy RTP payload formats that result in the redundancy being included in | |||
| the source RTP stream. An example of this is “RTP Payload for Redundant Audio | the source RTP stream. An example of this is "RTP Payload for Redundant Audio | |||
| Data” <xref target="RFC2198"/>, which encapsulates one source stream with one or | Data" <xref target="RFC2198" format="default"/>, which encapsulates one source s | |||
| more | tream with one or more | |||
| redundancy streams in the same RTP payload. Formats defining the source and | redundancy streams in the same RTP payload. Formats defining the source and | |||
| redundancy encodings as regular RTP payload types require some consideration | redundancy encodings as regular RTP payload types require some consideration | |||
| for how the “a=rid” restrictions are defined. The “a=rid” line “pt=” parameter | for how the "a=rid" restrictions are defined. The "a=rid" line "pt=" parameter | |||
| can be used to indicate whether the redundancy RTP payload type and/or the | can be used to indicate whether the redundancy RTP payload type and/or the | |||
| individual source RTP payload type(s) are part of the restriction.</t> | individual source RTP payload type(s) are part of the restriction.</t> | |||
| <t>Example (SDP excerpt):</t> | ||||
| <t>Example (SDP Excerpt):</t> | <sourcecode type="sdp"> | |||
| <figure><artwork><![CDATA[ | ||||
| m=audio 49200 RTP/AVP 97 98 99 100 101 102 | m=audio 49200 RTP/AVP 97 98 99 100 101 102 | |||
| a=mid:foo | a=mid:foo | |||
| a=rtpmap:97 G711/8000 | a=rtpmap:97 G711/8000 | |||
| a=rtpmap:98 LPC/8000 | a=rtpmap:98 LPC/8000 | |||
| a=rtpmap:99 OPUS/48000/1 | a=rtpmap:99 OPUS/48000/1 | |||
| a=rtpmap:100 RED/8000/1 | a=rtpmap:100 RED/8000/1 | |||
| a=rtpmap:101 CN/8000 | a=rtpmap:101 CN/8000 | |||
| a=rtpmap:102 telephone-event/8000 | a=rtpmap:102 telephone-event/8000 | |||
| a=fmtp:99 useinbandfec=1; usedtx=0 | a=fmtp:99 useinbandfec=1; usedtx=0 | |||
| a=fmtp:100 97/98 | a=fmtp:100 97/98 | |||
| a=fmtp:102 0-15 | a=fmtp:102 0-15 | |||
| a=ptime:20 | a=ptime:20 | |||
| a=maxptime:40 | a=maxptime:40 | |||
| a=rid:5 send pt=99,102;max-br=64000 | a=rid:5 send pt=99,102;max-br=64000 | |||
| a=rid:6 send pt=100,97,101,102 | a=rid:6 send pt=100,97,101,102 | |||
| </sourcecode> | ||||
| ]]></artwork></figure> | <t>The RID with ID=6 restricts the payload types for this RID to 100 | |||
| (the redundancy format), 97 (G.711), 101 (Comfort Noise), and 102 | ||||
| <t>The RID with ID=6 restricts the payload types for this RID to 100 (the redund | (dual-tone multi-frequency (DTMF) tones). This means that RID 6 can | |||
| ancy | either contain the Redundant Audio Data (RED) format, encapsulating | |||
| format), 97 (G.711), 101 (Comfort Noise) and 102 (DTMF tones). This means that | encodings of the source media stream using payload type 97 and 98, 97 | |||
| RID 6 can either contain the RED format, encapsulating encodings of the source | without RED encapsulation, Comfort noise, or DTMF tones. Payload type | |||
| media stream using payload type 97 and 98, 97 without RED encapsulation, | 98 is not included in the RID, and can thus not be sent except as | |||
| Comfort noise, or DTMF tones. Payload type 98 is not included in the RID, and | redundancy information in RED encapsulation. If 97 were to be excluded | |||
| can thus not be sent except as redundancy information in RED encapsulation. If | from the pt parameter, it would instead mean that payload types 97 and | |||
| 97 were to be excluded from the pt parameter, it would instead mean that | 98 are only allowed via RED encapsulation.</t> | |||
| payload types 97 and 98 are only allowed via RED encapsulation.</t> | </section> | |||
| </section> | ||||
| </section> | <section anchor="format-parameters-for-future-payloads" numbered="true" toc= | |||
| </section> | "default"> | |||
| <section anchor="format-parameters-for-future-payloads" title="Format Parameters | <name>Format Parameters for Future Payloads</name> | |||
| for Future Payloads"> | <t>Registrations of future RTP payload format specifications that define m | |||
| edia | ||||
| <t>Registrations of future RTP payload format specifications that define media | ||||
| types that have parameters matching the RID restrictions specified in this memo | types that have parameters matching the RID restrictions specified in this memo | |||
| SHOULD name those parameters in a manner that matches the names of those RID | <bcp14>SHOULD</bcp14> name those parameters in a manner that matches the names o | |||
| restrictions, and SHOULD explicitly state what media type parameters are | f those RID | |||
| restrictions and <bcp14>SHOULD</bcp14> explicitly state what media-type paramete | ||||
| rs are | ||||
| restricted by what RID restrictions.</t> | restricted by what RID restrictions.</t> | |||
| </section> | ||||
| <section anchor="sec-abnf" numbered="true" toc="default"> | ||||
| <name>Formal Grammar</name> | ||||
| <t>This section gives a formal Augmented Backus-Naur Form (ABNF) <xref tar | ||||
| get="RFC5234" format="default"/> | ||||
| grammar, with the case-sensitive extensions described in <xref target="RFC7405" | ||||
| format="default"/>, for each | ||||
| of the new media and "a=rid" attributes defined in this document.</t> | ||||
| </section> | <sourcecode type="abnf"><![CDATA[ | |||
| <section anchor="sec-abnf" title="Formal Grammar"> | ||||
| <t>This section gives a formal Augmented Backus-Naur Form (ABNF) <xref target="R | ||||
| FC5234"/> | ||||
| grammar, with the case-sensitive extensions described in <xref target="RFC7405"/ | ||||
| >, for each | ||||
| of the new media and “a=rid” attributes defined in this document.</t> | ||||
| <figure><artwork><![CDATA[ | ||||
| rid-syntax = %s"a=rid:" rid-id SP rid-dir | rid-syntax = %s"a=rid:" rid-id SP rid-dir | |||
| [ rid-pt-param-list / rid-param-list ] | [ rid-pt-param-list / rid-param-list ] | |||
| rid-id = 1*(alpha-numeric / "-" / "_") | rid-id = 1*(alpha-numeric / "-" / "_") | |||
| alpha-numeric = < as defined in {{RFC4566}} > | alpha-numeric = < as defined in [RFC4566] > | |||
| rid-dir = %s"send" / %s"recv" | rid-dir = %s"send" / %s"recv" | |||
| rid-pt-param-list = SP rid-fmt-list *(";" rid-param) | rid-pt-param-list = SP rid-fmt-list *(";" rid-param) | |||
| rid-param-list = SP rid-param *(";" rid-param) | rid-param-list = SP rid-param *(";" rid-param) | |||
| rid-fmt-list = %s"pt=" fmt *( "," fmt ) | rid-fmt-list = %s"pt=" fmt *( "," fmt ) | |||
| fmt = < as defined in {{RFC4566}} > | fmt = < as defined in [RFC4566] > | |||
| rid-param = rid-width-param | rid-param = rid-width-param | |||
| / rid-height-param | / rid-height-param | |||
| / rid-fps-param | / rid-fps-param | |||
| / rid-fs-param | / rid-fs-param | |||
| / rid-br-param | / rid-br-param | |||
| / rid-pps-param | / rid-pps-param | |||
| / rid-bpp-param | / rid-bpp-param | |||
| / rid-depend-param | / rid-depend-param | |||
| / rid-param-other | / rid-param-other | |||
| skipping to change at line 811 ¶ | skipping to change at line 744 ¶ | |||
| rid-depend-param = %s"depend=" rid-list | rid-depend-param = %s"depend=" rid-list | |||
| rid-param-other = 1*(alpha-numeric / "-") [ "=" param-val ] | rid-param-other = 1*(alpha-numeric / "-") [ "=" param-val ] | |||
| rid-list = rid-id *( "," rid-id ) | rid-list = rid-id *( "," rid-id ) | |||
| int-param-val = 1*DIGIT | int-param-val = 1*DIGIT | |||
| float-param-val = 1*DIGIT "." 1*DIGIT | float-param-val = 1*DIGIT "." 1*DIGIT | |||
| param-val = *( %x20-58 / %x60-7E ) | param-val = *(%x20-3A / %x3C-7E) | |||
| ; Any printable character except semicolon | ; Any printable character except semicolon | |||
| ]]></sourcecode> | ||||
| ]]></artwork></figure> | </section> | |||
| <section anchor="sdp-examples" numbered="true" toc="default"> | ||||
| </section> | <name>SDP Examples</name> | |||
| <section anchor="sdp-examples" title="SDP Examples"> | <t>Note: See <xref target="RFC8853" format="default"/> for examples of RID | |||
| used | ||||
| <t>Note: see <xref target="I-D.ietf-mmusic-sdp-simulcast"/> for examples of RID | ||||
| used | ||||
| in simulcast scenarios.</t> | in simulcast scenarios.</t> | |||
| <section anchor="many-bundled-streams-using-many-codecs" numbered="true" t | ||||
| <section anchor="many-bundled-streams-using-many-codecs" title="Many Bundled Str | oc="default"> | |||
| eams using Many Codecs"> | <name>Many Bundled Streams Using Many Codecs</name> | |||
| <t>In this scenario, the offerer supports the Opus, G.722, G.711, and DT | ||||
| <t>In this scenario, the offerer supports the Opus, G.722, G.711 and DTMF audio | MF audio | |||
| codecs, and VP8, VP9, H.264 (CBP/CHP, mode 0/1), H.264-SVC (SCBP/SCHP) and | codecs and VP8, VP9, H.264 (CBP/CHP, mode 0/1), H.264-SVC (SCBP/SCHP), and | |||
| H.265 (MP/M10P) for video. An 8-way video call (to a mixer) is supported (send | H.265 (MP/M10P) for video. An 8-way video call (to a mixer) is supported (send | |||
| 1 and receive 7 video streams) by offering 7 video media sections (1 sendrecv | 1 and receive 7 video streams) by offering 7 video media sections (1 sendrecv | |||
| at max resolution and 6 recvonly at smaller resolutions), all bundled on the | at max resolution and 6 recvonly at smaller resolutions), all bundled on the | |||
| same port, using 3 different resolutions. The resolutions include:</t> | same port, using 3 different resolutions. The resolutions include:</t> | |||
| <ul spacing="normal"> | ||||
| <li>1 receive stream of 720p resolution is offered for the active spea | ||||
| ker.</li> | ||||
| <li>2 receive streams of 360p resolution are offered for the prior 2 a | ||||
| ctive | ||||
| speakers.</li> | ||||
| <li>4 receive streams of 180p resolution are offered for others in the | ||||
| call.</li> | ||||
| </ul> | ||||
| <t><list style="symbols"> | <t>NOTE: The SDP given below skips a few lines to | |||
| <t>1 receive stream of 720p resolution is offered for the active speaker.</t> | keep the example short and focused, as indicated by either the "..." | |||
| <t>2 receive streams of 360p resolution are offered for the prior 2 active | or the comments inserted.</t> | |||
| speakers.</t> | <t>The offer for this scenario is shown | |||
| <t>4 receive streams of 180p resolution are offered for others in the call.</t | below.</t> | |||
| > | ||||
| </list></t> | ||||
| <t>NOTE: The SDP given below skips a few lines to keep the example short and | ||||
| focused, as indicated by either the “…” or the comments inserted.</t> | ||||
| <t>The offer for this scenario is shown below.</t> | ||||
| <figure><artwork><![CDATA[ | <sourcecode type="sdp"> | |||
| ... | ... | |||
| m=audio 10000 RTP/SAVPF 96 9 8 0 123 | m=audio 10000 RTP/SAVPF 96 9 8 0 123 | |||
| a=rtpmap:96 OPUS/48000 | a=rtpmap:96 OPUS/48000 | |||
| a=rtpmap:9 G722/8000 | a=rtpmap:9 G722/8000 | |||
| a=rtpmap:8 PCMA/8000 | a=rtpmap:8 PCMA/8000 | |||
| a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
| a=rtpmap:123 telephone-event/8000 | a=rtpmap:123 telephone-event/8000 | |||
| a=mid:a1 | a=mid:a1 | |||
| ... | ... | |||
| m=video 10000 RTP/SAVPF 98 99 100 101 102 103 104 105 106 107 | m=video 10000 RTP/SAVPF 98 99 100 101 102 103 104 105 106 107 | |||
| skipping to change at line 906 ¶ | skipping to change at line 837 ¶ | |||
| ...same rtpmap/fmtp as above... | ...same rtpmap/fmtp as above... | |||
| a=recvonly | a=recvonly | |||
| a=mid:v4 (small resolution) | a=mid:v4 (small resolution) | |||
| a=rid:4 recv max-width=320;max-height=180;max-fps=15 | a=rid:4 recv max-width=320;max-height=180;max-fps=15 | |||
| ... | ... | |||
| m=video 10000 RTP/SAVPF 98 99 100 101 102 103 104 105 106 107 | m=video 10000 RTP/SAVPF 98 99 100 101 102 103 104 105 106 107 | |||
| a=extmap 1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | a=extmap 1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | |||
| ...same rtpmap/fmtp as above... | ...same rtpmap/fmtp as above... | |||
| ...same rid:4 as above for mid:v5,v6,v7 (small resolution)... | ...same rid:4 as above for mid:v5,v6,v7 (small resolution)... | |||
| ... | ... | |||
| </sourcecode> | ||||
| ]]></artwork></figure> | </section> | |||
| <section anchor="scalable-layers" numbered="true" toc="default"> | ||||
| </section> | <name>Scalable Layers</name> | |||
| <section anchor="scalable-layers" title="Scalable Layers"> | <t>Adding scalable layers to a session within a multiparty conference gi | |||
| ves a | ||||
| <t>Adding scalable layers to a session within a multiparty conference gives a | ||||
| selective forwarding unit (SFU) further flexibility to selectively forward | selective forwarding unit (SFU) further flexibility to selectively forward | |||
| packets from a source that best match the bandwidth and capabilities of | packets from a source that best match the bandwidth and capabilities of | |||
| diverse receivers. Scalable encodings have dependencies between layers, unlike | diverse receivers. Scalable encodings have dependencies between layers, unlike | |||
| independent simulcast streams. RIDs can be used to express these dependencies | independent simulcast streams. RIDs can be used to express these dependencies | |||
| using the “depend” restriction. In the example below, the highest resolution is | using the "depend" restriction. In the example below, the highest resolution is | |||
| offered to be sent as 2 scalable temporal layers (using MRST). | offered to be sent as 2 scalable temporal layers (using | |||
| See <xref target="I-D.ietf-mmusic-sdp-simulcast"/> for additional detail about s | Multiple RTP Streams on a Single Media Transport (MRST)). | |||
| imulcast usage.</t> | See <xref target="RFC8853" format="default"/> for additional detail about simulc | |||
| ast usage.</t> | ||||
| <figure><artwork><![CDATA[ | <sourcecode type="sdp"> | |||
| Offer: | Offer: | |||
| ... | ... | |||
| m=audio ...same as previous example ... | m=audio ...same as previous example ... | |||
| ... | ... | |||
| m=video ...same as previous example ... | m=video ...same as previous example ... | |||
| ...same rtpmap/fmtp as previous example ... | ...same rtpmap/fmtp as previous example ... | |||
| a=sendrecv | a=sendrecv | |||
| a=mid:v1 (max resolution) | a=mid:v1 (max resolution) | |||
| a=rid:0 send max-width=1280;max-height=720;max-fps=15 | a=rid:0 send max-width=1280;max-height=720;max-fps=15 | |||
| a=rid:1 send max-width=1280;max-height=720;max-fps=30;depend=0 | a=rid:1 send max-width=1280;max-height=720;max-fps=30;depend=0 | |||
| a=rid:2 recv max-width=1280;max-height=720;max-fps=30 | a=rid:2 recv max-width=1280;max-height=720;max-fps=30 | |||
| a=rid:5 send max-width=640;max-height=360;max-fps=15 | a=rid:5 send max-width=640;max-height=360;max-fps=15 | |||
| a=rid:6 send max-width=320;max-height=180;max-fps=15 | a=rid:6 send max-width=320;max-height=180;max-fps=15 | |||
| a=simulcast: send rid=0;1;5;6 recv rid=2 | a=simulcast: send rid=0;1;5;6 recv rid=2 | |||
| ... | ... | |||
| ...same m=video sections as previous example for mid:v2-v7... | ...same m=video sections as previous example for mid:v2-v7... | |||
| ... | ... | |||
| </sourcecode> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="sec-iana" numbered="true" toc="default"> | ||||
| <name>IANA Considerations</name> | ||||
| ]]></artwork></figure> | <t>This specification updates <xref target="RFC4855" format="default"/> | |||
| to give additional guidance on choice of Format Parameter (fmtp) names | ||||
| </section> | and their relation to RID restrictions.</t> | |||
| </section> | ||||
| <section anchor="sec-iana" title="IANA Considerations"> | ||||
| <t>This specification updates <xref target="RFC4855"/> to give additional guidan | ||||
| ce on choice | ||||
| of Format Parameter (fmtp) names, and on their relation to RID restrictions.</t> | ||||
| <section anchor="new-sdp-media-level-attribute" title="New SDP Media-Level attri | ||||
| bute"> | ||||
| <t>This document defines “rid” as SDP media-level attribute. This attribute must | ||||
| be registered by IANA under “Session Description Protocol (SDP) Parameters” | ||||
| under “att-field (media level only)”.</t> | ||||
| <t>The “rid” attribute is used to identify properties of RTP stream with in | ||||
| an RTP Session. Its format is defined in <xref target="sec-abnf"/>.</t> | ||||
| <t>The formal registration information for this attribute follows.</t> | ||||
| <figure><artwork><![CDATA[ | ||||
| Contact name, email address, and telephone number | ||||
| IETF MMUSIC Working Group | ||||
| mmusic@ietf.org | ||||
| +1 510 492 4080 | ||||
| Attribute name (as it will appear in SDP) | ||||
| rid | ||||
| Long-form attribute name in English | ||||
| Restriction Identifier | ||||
| Type of attribute (session level, media level, or both) | ||||
| Media Level | ||||
| Whether the attribute value is subject to the charset attribute | ||||
| The attribute is not dependent on charset. | ||||
| A one-paragraph explanation of the purpose of the attribute | ||||
| The "rid" SDP attribute is used to to unambiguously identify | ||||
| the RTP Streams within an RTP Session and restrict the | ||||
| streams' payload format parameters in a codec-agnostic way | ||||
| beyond what is provided with the regular Payload Types. | ||||
| A specification of appropriate attribute values for this attribute | ||||
| Valid values are defined by the ABNF in [RFCXXXXX] | ||||
| Multiplexing (Mux) Category | <section anchor="new-sdp-media-level-attribute" numbered="true" toc="defau | |||
| lt"> | ||||
| <name>New SDP Media-Level Attribute</name> | ||||
| SPECIAL | <t>This document defines "rid" as an SDP media-level attribute. This | |||
| ]]></artwork></figure> | attribute has been registered by IANA under "Session Description Protocol | |||
| (SDP) Parameters" under "att-field (media level only)".</t> | ||||
| <t>The "rid" attribute is used to identify the properties of an RTP | ||||
| stream within an RTP session. Its format is defined in <xref | ||||
| target="sec-abnf" format="default"/>.</t> | ||||
| <t>The formal registration information for this attribute follows.</t> | ||||
| </section> | <dl newline="true"> | |||
| <section anchor="sec-iana_rid" title="Registry for RID-Level Parameters"> | <dt> | |||
| Contact name, email address, and telephone number | ||||
| </dt> | ||||
| <dd> | ||||
| <artwork> | ||||
| IETF MMUSIC Working Group | ||||
| mmusic@ietf.org | ||||
| +1 510 492 4080 | ||||
| </artwork> | ||||
| </dd> | ||||
| <dt> | ||||
| Attribute name (as it will appear in SDP) | ||||
| </dt> | ||||
| <dd> | ||||
| rid | ||||
| </dd> | ||||
| <dt> | ||||
| Long-form attribute name in English | ||||
| </dt> | ||||
| <dd> | ||||
| Restriction Identifier | ||||
| </dd> | ||||
| <dt> | ||||
| Type of attribute (session level, media level, or both) | ||||
| </dt> | ||||
| <dd> | ||||
| Media Level | ||||
| </dd> | ||||
| <dt> | ||||
| Whether the attribute value is subject to the charset attribute | ||||
| </dt> | ||||
| <dd> | ||||
| The attribute is not dependent on charset. | ||||
| </dd> | ||||
| <dt> | ||||
| A one-paragraph explanation of the purpose of the attribute | ||||
| </dt> | ||||
| <dd> | ||||
| The "rid" SDP attribute is used to unambiguously identify | ||||
| the RTP streams within an RTP session and restrict the | ||||
| streams' payload format parameters in a codec-agnostic way | ||||
| beyond what is provided with the regular payload types. | ||||
| </dd> | ||||
| <dt> | ||||
| A specification of appropriate attribute values for this attribute | ||||
| </dt> | ||||
| <dd> | ||||
| Valid values are defined by the ABNF in RFC 8851 | ||||
| </dd> | ||||
| <dt> | ||||
| Multiplexing (Mux) Category | ||||
| </dt> | ||||
| <dd> | ||||
| SPECIAL | ||||
| </dd> | ||||
| </dl> | ||||
| <t>This specification creates a new IANA registry named “rid attribute parameter | </section> | |||
| s” | <section anchor="sec-iana_rid" numbered="true" toc="default"> | |||
| within the SDP parameters registry. The “a=rid” restrictions MUST be | <name>Registry for RID-Level Parameters</name> | |||
| <t>This specification creates a new IANA registry named "RID Attribute P | ||||
| arameters" | ||||
| within the SDP parameters registry. The "a=rid" restrictions <bcp14>MUST</bcp14 | ||||
| > be | ||||
| registered with IANA and documented under the same rules as for SDP | registered with IANA and documented under the same rules as for SDP | |||
| session-level and media-level attributes as specified in <xref target="RFC4566"/ | session-level and media-level attributes as specified in <xref target="RFC4566" | |||
| >.</t> | format="default"/>.</t> | |||
| <t>Parameters for "a=rid" lines that modify the nature of encoded media | ||||
| <t>Parameters for “a=rid” lines that modify the nature of encoded media MUST be | <bcp14>MUST</bcp14> be | |||
| of the form that the result of applying the modification to the stream results | of the form that the result of applying the modification to the stream results | |||
| in a stream that still complies with the other parameters that affect the | in a stream that still complies with the other parameters that affect the | |||
| media. In other words, restrictions always have to restrict the definition to be | media. In other words, restrictions always have to restrict the definition to be | |||
| a subset of what is otherwise allowable, and never expand it.</t> | a subset of what is otherwise allowable, and never expand it.</t> | |||
| <t>New restriction registrations are accepted according to the “Specification | <t>New restriction registrations are accepted according to the "Specific | |||
| Required” policy of <xref target="RFC5226"/>. The registration MUST contain the | ation | |||
| RID | Required" policy of <xref target="RFC8126" format="default"/>. The registration | |||
| <bcp14>MUST</bcp14> contain the RID | ||||
| parameter name and a reference to the corresponding specification. The | parameter name and a reference to the corresponding specification. The | |||
| specification itself must contain the following information (not all of which | specification itself must contain the following information (not all of which | |||
| appears in the registry):</t> | appears in the registry):</t> | |||
| <ul spacing="normal"> | ||||
| <li>restriction name (as it will appear in SDP)</li> | ||||
| <li>an explanation of the purpose of the restriction</li> | ||||
| <li>a specification of appropriate attribute values for this restricti | ||||
| on</li> | ||||
| <li>an ABNF definition of the restriction</li> | ||||
| </ul> | ||||
| <t><list style="symbols"> | <t>The initial set of "a=rid" restriction names, with definitions in | |||
| <t>restriction name (as it will appear in SDP)</t> | <xref target="sec-rid_level_restrictions" format="default"/> of this document, | |||
| <t>an explanation of the purpose of the restriction</t> | is given below:</t> | |||
| <t>a specification of appropriate attribute values for this restriction</t> | ||||
| <t>an ABNF definition of the restriction</t> | ||||
| </list></t> | ||||
| <t>The initial set of “a=rid” restriction names, with definitions in | ||||
| <xref target="sec-rid_level_restrictions"/> of this document, is given below:</t | ||||
| > | ||||
| <figure><artwork><![CDATA[ | ||||
| RID Parameter Name Reference | ||||
| ------------------ --------- | ||||
| max-width [RFCXXXX] | ||||
| max-height [RFCXXXX] | ||||
| max-fps [RFCXXXX] | ||||
| max-fs [RFCXXXX] | ||||
| max-br [RFCXXXX] | ||||
| max-pps [RFCXXXX] | ||||
| max-bpp [RFCXXXX] | ||||
| depend [RFCXXXX] | ||||
| ]]></artwork></figure> | <table anchor="RID-params"> | |||
| <name>"a=rid" restriction names</name> | ||||
| <thead> | ||||
| <tr> | ||||
| <th>RID Parameter Name</th> | ||||
| <th>Reference</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody> | ||||
| <tr> | ||||
| <td>pt</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>max-width</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>max-height</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>max-fps</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>max-fs</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>max-br</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>max-pps</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>max-bpp</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| <tr> | ||||
| <td>depend</td> | ||||
| <td>RFC 8851</td> | ||||
| </tr> | ||||
| </tbody> | ||||
| </table> | ||||
| <t>It is conceivable that a future document wants to define a RID-level | <t>It is conceivable that a future document will want to define RID-leve l | |||
| restrictions that contain string values. These extensions need to take care to | restrictions that contain string values. These extensions need to take care to | |||
| conform to the ABNF defined for rid-param-other. In particular, this means | conform to the ABNF defined for rid-param-other. In particular, this means | |||
| that such extensions will need to define escaping mechanisms if they | that such extensions will need to define escaping mechanisms if they | |||
| want to allow semicolons, unprintable characters, or byte values | want to allow semicolons, unprintable characters, or byte values | |||
| greater than 127 in the string.</t> | greater than 127 in the string.</t> | |||
| </section> | ||||
| </section> | ||||
| <section anchor="security-considerations" numbered="true" toc="default"> | ||||
| <name>Security Considerations</name> | ||||
| </section> | <t>As with most SDP parameters, a failure to provide integrity protection | |||
| </section> | over | |||
| <section anchor="security-considerations" title="Security Considerations"> | the "a=rid" attributes gives attackers a way to modify the session in | |||
| <t>As with most SDP parameters, a failure to provide integrity protection over | ||||
| the “a=rid” attributes provides attackers a way to modify the session in | ||||
| potentially unwanted ways. This could result in an implementation sending | potentially unwanted ways. This could result in an implementation sending | |||
| greater amounts of data than a recipient wishes to receive. In general, | greater amounts of data than a recipient wishes to receive. In general, | |||
| however, since the “a=rid” attribute can only restrict a stream to be a subset | however, since the "a=rid" attribute can only restrict a stream to be a subset | |||
| of what is otherwise allowable, modification of the value cannot result in a | of what is otherwise allowable, modification of the value cannot result in a | |||
| stream that is of higher bandwidth than would be sent to an implementation | stream that is of higher bandwidth than would be sent to an implementation | |||
| that does not support this mechanism.</t> | that does not support this mechanism.</t> | |||
| <t>The actual identifiers used for RIDs are expected to be opaque. As such | ||||
| <t>The actual identifiers used for RIDs are expected to be opaque. As such, they | , they | |||
| are not expected to contain information that would be sensitive, were it | are not expected to contain information that would be sensitive, were it | |||
| observed by third-parties.</t> | observed by third parties.</t> | |||
| </section> | ||||
| </section> | ||||
| <section anchor="acknowledgements" title="Acknowledgements"> | ||||
| <t>Many thanks to review from Cullen Jennings, Magnus Westerlund, and Paul | ||||
| Kyzivat. Thanks to Colin Perkins for input on future payload type handing.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references> | ||||
| <references title='Normative References'> | <name>References</name> | |||
| <references> | ||||
| <reference anchor="I-D.ietf-avtext-rid"> | <name>Normative References</name> | |||
| <front> | <reference anchor="RFC8852" target="https://www.rfc-editor.org/info/rfc8852"> | |||
| <title>RTP Stream Identifier Source Description (SDES)</title> | <front> | |||
| <title>RTP Stream Identifier Source Description (SDES)</title> | ||||
| <author initials='A' surname='Roach' fullname='Adam Roach'> | <author initials="A.B." surname="Roach" fullname="Adam Roach"/> | |||
| <organization /> | <author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar"/> | |||
| </author> | <author initials="P" surname="Thatcher" fullname="Peter Thatcher"/> | |||
| <date month="May" year="2020"/> | ||||
| <author initials='S' surname='Nandakumar' fullname='Suhas Nandakumar'> | </front> | |||
| <organization /> | <seriesInfo name="DOI" value="10.17487/RFC8852"/> | |||
| </author> | <seriesInfo name="RFC" value="8852"/> | |||
| <author initials='P' surname='Thatcher' fullname='Peter Thatcher'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='October' day='6' year='2016' /> | ||||
| <abstract><t>This document defines and registers two new RTCP Stream Identifier | ||||
| Source Description (SDES) items. One, named RtpStreamId, is used for unique ide | ||||
| ntification of RTP streams. The other, RepairedRtpStreamId, can be used to iden | ||||
| tify which stream a redundancy RTP stream is to be used to repair.</t></abstract | ||||
| > | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-avtext-rid-09' /> | ||||
| <format type='TXT' | ||||
| target='http://www.ietf.org/internet-drafts/draft-ietf-avtext-rid-09.txt | ||||
| ' /> | ||||
| </reference> | ||||
| <reference anchor="RFC2119" target='https://www.rfc-editor.org/info/rfc2119'> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</title> | ||||
| <author initials='S.' surname='Bradner' fullname='S. Bradner'><organization /></ | ||||
| author> | ||||
| <date year='1997' month='March' /> | ||||
| <abstract><t>In many standards track documents several words are used to signify | ||||
| the requirements in the specification. These words are often capitalized. This | ||||
| document defines these words as they should be interpreted in IETF documents. | ||||
| This document specifies an Internet Best Current Practices for the Internet Comm | ||||
| unity, and requests discussion and suggestions for improvements.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='2119'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2119'/> | ||||
| </reference> | ||||
| <reference anchor="RFC3264" target='https://www.rfc-editor.org/info/rfc3264'> | ||||
| <front> | ||||
| <title>An Offer/Answer Model with Session Description Protocol (SDP)</title> | ||||
| <author initials='J.' surname='Rosenberg' fullname='J. Rosenberg'><organization | ||||
| /></author> | ||||
| <author initials='H.' surname='Schulzrinne' fullname='H. Schulzrinne'><organizat | ||||
| ion /></author> | ||||
| <date year='2002' month='June' /> | ||||
| <abstract><t>This document defines a mechanism by which two entities can make us | ||||
| e of the Session Description Protocol (SDP) to arrive at a common view of a mult | ||||
| imedia session between them. In the model, one participant offers the other a d | ||||
| escription of the desired session from their perspective, and the other particip | ||||
| ant answers with the desired session from their perspective. This offer/answer | ||||
| model is most useful in unicast sessions where information from both participant | ||||
| s is needed for the complete view of the session. The offer/answer model is use | ||||
| d by protocols like the Session Initiation Protocol (SIP). [STANDARDS-TRACK]</t | ||||
| ></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='3264'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC3264'/> | ||||
| </reference> | ||||
| <reference anchor="RFC3550" target='https://www.rfc-editor.org/info/rfc3550'> | ||||
| <front> | ||||
| <title>RTP: A Transport Protocol for Real-Time Applications</title> | ||||
| <author initials='H.' surname='Schulzrinne' fullname='H. Schulzrinne'><organizat | ||||
| ion /></author> | ||||
| <author initials='S.' surname='Casner' fullname='S. Casner'><organization /></au | ||||
| thor> | ||||
| <author initials='R.' surname='Frederick' fullname='R. Frederick'><organization | ||||
| /></author> | ||||
| <author initials='V.' surname='Jacobson' fullname='V. Jacobson'><organization /> | ||||
| </author> | ||||
| <date year='2003' month='July' /> | ||||
| <abstract><t>This memorandum describes RTP, the real-time transport protocol. R | ||||
| TP provides end-to-end network transport functions suitable for applications tra | ||||
| nsmitting real-time data, such as audio, video or simulation data, over multicas | ||||
| t or unicast network services. RTP does not address resource reservation and do | ||||
| es not guarantee quality-of- service for real-time services. The data transport | ||||
| is augmented by a control protocol (RTCP) to allow monitoring of the data deliv | ||||
| ery in a manner scalable to large multicast networks, and to provide minimal con | ||||
| trol and identification functionality. RTP and RTCP are designed to be independ | ||||
| ent of the underlying transport and network layers. The protocol supports the u | ||||
| se of RTP-level translators and mixers. Most of the text in this memorandum is i | ||||
| dentical to RFC 1889 which it obsoletes. There are no changes in the packet for | ||||
| mats on the wire, only changes to the rules and algorithms governing how the pro | ||||
| tocol is used. The biggest change is an enhancement to the scalable timer algori | ||||
| thm for calculating when to send RTCP packets in order to minimize transmission | ||||
| in excess of the intended rate when many participants join a session simultaneou | ||||
| sly. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='STD' value='64'/> | ||||
| <seriesInfo name='RFC' value='3550'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC3550'/> | ||||
| </reference> | ||||
| <reference anchor="RFC4566" target='https://www.rfc-editor.org/info/rfc4566'> | ||||
| <front> | ||||
| <title>SDP: Session Description Protocol</title> | ||||
| <author initials='M.' surname='Handley' fullname='M. Handley'><organization /></ | ||||
| author> | ||||
| <author initials='V.' surname='Jacobson' fullname='V. Jacobson'><organization /> | ||||
| </author> | ||||
| <author initials='C.' surname='Perkins' fullname='C. Perkins'><organization /></ | ||||
| author> | ||||
| <date year='2006' month='July' /> | ||||
| <abstract><t>This memo defines the Session Description Protocol (SDP). SDP is i | ||||
| ntended for describing multimedia sessions for the purposes of session announcem | ||||
| ent, session invitation, and other forms of multimedia session initiation. [STA | ||||
| NDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='4566'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC4566'/> | ||||
| </reference> | ||||
| <reference anchor="RFC4855" target='https://www.rfc-editor.org/info/rfc4855'> | ||||
| <front> | ||||
| <title>Media Type Registration of RTP Payload Formats</title> | ||||
| <author initials='S.' surname='Casner' fullname='S. Casner'><organization /></au | ||||
| thor> | ||||
| <date year='2007' month='February' /> | ||||
| <abstract><t>This document specifies the procedure to register RTP payload forma | ||||
| ts as audio, video, or other media subtype names. This is useful in a text-base | ||||
| d format description or control protocol to identify the type of an RTP transmis | ||||
| sion. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='4855'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC4855'/> | ||||
| </reference> | ||||
| <reference anchor="RFC5234" target='https://www.rfc-editor.org/info/rfc5234'> | ||||
| <front> | ||||
| <title>Augmented BNF for Syntax Specifications: ABNF</title> | ||||
| <author initials='D.' surname='Crocker' fullname='D. Crocker' role='editor'><org | ||||
| anization /></author> | ||||
| <author initials='P.' surname='Overell' fullname='P. Overell'><organization /></ | ||||
| author> | ||||
| <date year='2008' month='January' /> | ||||
| <abstract><t>Internet technical specifications often need to define a formal syn | ||||
| tax. Over the years, a modified version of Backus-Naur Form (BNF), called Augme | ||||
| nted BNF (ABNF), has been popular among many Internet specifications. The curre | ||||
| nt specification documents ABNF. It balances compactness and simplicity with rea | ||||
| sonable representational power. The differences between standard BNF and ABNF i | ||||
| nvolve naming rules, repetition, alternatives, order-independence, and value ran | ||||
| ges. This specification also supplies additional rule definitions and encoding | ||||
| for a core lexical analyzer of the type common to several Internet specification | ||||
| s. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='STD' value='68'/> | ||||
| <seriesInfo name='RFC' value='5234'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC5234'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7405" target='https://www.rfc-editor.org/info/rfc7405'> | ||||
| <front> | ||||
| <title>Case-Sensitive String Support in ABNF</title> | ||||
| <author initials='P.' surname='Kyzivat' fullname='P. Kyzivat'><organization /></ | ||||
| author> | ||||
| <date year='2014' month='December' /> | ||||
| <abstract><t>This document extends the base definition of ABNF (Augmented Backus | ||||
| -Naur Form) to include a way to specify US-ASCII string literals that are matche | ||||
| d in a case-sensitive manner.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7405'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7405'/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target='https://www.rfc-editor.org/info/rfc8174'> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> | ||||
| <author initials='B.' surname='Leiba' fullname='B. Leiba'><organization /></auth | ||||
| or> | ||||
| <date year='2017' month='May' /> | ||||
| <abstract><t>RFC 2119 specifies common key words that may be used in protocol s | ||||
| pecifications. This document aims to reduce the ambiguity by clarifying that on | ||||
| ly UPPERCASE usage of the key words have the defined special meanings.</t></abs | ||||
| tract> | ||||
| </front> | ||||
| <seriesInfo name='BCP' value='14'/> | ||||
| <seriesInfo name='RFC' value='8174'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC8174'/> | ||||
| </reference> | ||||
| </references> | ||||
| <references title='Informative References'> | ||||
| <reference anchor="I-D.ietf-mmusic-sdp-bundle-negotiation"> | ||||
| <front> | ||||
| <title>Negotiating Media Multiplexing Using the Session Description Protocol (SD | ||||
| P)</title> | ||||
| <author initials='C' surname='Holmberg' fullname='Christer Holmberg'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='H' surname='Alvestrand' fullname='Harald Alvestrand'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='C' surname='Jennings' fullname='Cullen Jennings'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='December' day='14' year='2018' /> | ||||
| <abstract><t>This specification defines a new Session Description Protocol (SDP) | ||||
| Grouping Framework extension, 'BUNDLE'. The extension can be used with the SDP | ||||
| Offer/Answer mechanism to negotiate the usage of a single transport (5-tuple) f | ||||
| or sending and receiving media described by multiple SDP media descriptions ("m= | ||||
| " sections). Such transport is referred to as a BUNDLE transport, and the media | ||||
| is referred to as bundled media. The "m=" sections that use the BUNDLE transpo | ||||
| rt form a BUNDLE group. This specification updates RFC 3264, to also allow assi | ||||
| gning a zero port value to a "m=" section in cases where the media described by | ||||
| the "m=" section is not disabled or rejected. This specification updates RFC 58 | ||||
| 88, to also allow an SDP 'group' attribute to contain an identification-tag that | ||||
| identifies a "m=" section with the port set to zero. This specification define | ||||
| s a new RTP Control Protocol (RTCP) source description (SDES) item and a new RTP | ||||
| header extension that can be used to correlate bundled RTP/RTCP packets with th | ||||
| eir appropriate "m=" section. This specification updates RFC 7941, by adding an | ||||
| exception, for the MID RTP header extension, to the requirement regarding prote | ||||
| ction of an SDES RTP header extension carrying an SDES item for the MID RTP head | ||||
| er extension.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-mmusic-sdp-bundle-negotiatio | ||||
| n-54' /> | ||||
| <format type='TXT' | ||||
| target='http://www.ietf.org/internet-drafts/draft-ietf-mmusic-sdp-bundle | ||||
| -negotiation-54.txt' /> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-mmusic-sdp-simulcast"> | ||||
| <front> | ||||
| <title>Using Simulcast in SDP and RTP Sessions</title> | ||||
| <author initials='B' surname='Burman' fullname='Bo Burman'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='M' surname='Westerlund' fullname='Magnus Westerlund'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='S' surname='Nandakumar' fullname='Suhas Nandakumar'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='M' surname='Zanaty' fullname='Mo Zanaty'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='June' day='27' year='2018' /> | ||||
| <abstract><t>In some application scenarios it may be desirable to send multiple | ||||
| differently encoded versions of the same media source in different RTP streams. | ||||
| This is called simulcast. This document describes how to accomplish simulcast | ||||
| in RTP and how to signal it in SDP. The described solution uses an RTP/RTCP ide | ||||
| ntification method to identify RTP streams belonging to the same media source, a | ||||
| nd makes an extension to SDP to relate those RTP streams as being different simu | ||||
| lcast formats of that media source. The SDP extension consists of a new media l | ||||
| evel SDP attribute that expresses capability to send and/or receive simulcast RT | ||||
| P streams.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-mmusic-sdp-simulcast-13' /> | ||||
| <format type='TXT' | ||||
| target='http://www.ietf.org/internet-drafts/draft-ietf-mmusic-sdp-simulc | ||||
| ast-13.txt' /> | ||||
| </reference> | ||||
| <reference anchor="I-D.ietf-payload-flexible-fec-scheme"> | ||||
| <front> | ||||
| <title>RTP Payload Format for Flexible Forward Error Correction (FEC)</title> | ||||
| <author initials='M' surname='Zanaty' fullname='Mo Zanaty'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='V' surname='Singh' fullname='Varun Singh'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='A' surname='Begen' fullname='Ali Begen'> | ||||
| <organization /> | ||||
| </author> | ||||
| <author initials='G' surname='Mandyam' fullname='Giridhar Mandyam'> | ||||
| <organization /> | ||||
| </author> | ||||
| <date month='December' day='11' year='2018' /> | ||||
| <abstract><t>This document defines new RTP payload formats for the Forward Error | ||||
| Correction (FEC) packets that are generated by the non-interleaved and interlea | ||||
| ved parity codes from source media encapsulated in RTP. These parity codes are s | ||||
| ystematic codes, where a number of FEC repair packets are generated from a set o | ||||
| f source packets from one or more source RTP streams. These FEC repair packets | ||||
| are sent in a redundancy RTP stream separate from the source RTP stream(s) that | ||||
| carries the source packets. RTP source packets that were lost in transmission c | ||||
| an be reconstructed using the source and repair packets that were received. The | ||||
| non-interleaved and interleaved parity codes which are defined in this specific | ||||
| ation offer a good protection against random and bursty packet losses, respectiv | ||||
| ely, at a cost of decent complexity. The RTP payload formats that are defined i | ||||
| n this document address scalability issues experienced with the earlier specific | ||||
| ations, and offer several improvements. Due to these changes, the new payload f | ||||
| ormats are not backward compatible with earlier specifications, but endpoints th | ||||
| at do not implement this specification can still work by simply ignoring the FEC | ||||
| repair packets.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='Internet-Draft' value='draft-ietf-payload-flexible-fec-scheme- | ||||
| 13' /> | ||||
| <format type='TXT' | ||||
| target='http://www.ietf.org/internet-drafts/draft-ietf-payload-flexible- | ||||
| fec-scheme-13.txt' /> | ||||
| <format type='PDF' | ||||
| target='http://www.ietf.org/internet-drafts/draft-ietf-payload-flexible- | ||||
| fec-scheme-13.pdf' /> | ||||
| </reference> | ||||
| <reference anchor="RFC2198" target='https://www.rfc-editor.org/info/rfc2198'> | ||||
| <front> | ||||
| <title>RTP Payload for Redundant Audio Data</title> | ||||
| <author initials='C.' surname='Perkins' fullname='C. Perkins'><organization /></ | ||||
| author> | ||||
| <author initials='I.' surname='Kouvelas' fullname='I. Kouvelas'><organization /> | ||||
| </author> | ||||
| <author initials='O.' surname='Hodson' fullname='O. Hodson'><organization /></au | ||||
| thor> | ||||
| <author initials='V.' surname='Hardman' fullname='V. Hardman'><organization /></ | ||||
| author> | ||||
| <author initials='M.' surname='Handley' fullname='M. Handley'><organization /></ | ||||
| author> | ||||
| <author initials='J.C.' surname='Bolot' fullname='J.C. Bolot'><organization /></ | ||||
| author> | ||||
| <author initials='A.' surname='Vega-Garcia' fullname='A. Vega-Garcia'><organizat | ||||
| ion /></author> | ||||
| <author initials='S.' surname='Fosse-Parisis' fullname='S. Fosse-Parisis'><organ | ||||
| ization /></author> | ||||
| <date year='1997' month='September' /> | ||||
| <abstract><t>This document describes a payload format for use with the real-time | ||||
| transport protocol (RTP), version 2, for encoding redundant audio data. [STANDA | ||||
| RDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='2198'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC2198'/> | ||||
| </reference> | ||||
| <reference anchor="RFC4588" target='https://www.rfc-editor.org/info/rfc4588'> | ||||
| <front> | ||||
| <title>RTP Retransmission Payload Format</title> | ||||
| <author initials='J.' surname='Rey' fullname='J. Rey'><organization /></author> | ||||
| <author initials='D.' surname='Leon' fullname='D. Leon'><organization /></author | ||||
| > | ||||
| <author initials='A.' surname='Miyazaki' fullname='A. Miyazaki'><organization /> | ||||
| </author> | ||||
| <author initials='V.' surname='Varsa' fullname='V. Varsa'><organization /></auth | ||||
| or> | ||||
| <author initials='R.' surname='Hakenberg' fullname='R. Hakenberg'><organization | ||||
| /></author> | ||||
| <date year='2006' month='July' /> | ||||
| <abstract><t>RTP retransmission is an effective packet loss recovery technique f | ||||
| or real-time applications with relaxed delay bounds. This document describes an | ||||
| RTP payload format for performing retransmissions. Retransmitted RTP packets ar | ||||
| e sent in a separate stream from the original RTP stream. It is assumed that fe | ||||
| edback from receivers to senders is available. In particular, it is assumed tha | ||||
| t Real-time Transport Control Protocol (RTCP) feedback as defined in the extende | ||||
| d RTP profile for RTCP-based feedback (denoted RTP/AVPF) is available in this me | ||||
| mo. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='4588'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC4588'/> | ||||
| </reference> | ||||
| <reference anchor="RFC5109" target='https://www.rfc-editor.org/info/rfc5109'> | ||||
| <front> | ||||
| <title>RTP Payload Format for Generic Forward Error Correction</title> | ||||
| <author initials='A.' surname='Li' fullname='A. Li' role='editor'><organization | ||||
| /></author> | ||||
| <date year='2007' month='December' /> | ||||
| <abstract><t>This document specifies a payload format for generic Forward Error | ||||
| Correction (FEC) for media data encapsulated in RTP. It is based on the exclusi | ||||
| ve-or (parity) operation. The payload format described in this document allows | ||||
| end systems to apply protection using various protection lengths and levels, in | ||||
| addition to using various protection group sizes to adapt to different media and | ||||
| channel characteristics. It enables complete recovery of the protected packets | ||||
| or partial recovery of the critical parts of the payload depending on the packet | ||||
| loss situation. This scheme is completely compatible with non-FEC-capable host | ||||
| s, so the receivers in a multicast group that do not implement FEC can still wor | ||||
| k by simply ignoring the protection data. This specification obsoletes RFC 2733 | ||||
| and RFC 3009. The FEC specified in this document is not backward compatible wi | ||||
| th RFC 2733 and RFC 3009. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='5109'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC5109'/> | ||||
| </reference> | </reference> | |||
| <reference anchor="RFC5226" target='https://www.rfc-editor.org/info/rfc5226'> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| <front> | ence.RFC.2119.xml"/> | |||
| <title>Guidelines for Writing an IANA Considerations Section in RFCs</title> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| <author initials='T.' surname='Narten' fullname='T. Narten'><organization /></au | ence.RFC.3264.xml"/> | |||
| thor> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| <author initials='H.' surname='Alvestrand' fullname='H. Alvestrand'><organizatio | ence.RFC.3550.xml"/> | |||
| n /></author> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| <date year='2008' month='May' /> | ence.RFC.4566.xml"/> | |||
| <abstract><t>Many protocols make use of identifiers consisting of constants and | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| other well-known values. Even after a protocol has been defined and deployment | ence.RFC.4855.xml"/> | |||
| has begun, new values may need to be assigned (e.g., for a new option type in DH | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| CP, or a new encryption or authentication transform for IPsec). To ensure that | ence.RFC.5234.xml"/> | |||
| such quantities have consistent values and interpretations across all implementa | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| tions, their assignment must be administered by a central authority. For IETF p | ence.RFC.7405.xml"/> | |||
| rotocols, that role is provided by the Internet Assigned Numbers Authority (IANA | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| ).</t><t>In order for IANA to manage a given namespace prudently, it needs guide | ence.RFC.8174.xml"/> | |||
| lines describing the conditions under which new values can be assigned or when m | </references> | |||
| odifications to existing values can be made. If IANA is expected to play a role | <references> | |||
| in the management of a namespace, IANA must be given clear and concise instruct | <name>Informative References</name> | |||
| ions describing that role. This document discusses issues that should be consid | ||||
| ered in formulating a policy for assigning values to a namespace and provides gu | ||||
| idelines for authors on the specific text that must be included in documents tha | ||||
| t place demands on IANA.</t><t>This document obsoletes RFC 2434. This document | ||||
| specifies an Internet Best Current Practices for the Internet Community, and re | ||||
| quests discussion and suggestions for improvements.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='5226'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC5226'/> | ||||
| </reference> | ||||
| <reference anchor="RFC6184" target='https://www.rfc-editor.org/info/rfc6184'> | <!-- draft-ietf-mmusic-sdp-bundle-negotiation in C238 --> | |||
| <front> | ||||
| <title>RTP Payload Format for H.264 Video</title> | ||||
| <author initials='Y.-K.' surname='Wang' fullname='Y.-K. Wang'><organization /></ | ||||
| author> | ||||
| <author initials='R.' surname='Even' fullname='R. Even'><organization /></author | ||||
| > | ||||
| <author initials='T.' surname='Kristensen' fullname='T. Kristensen'><organizatio | ||||
| n /></author> | ||||
| <author initials='R.' surname='Jesup' fullname='R. Jesup'><organization /></auth | ||||
| or> | ||||
| <date year='2011' month='May' /> | ||||
| <abstract><t>This memo describes an RTP Payload format for the ITU-T Recommendat | ||||
| ion H.264 video codec and the technically identical ISO/IEC International Standa | ||||
| rd 14496-10 video codec, excluding the Scalable Video Coding (SVC) extension and | ||||
| the Multiview Video Coding extension, for which the RTP payload formats are def | ||||
| ined elsewhere. The RTP payload format allows for packetization of one or more N | ||||
| etwork Abstraction Layer Units (NALUs), produced by an H.264 video encoder, in e | ||||
| ach RTP payload. The payload format has wide applicability, as it supports appl | ||||
| ications from simple low bitrate conversational usage, to Internet video streami | ||||
| ng with interleaved transmission, to high bitrate video-on-demand.</t><t>This me | ||||
| mo obsoletes RFC 3984. Changes from RFC 3984 are summarized in Section 14. Iss | ||||
| ues on backward compatibility to RFC 3984 are discussed in Section 15. [STANDAR | ||||
| DS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='6184'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6184'/> | ||||
| </reference> | ||||
| <reference anchor="RFC6236" target='https://www.rfc-editor.org/info/rfc6236'> | <reference anchor="RFC8843" target="https://www.rfc-editor.org/info/rfc8 | |||
| <front> | 843"> | |||
| <title>Negotiation of Generic Image Attributes in the Session Description Protoc | <front> | |||
| ol (SDP)</title> | <title>Negotiating Media Multiplexing Using the Session Description | |||
| <author initials='I.' surname='Johansson' fullname='I. Johansson'><organization | Protocol (SDP)</title> | |||
| /></author> | ||||
| <author initials='K.' surname='Jung' fullname='K. Jung'><organization /></author | ||||
| > | ||||
| <date year='2011' month='May' /> | ||||
| <abstract><t>This document proposes a new generic session setup attribute to mak | ||||
| e it possible to negotiate different image attributes such as image size. A pos | ||||
| sible use case is to make it possible for a \%low-end \%hand- held terminal to d | ||||
| isplay video without the need to rescale the image, something that may consume l | ||||
| arge amounts of memory and processing power. The document also helps to maintai | ||||
| n an optimal bitrate for video as only the image size that is desired by the rec | ||||
| eiver is transmitted. [STANDARDS-TRACK]</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='6236'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC6236'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7656" target='https://www.rfc-editor.org/info/rfc7656'> | <author initials="C" surname="Holmberg" fullname="Christer Holmberg" | |||
| <front> | > | |||
| <title>A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol ( | <organization/> | |||
| RTP) Sources</title> | </author> | |||
| <author initials='J.' surname='Lennox' fullname='J. Lennox'><organization /></au | <author initials="H" surname="Alvestrand" fullname="Harald Alvestran | |||
| thor> | d"> | |||
| <author initials='K.' surname='Gross' fullname='K. Gross'><organization /></auth | <organization/> | |||
| or> | </author> | |||
| <author initials='S.' surname='Nandakumar' fullname='S. Nandakumar'><organizatio | <author initials="C" surname="Jennings" fullname="Cullen Jennings"> | |||
| n /></author> | <organization/> | |||
| <author initials='G.' surname='Salgueiro' fullname='G. Salgueiro'><organization | </author> | |||
| /></author> | <date month="May" year="2020"/> | |||
| <author initials='B.' surname='Burman' fullname='B. Burman' role='editor'><organ | </front> | |||
| ization /></author> | <seriesInfo name="DOI" value="10.17487/RFC8843"/> | |||
| <date year='2015' month='November' /> | <seriesInfo name="RFC" value="8843"/> | |||
| <abstract><t>The terminology about, and associations among, Real-time Transport | </reference> | |||
| Protocol (RTP) sources can be complex and somewhat opaque. This document descri | ||||
| bes a number of existing and proposed properties and relationships among RTP sou | ||||
| rces and defines common terminology for discussing protocol entities and their r | ||||
| elationships.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7656'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7656'/> | ||||
| </reference> | ||||
| <reference anchor="RFC7741" target='https://www.rfc-editor.org/info/rfc7741'> | <!-- draft-ietf-mmusic-sdp-simulcast in C238 --> | |||
| <front> | <reference anchor="RFC8853" target="https://www.rfc-editor.org/info/rfc8 | |||
| <title>RTP Payload Format for VP8 Video</title> | 853"> | |||
| <author initials='P.' surname='Westin' fullname='P. Westin'><organization /></au | <front> | |||
| thor> | <title>Using Simulcast in SDP and RTP Sessions</title> | |||
| <author initials='H.' surname='Lundin' fullname='H. Lundin'><organization /></au | ||||
| thor> | ||||
| <author initials='M.' surname='Glover' fullname='M. Glover'><organization /></au | ||||
| thor> | ||||
| <author initials='J.' surname='Uberti' fullname='J. Uberti'><organization /></au | ||||
| thor> | ||||
| <author initials='F.' surname='Galligan' fullname='F. Galligan'><organization /> | ||||
| </author> | ||||
| <date year='2016' month='March' /> | ||||
| <abstract><t>This memo describes an RTP payload format for the VP8 video codec. | ||||
| The payload format has wide applicability, as it supports applications from low- | ||||
| bitrate peer-to-peer usage to high-bitrate video conferences.</t></abstract> | ||||
| </front> | ||||
| <seriesInfo name='RFC' value='7741'/> | ||||
| <seriesInfo name='DOI' value='10.17487/RFC7741'/> | ||||
| </reference> | ||||
| <reference anchor="RFC8285" target='https://www.rfc-editor.org/info/rfc8285'> | <author initials="B" surname="Burman" fullname="Bo Burman"> | |||
| <front> | <organization/> | |||
| <title>A General Mechanism for RTP Header Extensions</title> | </author> | |||
| <author initials='D.' surname='Singer' fullname='D. Singer'><organization /></au | <author initials="M" surname="Westerlund" fullname="Magnus Westerlun | |||
| thor> | d"> | |||
| <author initials='H.' surname='Desineni' fullname='H. Desineni'><organization /> | <organization/> | |||
| </author> | </author> | |||
| <author initials='R.' surname='Even' fullname='R. Even' role='editor'><organizat | <author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar | |||
| ion /></author> | "> | |||
| <date year='2017' month='October' /> | <organization/> | |||
| <abstract><t>This document provides a general mechanism to use the header extens | </author> | |||
| ion feature of RTP (the Real-time Transport Protocol). It provides the option t | <author initials="M" surname="Zanaty" fullname="Mo Zanaty"> | |||
| o use a small number of small extensions in each RTP packet, where the universe | <organization/> | |||
| of possible extensions is large and registration is decentralized. The actual e | </author> | |||
| xtensions in use in a session are signaled in the setup information for that ses | <date month="May" year="2020"/> | |||
| sion. This document obsoletes RFC 5285.</t></abstract> | </front> | |||
| </front> | <seriesInfo name="DOI" value="10.17487/RFC8853"/> | |||
| <seriesInfo name='RFC' value='8285'/> | <seriesInfo name="RFC" value="8853"/> | |||
| <seriesInfo name='DOI' value='10.17487/RFC8285'/> | </reference> | |||
| </reference> | ||||
| <reference anchor="H264" target="http://www.itu.int/rec/T-REC-H.264-201304-I"> | <xi:include | |||
| <front> | href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC. | |||
| <title>Advanced video coding for generic audiovisual services (V9)</title> | 8627.xml"/> | |||
| <author > | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| <organization>ITU-T Recommendation H.264</organization> | ence.RFC.2198.xml"/> | |||
| </author> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| <date year="2014" month="February"/> | ence.RFC.4588.xml"/> | |||
| </front> | <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | |||
| </reference> | ence.RFC.5109.xml"/> | |||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8126.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.6184.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.6236.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7656.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.7741.xml"/> | ||||
| <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/refer | ||||
| ence.RFC.8285.xml"/> | ||||
| <reference anchor="H264" target="https://www.itu.int/rec/T-REC-H.264"> | ||||
| <front> | ||||
| <title>Advanced video coding for generic audiovisual services</title | ||||
| > | ||||
| <seriesInfo name="ITU-T Recommendation" value="H.264"/> | ||||
| <author> | ||||
| <organization>International Telecommunication Union</organization> | ||||
| </author> | ||||
| <date year="2019" month="June"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="acknowledgements" numbered="false" toc="default"> | ||||
| <name>Acknowledgements</name> | ||||
| <section anchor="contributors" title="Contributors"> | <t>Many thanks to <contact fullname="Cullen Jennings"/>, <contact | |||
| fullname="Magnus Westerlund"/>, and <contact fullname="Paul Kyzivat"/> | ||||
| <t>The following individuals have contributed significant text to this document. | for reviewing. Thanks to <contact fullname="Colin Perkins"/> for input | |||
| </t> | on future payload type handling.</t> | |||
| </section> | ||||
| <figure><artwork><![CDATA[ | <section anchor="contributors" numbered="false" toc="default"> | |||
| Peter Thatcher | <name>Contributors</name> | |||
| <t>The following individuals have contributed significant text to this doc | ||||
| Email: pthatcher@google.com | ument.</t> | |||
| Mo Zanaty | ||||
| Cisco Systems | ||||
| Email: mzanaty@cisco.com | ||||
| Suhas Nandakumar | <contact fullname="Peter Thatcher"> | |||
| Cisco Systems | <organization>Google</organization> | |||
| Email: snandaku@cisco.com | <address> | |||
| <email>pthatcher@google.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| Bo Burman | <contact fullname="Mo Zanaty"> | |||
| Ericsson | <organization>Cisco Systems</organization> | |||
| Email: bo.burman@ericsson.com | <address> | |||
| <email>mzanaty@cisco.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| Byron Campen | <contact fullname="Suhas Nandakumar"> | |||
| Mozilla | <organization>Cisco Systems</organization> | |||
| Email: bcampen@mozilla.com | <address> | |||
| ]]></artwork></figure> | <email>snandaku@cisco.com</email> | |||
| </address> | ||||
| </contact> | ||||
| </section> | <contact fullname="Bo Burman"> | |||
| <organization>Ericsson</organization> | ||||
| <address> | ||||
| <email>bo.burman@ericsson.com | ||||
| </email> | ||||
| </address> | ||||
| </contact> | ||||
| <contact fullname="Byron Campen"> | ||||
| <organization>Mozilla</organization> | ||||
| <address> | ||||
| <email>bcampen@mozilla.com</email> | ||||
| </address> | ||||
| </contact> | ||||
| </section> | ||||
| </back> | </back> | |||
| <!-- ##markdown-source: | ||||
| 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 | ||||
| Aajy8WcqtwAA | ||||
| </rfc> | </rfc> | |||
| End of changes. 167 change blocks. | ||||
| 1702 lines changed or deleted | 999 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||