<?xmlversion="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.2.7 --> <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [ ]> <?rfc toc="yes"?> <?rfc sortrefs="yes"?> <?rfc symrefs="yes"?>version='1.0' encoding='utf-8'?> <rfcipr="trust200902" docName="draft-ietf-mmusic-rid-15"xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std"updates="4855">consensus="true" docName="draft-ietf-mmusic-rid-15" indexInclude="true" ipr="trust200902" number="8851" prepTime="2021-01-16T23:55:17" scripts="Common,Latin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" updates="4855" xml:lang="en"> <link href="https://datatracker.ietf.org/doc/draft-ietf-mmusic-rid-15" rel="prev"/> <link href="https://dx.doi.org/10.17487/rfc8851" rel="alternate"/> <link href="urn:issn:2070-1721" rel="alternate"/> <front> <title abbrev="RTP Restrictions">RTP Payload Format Restrictions</title> <seriesInfo name="RFC" value="8851" stream="IETF"/> <author initials="A.B."surname="Roach (Editor)"surname="Roach" fullname="AdamRoach"> <organization>Mozilla</organization>Roach" role="editor"> <organization showOnFrontPage="true">Mozilla</organization> <address> <email>adam@nostrum.com</email> </address> </author> <dateyear="2018" month="May" day="15"/> <abstract> <t>Inmonth="01" year="2021"/> <keyword>WebRTC</keyword> <keyword>Multiplexing</keyword> <abstract pn="section-abstract"> <t indent="0" pn="section-abstract-1">In this specification, we define a framework for specifying restrictions on RTP streams in the Session DescriptionProtocol.Protocol (SDP). This framework defines a new“rid” (“restriction identifier”)"rid" ("restriction identifier") SDP attribute to unambiguously identify the RTPStreamsstreams within an RTPSessionsession and restrict thestreams’streams' payload format parameters in a codec-agnostic way beyond what is provided with the regularPayload Types.</t> <t>Thispayload types.</t> <t indent="0" pn="section-abstract-2">This specification updatesRFC4855RFC 4855 to give additional guidance on choice of Format Parameter (fmtp)names,names andontheir relation to the restrictions defined by this document.</t> </abstract> <boilerplate> <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.1"> <name slugifiedName="name-status-of-this-memo">Status of This Memo</name> <t indent="0" pn="section-boilerplate.1-1"> This is an Internet Standards Track document. </t> <t indent="0" pn="section-boilerplate.1-2"> 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. </t> <t indent="0" pn="section-boilerplate.1-3"> Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at <eref target="https://www.rfc-editor.org/info/rfc8851" brackets="none"/>. </t> </section> <section anchor="copyright" numbered="false" removeInRFC="false" toc="exclude" pn="section-boilerplate.2"> <name slugifiedName="name-copyright-notice">Copyright Notice</name> <t indent="0" pn="section-boilerplate.2-1"> Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved. </t> <t indent="0" pn="section-boilerplate.2-2"> This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (<eref target="https://trustee.ietf.org/license-info" brackets="none"/>) 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. </t> </section> </boilerplate> <toc> <section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" pn="section-toc.1"> <name slugifiedName="name-table-of-contents">Table of Contents</name> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1"> <li pn="section-toc.1-1.1"> <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref derivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-terminology">Terminology</xref></t> </li> <li pn="section-toc.1-1.2"> <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref derivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-introduction">Introduction</xref></t> </li> <li pn="section-toc.1-1.3"> <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.1"><xref derivedContent="3" format="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-key-words-for-requirements">Key Words for Requirements</xref></t> </li> <li pn="section-toc.1-1.4"> <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" format="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-sdp-arid-media-level-attrib">SDP "a=rid" Media Level Attribute</xref></t> </li> <li pn="section-toc.1-1.5"> <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" format="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-arid-restrictions">"a=rid" Restrictions</xref></t> </li> <li pn="section-toc.1-1.6"> <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" format="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-sdp-offer-answer-procedures">SDP Offer/Answer Procedures</xref></t> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2"> <li pn="section-toc.1-1.6.2.1"> <t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent="6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-generating-the-initial-sdp-">Generating the Initial SDP Offer</xref></t> </li> <li pn="section-toc.1-1.6.2.2"> <t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent="6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-answerer-processing-the-sdp">Answerer Processing the SDP Offer</xref></t> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.6.2.2.2"> <li pn="section-toc.1-1.6.2.2.2.1"> <t indent="0" pn="section-toc.1-1.6.2.2.2.1.1"><xref derivedContent="6.2.1" format="counter" sectionFormat="of" target="section-6.2.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-arid-unaware-answerer">"a=rid"-Unaware Answerer</xref></t> </li> <li pn="section-toc.1-1.6.2.2.2.2"> <t indent="0" pn="section-toc.1-1.6.2.2.2.2.1"><xref derivedContent="6.2.2" format="counter" sectionFormat="of" target="section-6.2.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-arid-aware-answerer">"a=rid"-Aware Answerer</xref></t> </li> </ul> </li> <li pn="section-toc.1-1.6.2.3"> <t indent="0" pn="section-toc.1-1.6.2.3.1"><xref derivedContent="6.3" format="counter" sectionFormat="of" target="section-6.3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-generating-the-sdp-answer">Generating the SDP Answer</xref></t> </li> <li pn="section-toc.1-1.6.2.4"> <t indent="0" pn="section-toc.1-1.6.2.4.1"><xref derivedContent="6.4" format="counter" sectionFormat="of" target="section-6.4"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-offerer-processing-of-the-s">Offerer Processing of the SDP Answer</xref></t> </li> <li pn="section-toc.1-1.6.2.5"> <t indent="0" pn="section-toc.1-1.6.2.5.1"><xref derivedContent="6.5" format="counter" sectionFormat="of" target="section-6.5"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-modifying-the-session">Modifying the Session</xref></t> </li> </ul> </li> <li pn="section-toc.1-1.7"> <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" format="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-use-with-declarative-sdp">Use with Declarative SDP</xref></t> </li> <li pn="section-toc.1-1.8"> <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" format="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-interaction-with-other-tech">Interaction with Other Techniques</xref></t> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2"> <li pn="section-toc.1-1.8.2.1"> <t indent="0" pn="section-toc.1-1.8.2.1.1"><xref derivedContent="8.1" format="counter" sectionFormat="of" target="section-8.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-interaction-with-vp8-format">Interaction with VP8 Format Parameters</xref></t> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2.1.2"> <li pn="section-toc.1-1.8.2.1.2.1"> <t indent="0" pn="section-toc.1-1.8.2.1.2.1.1"><xref derivedContent="8.1.1" format="counter" sectionFormat="of" target="section-8.1.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-max-fr-maximum-frame-rate">max-fr - Maximum Frame Rate</xref></t> </li> <li pn="section-toc.1-1.8.2.1.2.2"> <t indent="0" pn="section-toc.1-1.8.2.1.2.2.1"><xref derivedContent="8.1.2" format="counter" sectionFormat="of" target="section-8.1.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-max-fs-maximum-frame-size-i">max-fs - Maximum Frame Size, in VP8 Macroblocks</xref></t> </li> </ul> </li> <li pn="section-toc.1-1.8.2.2"> <t indent="0" pn="section-toc.1-1.8.2.2.1"><xref derivedContent="8.2" format="counter" sectionFormat="of" target="section-8.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-interaction-with-h264-forma">Interaction with H.264 Format Parameters</xref></t> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.8.2.2.2"> <li pn="section-toc.1-1.8.2.2.2.1"> <t indent="0" pn="section-toc.1-1.8.2.2.2.1.1"><xref derivedContent="8.2.1" format="counter" sectionFormat="of" target="section-8.2.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-profile-level-id-and-max-re">profile-level-id and max-recv-level - Negotiated Subprofile</xref></t> </li> <li pn="section-toc.1-1.8.2.2.2.2"> <t indent="0" pn="section-toc.1-1.8.2.2.2.2.1"><xref derivedContent="8.2.2" format="counter" sectionFormat="of" target="section-8.2.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-max-br-maxbr-maximum-video-">max-br / MaxBR - Maximum Video Bitrate</xref></t> </li> <li pn="section-toc.1-1.8.2.2.2.3"> <t indent="0" pn="section-toc.1-1.8.2.2.2.3.1"><xref derivedContent="8.2.3" format="counter" sectionFormat="of" target="section-8.2.3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-max-fs-maxfs-maximum-frame-">max-fs / MaxFS - Maximum Frame Size, in H.264 Macroblocks</xref></t> </li> <li pn="section-toc.1-1.8.2.2.2.4"> <t indent="0" pn="section-toc.1-1.8.2.2.2.4.1"><xref derivedContent="8.2.4" format="counter" sectionFormat="of" target="section-8.2.4"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-max-mbps-maxmbps-maximum-ma">max-mbps / MaxMBPS - Maximum Macroblock Processing Rate</xref></t> </li> <li pn="section-toc.1-1.8.2.2.2.5"> <t indent="0" pn="section-toc.1-1.8.2.2.2.5.1"><xref derivedContent="8.2.5" format="counter" sectionFormat="of" target="section-8.2.5"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-max-smbps-maximum-decoded-p">max-smbps - Maximum Decoded Picture Buffer</xref></t> </li> </ul> </li> <li pn="section-toc.1-1.8.2.3"> <t indent="0" pn="section-toc.1-1.8.2.3.1"><xref derivedContent="8.3" format="counter" sectionFormat="of" target="section-8.3"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-redundancy-formats-and-payl">Redundancy Formats and Payload Type Restrictions</xref></t> </li> </ul> </li> <li pn="section-toc.1-1.9"> <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" format="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-format-parameters-for-futur">Format Parameters for Future Payloads</xref></t> </li> <li pn="section-toc.1-1.10"> <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" format="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-formal-grammar">Formal Grammar</xref></t> </li> <li pn="section-toc.1-1.11"> <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" format="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-sdp-examples">SDP Examples</xref></t> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.11.2"> <li pn="section-toc.1-1.11.2.1"> <t indent="0" pn="section-toc.1-1.11.2.1.1"><xref derivedContent="11.1" format="counter" sectionFormat="of" target="section-11.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-many-bundled-streams-using-">Many Bundled Streams Using Many Codecs</xref></t> </li> <li pn="section-toc.1-1.11.2.2"> <t indent="0" pn="section-toc.1-1.11.2.2.1"><xref derivedContent="11.2" format="counter" sectionFormat="of" target="section-11.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-scalable-layers">Scalable Layers</xref></t> </li> </ul> </li> <li pn="section-toc.1-1.12"> <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="12" format="counter" sectionFormat="of" target="section-12"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-iana-considerations">IANA Considerations</xref></t> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.12.2"> <li pn="section-toc.1-1.12.2.1"> <t indent="0" pn="section-toc.1-1.12.2.1.1"><xref derivedContent="12.1" format="counter" sectionFormat="of" target="section-12.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-new-sdp-media-level-attribu">New SDP Media-Level Attribute</xref></t> </li> <li pn="section-toc.1-1.12.2.2"> <t indent="0" pn="section-toc.1-1.12.2.2.1"><xref derivedContent="12.2" format="counter" sectionFormat="of" target="section-12.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-registry-for-rid-level-para">Registry for RID-Level Parameters</xref></t> </li> </ul> </li> <li pn="section-toc.1-1.13"> <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="13" format="counter" sectionFormat="of" target="section-13"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-security-considerations">Security Considerations</xref></t> </li> <li pn="section-toc.1-1.14"> <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="14" format="counter" sectionFormat="of" target="section-14"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-references">References</xref></t> <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-toc.1-1.14.2"> <li pn="section-toc.1-1.14.2.1"> <t indent="0" pn="section-toc.1-1.14.2.1.1"><xref derivedContent="14.1" format="counter" sectionFormat="of" target="section-14.1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-normative-references">Normative References</xref></t> </li> <li pn="section-toc.1-1.14.2.2"> <t indent="0" pn="section-toc.1-1.14.2.2.1"><xref derivedContent="14.2" format="counter" sectionFormat="of" target="section-14.2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-informative-references">Informative References</xref></t> </li> </ul> </li> <li pn="section-toc.1-1.15"> <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgements</xref></t> </li> <li pn="section-toc.1-1.16"> <t indent="0" pn="section-toc.1-1.16.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" format="title" sectionFormat="of" target="name-contributors">Contributors</xref></t> </li> <li pn="section-toc.1-1.17"> <t indent="0" pn="section-toc.1-1.17.1"><xref derivedContent="" format="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent="" format="title" sectionFormat="of" target="name-authors-address">Author's Address</xref></t> </li> </ul> </section> </toc> </front> <middle> <section anchor="terminology"title="Terminology"> <t>Thenumbered="true" toc="include" removeInRFC="false" pn="section-1"> <name slugifiedName="name-terminology">Terminology</name> <t indent="0" pn="section-1-1">The terms“Source"source RTPStream”, “Endpoint”, “RTP Session”,stream", "endpoint", "RTP session", and“RTP Stream”"RTP stream" are used as defined in <xreftarget="RFC7656"/>.</t> <t><xref target="RFC4566"/> and <xref target="RFC3264"/>target="RFC7656" format="default" sectionFormat="of" derivedContent="RFC7656"/>.</t> <t indent="0" pn="section-1-2"><xref target="RFC4566" format="default" sectionFormat="of" derivedContent="RFC4566"/> and <xref target="RFC3264" format="default" sectionFormat="of" derivedContent="RFC3264"/> terminology is also used where appropriate.</t> </section> <section anchor="sec-intro"title="Introduction"> <t>The Payload Typenumbered="true" toc="include" removeInRFC="false" pn="section-2"> <name slugifiedName="name-introduction">Introduction</name> <t indent="0" pn="section-2-1">The payload type (PT) field in RTP provides a mapping between the RTP payload format and the associated SDP media description.TheFor a given PT, the SDP rtpmap and/or fmtp attributes areused, for a given PT,used to describe the properties of the media that is carried in the RTP payload.</t><t>Recent<t indent="0" pn="section-2-2">Recent advances in standards have given rise to rich multimedia applications requiring support for either multiple RTPStreamsstreams within an RTP session <xreftarget="I-D.ietf-mmusic-sdp-bundle-negotiation"/>, <xref target="I-D.ietf-mmusic-sdp-simulcast"/>target="RFC8843" format="default" sectionFormat="of" derivedContent="RFC8843"/> <xref target="RFC8853" format="default" sectionFormat="of" derivedContent="RFC8853"/> orhaving to supporta large number of codecs. These demands have unearthed challenges inherent with:</t><t><list style="symbols"> <t>The<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-2-3"> <li pn="section-2-3.1">The restricted RTP PT space in specifying the various payloadconfigurations,</t> <t>Theconfigurations</li> <li pn="section-2-3.2">The codec-specific constructs for the payload formats inSDP,</t> <t>MissingSDP</li> <li pn="section-2-3.3">Missing or underspecified payload formatparameters,</t> <t>Overloadingparameters</li> <li pn="section-2-3.4">Overloading of PTs to indicate not just codec configurations, but individual streams within an RTPsession.</t> </list></t> <t>Tosession</li> </ul> <t indent="0" pn="section-2-4">To expand on these points: <xreftarget="RFC3550"/>target="RFC3550" format="default" sectionFormat="of" derivedContent="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 asRTCP)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 RTPSession,session, there is a need for a way to represent the additional restrictions on payload configurations andtoeffectively map an RTPStreamstream to its corresponding restrictions. This issue is exacerbated by the increase in techniques–-- such as simulcast and layered codecs– which-- that introduce additional streams into RTPSessions.</t> <t>Thissessions.</t> <t indent="0" pn="section-2-5">This specification defines a new SDP framework for restrictingSourcesource RTPStreamsstreams (Section 2.1.10 of <xreftarget="RFC7656"/>),target="RFC7656" format="default" sectionFormat="of" derivedContent="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”"a=fmtp" attribute.</t><t>The<t indent="0" pn="section-2-6">The additional restrictions on individual streams are indicated with a new“a=rid” (“restriction identifier”)"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.</t><t>This<t indent="0" pn="section-2-7">This specification makes use of the RTP Stream Identifier Source Description (SDES) RTCP item defined in <xreftarget="I-D.ietf-avtext-rid"/>target="RFC8852" format="default" sectionFormat="of" derivedContent="RFC8852"/> to provide correlation between the RTPPacketspackets and their format specification in the SDP.</t><t>As<t indent="0" pn="section-2-8">As described in <xreftarget="sec-rid_unaware"/>,target="sec-rid_unaware" format="default" sectionFormat="of" derivedContent="Section 6.2.1"/>, this mechanism achieves backwards compatibility via the normal SDP processing rules, which require unknowna="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.</t><t>Further,<t indent="0" pn="section-2-9">Further, as described in <xreftarget="sec-sdp_o_a"/>target="sec-sdp_o_a" format="default" sectionFormat="of" derivedContent="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”"a=rid" lines that specify unknown restrictions.</t> </section> <section anchor="key-words-for-requirements"title="Keynumbered="true" toc="include" removeInRFC="false" pn="section-3"> <name slugifiedName="name-key-words-for-requirements">Key Words forRequirements"> <t>TheRequirements</name> <t indent="0" pn="section-3-1"> The key words“MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”,"<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and“OPTIONAL”"<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14 <xref target="RFC2119"/>BCP 14 <xreftarget="RFC8174"/>target="RFC2119" format="default" sectionFormat="of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFormat="of" derivedContent="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> </section> <section anchor="sec-rid_attribute"title="SDP “a=rid”numbered="true" toc="include" removeInRFC="false" pn="section-4"> <name slugifiedName="name-sdp-arid-media-level-attrib">SDP "a=rid" Media LevelAttribute"> <t>ThisAttribute</name> <t indent="0" pn="section-4-1">This section defines new SDP media-level attribute <xreftarget="RFC4566"/>, “a=rid”,target="RFC4566" format="default" sectionFormat="of" derivedContent="RFC4566"/>, "a=rid", used to communicate a set of restrictions to be applied to an identified RTPStream.stream. Roughly speaking, this attribute takes the following form (see <xreftarget="sec-abnf"/>target="sec-abnf" format="default" sectionFormat="of" derivedContent="Section 10"/> for a formaldefinition).</t> <figure><artwork><![CDATA[ a=rid:<rid-id> <direction> [pt=<fmt-list>;]<restriction>=<value>... ]]></artwork></figure> <t>An “a=rid”definition):</t> <sourcecode type="sdp" markers="false" pn="section-4-2"> a=rid:<rid-id> <direction> [pt=<fmt-list>;]<restriction>=<value>... </sourcecode> <t indent="0" pn="section-4-3">An "a=rid" SDP media attribute specifies restrictions defining a unique RTP payload configuration identified via the“rid-id”"rid-id" field. This value binds the restriction to the RTPStreamstream identified by its RTP Stream Identifier Source Description (SDES) item <xreftarget="I-D.ietf-avtext-rid"/>.target="RFC8852" format="default" sectionFormat="of" derivedContent="RFC8852"/>. Implementations that use the“a=rid”"a=rid" parameter in SDPMUST<bcp14>MUST</bcp14> support the RtpStreamId SDES item described in <xreftarget="I-D.ietf-avtext-rid"/>.target="RFC8852" format="default" sectionFormat="of" derivedContent="RFC8852"/>. Such implementationsMUST<bcp14>MUST</bcp14> send that SDES item for all streams in an SDP media description(“m=”)("m=") that have“a=rid”"a=rid" lines remaining after applying the rules in <xreftarget="sec-sdp_o_a"/>target="sec-sdp_o_a" format="default" sectionFormat="of" derivedContent="Section 6"/> and its subsections.</t><t>Implementations<t indent="0" pn="section-4-4">Implementations that use the“a=rid”"a=rid" parameter in SDP andthatmake use of redundancy RTP streams <xreftarget="RFC7656"/>, e.g.target="RFC7656" format="default" sectionFormat="of" derivedContent="RFC7656"/> -- e.g., RTP RTX <xreftarget="RFC4588"/>target="RFC4588" format="default" sectionFormat="of" derivedContent="RFC4588"/> orFECForward Error Correction (FEC) <xreftarget="RFC5109"/>,target="RFC5109" format="default" sectionFormat="of" derivedContent="RFC5109"/> -- for any of the source RTP streams that have“a=rid”"a=rid" lines remaining after applying the rules in <xreftarget="sec-sdp_o_a"/>target="sec-sdp_o_a" format="default" sectionFormat="of" derivedContent="Section 6"/> and itssubsections, MUSTsubsections <bcp14>MUST</bcp14> support the RepairedRtpStreamId SDES item described in <xreftarget="I-D.ietf-avtext-rid"/>target="RFC8852" format="default" sectionFormat="of" derivedContent="RFC8852"/> for those redundancy RTP streams. RepairedRtpStreamIdMUST<bcp14>MUST</bcp14> 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 sharedSSRCs (for examplesynchronization sources (SSRCs) -- for example, <xreftarget="I-D.ietf-payload-flexible-fec-scheme"/>)target="RFC8627" format="default" sectionFormat="of" derivedContent="RFC8627"/> -- or other cases that RepairedRtpStreamId cannot support, such as referencing multiple source streams.</t><t>RepairedRtpStreamId<t indent="0" pn="section-4-5">RepairedRtpStreamId is used to provide the binding between the redundancy RTP stream and its source RTPstream,stream by setting the RepairedRtpStreamId value for the redundancy RTP stream to the RtpStreamId value of the source RTP stream. The redundancy RTP streamMAY<bcp14>MAY</bcp14> (but need not) have an“a=rid”"a=rid" line of its own, in which case the RtpStreamId SDES item value will be different from the corresponding source RTP stream.</t><t>It<t indent="0" pn="section-4-6">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,after the changeinclude their RtpStreamId or RepairedRtpStreamId,respectively.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 packetsSHOULD<bcp14>SHOULD</bcp14> include such information. It isRECOMMENDED<bcp14>RECOMMENDED</bcp14> that the number of such packets is large enough to give a high probability of actual updated association. Section 4.1.1 of <xreftarget="RFC8285"/>target="RFC8285" format="default" sectionFormat="of" derivedContent="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 <xreftarget="I-D.ietf-payload-flexible-fec-scheme"/>.</t> <t>The “direction”target="RFC8627" format="default" sectionFormat="of" derivedContent="RFC8627"/>.</t> <t indent="0" pn="section-4-7">The "direction" field identifies the direction of the RTPStreamstream packets to which the indicated restrictions are applied. It may be either“send”"send" or“recv”."recv". Note that these restriction directions are expressed independently of any“inactive”, “sendonly”, “recvonly”,"inactive", "sendonly", "recvonly", or“sendrecv”"sendrecv" attributes associated with the media section. It is, for example, valid to indicate“recv”"recv" restrictions on a“sendonly”"sendonly" stream; those restrictions would apply if, at a future point in time, the stream were changed to“sendrecv”"sendrecv" or“recvonly”.</t> <t>The"recvonly".</t> <t indent="0" pn="section-4-8">The optional“pt=<fmt-list>”"pt=<fmt-list>" lists one or more PT values that can be used in the associated RTPStream.stream. If the“a=rid”"a=rid" attribute contains no“pt”,"pt", then any of the PT values specified in the corresponding“m=”"m=" line may be used.</t><t>The<t indent="0" pn="section-4-9">The list of zero or more codec-agnostic restrictions (<xreftarget="sec-rid_level_restrictions"/>) describetarget="sec-rid_level_restrictions" format="default" sectionFormat="of" derivedContent="Section 5"/>) describes the restrictions that the corresponding RTPStreamstream will conform to.</t><t>This<t indent="0" pn="section-4-10">This frameworkMAY<bcp14>MAY</bcp14> be used in combination with the“a=fmtp”"a=fmtp" SDP attribute for describing the media format parameters for a given RTPPayload Type.payload type. In such scenarios, the“a=rid”"a=rid" restrictions (<xreftarget="sec-rid_level_restrictions"/>)target="sec-rid_level_restrictions" format="default" sectionFormat="of" derivedContent="Section 5"/>) further restrict the equivalent“a=fmtp”"a=fmtp" attributes.</t><t>A<t indent="0" pn="section-4-11">A given SDP media descriptionMAY<bcp14>MAY</bcp14> have zero or more“a=rid”"a=rid" lines describing various possible RTP payload configurations. A given“rid-id” MUST NOT"rid-id" <bcp14>MUST NOT</bcp14> be repeated in a given media description(“m=”("m=" section).</t><t>The “a=rid”<t indent="0" pn="section-4-12">The "a=rid" media attributeMAY<bcp14>MAY</bcp14> 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.</t><t>Though<t indent="0" pn="section-4-13">Though the restrictions specified by the“rid”"rid" restrictions follow a syntax similar to session-level and media-level parameters, they are defined independently. All“rid”"rid" restrictionsMUST<bcp14>MUST</bcp14> be registered with IANA, using the registry defined in <xreftarget="sec-iana"/>.</t> <t><xref target="sec-abnf"/>target="sec-iana" format="default" sectionFormat="of" derivedContent="Section 12"/>.</t> <t indent="0" pn="section-4-14"><xref target="sec-abnf" format="default" sectionFormat="of" derivedContent="Section 10"/> gives a formal Augmented Backus-Naur Form (ABNF) <xreftarget="RFC5234"/>target="RFC5234" format="default" sectionFormat="of" derivedContent="RFC5234"/> grammar for the“rid”"rid" attribute. The“a=rid”"a=rid" media attribute is not dependent on charset.</t> </section> <section anchor="sec-rid_level_restrictions"title="“a=rid” restrictions"> <t>Thisnumbered="true" toc="include" removeInRFC="false" pn="section-5"> <name slugifiedName="name-arid-restrictions">"a=rid" Restrictions</name> <t indent="0" pn="section-5-1"> This section defines the“a=rid”"a=rid" restrictions that can be used to restrict the RTP payload encoding format in a codec-agnosticway.</t> <t>Theway. Please also see the preceding section for a description of how the "pt" parameter is used. </t> <t indent="0" pn="section-5-2">The following restrictions are intended to apply to video codecs in a codec-independent fashion.</t><t><list style="symbols"> <t>max-width,<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-5-3"> <li pn="section-5-3.1"> <strong>max-width</strong>, for spatial resolution in pixels. In the case thatstream orientationstream-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 isencoded.</t> <t>max-height,encoded.</li> <li pn="section-5-3.2"> <strong>max-height</strong>, for spatial resolution in pixels. In the case thatstream orientationstream-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 isencoded.</t> <t>max-fps,encoded.</li> <li pn="section-5-3.3"> <strong>max-fps</strong>, for frame rate in frames per second. For encoders that do not use a fixedframerateframe rate for encoding, this value is used to restrict the minimum amount of time between frames: the time between any two consecutive framesSHOULD NOT<bcp14>SHOULD NOT</bcp14> be less than 1/max-fpsseconds.</t> <t>max-fs,seconds.</li> <li pn="section-5-3.4"> <strong>max-fs</strong>, for frame size in pixels per frame. This is the product of frame width and frame height, in pixels, for rectangularframes.</t> <t>max-br,frames.</li> <li pn="section-5-3.5"> <strong>max-br</strong>, forbit ratebitrate in bits per second. The restriction applies to the media payloadonly,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 RTPSHOULD NOT<bcp14>SHOULD NOT</bcp14> exceed the value specified in“max-br.”</t> <t>max-pps,"max-br."</li> <li pn="section-5-3.6"> <strong>max-pps</strong>, for pixel rate in pixels per second. This valueSHOULD<bcp14>SHOULD</bcp14> 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 nearresolution change boundaries.</t> <t>max-bpp,resolution-change boundaries.</li> <li pn="section-5-3.7"> <strong>max-bpp</strong>, 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 valuesMUST NOT<bcp14>MUST NOT</bcp14> be encoded with more than four digits to the right of the decimalpoint.</t> <t>depend,point.</li> <li pn="section-5-3.8"> <strong>depend</strong>, 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 mediasection.</t> </list></t> <t>Allsection.</li> </ul> <t indent="0" pn="section-5-4">All the restrictions are optional andaresubject to negotiation based on the SDPOffer/Answeroffer/answer rules described in <xreftarget="sec-sdp_o_a"/>.</t> <t>Thistarget="sec-sdp_o_a" format="default" sectionFormat="of" derivedContent="Section 6"/>.</t> <t indent="0" pn="section-5-5">This list is intended to be an initial set of restrictions. Future documents may define additional restrictions; see <xreftarget="sec-iana_rid"/>.target="sec-iana_rid" format="default" sectionFormat="of" derivedContent="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.</t><t><xref target="sec-abnf"/><t indent="0" pn="section-5-6"><xref target="sec-abnf" format="default" sectionFormat="of" derivedContent="Section 10"/> provides formal Augmented Backus-Naur Form (ABNF) <xreftarget="RFC5234"/>target="RFC5234" format="default" sectionFormat="of" derivedContent="RFC5234"/> grammar for each of the“a=rid”"a=rid" restrictions defined in this section.</t> </section> <section anchor="sec-sdp_o_a"title="SDPnumbered="true" toc="include" removeInRFC="false" pn="section-6"> <name slugifiedName="name-sdp-offer-answer-procedures">SDP Offer/AnswerProcedures"> <t>ThisProcedures</name> <t indent="0" pn="section-6-1">This section describes the SDPOffer/Answer <xref target="RFC3264"/>offer/answer procedures <xref target="RFC3264" format="default" sectionFormat="of" derivedContent="RFC3264"/> when using this framework.</t><t>Note<t indent="0" pn="section-6-2">Note that“rid-id”"rid-id" values are only required to be unique within a media section(“m-line”);("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 <xreftarget="I-D.ietf-mmusic-sdp-bundle-negotiation"/>, MIDtarget="RFC8843" format="default" sectionFormat="of" derivedContent="RFC8843"/>, Media Identification (MID) values associate RTP streams uniquely to a single media description. WhenRIDrestriction 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"title="Generatingnumbered="true" toc="include" removeInRFC="false" pn="section-6.1"> <name slugifiedName="name-generating-the-initial-sdp-">Generating the Initial SDPOffer"> <t>ForOffer</name> <t indent="0" pn="section-6.1-1">For each RTP media description in the offer, the offererMAY<bcp14>MAY</bcp14> choose to include one or more“a=rid”"a=rid" lines to specify a configuration profile for the given set of RTPPayload Types.</t> <t>Inpayload types.</t> <t indent="0" pn="section-6.1-2">In order to construct a given“a=rid”"a=rid" line, the offerer must follow these steps:</t><t><list style="numbers"> <t>It MUST<ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-6.1-3"> <li pn="section-6.1-3.1" derivedCounter="1.">It <bcp14>MUST</bcp14> generate a“rid-id”"rid-id" that is unique within a mediadescription</t> <t>It MUSTdescription.</li> <li pn="section-6.1-3.2" derivedCounter="2.">It <bcp14>MUST</bcp14> set the direction for the“rid-id”"rid-id" to one of“send”"send" or“recv”</t> <t>It MAY"recv".</li> <li pn="section-6.1-3.3" derivedCounter="3.">It <bcp14>MAY</bcp14> include a listing of SDP media formats (usually corresponding to RTP payload types) allowed to appear in the RTPStream.stream. AnyPayload Typespayload type chosenMUST<bcp14>MUST</bcp14> be a valid payload type for the media section (that is, it must be listed on the“m=”"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,"m=" line, using regular SDPrules.</t> <t>The Offererrules.</li> <li pn="section-6.1-3.4" derivedCounter="4.">The offerer then chooses zero or more“a=rid”"a=rid" restrictions (<xreftarget="sec-rid_level_restrictions"/>)target="sec-rid_level_restrictions" format="default" sectionFormat="of" derivedContent="Section 5"/>) to be applied to the RTPStream,stream and adds them to the“a=rid” line.</t> <t>If"a=rid" line.</li> <li pn="section-6.1-3.5" derivedCounter="5.">If the offerer wishes the answerer to have the ability to specify arestriction,restriction but does not wish to set a value itself, it includes the name of the restriction in the“a=rid”"a=rid" line, but without any indicatedvalue.</t> </list></t> <t>Note:value.</li> </ol> <t indent="0" pn="section-6.1-4">Note: If an“a=fmtp”"a=fmtp" attribute is also used to provide media-format-specific parameters, then the“a=rid”"a=rid" restrictions will further restrict the equivalent“a=fmtp”"a=fmtp" parameters for the givenPayload Typepayload type for the specified RTPStream.</t> <t>Ifstream.</t> <t indent="0" pn="section-6.1-5">If a given codec would require an“a=fmtp”"a=fmtp" line when used without“a=rid”"a=rid", then the offerMUST<bcp14>MUST</bcp14> include a valid corresponding“a=fmtp”"a=fmtp" line even when using“a=rid”.</t>"a=rid".</t> </section> <section anchor="answerer-processing-the-sdp-offer"title="Answerer processingnumbered="true" toc="include" removeInRFC="false" pn="section-6.2"> <name slugifiedName="name-answerer-processing-the-sdp">Answerer Processing the SDPOffer">Offer</name> <section anchor="sec-rid_unaware"title="“a=rid”-unaware Answerer"> <t>Ifnumbered="true" toc="include" removeInRFC="false" pn="section-6.2.1"> <name slugifiedName="name-arid-unaware-answerer">"a=rid"-Unaware Answerer</name> <t indent="0" pn="section-6.2.1-1">If the receiverdoesn’tdoesn't support the framework defined in this specification, the entire“a=rid”"a=rid" line is ignored following the standard offer/answer rules <xreftarget="RFC3264"/> Offer/Answer rules.</t> <t><xref target="sec-gen_offer"/>target="RFC3264" format="default" sectionFormat="of" derivedContent="RFC3264"/>.</t> <t indent="0" pn="section-6.2.1-2"><xref target="sec-gen_offer" format="default" sectionFormat="of" derivedContent="Section 6.1"/> requires the offer to include a valid“a=fmtp”"a=fmtp" line for any media formats that otherwise require it (in other words, the“a=rid”"a=rid" line cannot be used to replace“a=fmtp”"a=fmtp" configuration). As a result, ignoring the“a=rid”"a=rid" line is always guaranteed to result in a valid session description.</t> </section> <section anchor="sec-rid_offer_recv"title="“a=rid”-aware Answerer"> <t>Ifnumbered="true" toc="include" removeInRFC="false" pn="section-6.2.2"> <name slugifiedName="name-arid-aware-answerer">"a=rid"-Aware Answerer</name> <t indent="0" pn="section-6.2.2-1">If the answerer supports the“a=rid”"a=rid" attribute, the following verification steps are executed, in order, for each“a=rid”"a=rid" line in a received offer:</t><t><list style="numbers"> <t>The<ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-6.2.2-2"> <li pn="section-6.2.2-2.1" derivedCounter="1.">The answerer ensures that the“a=rid”"a=rid" line is syntactically well formed. In the case of a syntax error, the“a=rid”"a=rid" line isdiscarded.</t> <t>Thediscarded.</li> <li pn="section-6.2.2-2.2" derivedCounter="2.">The answerer extracts the rid-id from the“a=rid”"a=rid" line and verifies its uniqueness within a media section. In the case of a duplicate, the entire“a=rid”"a=rid" line, and all“a=rid”"a=rid" lines with rid-ids that duplicate this line, are discarded andMUST NOT<bcp14>MUST NOT</bcp14> be included in the SDPAnswer.</t> <t>Ifanswer.</li> <li pn="section-6.2.2-2.3" derivedCounter="3.">If the“a=rid”"a=rid" line contains a“pt=”,"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=”"m=" line). Any PT missing from the“m=”"m=" line is discarded from the set of values in the“pt=”."pt=". If no values are left in the“pt=”"pt=" parameter after this processing, then the“a=rid”"a=rid" line isdiscarded.</t> <t>Ifdiscarded.</li> <li pn="section-6.2.2-2.4" derivedCounter="4.">If the“direction”"direction" field is“recv”,"recv", the answerer ensures that the specified“a=rid”"a=rid" restrictions are supported. In the case of an unsupported restriction, the“a=rid”"a=rid" line isdiscarded.</t> <t>Ifdiscarded.</li> <li pn="section-6.2.2-2.5" derivedCounter="5.">If the“depend”"depend" restriction is included, the answererMUST<bcp14>MUST</bcp14> make sure that the listed rid-ids unambiguously match the rid-ids in the media description. Any“depend” “a=rid”"depend" "a=rid" lines that do not arediscarded.</t> <t>Thediscarded.</li> <li pn="section-6.2.2-2.6" derivedCounter="6.">The answerer verifies that the restrictions are consistent with at least one of the codecs to be used with the RTPStream.stream. If the“a=rid”"a=rid" line contains a“pt=”,"pt=", it contains the list of such codecs; otherwise, the list of such codecs is taken from the associated“m=”"m=" line. See <xreftarget="sec-feature_interactions"/>target="sec-feature_interactions" format="default" sectionFormat="of" derivedContent="Section 8"/> for more detail. If the“a=rid”"a=rid" restrictions are incompatible with the other codec properties for all codecs, then the“a=rid”"a=rid" line isdiscarded.</t> </list></t> <t>Notediscarded.</li> </ol> <t indent="0" pn="section-6.2.2-3">Note that the answerer does not need to understand every restriction present in a“send”"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> </section> </section> <section anchor="sec-rid_answer_send"title="Generatingnumbered="true" toc="include" removeInRFC="false" pn="section-6.3"> <name slugifiedName="name-generating-the-sdp-answer">Generating the SDPAnswer"> <t>HavingAnswer</name> <t indent="0" pn="section-6.3-1">Having performed verification of the SDP offer as described in <xreftarget="sec-rid_offer_recv"/>,target="sec-rid_offer_recv" format="default" sectionFormat="of" derivedContent="Section 6.2.2"/>, the answerer shall perform the following steps to generate the SDP answer.</t><t>For<t indent="0" pn="section-6.3-2">For each“a=rid”"a=rid" line that has not been discarded by previous processing:</t><t><list style="numbers"> <t>The<ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-6.3-3"> <li pn="section-6.3-3.1" derivedCounter="1.">The value of the“direction”"direction" field is reversed:“send”"send" is changed to“recv”,"recv", and“recv”"recv" is changed to“send”.</t> <t>The"send".</li> <li pn="section-6.3-3.2" derivedCounter="2.">The answererMAY<bcp14>MAY</bcp14> choose to modify specific“a=rid”"a=rid" restriction values in the answer SDP. In such a case, the modified valueMUST<bcp14>MUST</bcp14> be more restrictive than the ones specified in the offer. The answerMUST NOT<bcp14>MUST NOT</bcp14> include any restrictions that were not present in theoffer.</t> <t>Theoffer.</li> <li pn="section-6.3-3.3" derivedCounter="3.">The answererMUST NOT<bcp14>MUST NOT</bcp14> modify the“rid-id”"rid-id" present in theoffer.</t> <t>Ifoffer.</li> <li pn="section-6.3-3.4" derivedCounter="4.">If the“a=rid”"a=rid" line contains a“pt=”,"pt=", the answerer is allowed to discard one or more media formats from a given“a=rid”"a=rid" line. If the answerer chooses to discard all the media formats from an“a=rid”"a=rid" line, the answererMUST<bcp14>MUST</bcp14> discard the entire“a=rid”"a=rid" line. If the offer did not contain a“pt=”"pt=" for a given“a=rid”"a=rid" line, then the answerMUST NOT<bcp14>MUST NOT</bcp14> contain a“pt=”"pt=" in the correspondingline.</t> <t>Inline.</li> <li pn="section-6.3-3.5" derivedCounter="5.">In cases where the answerer is unable to support the payload configuration specified in a given“a=rid”"a=rid" line with a direction of“recv”"recv" in the offer, the answererMUST<bcp14>MUST</bcp14> discard the corresponding“a=rid”"a=rid" line. This includes situations in which the answerer does not understand one or more of the restrictions in an“a=rid”"a=rid" line with a direction of“recv”.</t> </list></t> <t>Note: in"recv".</li> </ol> <t indent="0" pn="section-6.3-4">Note: In the case that the answerer uses different PT values to represent a codec than the offerer did, the“a=rid”"a=rid" values in the answer use the PT values that are present in its answer.</t> </section> <section anchor="sec-rid_answer_recv"title="Offerernumbered="true" toc="include" removeInRFC="false" pn="section-6.4"> <name slugifiedName="name-offerer-processing-of-the-s">Offerer Processing of the SDPAnswer"> <t>TheAnswer</name> <t indent="0" pn="section-6.4-1">The offererSHALL<bcp14>SHALL</bcp14> follow these steps when processing the answer:</t><t><list style="numbers"> <t>The<ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-6.4-2"> <li pn="section-6.4-2.1" derivedCounter="1.">The offerer matches the“a=rid”"a=rid" line in the answer to the“a=rid”"a=rid" line in the offer using the“rid-id”."rid-id". If no matching line can be located in the offer, the“a=rid”"a=rid" line isignored.</t> <t>Ifignored.</li> <li pn="section-6.4-2.2" derivedCounter="2.">If the answer contains any restrictions that were not present in the offer, then the offererSHALL<bcp14>SHALL</bcp14> discard the“a=rid” line.</t> <t>If"a=rid" line.</li> <li pn="section-6.4-2.3" derivedCounter="3.">If the restrictions have been changed between the offer and the answer, the offererMUST<bcp14>MUST</bcp14> ensure that the modifications are more restrictive than they were in the originaloffer,offer and that they can be supported; if not, the offererSHALL<bcp14>SHALL</bcp14> discard the“a=rid” line.</t> <t>If"a=rid" line.</li> <li pn="section-6.4-2.4" derivedCounter="4.">If the“a=rid”"a=rid" line in the answer contains a“pt=”"pt=" but the offer did not, the offererSHALL<bcp14>SHALL</bcp14> discard the“a=rid” line.</t> <t>If"a=rid" line.</li> <li pn="section-6.4-2.5" derivedCounter="5.">If the“a=rid”"a=rid" line in the answer contains a“pt=”"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”"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”"a=rid" line in the answer, the offerer looks up the corresponding“a=rtpmap”"a=rtpmap" and“a=fmtp”"a=fmtp" lines in the answer. It then searches the list of“pt=”"pt=" values indicated in theoffer,offer and attempts to find one with an equivalent set of“a=rtpmap”"a=rtpmap" and“a=fmtp”"a=fmtp" lines in the offer. If all PTs in the answer can be matched, then the“pt=”"pt=" values pass validation; otherwise, it fails. If this validation fails, the offererSHALL<bcp14>SHALL</bcp14> discard the“a=rid”"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 theirvalues.</t> <t>Ifvalues.</li> <li pn="section-6.4-2.6" derivedCounter="6.">If the“a=rid”"a=rid" line contains a“pt=”,"pt=", the offerer verifies that the attribute values provided in the“a=rid”"a=rid" attributes are consistent with the corresponding codecs and their other parameters. See <xreftarget="sec-feature_interactions"/>target="sec-feature_interactions" format="default" sectionFormat="of" derivedContent="Section 8"/> for more detail. If the“a=rid”"a=rid" restrictions are incompatible with the other codec properties, then the offererSHALL<bcp14>SHALL</bcp14> discard the“a=rid” line.</t> <t>The"a=rid" line.</li> <li pn="section-6.4-2.7" derivedCounter="7.">The offerer verifies that the restrictions are consistent with at least one of the codecs to be used with the RTPStream.stream. If the“a=rid”"a=rid" line contains a“pt=”,"pt=", it contains the list of such codecs; otherwise, the list of such codecs is taken from the associated“m=”"m=" line. See <xreftarget="sec-feature_interactions"/>target="sec-feature_interactions" format="default" sectionFormat="of" derivedContent="Section 8"/> for more detail. If the“a=rid”"a=rid" restrictions are incompatible with the other codec properties for all codecs, then the offererSHALL<bcp14>SHALL</bcp14> discard the“a=rid” line.</t> </list></t> <t>Any “a=rid”"a=rid" line.</li> </ol> <t indent="0" pn="section-6.4-3">Any "a=rid" line present in the offer that was not matched by step 1 above has been discarded by theanswerer,answerer and does not form part of the negotiated restrictions on an RTPStream.stream. The offererMAY<bcp14>MAY</bcp14> still apply any restrictions it indicated in an“a=rid”"a=rid" line with a direction field of“send”,"send", but it is not required to do so.</t><t>It<t indent="0" pn="section-6.4-4">It is important to note that there are several ways in which an offer can contain a media section with“a=rid”"a=rid" lines,butalthough the corresponding media section in the response does not. This includes situations in which the answerer does not support“a=rid”"a=rid" atall,all or does not support the indicated restrictions. Under such circumstances, the offererMUST<bcp14>MUST</bcp14> be prepared to receive a media stream to which no restrictions have been applied.</t> </section> <section anchor="modifying-the-session"title="Modifying the Session"> <t>Offersnumbered="true" toc="include" removeInRFC="false" pn="section-6.5"> <name slugifiedName="name-modifying-the-session">Modifying the Session</name> <t indent="0" pn="section-6.5-1">Offers and answers inside an existing session follow the rules for initial session negotiation. Such an offerMAY<bcp14>MAY</bcp14> propose a change in the number of RIDs in use. To avoid race conditions with media, any RIDs with proposed changesSHOULD<bcp14>SHOULD</bcp14> use a newID,ID rather thanre-usingreusing one from the previous offer/answer exchange. RIDs without proposed changesSHOULD re-use<bcp14>SHOULD</bcp14> reuse the ID from the previous exchange.</t> </section> </section> <section anchor="sec-declarative_sdp"title="Usenumbered="true" toc="include" removeInRFC="false" pn="section-7"> <name slugifiedName="name-use-with-declarative-sdp">Use with DeclarativeSDP"> <t>ThisSDP</name> <t indent="0" pn="section-7-1">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.</t> </section> <section anchor="sec-feature_interactions"title="Interactionnumbered="true" toc="include" removeInRFC="false" pn="section-8"> <name slugifiedName="name-interaction-with-other-tech">Interaction with OtherTechniques"> <t>Historically,Techniques</name> <t indent="0" pn="section-8-1">Historically, a number of other approaches have been defined that allow restricting media streams via SDP. These include:</t><t><list style="symbols"> <t>Codec-specific<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8-2"> <li pn="section-8-2.1">Codec-specific configuration set via format parameters(“a=fmtp”);("a=fmtp") -- for example, the H.264“max-fs”"max-fs" format parameter <xreftarget="RFC6184"/></t> <t>Sizetarget="RFC6184" format="default" sectionFormat="of" derivedContent="RFC6184"/></li> <li pn="section-8-2.2">Size restrictions imposed byimagethe "a=imageattr" attributeattributes (“a=imageattr”)<xreftarget="RFC6236"/></t> </list></t> <t>Whentarget="RFC6236" format="default" sectionFormat="of" derivedContent="RFC6236"/></li> </ul> <t indent="0" pn="section-8-3">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.</t><t>In<t indent="0" pn="section-8-4">In an offer, this means that“a=rid”"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”"max-width=320" in an“a=rid”"a=rid" line that is then applied to that PT is nonsensical. According to the rules of <xreftarget="sec-rid_offer_recv"/>,target="sec-rid_offer_recv" format="default" sectionFormat="of" derivedContent="Section 6.2.2"/>, this will result in the corresponding“a=rid”"a=rid" line being ignored by the recipient.</t><t>In<t indent="0" pn="section-8-5">In an answer, the“a=rid”"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”"a=fmtp" or“a=imageattr”),"a=imageattr"), its only recourse is to discard the“a=rid”"a=rid" line altogether, as described in <xreftarget="sec-rid_answer_send"/>.target="sec-rid_answer_send" format="default" sectionFormat="of" derivedContent="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”"a=rid" line, as described in <xreftarget="sec-rid_answer_recv"/>.</t> <t>Thetarget="sec-rid_answer_recv" format="default" sectionFormat="of" derivedContent="Section 6.4"/>.</t> <t indent="0" pn="section-8-6">The following subsections demonstrate these interactions usingcommonly-usedcommonly used video codecs. These descriptions are illustrative of the interaction principles outlinedabove,above and are not normative.</t> <section anchor="interaction-with-vp8-format-parameters"title="Interactionnumbered="true" toc="include" removeInRFC="false" pn="section-8.1"> <name slugifiedName="name-interaction-with-vp8-format">Interaction with VP8 FormatParameters"> <t><xref target="RFC7741"/>Parameters</name> <t indent="0" pn="section-8.1-1"><xref target="RFC7741" format="default" sectionFormat="of" derivedContent="RFC7741"/> defines two format parameters for the VP8 codec. Both correspond to restrictions on receivercapabilities,capabilities and never indicate sending restrictions.</t> <section anchor="max-fr-maximum-framerate"title="max-frnumbered="true" toc="include" removeInRFC="false" pn="section-8.1.1"> <name slugifiedName="name-max-fr-maximum-frame-rate">max-fr - MaximumFramerate"> <t>TheFrame Rate</name> <t indent="0" pn="section-8.1.1-1">The VP8“max-fr”"max-fr" format parameter corresponds to the“max-fps”"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”"a=rid" include a“max-fps”"max-fps" parameter, then the sent stream will conform to the smaller of the two values.</t> </section> <section anchor="max-fs-maximum-framesize-in-vp8-macroblocks"title="max-fsnumbered="true" toc="include" removeInRFC="false" pn="section-8.1.2"> <name slugifiedName="name-max-fs-maximum-frame-size-i">max-fs - MaximumFramesize,Frame Size, in VP8Macroblocks"> <t>TheMacroblocks</name> <t indent="0" pn="section-8.1.2-1">The VP8“max-fs”"max-fs" format parameter corresponds to the“max-fs”"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”"a=rid" include a“max-fs”"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:</t><figure><artwork><![CDATA[<sourcecode markers="false" pn="section-8.1.2-2"> min(rid_max_fs, fmtp_max_fs * macroblock_size)]]></artwork></figure> <t>This</sourcecode> <t indent="0" pn="section-8.1.2-3">This fmtp parameter also has bearing on the max-height and max-width parameters.Section 6.1 of<xreftarget="RFC7741"/>section="6.1" sectionFormat="of" target="RFC7741" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7741#section-6.1" derivedContent="RFC7741"/> requires that the width and height of the frame in macroblocksare also required tobe less than int(sqrt(fmtp_max_fs * 8)). Accordingly, the maximum width of a transmitted stream will be limited to:</t><figure><artwork><![CDATA[<sourcecode markers="false" pn="section-8.1.2-4"> min(rid_max_width, int(sqrt(fmtp_max_fs * 8)) * macroblock_width)]]></artwork></figure> <t>Similarly,</sourcecode> <t indent="0" pn="section-8.1.2-5">Similarly, thestream’sstream's height will be limited to:</t><figure><artwork><![CDATA[<sourcecode markers="false" pn="section-8.1.2-6"> min(rid_max_height, int(sqrt(fmtp_max_fs * 8)) * macroblock_height)]]></artwork></figure></sourcecode> </section> </section> <section anchor="interaction-with-h264-format-parameters"title="Interactionnumbered="true" toc="include" removeInRFC="false" pn="section-8.2"> <name slugifiedName="name-interaction-with-h264-forma">Interaction with H.264 FormatParameters"> <t><xref target="RFC6184"/>Parameters</name> <t indent="0" pn="section-8.2-1"><xref target="RFC6184" format="default" sectionFormat="of" derivedContent="RFC6184"/> defines format parameters for the H.264 video codec. The majority of these parameters do not correspond to codec-independent restrictions:</t><t><list style="symbols"> <t>deint-buf-cap</t> <t>in-band-parameter-sets</t> <t>level-asymmetry-allowed</t> <t>max-rcmd-nalu-size</t> <t>max-cpb</t> <t>max-dpb</t> <t>packetization-mode</t> <t>redundant-pic-cap</t> <t>sar-supported</t> <t>sar-understood</t> <t>sprop-deint-buf-req</t> <t>sprop-init-buf-time</t> <t>sprop-interleaving-depth</t> <t>sprop-level-parameter-sets</t> <t>sprop-max-don-diff</t> <t>sprop-parameter-sets</t> <t>use-level-src-parameter-sets</t> </list></t> <t>Note<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-8.2-2"> <li pn="section-8.2-2.1">deint-buf-cap</li> <li pn="section-8.2-2.2">in-band-parameter-sets</li> <li pn="section-8.2-2.3">level-asymmetry-allowed</li> <li pn="section-8.2-2.4">max-rcmd-nalu-size</li> <li pn="section-8.2-2.5">max-cpb</li> <li pn="section-8.2-2.6">max-dpb</li> <li pn="section-8.2-2.7">packetization-mode</li> <li pn="section-8.2-2.8">redundant-pic-cap</li> <li pn="section-8.2-2.9">sar-supported</li> <li pn="section-8.2-2.10">sar-understood</li> <li pn="section-8.2-2.11">sprop-deint-buf-req</li> <li pn="section-8.2-2.12">sprop-init-buf-time</li> <li pn="section-8.2-2.13">sprop-interleaving-depth</li> <li pn="section-8.2-2.14">sprop-level-parameter-sets</li> <li pn="section-8.2-2.15">sprop-max-don-diff</li> <li pn="section-8.2-2.16">sprop-parameter-sets</li> <li pn="section-8.2-2.17">use-level-src-parameter-sets</li> </ul> <t indent="0" pn="section-8.2-3">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.</t><t>The <xref target="RFC6184"/><t indent="0" pn="section-8.2-4">The <xref target="RFC6184" format="default" sectionFormat="of" derivedContent="RFC6184"/> codec format parameters covered in the following sections correspond to restrictions on receivercapabilities,capabilities and never indicate sending restrictions.</t> <section anchor="profile-level-id-and-max-recv-level-negotiated-sub-profile"title="profile-level-idnumbered="true" toc="include" removeInRFC="false" pn="section-8.2.1"> <name slugifiedName="name-profile-level-id-and-max-re">profile-level-id and max-recv-level - NegotiatedSub-Profile"> <t>TheseSubprofile</name> <t indent="0" pn="section-8.2.1-1">These parameters include a“level”"level" indicator, which acts as an index into Table A-1 of <xreftarget="H264"/>.target="H264" format="default" sectionFormat="of" derivedContent="H264"/>. This table contains a number of parameters, several of which correspond to the restrictions defined in this document. <xreftarget="RFC6184"/>target="RFC6184" format="default" sectionFormat="of" derivedContent="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 <xreftarget="H264"></xref>target="H264" format="default" sectionFormat="of" derivedContent="H264"/> Table A-1 and those indicated in the corresponding“a=fmtp”"a=fmtp" line.</t> </section> <section anchor="max-br-maxbr-maximum-video-bitrate"title="max-brnumbered="true" toc="include" removeInRFC="false" pn="section-8.2.2"> <name slugifiedName="name-max-br-maxbr-maximum-video-">max-br / MaxBR - Maximum VideoBitrate"> <t>TheBitrate</name> <t indent="0" pn="section-8.2.2-1">The H.264“MaxBR”"MaxBR" parameter (and its equivalent“max-br”"max-br" format parameter) corresponds to the“max-bps”"max-bps" restriction defined in this specification, by way of a conversion factor of 1000 or 1200; see <xreftarget="RFC6184"/>target="RFC6184" format="default" sectionFormat="of" derivedContent="RFC6184"/> for details regarding which factor gets used under differing circumstances.</t><t>If<t indent="0" pn="section-8.2.2-2">If an RTP sender is generating a stream using a format defined with this format parameter, and the sending restrictions defined via“a=rid”"a=rid" include a“max-fps”"max-fps" parameter, then the sent stream will conform to the smaller of the two values–-- that is:</t><figure><artwork><![CDATA[<sourcecode markers="false" pn="section-8.2.2-3"> min(rid_max_br, h264_MaxBR * conversion_factor)]]></artwork></figure></sourcecode> </section> <section anchor="max-fs-maxfs-maximum-framesize-in-h264-macroblocks"title="max-fsnumbered="true" toc="include" removeInRFC="false" pn="section-8.2.3"> <name slugifiedName="name-max-fs-maxfs-maximum-frame-">max-fs / MaxFS - MaximumFramesize,Frame Size, in H.264Macroblocks"> <t>TheMacroblocks</name> <t indent="0" pn="section-8.2.3-1">The H.264“MaxFs”"MaxFs" parameter (and its equivalent“max-fs”"max-fs" format parameter) corresponds roughly to the“max-fs”"max-fs" restriction defined in this document, by way of a conversion factor of 256 (the number of pixels per macroblock).</t><t>If<t indent="0" pn="section-8.2.3-2">If an RTP sender is generating a stream using a format defined with this format parameter, and the sending restrictions defined via“a=rid”"a=rid" include a“max-fs”"max-fs" parameter, then the sent stream will conform to the smaller of the two values–-- that is:</t><figure><artwork><![CDATA[<sourcecode markers="false" pn="section-8.2.3-3"> min(rid_max_fs, h264_MaxFs * 256)]]></artwork></figure></sourcecode> </section> <section anchor="sec-h264_max_mbps"title="max-mbpsnumbered="true" toc="include" removeInRFC="false" pn="section-8.2.4"> <name slugifiedName="name-max-mbps-maxmbps-maximum-ma">max-mbps / MaxMBPS - Maximum Macroblock ProcessingRate"> <t>TheRate</name> <t indent="0" pn="section-8.2.4-1">The H.264“MaxMBPS”"MaxMBPS" parameter (and its equivalent“max-mbps”"max-mbps" format parameter) corresponds roughly to the“max-pps”"max-pps" restriction defined in this document, by way of a conversion factor of 256 (the number of pixels per macroblock).</t><t>If<t indent="0" pn="section-8.2.4-2">If an RTP sender is generating a stream using a format defined with this format parameter, and the sending restrictions defined via“a=rid”"a=rid" include a“max-pps”"max-pps" parameter, then the sent stream will conform to the smaller of the two values–-- that is:</t><figure><artwork><![CDATA[<sourcecode markers="false" pn="section-8.2.4-3"> min(rid_max_pps, h264_MaxMBPS * 256)]]></artwork></figure></sourcecode> </section> <section anchor="max-smbps-maximum-decoded-picture-buffer"title="max-smbpsnumbered="true" toc="include" removeInRFC="false" pn="section-8.2.5"> <name slugifiedName="name-max-smbps-maximum-decoded-p">max-smbps - Maximum Decoded PictureBuffer"> <t>TheBuffer</name> <t indent="0" pn="section-8.2.5-1">The H.264“max-smbps”"max-smbps" format parameter operates the same way as the“max-mpbs”"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 <xreftarget="RFC6184"/>,target="RFC6184" format="default" sectionFormat="of" derivedContent="RFC6184"/>, and the result of this conversion is applied as described in <xreftarget="sec-h264_max_mbps"/>.</t>target="sec-h264_max_mbps" format="default" sectionFormat="of" derivedContent="Section 8.2.4"/>.</t> </section> </section> <section anchor="redundancy-formats-and-payload-type-restrictions"title="Redundancynumbered="true" toc="include" removeInRFC="false" pn="section-8.3"> <name slugifiedName="name-redundancy-formats-and-payl">Redundancy Formats and Payload TypeRestrictions"> <t><xref target="sec-rid_attribute"/>Restrictions</name> <t indent="0" pn="section-8.3-1"><xref target="sec-rid_attribute" format="default" sectionFormat="of" derivedContent="Section 4"/> specifies that redundancy formats using redundancy RTP streams bind the redundancy RTP stream to the source RTP stream with either the RepairedRtpStreamId SDESitem,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"RTP Payload for Redundant AudioData”Data" <xreftarget="RFC2198"/>,target="RFC2198" format="default" sectionFormat="of" derivedContent="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”"a=rid" restrictions are defined. The“a=rid”"a=rid" line“pt=”"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.</t><t>Example<t indent="0" pn="section-8.3-2">Example (SDPExcerpt):</t> <figure><artwork><![CDATA[excerpt):</t> <sourcecode type="sdp" markers="false" pn="section-8.3-3"> 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]]></artwork></figure> <t>The</sourcecode> <t indent="0" pn="section-8.3-4">The RID with ID=6 restricts the payload types for this RID to 100 (the redundancy format), 97 (G.711), 101 (ComfortNoise)Noise), and 102(DTMF(dual-tone multi-frequency (DTMF) tones). This means that RID 6 can either contain theREDRedundant 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.</t> </section> </section> <section anchor="format-parameters-for-future-payloads"title="Formatnumbered="true" toc="include" removeInRFC="false" pn="section-9"> <name slugifiedName="name-format-parameters-for-futur">Format Parameters for FuturePayloads"> <t>RegistrationsPayloads</name> <t indent="0" pn="section-9-1">Registrations of future RTP payload format specifications that define media types that have parameters matching the RID restrictions specified in this memoSHOULD<bcp14>SHOULD</bcp14> name those parameters in a manner that matches the names of those RIDrestrictions,restrictions andSHOULD<bcp14>SHOULD</bcp14> explicitly state whatmedia typemedia-type parameters are restricted by what RID restrictions.</t> </section> <section anchor="sec-abnf"title="Formal Grammar"> <t>Thisnumbered="true" toc="include" removeInRFC="false" pn="section-10"> <name slugifiedName="name-formal-grammar">Formal Grammar</name> <t indent="0" pn="section-10-1">This section gives a formal Augmented Backus-Naur Form (ABNF) <xreftarget="RFC5234"/>target="RFC5234" format="default" sectionFormat="of" derivedContent="RFC5234"/> grammar, with the case-sensitive extensions described in <xreftarget="RFC7405"/>,target="RFC7405" format="default" sectionFormat="of" derivedContent="RFC7405"/>, for each of the new media and“a=rid”"a=rid" attributes defined in this document.</t><figure><artwork><![CDATA[<sourcecode type="abnf" markers="false" pn="section-10-2"> 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}} >[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}} >[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-58*(%x20-3A /%x60-7E )%x3C-7E) ; Any printable character except semicolon]]></artwork></figure></sourcecode> </section> <section anchor="sdp-examples"title="SDP Examples"> <t>Note: seenumbered="true" toc="include" removeInRFC="false" pn="section-11"> <name slugifiedName="name-sdp-examples">SDP Examples</name> <t indent="0" pn="section-11-1">Note: See <xreftarget="I-D.ietf-mmusic-sdp-simulcast"/>target="RFC8853" format="default" sectionFormat="of" derivedContent="RFC8853"/> for examples of RID used in simulcast scenarios.</t> <section anchor="many-bundled-streams-using-many-codecs"title="Manynumbered="true" toc="include" removeInRFC="false" pn="section-11.1"> <name slugifiedName="name-many-bundled-streams-using-">Many Bundled StreamsusingUsing ManyCodecs"> <t>InCodecs</name> <t indent="0" pn="section-11.1-1">In this scenario, the offerer supports the Opus, G.722,G.711G.711, and DTMF audiocodecs,codecs and VP8, VP9, H.264 (CBP/CHP, mode 0/1), H.264-SVC(SCBP/SCHP)(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:</t><t><list style="symbols"> <t>1<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-11.1-2"> <li pn="section-11.1-2.1">1 receive stream of 720p resolution is offered for the activespeaker.</t> <t>2speaker.</li> <li pn="section-11.1-2.2">2 receive streams of 360p resolution are offered for the prior 2 activespeakers.</t> <t>4speakers.</li> <li pn="section-11.1-2.3">4 receive streams of 180p resolution are offered for others in thecall.</t> </list></t> <t>NOTE:call.</li> </ul> <t indent="0" pn="section-11.1-3">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<t indent="0" pn="section-11.1-4">The offer for this scenario is shown below.</t><figure><artwork><![CDATA[<sourcecode type="sdp" markers="false" pn="section-11.1-5"> ... 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)... ...]]></artwork></figure></sourcecode> </section> <section anchor="scalable-layers"title="Scalable Layers"> <t>Addingnumbered="true" toc="include" removeInRFC="false" pn="section-11.2"> <name slugifiedName="name-scalable-layers">Scalable Layers</name> <t indent="0" pn="section-11.2-1">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”"depend" restriction. In the example below, the highest resolution is offered to be sent as 2 scalable temporal layers (usingMRST).Multiple RTP Streams on a Single Media Transport (MRST)). See <xreftarget="I-D.ietf-mmusic-sdp-simulcast"/>target="RFC8853" format="default" sectionFormat="of" derivedContent="RFC8853"/> for additional detail about simulcast usage.</t><figure><artwork><![CDATA[<sourcecode type="sdp" markers="false" pn="section-11.2-2"> 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... ...]]></artwork></figure></sourcecode> </section> </section> <section anchor="sec-iana"title="IANA Considerations"> <t>Thisnumbered="true" toc="include" removeInRFC="false" pn="section-12"> <name slugifiedName="name-iana-considerations">IANA Considerations</name> <t indent="0" pn="section-12-1">This specification updates <xreftarget="RFC4855"/>target="RFC4855" format="default" sectionFormat="of" derivedContent="RFC4855"/> to give additional guidance on choice of Format Parameter (fmtp)names,names andontheir relation to RID restrictions.</t> <section anchor="new-sdp-media-level-attribute"title="Newnumbered="true" toc="include" removeInRFC="false" pn="section-12.1"> <name slugifiedName="name-new-sdp-media-level-attribu">New SDP Media-Levelattribute"> <t>ThisAttribute</name> <t indent="0" pn="section-12.1-1">This document defines“rid”"rid" as an SDP media-level attribute. This attributemust behas been registered by IANA under“Session"Session Description Protocol (SDP)Parameters”Parameters" under“att-field"att-field (media levelonly)”.</t> <t>The “rid”only)".</t> <t indent="0" pn="section-12.1-2">The "rid" attribute is used to identify the properties of an RTP streamwith inwithin an RTPSession.session. Its format is defined in <xreftarget="sec-abnf"/>.</t> <t>Thetarget="sec-abnf" format="default" sectionFormat="of" derivedContent="Section 10"/>.</t> <t indent="0" pn="section-12.1-3">The formal registration information for this attribute follows.</t><figure><artwork><![CDATA[<dl newline="true" indent="3" spacing="normal" pn="section-12.1-4"> <dt pn="section-12.1-4.1"> Contact name, email address, and telephone number </dt> <dd pn="section-12.1-4.2"> <artwork align="left" pn="section-12.1-4.2.1"> IETF MMUSIC Working Group mmusic@ietf.org +1 510 492 4080 </artwork> </dd> <dt pn="section-12.1-4.3"> Attribute name (as it will appear in SDP) </dt> <dd pn="section-12.1-4.4"> rid </dd> <dt pn="section-12.1-4.5"> Long-form attribute name in English </dt> <dd pn="section-12.1-4.6"> Restriction Identifier </dd> <dt pn="section-12.1-4.7"> Type of attribute (session level, media level, or both) </dt> <dd pn="section-12.1-4.8"> Media Level </dd> <dt pn="section-12.1-4.9"> Whether the attribute value is subject to the charset attribute </dt> <dd pn="section-12.1-4.10"> The attribute is not dependent on charset. </dd> <dt pn="section-12.1-4.11"> A one-paragraph explanation of the purpose of the attribute </dt> <dd pn="section-12.1-4.12"> The "rid" SDP attribute is used totounambiguously identify the RTPStreamsstreams within an RTPSessionsession and restrict the streams' payload format parameters in a codec-agnostic way beyond what is provided with the regularPayload Types.payload types. </dd> <dt pn="section-12.1-4.13"> A specification of appropriate attribute values for this attribute </dt> <dd pn="section-12.1-4.14"> Valid values are defined by the ABNF in[RFCXXXXX]RFC 8851 </dd> <dt pn="section-12.1-4.15"> Multiplexing (Mux) Category </dt> <dd pn="section-12.1-4.16"> SPECIAL]]></artwork></figure></dd> </dl> </section> <section anchor="sec-iana_rid"title="Registrynumbered="true" toc="include" removeInRFC="false" pn="section-12.2"> <name slugifiedName="name-registry-for-rid-level-para">Registry for RID-LevelParameters"> <t>ThisParameters</name> <t indent="0" pn="section-12.2-1">This specification creates a new IANA registry named“rid attribute parameters”"RID Attribute Parameters" within the SDP parameters registry. The“a=rid”"a=rid" restrictionsMUST<bcp14>MUST</bcp14> be registered with IANA and documented under the same rules as for SDP session-level and media-level attributes as specified in <xreftarget="RFC4566"/>.</t> <t>Parameterstarget="RFC4566" format="default" sectionFormat="of" derivedContent="RFC4566"/>.</t> <t indent="0" pn="section-12.2-2">Parameters for“a=rid”"a=rid" lines that modify the nature of encoded mediaMUST<bcp14>MUST</bcp14> 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.</t><t>New<t indent="0" pn="section-12.2-3">New restriction registrations are accepted according to the“Specification Required”"Specification Required" policy of <xreftarget="RFC5226"/>.target="RFC8126" format="default" sectionFormat="of" derivedContent="RFC8126"/>. The registrationMUST<bcp14>MUST</bcp14> 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):</t><t><list style="symbols"> <t>restriction<ul spacing="normal" bare="false" empty="false" indent="3" pn="section-12.2-4"> <li pn="section-12.2-4.1">restriction name (as it will appear inSDP)</t> <t>anSDP)</li> <li pn="section-12.2-4.2">an explanation of the purpose of therestriction</t> <t>arestriction</li> <li pn="section-12.2-4.3">a specification of appropriate attribute values for thisrestriction</t> <t>anrestriction</li> <li pn="section-12.2-4.4">an ABNF definition of therestriction</t> </list></t> <t>Therestriction</li> </ul> <t indent="0" pn="section-12.2-5">The initial set of“a=rid”"a=rid" restriction names, with definitions in <xreftarget="sec-rid_level_restrictions"/>target="sec-rid_level_restrictions" format="default" sectionFormat="of" derivedContent="Section 5"/> of this document, is given below:</t><figure><artwork><![CDATA[ RID<table anchor="RID-params" align="center" pn="table-1"> <name slugifiedName="name-arid-restriction-names">"a=rid" restriction names</name> <thead> <tr> <th align="left" colspan="1" rowspan="1">RID ParameterName 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> <t>ItName</th> <th align="left" colspan="1" rowspan="1">Reference</th> </tr> </thead> <tbody> <tr> <td align="left" colspan="1" rowspan="1">pt</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> <tr> <td align="left" colspan="1" rowspan="1">max-width</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> <tr> <td align="left" colspan="1" rowspan="1">max-height</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> <tr> <td align="left" colspan="1" rowspan="1">max-fps</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> <tr> <td align="left" colspan="1" rowspan="1">max-fs</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> <tr> <td align="left" colspan="1" rowspan="1">max-br</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> <tr> <td align="left" colspan="1" rowspan="1">max-pps</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> <tr> <td align="left" colspan="1" rowspan="1">max-bpp</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> <tr> <td align="left" colspan="1" rowspan="1">depend</td> <td align="left" colspan="1" rowspan="1">RFC 8851</td> </tr> </tbody> </table> <t indent="0" pn="section-12.2-7">It is conceivable that a future documentwantswill want to defineaRID-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.</t> </section> </section> <section anchor="security-considerations"title="Security Considerations"> <t>Asnumbered="true" toc="include" removeInRFC="false" pn="section-13"> <name slugifiedName="name-security-considerations">Security Considerations</name> <t indent="0" pn="section-13-1">As with most SDP parameters, a failure to provide integrity protection over the“a=rid”"a=rid" attributesprovidesgives 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”"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.</t><t>The<t indent="0" pn="section-13-2">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 bythird-parties.</t> </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>third parties.</t> </section> </middle> <back> <referencestitle='Normative References'>pn="section-14"> <name slugifiedName="name-references">References</name> <references pn="section-14.1"> <name slugifiedName="name-normative-references">Normative References</name> <referenceanchor="I-D.ietf-avtext-rid">anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2119" quoteTitle="true" derivedAnchor="RFC2119"> <front><title>RTP Stream Identifier Source Description (SDES)</title> <author initials='A' surname='Roach' fullname='Adam Roach'> <organization /> </author> <author initials='S' surname='Nandakumar' fullname='Suhas Nandakumar'> <organization /> </author><title>Key words for use in RFCs to Indicate Requirement Levels</title> <authorinitials='P' surname='Thatcher' fullname='Peter Thatcher'>initials="S." surname="Bradner" fullname="S. Bradner"> <organization/>showOnFrontPage="true"/> </author> <datemonth='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 identification of RTP streams. The other, RepairedRtpStreamId, can be used to identify 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>Inyear="1997" month="March"/> <abstract> <t indent="0">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 Community, and requests discussion and suggestions forimprovements.</t></abstract>improvements.</t> </abstract> </front> <seriesInfoname='BCP' value='14'/>name="BCP" value="14"/> <seriesInfoname='RFC' value='2119'/>name="RFC" value="2119"/> <seriesInfoname='DOI' value='10.17487/RFC2119'/>name="DOI" value="10.17487/RFC2119"/> </reference> <reference anchor="RFC3264"target='https://www.rfc-editor.org/info/rfc3264'>target="https://www.rfc-editor.org/info/rfc3264" quoteTitle="true" derivedAnchor="RFC3264"> <front> <title>An Offer/Answer Model with Session Description Protocol (SDP)</title> <authorinitials='J.' surname='Rosenberg' fullname='J. Rosenberg'><organization /></author> <author initials='H.' surname='Schulzrinne' fullname='H. Schulzrinne'><organization /></author>initials="J." surname="Rosenberg" fullname="J. Rosenberg"> <organization showOnFrontPage="true"/> </author> <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne"> <organization showOnFrontPage="true"/> </author> <dateyear='2002' month='June' /> <abstract><t>Thisyear="2002" month="June"/> <abstract> <t indent="0">This document defines a mechanism by which two entities can make use of the Session Description Protocol (SDP) to arrive at a common view of a multimedia session between them. In the model, one participant offers the other a description of the desired session from their perspective, and the other participant answers with the desired session from their perspective. This offer/answer model is most useful in unicast sessions where information from both participants is needed for the complete view of the session. The offer/answer model is used by protocols like the Session Initiation Protocol (SIP).[STANDARDS-TRACK]</t></abstract>[STANDARDS-TRACK]</t> </abstract> </front> <seriesInfoname='RFC' value='3264'/>name="RFC" value="3264"/> <seriesInfoname='DOI' value='10.17487/RFC3264'/>name="DOI" value="10.17487/RFC3264"/> </reference> <reference anchor="RFC3550"target='https://www.rfc-editor.org/info/rfc3550'>target="https://www.rfc-editor.org/info/rfc3550" quoteTitle="true" derivedAnchor="RFC3550"> <front> <title>RTP: A Transport Protocol for Real-Time Applications</title> <authorinitials='H.' surname='Schulzrinne' fullname='H. Schulzrinne'><organization /></author> <author initials='S.' surname='Casner' fullname='S. Casner'><organization /></author> <author initials='R.' surname='Frederick' fullname='R. Frederick'><organization /></author> <author initials='V.' surname='Jacobson' fullname='V. Jacobson'><organization /></author>initials="H." surname="Schulzrinne" fullname="H. Schulzrinne"> <organization showOnFrontPage="true"/> </author> <author initials="S." surname="Casner" fullname="S. Casner"> <organization showOnFrontPage="true"/> </author> <author initials="R." surname="Frederick" fullname="R. Frederick"> <organization showOnFrontPage="true"/> </author> <author initials="V." surname="Jacobson" fullname="V. Jacobson"> <organization showOnFrontPage="true"/> </author> <dateyear='2003' month='July' /> <abstract><t>Thisyear="2003" month="July"/> <abstract> <t indent="0">This memorandum describes RTP, the real-time transport protocol. RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulation data, over multicast or unicast network services. RTP does not address resource reservation and does 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 delivery in a manner scalable to large multicast networks, and to provide minimal control and identification functionality. RTP and RTCP are designed to be independent of the underlying transport and network layers. The protocol supports the use of RTP-level translators and mixers. Most of the text in this memorandum is identical to RFC 1889 which it obsoletes. There are no changes in the packet formats on the wire, only changes to the rules and algorithms governing how the protocol is used. The biggest change is an enhancement to the scalable timer algorithm for calculating when to send RTCP packets in order to minimize transmission in excess of the intended rate when many participants join a session simultaneously.[STANDARDS-TRACK]</t></abstract>[STANDARDS-TRACK]</t> </abstract> </front> <seriesInfoname='STD' value='64'/>name="STD" value="64"/> <seriesInfoname='RFC' value='3550'/>name="RFC" value="3550"/> <seriesInfoname='DOI' value='10.17487/RFC3550'/>name="DOI" value="10.17487/RFC3550"/> </reference> <reference anchor="RFC4566"target='https://www.rfc-editor.org/info/rfc4566'>target="https://www.rfc-editor.org/info/rfc4566" quoteTitle="true" derivedAnchor="RFC4566"> <front> <title>SDP: Session Description Protocol</title> <authorinitials='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>initials="M." surname="Handley" fullname="M. Handley"> <organization showOnFrontPage="true"/> </author> <author initials="V." surname="Jacobson" fullname="V. Jacobson"> <organization showOnFrontPage="true"/> </author> <author initials="C." surname="Perkins" fullname="C. Perkins"> <organization showOnFrontPage="true"/> </author> <dateyear='2006' month='July' /> <abstract><t>Thisyear="2006" month="July"/> <abstract> <t indent="0">This memo defines the Session Description Protocol (SDP). SDP is intended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of multimedia session initiation.[STANDARDS-TRACK]</t></abstract>[STANDARDS-TRACK]</t> </abstract> </front> <seriesInfoname='RFC' value='4566'/>name="RFC" value="4566"/> <seriesInfoname='DOI' value='10.17487/RFC4566'/>name="DOI" value="10.17487/RFC4566"/> </reference> <reference anchor="RFC4855"target='https://www.rfc-editor.org/info/rfc4855'>target="https://www.rfc-editor.org/info/rfc4855" quoteTitle="true" derivedAnchor="RFC4855"> <front> <title>Media Type Registration of RTP Payload Formats</title> <authorinitials='S.' surname='Casner' fullname='S. Casner'><organization /></author>initials="S." surname="Casner" fullname="S. Casner"> <organization showOnFrontPage="true"/> </author> <dateyear='2007' month='February' /> <abstract><t>Thisyear="2007" month="February"/> <abstract> <t indent="0">This document specifies the procedure to register RTP payload formats as audio, video, or other media subtype names. This is useful in a text-based format description or control protocol to identify the type of an RTP transmission.[STANDARDS-TRACK]</t></abstract>[STANDARDS-TRACK]</t> </abstract> </front> <seriesInfoname='RFC' value='4855'/>name="RFC" value="4855"/> <seriesInfoname='DOI' value='10.17487/RFC4855'/>name="DOI" value="10.17487/RFC4855"/> </reference> <reference anchor="RFC5234"target='https://www.rfc-editor.org/info/rfc5234'>target="https://www.rfc-editor.org/info/rfc5234" quoteTitle="true" derivedAnchor="RFC5234"> <front> <title>Augmented BNF for Syntax Specifications: ABNF</title> <authorinitials='D.' surname='Crocker' fullname='D. Crocker' role='editor'><organization /></author> <author initials='P.' surname='Overell' fullname='P. Overell'><organization /></author>initials="D." surname="Crocker" fullname="D. Crocker" role="editor"> <organization showOnFrontPage="true"/> </author> <author initials="P." surname="Overell" fullname="P. Overell"> <organization showOnFrontPage="true"/> </author> <dateyear='2008' month='January' /> <abstract><t>Internetyear="2008" month="January"/> <abstract> <t indent="0">Internet technical specifications often need to define a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF), called Augmented BNF (ABNF), has been popular among many Internet specifications. The current specification documents ABNF. It balances compactness and simplicity with reasonable representational power. The differences between standard BNF and ABNF involve naming rules, repetition, alternatives, order-independence, and value ranges. This specification also supplies additional rule definitions and encoding for a core lexical analyzer of the type common to several Internet specifications.[STANDARDS-TRACK]</t></abstract>[STANDARDS-TRACK]</t> </abstract> </front> <seriesInfoname='STD' value='68'/>name="STD" value="68"/> <seriesInfoname='RFC' value='5234'/>name="RFC" value="5234"/> <seriesInfoname='DOI' value='10.17487/RFC5234'/>name="DOI" value="10.17487/RFC5234"/> </reference> <reference anchor="RFC7405"target='https://www.rfc-editor.org/info/rfc7405'>target="https://www.rfc-editor.org/info/rfc7405" quoteTitle="true" derivedAnchor="RFC7405"> <front> <title>Case-Sensitive String Support in ABNF</title> <authorinitials='P.' surname='Kyzivat' fullname='P. Kyzivat'><organization /></author>initials="P." surname="Kyzivat" fullname="P. Kyzivat"> <organization showOnFrontPage="true"/> </author> <dateyear='2014' month='December' /> <abstract><t>Thisyear="2014" month="December"/> <abstract> <t indent="0">This document extends the base definition of ABNF (Augmented Backus-Naur Form) to include a way to specify US-ASCII string literals that are matched in a case-sensitivemanner.</t></abstract>manner.</t> </abstract> </front> <seriesInfoname='RFC' value='7405'/>name="RFC" value="7405"/> <seriesInfoname='DOI' value='10.17487/RFC7405'/>name="DOI" value="10.17487/RFC7405"/> </reference> <reference anchor="RFC8174"target='https://www.rfc-editor.org/info/rfc8174'>target="https://www.rfc-editor.org/info/rfc8174" quoteTitle="true" derivedAnchor="RFC8174"> <front> <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title> <authorinitials='B.' surname='Leiba' fullname='B. Leiba'><organization /></author>initials="B." surname="Leiba" fullname="B. Leiba"> <organization showOnFrontPage="true"/> </author> <dateyear='2017' month='May' /> <abstract><t>RFCyear="2017" month="May"/> <abstract> <t indent="0">RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined specialmeanings.</t></abstract>meanings.</t> </abstract> </front> <seriesInfoname='BCP' value='14'/>name="BCP" value="14"/> <seriesInfoname='RFC' value='8174'/>name="RFC" value="8174"/> <seriesInfoname='DOI' value='10.17487/RFC8174'/>name="DOI" value="10.17487/RFC8174"/> </reference> <reference anchor="RFC8852" target="https://www.rfc-editor.org/info/rfc8852" quoteTitle="true" derivedAnchor="RFC8852"> <front> <title>RTP Stream Identifier Source Description (SDES)</title> <author initials="A.B." surname="Roach" fullname="Adam Roach"/> <author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar"/> <author initials="P" surname="Thatcher" fullname="Peter Thatcher"/> <date month="January" year="2021"/> </front> <seriesInfo name="RFC" value="8852"/> <seriesInfo name="DOI" value="10.17487/RFC8852"/> </reference> </references> <referencestitle='Informative References'>pn="section-14.2"> <name slugifiedName="name-informative-references">Informative References</name> <referenceanchor="I-D.ietf-mmusic-sdp-bundle-negotiation">anchor="H264" target="https://www.itu.int/rec/T-REC-H.264" quoteTitle="true" derivedAnchor="H264"> <front><title>Negotiating Media Multiplexing Using the Session Description Protocol (SDP)</title><title>Advanced video coding for generic audiovisual services</title> <seriesInfo name="ITU-T Recommendation" value="H.264"/> <author> <organization showOnFrontPage="true">International Telecommunication Union</organization> </author> <date year="2019" month="June"/> </front> </reference> <reference anchor="RFC2198" target="https://www.rfc-editor.org/info/rfc2198" quoteTitle="true" derivedAnchor="RFC2198"> <front> <title>RTP Payload for Redundant Audio Data</title> <authorinitials='C' surname='Holmberg' fullname='Christer Holmberg'>initials="C." surname="Perkins" fullname="C. Perkins"> <organization/>showOnFrontPage="true"/> </author> <authorinitials='H' surname='Alvestrand' fullname='Harald Alvestrand'>initials="I." surname="Kouvelas" fullname="I. Kouvelas"> <organization/>showOnFrontPage="true"/> </author> <authorinitials='C' surname='Jennings' fullname='Cullen Jennings'>initials="O." surname="Hodson" fullname="O. Hodson"> <organization/>showOnFrontPage="true"/> </author> <author initials="V." surname="Hardman" fullname="V. Hardman"> <organization showOnFrontPage="true"/> </author> <author initials="M." surname="Handley" fullname="M. Handley"> <organization showOnFrontPage="true"/> </author> <author initials="J.C." surname="Bolot" fullname="J.C. Bolot"> <organization showOnFrontPage="true"/> </author> <author initials="A." surname="Vega-Garcia" fullname="A. Vega-Garcia"> <organization showOnFrontPage="true"/> </author> <author initials="S." surname="Fosse-Parisis" fullname="S. Fosse-Parisis"> <organization showOnFrontPage="true"/> </author> <datemonth='December' day='14' year='2018' /> <abstract><t>This specification definesyear="1997" month="September"/> <abstract> <t indent="0">This document describes anew Session Description Protocol (SDP) Grouping Framework extension, 'BUNDLE'. The extension can be usedpayload format for use with theSDP Offer/Answer mechanism to negotiate the usage of a singlereal-time transport(5-tuple)protocol (RTP), version 2, forsending 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 transport form a BUNDLE group. This specification updates RFC 3264, to also allow assigning 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 5888, 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 defines 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 their appropriate "m=" section. This specification updates RFC 7941, by adding an exception, for the MID RTP header extension, to the requirement regarding protection of an SDES RTP header extension carrying an SDES item for the MID RTP header extension.</t></abstract> </front> <seriesInfo name='Internet-Draft' value='draft-ietf-mmusic-sdp-bundle-negotiation-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 identification method to identify RTP streams belonging to the same media source, and makes an extension to SDP to relate those RTP streams as being different simulcast formats of that media source. The SDP extension consists of a new media level SDP attribute that expresses capability to send and/or receive simulcast RTP 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-simulcast-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 interleaved parity codes from source media encapsulated in RTP. These parity codes are systematic codes, where a number of FEC repair packets are generated from a set of 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 can be reconstructed using the source and repair packets that were received. The non-interleaved and interleaved parity codes which are defined in this specification offer a good protection against random and bursty packet losses, respectively, at a cost of decent complexity. The RTP payload formats that are defined in this document address scalability issues experienced with the earlier specifications, and offer several improvements. Due to these changes, the new payload formats are not backward compatible with earlier specifications, but endpoints that 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 /></author> <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'><organization /></author> <author initials='S.' surname='Fosse-Parisis' fullname='S. Fosse-Parisis'><organization /></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. [STANDARDS-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 /></author> <author initials='R.' surname='Hakenberg' fullname='R. Hakenberg'><organization /></author> <date year='2006' month='July' /> <abstract><t>RTP retransmissionencoding redundant audio data. [STANDARDS-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" quoteTitle="true" derivedAnchor="RFC4588"> <front> <title>RTP Retransmission Payload Format</title> <author initials="J." surname="Rey" fullname="J. Rey"> <organization showOnFrontPage="true"/> </author> <author initials="D." surname="Leon" fullname="D. Leon"> <organization showOnFrontPage="true"/> </author> <author initials="A." surname="Miyazaki" fullname="A. Miyazaki"> <organization showOnFrontPage="true"/> </author> <author initials="V." surname="Varsa" fullname="V. Varsa"> <organization showOnFrontPage="true"/> </author> <author initials="R." surname="Hakenberg" fullname="R. Hakenberg"> <organization showOnFrontPage="true"/> </author> <date year="2006" month="July"/> <abstract> <t indent="0">RTP retransmission is an effective packet loss recovery technique for real-time applications with relaxed delay bounds. This document describes an RTP payload format for performing retransmissions. Retransmitted RTP packets are sent in a separate stream from the original RTP stream. It is assumed that feedback from receivers to senders is available. In particular, it is assumed that Real-time Transport Control Protocol (RTCP) feedback as defined in the extended RTP profile for RTCP-based feedback (denoted RTP/AVPF) is available in this memo.[STANDARDS-TRACK]</t></abstract>[STANDARDS-TRACK]</t> </abstract> </front> <seriesInfoname='RFC' value='4588'/>name="RFC" value="4588"/> <seriesInfoname='DOI' value='10.17487/RFC4588'/>name="DOI" value="10.17487/RFC4588"/> </reference> <reference anchor="RFC5109"target='https://www.rfc-editor.org/info/rfc5109'>target="https://www.rfc-editor.org/info/rfc5109" quoteTitle="true" derivedAnchor="RFC5109"> <front> <title>RTP Payload Format for Generic Forward Error Correction</title> <authorinitials='A.' surname='Li' fullname='A. Li' role='editor'><organization /></author>initials="A." surname="Li" fullname="A. Li" role="editor"> <organization showOnFrontPage="true"/> </author> <dateyear='2007' month='December' /> <abstract><t>Thisyear="2007" month="December"/> <abstract> <t indent="0">This document specifies a payload format for generic Forward Error Correction (FEC) for media data encapsulated in RTP. It is based on the exclusive-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 hosts, so the receivers in a multicast group that do not implement FEC can still work by simply ignoring the protection data. This specification obsoletes RFC 2733 and RFC 3009. The FEC specified in this document is not backward compatible with RFC 2733 and RFC 3009.[STANDARDS-TRACK]</t></abstract>[STANDARDS-TRACK]</t> </abstract> </front> <seriesInfoname='RFC' value='5109'/>name="RFC" value="5109"/> <seriesInfoname='DOI' value='10.17487/RFC5109'/>name="DOI" value="10.17487/RFC5109"/> </reference> <referenceanchor="RFC5226" target='https://www.rfc-editor.org/info/rfc5226'>anchor="RFC6184" target="https://www.rfc-editor.org/info/rfc6184" quoteTitle="true" derivedAnchor="RFC6184"> <front><title>Guidelines<title>RTP Payload Format forWriting an IANA Considerations Section in RFCs</title>H.264 Video</title> <authorinitials='T.' surname='Narten' fullname='T. Narten'><organization /></author> <author initials='H.' surname='Alvestrand' fullname='H. Alvestrand'><organization /></author>initials="Y.-K." surname="Wang" fullname="Y.-K. Wang"> <organization showOnFrontPage="true"/> </author> <author initials="R." surname="Even" fullname="R. Even"> <organization showOnFrontPage="true"/> </author> <author initials="T." surname="Kristensen" fullname="T. Kristensen"> <organization showOnFrontPage="true"/> </author> <author initials="R." surname="Jesup" fullname="R. Jesup"> <organization showOnFrontPage="true"/> </author> <dateyear='2008' month='May' /> <abstract><t>Many protocols make use of identifiers consisting of constantsyear="2011" month="May"/> <abstract> <t indent="0">This memo describes an RTP Payload format for the ITU-T Recommendation H.264 video codec andother well-known values. Even after a protocol has been definedthe technically identical ISO/IEC International Standard 14496-10 video codec, excluding the Scalable Video Coding (SVC) extension anddeployment has begun, new values may need to be assigned (e.g.,the Multiview Video Coding extension, fora new option type in DHCP, or a new encryption or authentication transformwhich the RTP payload formats are defined elsewhere. The RTP payload format allows forIPsec). To ensure that such quantities have consistent values and interpretations across all implementations, their assignment must be administered by a central authority. For IETF protocols, that role is providedpacketization of one or more Network Abstraction Layer Units (NALUs), produced bythean H.264 video encoder, in each RTP payload. The payload format has wide applicability, as it supports applications from simple low bitrate conversational usage, to InternetAssigned Numbers Authority (IANA).</t><t>In order for IANAvideo streaming with interleaved transmission, tomanage a given namespace prudently, it needs guidelines describinghigh bitrate video-on-demand.</t> <t indent="0">This memo obsoletes RFC 3984. Changes from RFC 3984 are summarized in Section 14. Issues on backward compatibility to RFC 3984 are discussed in Section 15. [STANDARDS-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" quoteTitle="true" derivedAnchor="RFC6236"> <front> <title>Negotiation of Generic Image Attributes in theconditions under whichSession Description Protocol (SDP)</title> <author initials="I." surname="Johansson" fullname="I. Johansson"> <organization showOnFrontPage="true"/> </author> <author initials="K." surname="Jung" fullname="K. Jung"> <organization showOnFrontPage="true"/> </author> <date year="2011" month="May"/> <abstract> <t indent="0">This document proposes a newvalues can be assigned or when modificationsgeneric session setup attribute toexisting values can be made. If IANAmake it possible to negotiate different image attributes such as image size. A possible use case isexpectedtoplaymake it possible for arole in\%low-end \%hand- held terminal to display video without the need to rescale themanagementimage, something that may consume large amounts ofa namespace, IANA must be given clearmemory andconcise instructions describing that role. Thisprocessing power. The documentdiscusses issues that should be considered in formulating a policy for assigning valuesalso helps toa namespace and provides guidelinesmaintain an optimal bitrate forauthors onvideo as only thespecific textimage size thatmustis desired by the receiver 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" quoteTitle="true" derivedAnchor="RFC7656"> <front> <title>A Taxonomy of Semantics and Mechanisms for Real-Time Transport Protocol (RTP) Sources</title> <author initials="J." surname="Lennox" fullname="J. Lennox"> <organization showOnFrontPage="true"/> </author> <author initials="K." surname="Gross" fullname="K. Gross"> <organization showOnFrontPage="true"/> </author> <author initials="S." surname="Nandakumar" fullname="S. Nandakumar"> <organization showOnFrontPage="true"/> </author> <author initials="G." surname="Salgueiro" fullname="G. Salgueiro"> <organization showOnFrontPage="true"/> </author> <author initials="B." surname="Burman" fullname="B. Burman" role="editor"> <organization showOnFrontPage="true"/> </author> <date year="2015" month="November"/> <abstract> <t indent="0">The terminology about, and associations among, Real-time Transport Protocol (RTP) sources can beincluded in documents that place demands on IANA.</t><t>This document obsoletes RFC 2434.complex and somewhat opaque. This documentspecifies an Internet Best Current Practices for the Internet Community,describes a number of existing andrequests discussionproposed properties andsuggestionsrelationships among RTP sources and defines common terminology forimprovements.</t></abstract>discussing protocol entities and their relationships.</t> </abstract> </front> <seriesInfoname='RFC' value='5226'/>name="RFC" value="7656"/> <seriesInfoname='DOI' value='10.17487/RFC5226'/>name="DOI" value="10.17487/RFC7656"/> </reference> <referenceanchor="RFC6184" target='https://www.rfc-editor.org/info/rfc6184'>anchor="RFC7741" target="https://www.rfc-editor.org/info/rfc7741" quoteTitle="true" derivedAnchor="RFC7741"> <front> <title>RTP Payload Format forH.264VP8 Video</title> <authorinitials='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'><organization /></author> <author initials='R.' surname='Jesup' fullname='R. Jesup'><organization /></author> <date year='2011' month='May' /> <abstract><t>This memo describes an RTP Payload format for the ITU-T Recommendation H.264 video codec and the technically identical ISO/IEC International Standard 14496-10 video codec, excluding the Scalable Video Coding (SVC) extension and the Multiview Video Coding extension, for which the RTP payload formats are defined elsewhere. Theinitials="P." surname="Westin" fullname="P. Westin"> <organization showOnFrontPage="true"/> </author> <author initials="H." surname="Lundin" fullname="H. Lundin"> <organization showOnFrontPage="true"/> </author> <author initials="M." surname="Glover" fullname="M. Glover"> <organization showOnFrontPage="true"/> </author> <author initials="J." surname="Uberti" fullname="J. Uberti"> <organization showOnFrontPage="true"/> </author> <author initials="F." surname="Galligan" fullname="F. Galligan"> <organization showOnFrontPage="true"/> </author> <date year="2016" month="March"/> <abstract> <t indent="0">This memo describes an RTP payload formatallowsforpacketization of one or more Network Abstraction Layer Units (NALUs), produced by an H.264the VP8 videoencoder, in each RTP payload.codec. The payload format has wide applicability, as it supports applications fromsimple low bitrate conversational usage,low-bitrate peer-to-peer usage toInternethigh-bitrate videostreaming with interleaved transmission, to high bitrate video-on-demand.</t><t>This memo obsoletes RFC 3984. Changes from RFC 3984 are summarized in Section 14. Issues on backward compatibility to RFC 3984 are discussed in Section 15. [STANDARDS-TRACK]</t></abstract>conferences.</t> </abstract> </front> <seriesInfoname='RFC' value='6184'/>name="RFC" value="7741"/> <seriesInfoname='DOI' value='10.17487/RFC6184'/>name="DOI" value="10.17487/RFC7741"/> </reference> <referenceanchor="RFC6236" target='https://www.rfc-editor.org/info/rfc6236'>anchor="RFC8126" target="https://www.rfc-editor.org/info/rfc8126" quoteTitle="true" derivedAnchor="RFC8126"> <front><title>Negotiation of Generic Image Attributes<title>Guidelines for Writing an IANA Considerations Section inthe Session Description Protocol (SDP)</title>RFCs</title> <author initials="M." surname="Cotton" fullname="M. Cotton"> <organization showOnFrontPage="true"/> </author> <author initials="B." surname="Leiba" fullname="B. Leiba"> <organization showOnFrontPage="true"/> </author> <authorinitials='I.' surname='Johansson' fullname='I. Johansson'><organization /></author> <author initials='K.' surname='Jung' fullname='K. Jung'><organization /></author>initials="T." surname="Narten" fullname="T. Narten"> <organization showOnFrontPage="true"/> </author> <dateyear='2011' month='May' /> <abstract><t>This document proposes a new generic session setup attribute toyear="2017" month="June"/> <abstract> <t indent="0">Many protocols makeit possible to negotiate different image attributes such as image size. A possibleusecase isof points of extensibility that use constants to identify various protocol parameters. To ensure that the values in these fields do not have conflicting uses and to promote interoperability, their allocations are often coordinated by a central record keeper. For IETF protocols, that role is filled by the Internet Assigned Numbers Authority (IANA).</t> <t indent="0">To makeit possible forassignments in a\%low-end \%hand- held terminal to display video withoutgiven registry prudently, guidance describing theneedconditions under which new values should be assigned, as well as when and how modifications torescaleexisting values can be made, is needed. This document defines a framework for theimage, something that may consume large amountsdocumentation ofmemory and processing power. The document also helpsthese guidelines by specification authors, in order tomaintain an optimal bitrateassure that the provided guidance forvideo as onlytheimage sizeIANA Considerations is clear and addresses the various issues thatis desired byare likely in thereceiveroperation of a registry.</t> <t indent="0">This istransmitted. [STANDARDS-TRACK]</t></abstract>the third edition of this document; it obsoletes RFC 5226.</t> </abstract> </front> <seriesInfoname='RFC' value='6236'/>name="BCP" value="26"/> <seriesInfoname='DOI' value='10.17487/RFC6236'/>name="RFC" value="8126"/> <seriesInfo name="DOI" value="10.17487/RFC8126"/> </reference> <referenceanchor="RFC7656" target='https://www.rfc-editor.org/info/rfc7656'>anchor="RFC8285" target="https://www.rfc-editor.org/info/rfc8285" quoteTitle="true" derivedAnchor="RFC8285"> <front> <title>ATaxonomy of Semantics and MechanismsGeneral Mechanism forReal-Time Transport Protocol (RTP) Sources</title>RTP Header Extensions</title> <author initials="D." surname="Singer" fullname="D. Singer"> <organization showOnFrontPage="true"/> </author> <author initials="H." surname="Desineni" fullname="H. Desineni"> <organization showOnFrontPage="true"/> </author> <authorinitials='J.' surname='Lennox' fullname='J. Lennox'><organization /></author> <author initials='K.' surname='Gross' fullname='K. Gross'><organization /></author> <author initials='S.' surname='Nandakumar' fullname='S. Nandakumar'><organization /></author> <author initials='G.' surname='Salgueiro' fullname='G. Salgueiro'><organization /></author> <author initials='B.' surname='Burman' fullname='B. Burman' role='editor'><organization /></author>initials="R." surname="Even" fullname="R. Even" role="editor"> <organization showOnFrontPage="true"/> </author> <dateyear='2015' month='November' /> <abstract><t>The terminology about, and associations among,year="2017" month="October"/> <abstract> <t indent="0">This document provides a general mechanism to use the header extension feature of RTP (the Real-time TransportProtocol (RTP) sources can be complex and somewhat opaque. This document describesProtocol). It provides the option to use a small number ofexisting and proposed properties and relationships amongsmall extensions in each RTPsourcespacket, where the universe of possible extensions is large anddefines common terminologyregistration is decentralized. The actual extensions in use in a session are signaled in the setup information fordiscussing protocol entities and their relationships.</t></abstract>that session. This document obsoletes RFC 5285.</t> </abstract> </front> <seriesInfoname='RFC' value='7656'/>name="RFC" value="8285"/> <seriesInfoname='DOI' value='10.17487/RFC7656'/>name="DOI" value="10.17487/RFC8285"/> </reference> <referenceanchor="RFC7741" target='https://www.rfc-editor.org/info/rfc7741'>anchor="RFC8627" target="https://www.rfc-editor.org/info/rfc8627" quoteTitle="true" derivedAnchor="RFC8627"> <front> <title>RTP Payload Format forVP8 Video</title>Flexible Forward Error Correction (FEC)</title> <author initials="M." surname="Zanaty" fullname="M. Zanaty"> <organization showOnFrontPage="true"/> </author> <author initials="V." surname="Singh" fullname="V. Singh"> <organization showOnFrontPage="true"/> </author> <author initials="A." surname="Begen" fullname="A. Begen"> <organization showOnFrontPage="true"/> </author> <authorinitials='P.' surname='Westin' fullname='P. Westin'><organization /></author> <author initials='H.' surname='Lundin' fullname='H. Lundin'><organization /></author> <author initials='M.' surname='Glover' fullname='M. Glover'><organization /></author> <author initials='J.' surname='Uberti' fullname='J. Uberti'><organization /></author> <author initials='F.' surname='Galligan' fullname='F. Galligan'><organization /></author>initials="G." surname="Mandyam" fullname="G. Mandyam"> <organization showOnFrontPage="true"/> </author> <dateyear='2016' month='March' /> <abstract><t>This memo describes anyear="2019" month="July"/> <abstract> <t indent="0">This document defines new RTP payloadformatformats for theVP8 video codec. The payload format has wide applicability, as it supports applicationsForward Error Correction (FEC) packets that are generated by the non-interleaved and interleaved parity codes fromlow-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'> <front> <title>A General Mechanism forsource media encapsulated in RTP. These parity codes are systematic codes (Flexible FEC, or "FLEX FEC"), where a number of FEC repair packets are generated from a set of source packets from one or more source RTPHeader Extensions</title> <author initials='D.' surname='Singer' fullname='D. Singer'><organization /></author> <author initials='H.' surname='Desineni' fullname='H. Desineni'><organization /></author> <author initials='R.' surname='Even' fullname='R. Even' role='editor'><organization /></author> <date year='2017' month='October' /> <abstract><t>This document providesstreams. These FEC repair packets are sent in ageneral mechanism to useredundancy RTP stream separate from theheader extension feature ofsource RTP(the Real-time Transport Protocol). It providesstream(s) that carries theoption to use a small number of small extensions in eachsource packets. RTPpacket, wheresource packets that were lost in transmission can be reconstructed using theuniverse of possible extensions is largesource andregistration is decentralized.repair packets that were received. Theactual extensions in usenon-interleaved and interleaved parity codes that are defined in this specification offer asessiongood protection against random and bursty packet losses, respectively, at a cost of complexity. The RTP payload formats that aresignaleddefined in this document address scalability issues experienced with thesetup information forearlier specifications and offer several improvements. Due to these changes, the new payload formats are not backward compatible with earlier specifications; however, endpoints thatsession. This document obsoletes RFC 5285.</t></abstract>do not implement this specification can still work by simply ignoring the FEC repair packets.</t> </abstract> </front> <seriesInfoname='RFC' value='8285'/>name="RFC" value="8627"/> <seriesInfoname='DOI' value='10.17487/RFC8285'/>name="DOI" value="10.17487/RFC8627"/> </reference> <referenceanchor="H264" target="http://www.itu.int/rec/T-REC-H.264-201304-I">anchor="RFC8843" target="https://www.rfc-editor.org/info/rfc8843" quoteTitle="true" derivedAnchor="RFC8843"> <front><title>Advanced video coding for generic audiovisual services (V9)</title><title>Negotiating Media Multiplexing Using the Session Description Protocol (SDP)</title> <author> <organization>ITU-T Recommendation H.264</organization>initials="C" surname="Holmberg" fullname="Christer Holmberg"> <organization showOnFrontPage="true"/> </author> <author initials="H" surname="Alvestrand" fullname="Harald Alvestrand"> <organization showOnFrontPage="true"/> </author> <author initials="C" surname="Jennings" fullname="Cullen Jennings"> <organization showOnFrontPage="true"/> </author> <dateyear="2014" month="February"/>month="January" year="2021"/> </front> <seriesInfo name="RFC" value="8843"/> <seriesInfo name="DOI" value="10.17487/RFC8843"/> </reference> <reference anchor="RFC8853" target="https://www.rfc-editor.org/info/rfc8853" quoteTitle="true" derivedAnchor="RFC8853"> <front> <title>Using Simulcast in Session Description Protocol (SDP) and RTP Sessions</title> <author initials="B" surname="Burman" fullname="Bo Burman"> <organization showOnFrontPage="true"/> </author> <author initials="M" surname="Westerlund" fullname="Magnus Westerlund"> <organization showOnFrontPage="true"/> </author> <author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar"> <organization showOnFrontPage="true"/> </author> <author initials="M" surname="Zanaty" fullname="Mo Zanaty"> <organization showOnFrontPage="true"/> </author> <date month="January" year="2021"/> </front> <seriesInfo name="RFC" value="8853"/> <seriesInfo name="DOI" value="10.17487/RFC8853"/> </reference> </references> </references> <section anchor="acknowledgements" numbered="false" toc="include" removeInRFC="false" pn="section-appendix.a"> <name slugifiedName="name-acknowledgements">Acknowledgements</name> <t indent="0" pn="section-appendix.a-1">Many thanks to <contact fullname="Cullen Jennings"/>, <contact fullname="Magnus Westerlund"/>, and <contact fullname="Paul Kyzivat"/> for reviewing. Thanks to <contact fullname="Colin Perkins"/> for input on future payload type handling.</t> </section> <section anchor="contributors"title="Contributors"> <t>Thenumbered="false" toc="include" removeInRFC="false" pn="section-appendix.b"> <name slugifiedName="name-contributors">Contributors</name> <t indent="0" pn="section-appendix.b-1">The following individuals have contributed significant text to this document.</t><figure><artwork><![CDATA[ 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 ]]></artwork></figure><contact fullname="Peter Thatcher"> <organization showOnFrontPage="true">Google</organization> <address> <email>pthatcher@google.com</email> </address> </contact> <contact fullname="Mo Zanaty"> <organization showOnFrontPage="true">Cisco Systems</organization> <address> <email>mzanaty@cisco.com</email> </address> </contact> <contact fullname="Suhas Nandakumar"> <organization showOnFrontPage="true">Cisco Systems</organization> <address> <email>snandaku@cisco.com</email> </address> </contact> <contact fullname="Bo Burman"> <organization showOnFrontPage="true">Ericsson</organization> <address> <email>bo.burman@ericsson.com</email> </address> </contact> <contact fullname="Byron Campen"> <organization showOnFrontPage="true">Mozilla</organization> <address> <email>bcampen@mozilla.com</email> </address> </contact> </section> <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc="include" pn="section-appendix.c"> <name slugifiedName="name-authors-address">Author's Address</name> <author initials="A.B." surname="Roach" fullname="Adam Roach" role="editor"> <organization showOnFrontPage="true">Mozilla</organization> <address> <email>adam@nostrum.com</email> </address> </author> </section> </back><!-- ##markdown-source: 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 3+yMonc44vtXL3c6X43si7fr3cHkbJ3O0+UNFs7F8i918BHaWDgi7EqWo69r lk5OR89ol+r70/ArHPv46c7xUfRsz+4ORgf8aIlOppM9aQRsjh/s64QAOgd8 zx2gxvFxH1o/Y9Pr9HDfzxs+O3Sfwaj946fw6Qg/N5E/OqU8Gq58//L0sHVS uatwAxA2NgH0w9VsxSgnis92H3d468ch7Br8RrhuvSgWM8xLfFtkVbpN7BmX vvXy6s1r6C1Pq+21+2INjnRIGV/CHTVHE4eFXRRG1g84BpK0J9zoNi4T5Swy J4/oAyaN8zo+ovlrLh2OE/SPRcp1MXlBac0AGL8MYMUXUadHmr7aLshB1b04 hQofNHp8mRUcjDwsa2Y9nfc3QS9rU6OMKZx76u47hX6Cypy0rZHukNUSgdcA NsKfwR/vv4OOLzqpwWvU4tbngqlSa85rQiMpiCpwqjCDzVcIpV2TC23WhVY7 S4vrOHBCGeff8mz9FYWBC8adDhLwb7q0QpXuRbooNF+Tinex4yVy3mEeS5Ln mqwdHhbMqZS88+vAgJG/lfUh6T69xxovGWZGokqWcoKAL9LaumDcdcQKGn3c XpDfgLn9UaqisrFDhVZbVUv/K26u6AdHNpIKi4yDNKQYv7ssay2pAiNW+7sH KP31WJRxael3es0FHw5qHxnZZCStX+lK/A6PXEotIfl3av+t4n5Pelob6PKC fk0zOq+x9u+v9HZZs1ueLkUCi5Oe+Qe/8WDQW/Dv1I6+3Urmy5tkAJZZiofG dmxv0MP//djbNiZ+x02+Yz04uHzE3elrv+dRYKbRKLAkrlOwgz+lzuP6pE91 pXq3k/12q/es55eyLa18E+peWtHjDU1cj35GfNZ8gYPYXp9/wtf4f/G/Ry2Z B/dN8BkF+PhN58bxJnHo7cHPZsvq4W8e/mRcPvjJ8hEjjZfLB7/h0MrDw9Fu cqqRaYHNyl65YHMPsL1Hp/sVc8CQVuQOIRk05MdfbOmAS/NyLcl1+aVmYaug 2Zdb6Ra0WqGz+gutlt1TXD4wRbdRrcGWS21GNe7XG4a7Jw350SlTF1JTSI5s AG7mKdsy3NpAnix5hsKmhCrlLyDMeHlWhnp5/uP5FVBtaxHBS9sb9vyHcQ/c Cwz1b/d7u4ODI2RQ94e7g6ev7HYnyj6jCk6YDCbxrJsEAzdU1I20oypdZJNi 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 Aajy8WcqtwAA --></rfc>