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/ |