diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8851.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8851.txt')
-rw-r--r-- | doc/rfc/rfc8851.txt | 1309 |
1 files changed, 1309 insertions, 0 deletions
diff --git a/doc/rfc/rfc8851.txt b/doc/rfc/rfc8851.txt new file mode 100644 index 0000000..f783403 --- /dev/null +++ b/doc/rfc/rfc8851.txt @@ -0,0 +1,1309 @@ + + + + +Internet Engineering Task Force (IETF) A.B. Roach, Ed. +Request for Comments: 8851 Mozilla +Updates: 4855 January 2021 +Category: Standards Track +ISSN: 2070-1721 + + + RTP Payload Format Restrictions + +Abstract + + In this specification, we define a framework for specifying + restrictions on RTP streams in the Session Description Protocol + (SDP). This framework defines a new "rid" ("restriction identifier") + SDP attribute 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. + + This specification updates RFC 4855 to give additional guidance on + choice of Format Parameter (fmtp) names and their relation to the + restrictions defined by this document. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 7841. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + https://www.rfc-editor.org/info/rfc8851. + +Copyright Notice + + Copyright (c) 2021 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (https://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + +Table of Contents + + 1. Terminology + 2. Introduction + 3. Key Words for Requirements + 4. SDP "a=rid" Media Level Attribute + 5. "a=rid" Restrictions + 6. SDP Offer/Answer Procedures + 6.1. Generating the Initial SDP Offer + 6.2. Answerer Processing the SDP Offer + 6.2.1. "a=rid"-Unaware Answerer + 6.2.2. "a=rid"-Aware Answerer + 6.3. Generating the SDP Answer + 6.4. Offerer Processing of the SDP Answer + 6.5. Modifying the Session + 7. Use with Declarative SDP + 8. Interaction with Other Techniques + 8.1. Interaction with VP8 Format Parameters + 8.1.1. max-fr - Maximum Frame Rate + 8.1.2. max-fs - Maximum Frame Size, in VP8 Macroblocks + 8.2. Interaction with H.264 Format Parameters + 8.2.1. profile-level-id and max-recv-level - Negotiated + Subprofile + 8.2.2. max-br / MaxBR - Maximum Video Bitrate + 8.2.3. max-fs / MaxFS - Maximum Frame Size, in H.264 + Macroblocks + 8.2.4. max-mbps / MaxMBPS - Maximum Macroblock Processing Rate + 8.2.5. max-smbps - Maximum Decoded Picture Buffer + 8.3. Redundancy Formats and Payload Type Restrictions + 9. Format Parameters for Future Payloads + 10. Formal Grammar + 11. SDP Examples + 11.1. Many Bundled Streams Using Many Codecs + 11.2. Scalable Layers + 12. IANA Considerations + 12.1. New SDP Media-Level Attribute + 12.2. Registry for RID-Level Parameters + 13. Security Considerations + 14. References + 14.1. Normative References + 14.2. Informative References + Acknowledgements + Contributors + Author's Address + +1. Terminology + + The terms "source RTP stream", "endpoint", "RTP session", and "RTP + stream" are used as defined in [RFC7656]. + + [RFC4566] and [RFC3264] terminology is also used where appropriate. + +2. Introduction + + 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 rtpmap and/or fmtp attributes are used to describe the + properties of the media that is carried in the RTP payload. + + Recent advances in standards have given rise to rich multimedia + applications requiring support for either multiple RTP streams within + an RTP session [RFC8843] [RFC8853] or a large number of codecs. + These demands have unearthed challenges inherent with: + + * The restricted RTP PT space in specifying the various payload + configurations + + * The codec-specific constructs for the payload formats in SDP + + * Missing or underspecified payload format parameters + + * Overloading of PTs to indicate not just codec configurations, but + individual streams within an RTP session + + To expand on these points: [RFC3550] assigns 7 bits for the PT in the + RTP header. However, the assignment of static mapping of RTP payload + type numbers to payload formats and multiplexing of RTP with other + protocols (such as the RTP Control Protocol (RTCP)) could result in a + limited number of payload type numbers available for application + usage. In scenarios where the number of possible RTP payload + configurations exceeds the available PT space within an RTP session, + there is a need for a way to represent the additional restrictions on + payload configurations and effectively map an RTP stream to its + corresponding restrictions. This issue is exacerbated by the + increase in techniques -- such as simulcast and layered codecs -- + that introduce additional streams into RTP sessions. + + This specification defines a new SDP framework for restricting source + RTP streams (Section 2.1.10 of [RFC7656]), along with 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 + the media format parameters are specified in SDP today, via the + "a=fmtp" attribute. + + The additional restrictions on individual streams are indicated with + a new "a=rid" ("restriction identifier") SDP attribute. Note that + the restrictions communicated via this 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. + + This specification makes use of the RTP Stream Identifier Source + Description (SDES) RTCP item defined in [RFC8852] to provide + correlation between the RTP packets and their format specification in + the SDP. + + As described in Section 6.2.1, this mechanism achieves backwards + compatibility via the normal SDP processing rules, which require + unknown "a=" lines to be ignored. This means that implementations + need to be prepared to handle successful offers and answers from + other implementations that neither indicate nor honor the + restrictions requested by this mechanism. + + Further, as described in Section 6 and its subsections, this + mechanism achieves extensibility by: (a) having offerers include all + supported restrictions in their offer, and (b) having answerers + ignore "a=rid" lines that specify unknown restrictions. + +3. Key Words for Requirements + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and + "OPTIONAL" in this document are to be interpreted as described in + BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all + capitals, as shown here. + +4. SDP "a=rid" Media Level Attribute + + This section defines new SDP media-level attribute [RFC4566], + "a=rid", used to communicate a set of restrictions to be applied to + an identified RTP stream. Roughly speaking, this attribute takes the + following form (see Section 10 for a formal definition): + + a=rid:<rid-id> <direction> [pt=<fmt-list>;]<restriction>=<value>... + + An "a=rid" SDP media attribute specifies restrictions defining a + unique RTP payload configuration identified via the "rid-id" field. + This value binds the restriction to the RTP stream identified by its + RTP Stream Identifier Source Description (SDES) item [RFC8852]. + Implementations that use the "a=rid" parameter in SDP MUST support + the RtpStreamId SDES item described in [RFC8852]. Such + implementations MUST send that SDES item for all streams in an SDP + media description ("m=") that have "a=rid" lines remaining after + applying the rules in Section 6 and its subsections. + + Implementations that use the "a=rid" parameter in SDP and make use of + redundancy RTP streams [RFC7656] -- e.g., RTP RTX [RFC4588] or + Forward Error Correction (FEC) [RFC5109] -- for any of the source RTP + streams that have "a=rid" lines remaining after applying the rules in + Section 6 and its subsections MUST support the RepairedRtpStreamId + SDES item described in [RFC8852] for those redundancy RTP streams. + RepairedRtpStreamId MUST be used for redundancy RTP streams to which + it can be applied. Use of RepairedRtpStreamId is not applicable for + redundancy formats that directly associate RTP streams through shared + synchronization sources (SSRCs) -- for example, [RFC8627] -- or other + cases that RepairedRtpStreamId cannot support, such as referencing + multiple source streams. + + RepairedRtpStreamId is used to provide the binding between the + redundancy RTP 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 MAY (but need not) have an "a=rid" line of its own, in which + case the RtpStreamId SDES item value will be different from the + corresponding source RTP stream. + + It is important to note that this indirection may result in the + temporary inability to correctly associate source and redundancy data + when the SSRC associated with the RtpStreamId or RepairedRtpStreamId + is dynamically changed during the RTP session. This can be avoided + if all RTP packets, source and repair, include their RtpStreamId or + RepairedRtpStreamId, respectively, after the change. To maximize the + probability of reception and utility of redundancy information after + such a change, all the source packets referenced by the first several + repair packets SHOULD include such information. It is RECOMMENDED + that the number of such packets is large enough to give a high + probability of actual updated association. Section 4.1.1 of + [RFC8285] provides relevant guidance for RTP header extension + transmission considerations. Alternatively, to avoid this issue, + redundancy mechanisms that directly reference its source data may be + used, such as [RFC8627]. + + The "direction" field identifies the direction of the RTP stream + packets to which the indicated restrictions are applied. It may be + either "send" or "recv". Note that these restriction directions are + expressed independently of any "inactive", "sendonly", "recvonly", or + "sendrecv" attributes associated with the media section. It is, for + example, valid to indicate "recv" restrictions on a "sendonly" + stream; those restrictions would apply if, at a future point in time, + the stream were changed to "sendrecv" or "recvonly". + + The optional "pt=<fmt-list>" lists one or more PT values that can be + used in the associated RTP stream. If the "a=rid" attribute contains + no "pt", then any of the PT values specified in the corresponding + "m=" line may be used. + + The list of zero or more codec-agnostic restrictions (Section 5) + describes the restrictions that the corresponding RTP stream will + conform to. + + This framework MAY be used in combination with the "a=fmtp" SDP + attribute for describing the media format parameters for a given RTP + payload type. In such scenarios, the "a=rid" restrictions + (Section 5) further restrict the equivalent "a=fmtp" attributes. + + A given SDP media description MAY have zero or more "a=rid" lines + describing various possible RTP payload configurations. A given + "rid-id" MUST NOT be repeated in a given media description ("m=" + section). + + The "a=rid" media attribute MAY be used for any RTP-based media + transport. It is not defined for other transports, although other + documents may extend its semantics for such transports. + + Though the restrictions specified by the "rid" restrictions follow a + syntax similar to session-level and media-level parameters, they are + defined independently. All "rid" restrictions MUST be registered + with IANA, using the registry defined in Section 12. + + Section 10 gives a formal Augmented Backus-Naur Form (ABNF) [RFC5234] + grammar for the "rid" attribute. The "a=rid" media attribute is not + dependent on charset. + +5. "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 the preceding section for a description of how the + "pt" parameter is used. + + The following restrictions are intended to apply to video codecs in a + codec-independent fashion. + + * *max-width*, for spatial resolution in pixels. In the case that + stream-orientation signaling is used to modify the intended + display orientation, this attribute refers to the width of the + stream when a rotation of zero degrees is encoded. + + * *max-height*, for spatial resolution in pixels. In the 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 degrees is encoded. + + * *max-fps*, for frame rate in frames per second. For 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 SHOULD NOT be less than 1/max- + fps seconds. + + * *max-fs*, for frame size in pixels per frame. This is the product + of frame width and frame height, in pixels, for rectangular + frames. + + * *max-br*, for bitrate in bits per second. The restriction 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 limit are left up to the + implementation, and instantaneous excursions 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 + exceed the value specified in "max-br." + + * *max-pps*, for pixel rate in pixels per second. This value SHOULD + be handled identically to max-fps, after performing the following + conversion: max-fps = max-pps / (width * height). If the stream + resolution changes, this value is recalculated. Due to this + recalculation, excursions outside the specified maximum are + possible near resolution-change boundaries. + + * *max-bpp*, for maximum number of bits per pixel, calculated as an + average of 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 values MUST NOT be encoded with more than + four digits to the right of the decimal point. + + * *depend*, to identify other streams that the stream depends on. + The value 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. The mechanism defined in this document + allows for such dependencies to be expressed only when the streams + are in the same media section. + + All the restrictions are optional and subject to negotiation based on + the SDP offer/answer rules described in Section 6. + + This list is intended to be an initial set of restrictions. Future + documents may define additional restrictions; see Section 12.2. + While this document does not define restrictions for audio codecs or + any media types other than video, there is no reason such + restrictions should be precluded from definition and registration by + other documents. + + Section 10 provides formal Augmented Backus-Naur Form (ABNF) + [RFC5234] grammar for each of the "a=rid" restrictions defined in + this section. + +6. SDP Offer/Answer Procedures + + This section describes the SDP offer/answer procedures [RFC3264] when + using this framework. + + 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 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, receiving address, receiving port, and + transport protocol), which provides an unambiguous scope. Similarly, + when using BUNDLE [RFC8843], Media Identification (MID) values + associate RTP streams uniquely to a single media description. When + restriction identifier (RID) is used with the BUNDLE mechanism, + streams will be associated with both MID and RID SDES items. + +6.1. Generating the Initial SDP Offer + + For each RTP media description in the offer, the offerer MAY choose + to include one or more "a=rid" lines to specify a configuration + profile for the given set of RTP payload types. + + In order to construct a given "a=rid" line, the offerer must follow + these steps: + + 1. It MUST generate a "rid-id" that is unique within a media + description. + + 2. It MUST set the direction for the "rid-id" to one of "send" or + "recv". + + 3. It MAY include a listing of SDP media formats (usually + corresponding to RTP payload types) allowed to appear in the RTP + stream. Any payload type chosen MUST be a valid payload type for + the media section (that is, 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 (right) least preferred. + When using RID, this preference overrides the normal codec + preference as expressed by format type ordering on the "m=" line, + using regular SDP rules. + + 4. The offerer then chooses zero or more "a=rid" restrictions + (Section 5) to be applied to the RTP stream and adds them to the + "a=rid" line. + + 5. If the offerer wishes the answerer to have the ability to specify + a restriction but does not wish to set a value itself, it + includes the name of the restriction in the "a=rid" line, but + without any indicated value. + + Note: If an "a=fmtp" attribute is also used to provide media-format- + specific parameters, then the "a=rid" restrictions will further + restrict the equivalent "a=fmtp" parameters for the given payload + type for the specified RTP stream. + + If a given codec would require an "a=fmtp" line when used without + "a=rid", then the offer MUST include a valid corresponding "a=fmtp" + line even when using "a=rid". + +6.2. Answerer Processing the SDP Offer + +6.2.1. "a=rid"-Unaware Answerer + + If the receiver doesn't support the framework defined in this + specification, the entire "a=rid" line is ignored following the + standard offer/answer rules [RFC3264]. + + Section 6.1 requires the offer to include a valid "a=fmtp" line 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, ignoring the "a=rid" line is always guaranteed to result in a + valid session description. + +6.2.2. "a=rid"-Aware Answerer + + If the answerer supports the "a=rid" attribute, the following + verification steps are executed, in order, for each "a=rid" line in a + received offer: + + 1. 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. + + 2. The answerer extracts the rid-id from the "a=rid" line and + verifies its 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, are discarded and MUST NOT be + included in the SDP answer. + + 3. 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 (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 in the "pt=" parameter after this + processing, then the "a=rid" line is discarded. + + 4. If the "direction" field is "recv", the answerer ensures that the + specified "a=rid" restrictions are supported. In the case of an + unsupported restriction, the "a=rid" line is discarded. + + 5. If the "depend" restriction is included, the answerer MUST make + sure that the listed rid-ids unambiguously match the rid-ids in + the media description. Any "depend" "a=rid" lines that do not + are discarded. + + 6. The answerer verifies that the restrictions are consistent 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 + codecs; otherwise, the list of such codecs is taken from the + associated "m=" line. See Section 8 for more detail. If the + "a=rid" restrictions are incompatible with the other codec + properties for all codecs, then the "a=rid" line is discarded. + + Note that the answerer does not need to understand every restriction + present 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. + +6.3. Generating the SDP Answer + + Having performed verification of the SDP offer as described in + Section 6.2.2, the answerer shall perform the following steps to + generate the SDP answer. + + For each "a=rid" line that has not been discarded by previous + processing: + + 1. The value of the "direction" field is reversed: "send" is changed + to "recv", and "recv" is changed to "send". + + 2. The answerer MAY choose to modify specific "a=rid" restriction + values in the answer SDP. In such a case, the modified value + MUST be more restrictive than the ones specified in the offer. + The answer MUST NOT include any restrictions that were not + present in the offer. + + 3. The answerer MUST NOT modify the "rid-id" present in the offer. + + 4. If the "a=rid" line contains a "pt=", the answerer is allowed to + discard one or more media formats from a given "a=rid" line. If + the answerer chooses to discard all the media formats from an + "a=rid" line, the answerer MUST discard the entire "a=rid" line. + If the offer did not contain a "pt=" for a given "a=rid" line, + then the answer MUST NOT contain a "pt=" in the corresponding + line. + + 5. In cases where the answerer is unable to support the payload + configuration specified in a given "a=rid" line with a direction + of "recv" in the offer, the answerer MUST discard the + corresponding "a=rid" line. This includes situations in which + the answerer does not understand one or more of the restrictions + in an "a=rid" line with a direction of "recv". + + Note: In the case that the answerer uses different PT values to + represent a codec than the offerer did, the "a=rid" values in the + answer use the PT values that are present in its answer. + +6.4. Offerer Processing of the SDP Answer + + The offerer SHALL follow these steps when processing the answer: + + 1. 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, the "a=rid" line is ignored. + + 2. If the answer contains any restrictions that were not present in + the offer, then the offerer SHALL discard the "a=rid" line. + + 3. If the restrictions have been changed between the offer and the + answer, the offerer MUST ensure that the modifications are more + restrictive than they were in the original offer and that they + can be supported; if not, the offerer SHALL discard the "a=rid" + line. + + 4. If the "a=rid" line in the answer contains a "pt=" but the offer + did not, the offerer SHALL discard the "a=rid" line. + + 5. 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 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 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, + 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 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=" values pass + validation; otherwise, it fails. If this validation fails, the + offerer SHALL discard the "a=rid" line. Note that this semantic + comparison necessarily requires an understanding of the meaning + of codec parameters, rather than a rote byte-wise comparison of + their values. + + 6. If the "a=rid" line contains a "pt=", the offerer verifies that + the attribute values provided in the "a=rid" attributes are + consistent with the corresponding codecs and their other + parameters. See Section 8 for more detail. If the "a=rid" + restrictions are incompatible with the other codec properties, + then the offerer SHALL discard the "a=rid" line. + + 7. The offerer verifies that the restrictions are consistent 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 + codecs; otherwise, the list of such codecs is taken from the + associated "m=" line. See Section 8 for more detail. If the + "a=rid" restrictions are incompatible with the other codec + properties for all codecs, then the offerer SHALL discard the + "a=rid" line. + + Any "a=rid" line present in the offer that was not matched by step 1 + above has been discarded by the answerer and does not form part of + the negotiated restrictions on an RTP stream. The offerer MAY still + apply any restrictions it indicated in an "a=rid" line with a + direction field of "send", but it is not required to do so. + + It is important to note that there are several ways in which an offer + can contain a media section with "a=rid" lines, although the + corresponding media 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 restrictions. Under such + circumstances, the offerer MUST be prepared to receive a media stream + to which no restrictions have been applied. + +6.5. Modifying the Session + + Offers and answers inside an existing session follow the rules for + initial session negotiation. Such an offer MAY propose a change in + the number of RIDs in use. To avoid race conditions with media, any + RIDs with proposed changes SHOULD use a new ID rather than reusing + one from the previous offer/answer exchange. RIDs without proposed + changes SHOULD reuse the ID from the previous exchange. + +7. Use with Declarative SDP + + This document does not define the use of a RID in declarative SDP. + If concrete use cases for RID in declarative SDP use are identified + in the future, we expect that additional specifications will address + such use. + +8. Interaction with Other Techniques + + Historically, a number of other approaches have been defined that + allow restricting media streams via SDP. These include: + + * Codec-specific configuration set via format parameters ("a=fmtp") + -- for example, the H.264 "max-fs" format parameter [RFC6184] + + * Size restrictions imposed by the "a=imageattr" attribute [RFC6236] + + When the mechanism described in this document is used in conjunction + with these other restricting mechanisms, it is intended to impose + additional restrictions beyond those communicated in other + techniques. + + 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 intersection. 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 then applied to that PT is + nonsensical. According to the rules of Section 6.2.2, this will + result in the corresponding "a=rid" line being ignored by the + recipient. + + 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 intersection. If the implementation generating an answer + wishes to restrict a 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 discard the "a=rid" line + altogether, as described in Section 6.3. 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 described + in Section 6.4. + + The following subsections demonstrate these interactions using + commonly used video codecs. These descriptions are illustrative of + the interaction principles outlined above and are not normative. + +8.1. Interaction with VP8 Format Parameters + + [RFC7741] defines two format parameters for the VP8 codec. Both + correspond to restrictions on receiver capabilities and never + indicate sending restrictions. + +8.1.1. max-fr - Maximum Frame Rate + + The VP8 "max-fr" format parameter corresponds to the "max-fps" + restriction defined in this specification. If an RTP sender is + generating a stream using a format defined with this format + parameter, and the sending restrictions defined via "a=rid" include a + "max-fps" parameter, then the sent stream will conform to the smaller + of the two values. + +8.1.2. max-fs - Maximum Frame Size, in VP8 Macroblocks + + The VP8 "max-fs" format parameter corresponds to the "max-fs" + 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 generating a stream using a format defined with this format + parameter, and 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; that is, the number of pixels per frame will not + exceed: + + min(rid_max_fs, fmtp_max_fs * macroblock_size) + + This fmtp parameter also has bearing on the max-height and max-width + parameters. Section 6.1 of [RFC7741] requires that the width and + height of the frame in macroblocks be less than int(sqrt(fmtp_max_fs + * 8)). Accordingly, the maximum width of a transmitted stream will + be limited to: + + min(rid_max_width, int(sqrt(fmtp_max_fs * 8)) * macroblock_width) + + Similarly, the stream's height will be limited to: + + min(rid_max_height, int(sqrt(fmtp_max_fs * 8)) * macroblock_height) + +8.2. Interaction with H.264 Format Parameters + + [RFC6184] defines format parameters for the H.264 video codec. The + majority of these parameters do not correspond to codec-independent + restrictions: + + * deint-buf-cap + + * in-band-parameter-sets + + * level-asymmetry-allowed + + * max-rcmd-nalu-size + + * max-cpb + + * max-dpb + + * packetization-mode + + * redundant-pic-cap + + * sar-supported + + * sar-understood + + * sprop-deint-buf-req + + * sprop-init-buf-time + + * sprop-interleaving-depth + + * sprop-level-parameter-sets + + * sprop-max-don-diff + + * sprop-parameter-sets + + * use-level-src-parameter-sets + + 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 operates, and do not have codec-independent + equivalents. + + The [RFC6184] codec format parameters covered in the following + sections correspond to restrictions on receiver capabilities and + never indicate sending restrictions. + +8.2.1. profile-level-id and max-recv-level - Negotiated Subprofile + + These parameters include a "level" indicator, which acts as an index + into Table A-1 of [H264]. This table contains a number of + parameters, several of which correspond to the restrictions defined + in this document. [RFC6184] also defines format parameters for the + H.264 codec that may increase the maximum values indicated by the + negotiated level. The following sections describe the interaction + between these parameters and the restrictions defined by this + document. In all cases, the H.264 parameters being discussed are the + maximum of those indicated by [H264] Table A-1 and those indicated in + the corresponding "a=fmtp" line. + +8.2.2. max-br / MaxBR - Maximum Video Bitrate + + The H.264 "MaxBR" parameter (and its equivalent "max-br" format + parameter) corresponds to the "max-bps" restriction defined in this + specification, by way of a conversion factor of 1000 or 1200; see + [RFC6184] for details regarding which factor gets used under + differing circumstances. + + If an RTP sender is generating a stream using a format defined with + this format parameter, and the sending restrictions defined via + "a=rid" include a "max-fps" parameter, then the sent stream will + conform to the smaller of the two values -- that is: + + min(rid_max_br, h264_MaxBR * conversion_factor) + +8.2.3. max-fs / MaxFS - Maximum Frame Size, in H.264 Macroblocks + + The H.264 "MaxFs" parameter (and its equivalent "max-fs" format + parameter) corresponds roughly to the "max-fs" restriction defined in + this document, by way of a conversion factor of 256 (the number of + pixels per macroblock). + + If an RTP sender is generating a stream using a format defined with + this format parameter, and 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 -- that is: + + min(rid_max_fs, h264_MaxFs * 256) + +8.2.4. max-mbps / MaxMBPS - Maximum Macroblock Processing Rate + + 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 (the number of + pixels per macroblock). + + If an RTP sender is generating a stream using a format defined with + this format parameter, and the sending restrictions defined via + "a=rid" include a "max-pps" parameter, then the sent stream will + conform to the smaller of the two values -- that is: + + min(rid_max_pps, h264_MaxMBPS * 256) + +8.2.5. max-smbps - Maximum Decoded Picture Buffer + + The H.264 "max-smbps" format parameter operates the same way as the + "max-mbps" format parameter, under the hypothetical assumption that + all macroblocks are static macroblocks. It is handled by applying + the conversion factor described in Section 8.1 of [RFC6184], and the + result of this conversion is applied as described in Section 8.2.4. + +8.3. Redundancy Formats and Payload Type Restrictions + + Section 4 specifies that redundancy formats using redundancy RTP + streams bind the redundancy RTP stream to the source RTP stream with + either the RepairedRtpStreamId SDES item or other mechanisms. + However, there exist 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 Data" [RFC2198], which + encapsulates one source stream with one or more redundancy streams in + the same RTP payload. Formats defining the source and redundancy + encodings as regular RTP payload types require some consideration 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 individual source RTP payload type(s) are part of the + restriction. + + Example (SDP excerpt): + + m=audio 49200 RTP/AVP 97 98 99 100 101 102 + a=mid:foo + a=rtpmap:97 G711/8000 + a=rtpmap:98 LPC/8000 + a=rtpmap:99 OPUS/48000/1 + a=rtpmap:100 RED/8000/1 + a=rtpmap:101 CN/8000 + a=rtpmap:102 telephone-event/8000 + a=fmtp:99 useinbandfec=1; usedtx=0 + a=fmtp:100 97/98 + a=fmtp:102 0-15 + a=ptime:20 + a=maxptime:40 + a=rid:5 send pt=99,102;max-br=64000 + a=rid:6 send pt=100,97,101,102 + + 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 + (dual-tone multi-frequency (DTMF) tones). This means that RID 6 can + either contain the Redundant Audio Data (RED) format, encapsulating + encodings of the source media stream using payload type 97 and 98, 97 + without RED encapsulation, Comfort noise, or DTMF tones. Payload + type 98 is not included in the RID, and can thus not be sent except + as redundancy information in RED encapsulation. If 97 were to be + excluded from the pt parameter, it would instead mean that payload + types 97 and 98 are only allowed via RED encapsulation. + +9. Format Parameters for Future Payloads + + Registrations of future RTP payload format specifications that define + media 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 restrictions and SHOULD explicitly + state what media-type parameters are restricted by what RID + restrictions. + +10. Formal Grammar + + This section gives a formal Augmented Backus-Naur Form (ABNF) + [RFC5234] grammar, with the case-sensitive extensions described in + [RFC7405], for each of the new media and "a=rid" attributes defined + in this document. + + rid-syntax = %s"a=rid:" rid-id SP rid-dir + [ rid-pt-param-list / rid-param-list ] + + rid-id = 1*(alpha-numeric / "-" / "_") + + alpha-numeric = < as defined in [RFC4566] > + + rid-dir = %s"send" / %s"recv" + + rid-pt-param-list = SP rid-fmt-list *(";" rid-param) + + rid-param-list = SP rid-param *(";" rid-param) + + rid-fmt-list = %s"pt=" fmt *( "," fmt ) + + fmt = < as defined in [RFC4566] > + + rid-param = rid-width-param + / rid-height-param + / rid-fps-param + / rid-fs-param + / rid-br-param + / rid-pps-param + / rid-bpp-param + / rid-depend-param + / rid-param-other + + rid-width-param = %s"max-width" [ "=" int-param-val ] + + rid-height-param = %s"max-height" [ "=" int-param-val ] + + rid-fps-param = %s"max-fps" [ "=" int-param-val ] + + rid-fs-param = %s"max-fs" [ "=" int-param-val ] + + rid-br-param = %s"max-br" [ "=" int-param-val ] + + rid-pps-param = %s"max-pps" [ "=" int-param-val ] + + rid-bpp-param = %s"max-bpp" [ "=" float-param-val ] + + rid-depend-param = %s"depend=" rid-list + + rid-param-other = 1*(alpha-numeric / "-") [ "=" param-val ] + + rid-list = rid-id *( "," rid-id ) + + int-param-val = 1*DIGIT + + float-param-val = 1*DIGIT "." 1*DIGIT + + param-val = *(%x20-3A / %x3C-7E) + ; Any printable character except semicolon + +11. SDP Examples + + Note: See [RFC8853] for examples of RID used in simulcast scenarios. + +11.1. Many Bundled Streams Using Many Codecs + + In this scenario, the offerer supports the Opus, G.722, G.711, and + DTMF audio 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 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 same port, using + 3 different resolutions. The resolutions include: + + * 1 receive stream of 720p resolution is offered for the active + speaker. + + * 2 receive streams of 360p resolution are offered for the prior 2 + active speakers. + + * 4 receive streams of 180p resolution are offered for others in the + call. + + 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. + + The offer for this scenario is shown below. + + ... + m=audio 10000 RTP/SAVPF 96 9 8 0 123 + a=rtpmap:96 OPUS/48000 + a=rtpmap:9 G722/8000 + a=rtpmap:8 PCMA/8000 + a=rtpmap:0 PCMU/8000 + a=rtpmap:123 telephone-event/8000 + a=mid:a1 + ... + 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=rtpmap:98 VP8/90000 + a=fmtp:98 max-fs=3600; max-fr=30 + a=rtpmap:99 VP9/90000 + a=fmtp:99 max-fs=3600; max-fr=30 + a=rtpmap:100 H264/90000 + a=fmtp:100 profile-level-id=42401f; packetization-mode=0 + a=rtpmap:101 H264/90000 + a=fmtp:101 profile-level-id=42401f; packetization-mode=1 + a=rtpmap:102 H264/90000 + a=fmtp:102 profile-level-id=640c1f; packetization-mode=0 + a=rtpmap:103 H264/90000 + a=fmtp:103 profile-level-id=640c1f; packetization-mode=1 + a=rtpmap:104 H264-SVC/90000 + a=fmtp:104 profile-level-id=530c1f + a=rtpmap:105 H264-SVC/90000 + a=fmtp:105 profile-level-id=560c1f + a=rtpmap:106 H265/90000 + a=fmtp:106 profile-id=1; level-id=93 + a=rtpmap:107 H265/90000 + a=fmtp:107 profile-id=2; level-id=93 + a=sendrecv + a=mid:v1 (max resolution) + a=rid:1 send max-width=1280;max-height=720;max-fps=30 + a=rid:2 recv max-width=1280;max-height=720;max-fps=30 + ... + 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 + ...same rtpmap/fmtp as above... + a=recvonly + a=mid:v2 (medium resolution) + a=rid:3 recv max-width=640;max-height=360;max-fps=15 + ... + 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 + ...same rtpmap/fmtp as above... + a=recvonly + a=mid:v3 (medium resolution) + a=rid:3 recv max-width=640;max-height=360;max-fps=15 + ... + 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 + ...same rtpmap/fmtp as above... + a=recvonly + a=mid:v4 (small resolution) + 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 + a=extmap 1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id + ...same rtpmap/fmtp as above... + ...same rid:4 as above for mid:v5,v6,v7 (small resolution)... + ... + +11.2. Scalable Layers + + Adding scalable layers to a session within a multiparty conference + gives a selective forwarding unit (SFU) further flexibility to + selectively forward packets from a source that best match the + bandwidth and capabilities of diverse receivers. Scalable encodings + have dependencies between layers, unlike independent simulcast + streams. RIDs can be used to express these dependencies using the + "depend" restriction. In the example below, the highest resolution + is offered to be sent as 2 scalable temporal layers (using Multiple + RTP Streams on a Single Media Transport (MRST)). See [RFC8853] for + additional detail about simulcast usage. + + Offer: + ... + m=audio ...same as previous example ... + ... + m=video ...same as previous example ... + ...same rtpmap/fmtp as previous example ... + a=sendrecv + a=mid:v1 (max resolution) + 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: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:6 send max-width=320;max-height=180;max-fps=15 + a=simulcast: send rid=0;1;5;6 recv rid=2 + ... + ...same m=video sections as previous example for mid:v2-v7... + ... + +12. IANA Considerations + + This specification updates [RFC4855] to give additional guidance on + choice of Format Parameter (fmtp) names and their relation to RID + restrictions. + +12.1. New SDP Media-Level Attribute + + This document defines "rid" as an SDP media-level attribute. This + attribute has been registered by IANA under "Session Description + Protocol (SDP) Parameters" under "att-field (media level only)". + + The "rid" attribute is used to identify the properties of an RTP + stream within an RTP session. Its format is defined in Section 10. + + The formal registration information for this attribute follows. + + 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 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 RFC 8851 + + Multiplexing (Mux) Category + SPECIAL + +12.2. Registry for RID-Level Parameters + + This specification creates a new IANA registry named "RID Attribute + Parameters" within the SDP parameters registry. The "a=rid" + restrictions MUST be registered with IANA and documented under the + same rules as for SDP session-level and media-level attributes as + specified in [RFC4566]. + + Parameters for "a=rid" lines that modify the nature of encoded media + MUST be 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 media. In other words, restrictions + always have to restrict the definition to be a subset of what is + otherwise allowable, and never expand it. + + New restriction registrations are accepted according to the + "Specification Required" policy of [RFC8126]. The registration MUST + contain the RID parameter name and a reference to the corresponding + specification. The specification itself must contain the following + information (not all of which appears in the registry): + + * restriction name (as it will appear in SDP) + + * an explanation of the purpose of the restriction + + * a specification of appropriate attribute values for this + restriction + + * an ABNF definition of the restriction + + The initial set of "a=rid" restriction names, with definitions in + Section 5 of this document, is given below: + + +====================+===========+ + | RID Parameter Name | Reference | + +====================+===========+ + | pt | RFC 8851 | + +--------------------+-----------+ + | max-width | RFC 8851 | + +--------------------+-----------+ + | max-height | RFC 8851 | + +--------------------+-----------+ + | max-fps | RFC 8851 | + +--------------------+-----------+ + | max-fs | RFC 8851 | + +--------------------+-----------+ + | max-br | RFC 8851 | + +--------------------+-----------+ + | max-pps | RFC 8851 | + +--------------------+-----------+ + | max-bpp | RFC 8851 | + +--------------------+-----------+ + | depend | RFC 8851 | + +--------------------+-----------+ + + Table 1: "a=rid" restriction names + + It is conceivable that a future document will want to define RID- + level 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 that such extensions will need to define + escaping mechanisms if they want to allow semicolons, unprintable + characters, or byte values greater than 127 in the string. + +13. Security Considerations + + As with most SDP parameters, a failure to provide integrity + protection over the "a=rid" attributes gives attackers a way to + modify the session in potentially unwanted ways. This could result + in an implementation sending 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 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 that + does not support this mechanism. + + The actual identifiers used for RIDs are expected to be opaque. As + such, they are not expected to contain information that would be + sensitive, were it observed by third parties. + +14. References + +14.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, + DOI 10.17487/RFC2119, March 1997, + <https://www.rfc-editor.org/info/rfc2119>. + + [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model + with Session Description Protocol (SDP)", RFC 3264, + DOI 10.17487/RFC3264, June 2002, + <https://www.rfc-editor.org/info/rfc3264>. + + [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. + Jacobson, "RTP: A Transport Protocol for Real-Time + Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, + July 2003, <https://www.rfc-editor.org/info/rfc3550>. + + [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session + Description Protocol", RFC 4566, DOI 10.17487/RFC4566, + July 2006, <https://www.rfc-editor.org/info/rfc4566>. + + [RFC4855] Casner, S., "Media Type Registration of RTP Payload + Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, + <https://www.rfc-editor.org/info/rfc4855>. + + [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax + Specifications: ABNF", STD 68, RFC 5234, + DOI 10.17487/RFC5234, January 2008, + <https://www.rfc-editor.org/info/rfc5234>. + + [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF", + RFC 7405, DOI 10.17487/RFC7405, December 2014, + <https://www.rfc-editor.org/info/rfc7405>. + + [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC + 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, + May 2017, <https://www.rfc-editor.org/info/rfc8174>. + + [RFC8852] Roach, A.B., Nandakumar, S., and P. Thatcher, "RTP Stream + Identifier Source Description (SDES)", RFC 8852, + DOI 10.17487/RFC8852, January 2021, + <https://www.rfc-editor.org/info/rfc8852>. + +14.2. Informative References + + [H264] International Telecommunication Union, "Advanced video + coding for generic audiovisual services", ITU-T + Recommendation H.264, June 2019, + <https://www.itu.int/rec/T-REC-H.264>. + + [RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., + Handley, M., Bolot, J.C., Vega-Garcia, A., and S. Fosse- + Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, + DOI 10.17487/RFC2198, September 1997, + <https://www.rfc-editor.org/info/rfc2198>. + + [RFC4588] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R. + Hakenberg, "RTP Retransmission Payload Format", RFC 4588, + DOI 10.17487/RFC4588, July 2006, + <https://www.rfc-editor.org/info/rfc4588>. + + [RFC5109] Li, A., Ed., "RTP Payload Format for Generic Forward Error + Correction", RFC 5109, DOI 10.17487/RFC5109, December + 2007, <https://www.rfc-editor.org/info/rfc5109>. + + [RFC6184] Wang, Y.-K., Even, R., Kristensen, T., and R. Jesup, "RTP + Payload Format for H.264 Video", RFC 6184, + DOI 10.17487/RFC6184, May 2011, + <https://www.rfc-editor.org/info/rfc6184>. + + [RFC6236] Johansson, I. and K. Jung, "Negotiation of Generic Image + Attributes in the Session Description Protocol (SDP)", + RFC 6236, DOI 10.17487/RFC6236, May 2011, + <https://www.rfc-editor.org/info/rfc6236>. + + [RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and + B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms + for Real-Time Transport Protocol (RTP) Sources", RFC 7656, + DOI 10.17487/RFC7656, November 2015, + <https://www.rfc-editor.org/info/rfc7656>. + + [RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J., and F. + Galligan, "RTP Payload Format for VP8 Video", RFC 7741, + DOI 10.17487/RFC7741, March 2016, + <https://www.rfc-editor.org/info/rfc7741>. + + [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for + Writing an IANA Considerations Section in RFCs", BCP 26, + RFC 8126, DOI 10.17487/RFC8126, June 2017, + <https://www.rfc-editor.org/info/rfc8126>. + + [RFC8285] Singer, D., Desineni, H., and R. Even, Ed., "A General + Mechanism for RTP Header Extensions", RFC 8285, + DOI 10.17487/RFC8285, October 2017, + <https://www.rfc-editor.org/info/rfc8285>. + + [RFC8627] Zanaty, M., Singh, V., Begen, A., and G. Mandyam, "RTP + Payload Format for Flexible Forward Error Correction + (FEC)", RFC 8627, DOI 10.17487/RFC8627, July 2019, + <https://www.rfc-editor.org/info/rfc8627>. + + [RFC8843] Holmberg, C., Alvestrand, H., and C. Jennings, + "Negotiating Media Multiplexing Using the Session + Description Protocol (SDP)", RFC 8843, + DOI 10.17487/RFC8843, January 2021, + <https://www.rfc-editor.org/info/rfc8843>. + + [RFC8853] Burman, B., Westerlund, M., Nandakumar, S., and M. Zanaty, + "Using Simulcast in Session Description Protocol (SDP) and + RTP Sessions", RFC 8853, DOI 10.17487/RFC8853, January + 2021, <https://www.rfc-editor.org/info/rfc8853>. + +Acknowledgements + + Many thanks to Cullen Jennings, Magnus Westerlund, and Paul Kyzivat + for reviewing. Thanks to Colin Perkins for input on future payload + type handling. + +Contributors + + The following individuals have contributed significant text to this + document. + + Peter Thatcher + Google + + Email: pthatcher@google.com + + + Mo Zanaty + Cisco Systems + + Email: mzanaty@cisco.com + + + Suhas Nandakumar + Cisco Systems + + Email: snandaku@cisco.com + + + Bo Burman + Ericsson + + Email: bo.burman@ericsson.com + + + Byron Campen + Mozilla + + Email: bcampen@mozilla.com + + +Author's Address + + Adam Roach (editor) + Mozilla + + Email: adam@nostrum.com |