| rfc8854xml2.original.xml | rfc8854.xml | |||
|---|---|---|---|---|
| <?xml version='1.0' encoding='utf-8'?> | ||||
| <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | ||||
| nsus="true" docName="draft-ietf-rtcweb-fec-10" indexInclude="true" ipr="trust200 | ||||
| 902" number="8854" prepTime="2021-01-17T12:21:57" scripts="Common,Latin" sortRef | ||||
| s="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude="true" xml | ||||
| :lang="en"> | ||||
| <link href="https://datatracker.ietf.org/doc/draft-ietf-rtcweb-fec-10" rel="pr | ||||
| ev"/> | ||||
| <link href="https://dx.doi.org/10.17487/rfc8854" rel="alternate"/> | ||||
| <link href="urn:issn:2070-1721" rel="alternate"/> | ||||
| <front> | ||||
| <title abbrev="WebRTC FEC">WebRTC Forward Error Correction Requirements</tit | ||||
| le> | ||||
| <seriesInfo name="RFC" value="8854" stream="IETF"/> | ||||
| <author fullname="Justin Uberti" initials="J." surname="Uberti"> | ||||
| <organization showOnFrontPage="true">Google</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>747 6th St S</street> | ||||
| <city>Kirkland</city> | ||||
| <region>WA</region> | ||||
| <code>98033</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>justin@uberti.name</email> | ||||
| </address> | ||||
| </author> | ||||
| <date month="01" year="2021"/> | ||||
| <area>RAI</area> | ||||
| <keyword>RTP</keyword> | ||||
| <keyword>FEC</keyword> | ||||
| <abstract pn="section-abstract"> | ||||
| <t indent="0" pn="section-abstract-1">This document provides information a | ||||
| nd requirements for the use of Forward | ||||
| Error Correction (FEC) by WebRTC implementations.</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/rfc8854" brackets="non | ||||
| e"/>. | ||||
| </t> | ||||
| </section> | ||||
| <section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
| ude" 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" p | ||||
| n="section-toc.1"> | ||||
| <name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
| c.1-1"> | ||||
| <li pn="section-toc.1-1.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
| ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
| Introduction</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref der | ||||
| ivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-terminology">T | ||||
| erminology</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3"> | ||||
| <t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | ||||
| at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-types-of-fec">Types of FEC</xref>< | ||||
| /t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.3.2"> | ||||
| <li pn="section-toc.1-1.3.2.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.3.2.1.1">< | ||||
| xref derivedContent="3.1" format="counter" sectionFormat="of" target="section-3. | ||||
| 1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-se | ||||
| parate-fec-stream">Separate FEC Stream</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.2.1"><xref derivedContent= | ||||
| "3.2" format="counter" sectionFormat="of" target="section-3.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-redundant-encoding">Re | ||||
| dundant Encoding</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.3.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.3.2.3.1"><xref derivedContent= | ||||
| "3.3" format="counter" sectionFormat="of" target="section-3.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-codec-specific-in-band | ||||
| -fec">Codec-Specific In-Band FEC</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4"> | ||||
| <t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
| at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-fec-for-audio-content">FEC for Aud | ||||
| io Content</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.4.2"> | ||||
| <li pn="section-toc.1-1.4.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.1.1"><xref derivedContent= | ||||
| "4.1" format="counter" sectionFormat="of" target="section-4.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-recommended-mechanism" | ||||
| >Recommended Mechanism</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.4.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.4.2.2.1"><xref derivedContent= | ||||
| "4.2" format="counter" sectionFormat="of" target="section-4.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-negotiating-support">N | ||||
| egotiating Support</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
| at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-fec-for-video-content">FEC for Vid | ||||
| eo Content</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.5.2"> | ||||
| <li pn="section-toc.1-1.5.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.1.1"><xref derivedContent= | ||||
| "5.1" format="counter" sectionFormat="of" target="section-5.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-recommended-mechanism- | ||||
| 2">Recommended Mechanism</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.2.1"><xref derivedContent= | ||||
| "5.2" format="counter" sectionFormat="of" target="section-5.2"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-negotiating-support-2" | ||||
| >Negotiating Support</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.6"> | ||||
| <t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
| at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-fec-for-application-content">FEC f | ||||
| or Application Content</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.7"> | ||||
| <t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="7" form | ||||
| at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-implementation-requirements">Imple | ||||
| mentation Requirements</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.8"> | ||||
| <t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="8" form | ||||
| at="counter" sectionFormat="of" target="section-8"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-adaptive-use-of-fec">Adaptive Use | ||||
| of FEC</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.9"> | ||||
| <t indent="0" pn="section-toc.1-1.9.1"><xref derivedContent="9" form | ||||
| at="counter" sectionFormat="of" target="section-9"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
| Considerations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.10"> | ||||
| <t indent="0" pn="section-toc.1-1.10.1"><xref derivedContent="10" fo | ||||
| rmat="counter" sectionFormat="of" target="section-10"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-iana-considerations">IANA Consid | ||||
| erations</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.11"> | ||||
| <t indent="0" pn="section-toc.1-1.11.1"><xref derivedContent="11" fo | ||||
| rmat="counter" sectionFormat="of" target="section-11"/>. <xref derivedContent="" | ||||
| format="title" sectionFormat="of" target="name-references">References</xref></t | ||||
| > | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-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 deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-normative-reference | ||||
| s">Normative References</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 deri | ||||
| vedContent="" format="title" sectionFormat="of" target="name-informative-referen | ||||
| ces">Informative References</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.12"> | ||||
| <t indent="0" pn="section-toc.1-1.12.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgeme | ||||
| nts</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.13"> | ||||
| <t indent="0" pn="section-toc.1-1.13.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-authors-address">Author's Addre | ||||
| ss</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | ||||
| <middle> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-1"> | ||||
| <name slugifiedName="name-introduction">Introduction</name> | ||||
| <t indent="0" pn="section-1-1">In situations where packet loss is high, or | ||||
| perfect media quality is | ||||
| essential, Forward Error Correction (FEC) can be used to proactively | ||||
| recover from packet losses. This specification provides guidance on which | ||||
| FEC mechanisms to use, and how to use them, for WebRTC | ||||
| implementations.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2"> | ||||
| <name slugifiedName="name-terminology">Terminology</name> | ||||
| <t indent="0" pn="section-2-1">The key words "<bcp14>MUST</bcp14>", "<bcp1 | ||||
| 4>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14> | ||||
| SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp1 | ||||
| 4>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | ||||
| "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are t | ||||
| o be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119" format="default" sectionFormat= | ||||
| "of" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionF | ||||
| ormat="of" derivedContent="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-3"> | ||||
| <name slugifiedName="name-types-of-fec">Types of FEC</name> | ||||
| <t indent="0" pn="section-3-1">FEC describes the sending of redundant info | ||||
| rmation in an outgoing | ||||
| packet stream so that information can still be recovered even in the event | ||||
| of packet loss. There are multiple ways this can be accomplished | ||||
| for RTP media streams <xref target="RFC3550" format="default" sectionForma | ||||
| t="of" derivedContent="RFC3550"/>; this section enumerates | ||||
| the various mechanisms available and describes their trade-offs.</t> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-3.1 | ||||
| "> | ||||
| <name slugifiedName="name-separate-fec-stream">Separate FEC Stream</name | ||||
| > | ||||
| <t indent="0" pn="section-3.1-1">This approach, as described in <xref ta | ||||
| rget="RFC5956" sectionFormat="comma" section="4.3" format="default" derivedLink= | ||||
| "https://rfc-editor.org/rfc/rfc5956#section-4.3" derivedContent="RFC5956"/>, | ||||
| sends FEC packets as an independent RTP stream with its own | ||||
| synchronization source (SSRC) <xref target="RFC3550" format="default" se | ||||
| ctionFormat="of" derivedContent="RFC3550"/> and payload | ||||
| type, multiplexed with the primary encoding. While this approach can | ||||
| protect multiple packets of the | ||||
| primary encoding with a single FEC packet, each FEC packet will have its | ||||
| own IP/UDP/RTP/FEC header, and this overhead can be excessive in some | ||||
| cases, e.g., when protecting each primary packet with a FEC packet.</t> | ||||
| <t indent="0" pn="section-3.1-2">This approach allows for recovery of en | ||||
| tire RTP packets, including | ||||
| the full RTP header.</t> | ||||
| </section> | ||||
| <section anchor="redundant-encoding" numbered="true" toc="include" removeI | ||||
| nRFC="false" pn="section-3.2"> | ||||
| <name slugifiedName="name-redundant-encoding">Redundant Encoding</name> | ||||
| <t indent="0" pn="section-3.2-1">This approach, as described in | ||||
| <xref target="RFC2198" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC2198"/>, allows for redundant data to be piggybacked | ||||
| on an existing primary encoding, all in a single packet. This redundant | ||||
| data may be an exact copy of a previous payload, or for codecs that | ||||
| support variable-bitrate encodings, the redundant data may possibly be a | ||||
| smaller, lower-quality | ||||
| representation. In certain cases, the redundant data could include | ||||
| encodings of multiple prior audio frames.</t> | ||||
| <t indent="0" pn="section-3.2-2">Since there is only a single set of pac | ||||
| ket headers, this approach | ||||
| allows for a very efficient representation of primary and redundant data | ||||
| . | ||||
| However, this savings is only realized when the data all fits into a | ||||
| single packet (i.e. the size is less than a MTU). As a result, this | ||||
| approach is generally not useful for video content.</t> | ||||
| <t indent="0" pn="section-3.2-3">As described in | ||||
| <xref target="RFC2198" sectionFormat="comma" section="4" format="default | ||||
| " derivedLink="https://rfc-editor.org/rfc/rfc2198#section-4" derivedContent="RFC | ||||
| 2198"/>, this approach cannot recover | ||||
| certain parts of the RTP header, including the marker bit, contributing | ||||
| source (CSRC) | ||||
| information, and header extensions.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-3.3 | ||||
| "> | ||||
| <name slugifiedName="name-codec-specific-in-band-fec">Codec-Specific In- | ||||
| Band FEC</name> | ||||
| <t indent="0" pn="section-3.3-1">Some audio codecs, notably Opus | ||||
| <xref target="RFC6716" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC6716"/> and Adaptive Multi-Rate (AMR) | ||||
| <xref target="RFC4867" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC4867"/>, support their own in-band FEC mechanism, | ||||
| where redundant data is included in the codec payload. This is similar | ||||
| to the redundant encoding mechanism described above, but as it adds no | ||||
| additional framing, it can be slightly more efficient.</t> | ||||
| <t indent="0" pn="section-3.3-2">For Opus, audio frames deemed important | ||||
| are re-encoded at a lower | ||||
| bitrate and appended to the next payload, allowing partial recovery | ||||
| of a lost packet. This scheme is fairly efficient; experiments | ||||
| performed indicate that when Opus FEC is used, the overhead imposed is | ||||
| only about 20-30%, depending on the amount of protection needed. Note | ||||
| that this mechanism can only carry redundancy information for the | ||||
| immediately preceding audio frame; thus the decoder cannot fully recover | ||||
| multiple consecutive lost packets, which can be a problem on wireless | ||||
| networks. See | ||||
| <xref target="RFC6716" sectionFormat="comma" section="2.1.7" format="def | ||||
| ault" derivedLink="https://rfc-editor.org/rfc/rfc6716#section-2.1.7" derivedCont | ||||
| ent="RFC6716"/>, | ||||
| and <xref target="OpusFEC" format="default" sectionFormat="of" derivedCo | ||||
| ntent="OpusFEC">this Opus mailing list post</xref> | ||||
| for more details.</t> | ||||
| <t indent="0" pn="section-3.3-3">For AMR and AMR-Wideband (AMR-WB), pack | ||||
| ets can contain copies or lower-quality | ||||
| encodings of multiple prior audio frames. See | ||||
| <xref target="RFC4867" sectionFormat="comma" section="3.7.1" format="def | ||||
| ault" derivedLink="https://rfc-editor.org/rfc/rfc4867#section-3.7.1" derivedCont | ||||
| ent="RFC4867"/>, | ||||
| for details on this mechanism.</t> | ||||
| <t indent="0" pn="section-3.3-4">In-band FEC mechanisms cannot recover a | ||||
| ny of the RTP header.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="audio-fec" numbered="true" toc="include" removeInRFC="false | ||||
| " pn="section-4"> | ||||
| <name slugifiedName="name-fec-for-audio-content">FEC for Audio Content</na | ||||
| me> | ||||
| <t indent="0" pn="section-4-1">The following section provides guidance on | ||||
| how to best use FEC for | ||||
| transmitting audio data. As indicated in | ||||
| <xref target="adaptive-fec" format="default" sectionFormat="of" derivedCon | ||||
| tent="Section 8"/> below, FEC should only be activated if | ||||
| network conditions warrant it, or upon explicit application request.</t> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-4.1 | ||||
| "> | ||||
| <name slugifiedName="name-recommended-mechanism">Recommended Mechanism</ | ||||
| name> | ||||
| <t indent="0" pn="section-4.1-1">When using variable-bitrate codecs with | ||||
| out an internal FEC, | ||||
| redundant encoding | ||||
| (as described in <xref target="redundant-encoding" format="default" sect | ||||
| ionFormat="of" derivedContent="Section 3.2"/>) | ||||
| with lower-fidelity | ||||
| version(s) of the previous packet(s) is <bcp14>RECOMMENDED</bcp14>. This | ||||
| provides | ||||
| reasonable protection of the payload with only moderate bitrate | ||||
| increase, as the redundant encodings can be significantly smaller than | ||||
| the primary encoding.</t> | ||||
| <t indent="0" pn="section-4.1-2">When using the Opus codec, use of the b | ||||
| uilt-in Opus FEC mechanism is | ||||
| <bcp14>RECOMMENDED</bcp14>. This provides reasonable protection of the a | ||||
| udio stream | ||||
| against individual losses, with minimal overhead. Note that, as | ||||
| indicated above, the built-in Opus FEC only provides single-frame | ||||
| redundancy; if multi-packet protection is needed, the aforementioned | ||||
| redundant encoding with reduced-bitrate Opus encodings | ||||
| <bcp14>SHOULD</bcp14> be used instead.</t> | ||||
| <t indent="0" pn="section-4.1-3">When using the AMR/AMR-WB codecs, use o | ||||
| f their built-in FEC | ||||
| mechanism is <bcp14>RECOMMENDED</bcp14>. This provides slightly more eff | ||||
| icient | ||||
| protection of the audio stream than redundant encoding does.</t> | ||||
| <t indent="0" pn="section-4.1-4">When using constant-bitrate codecs, e.g | ||||
| ., | ||||
| PCMU <xref target="RFC5391" format="default" sectionFormat="of" derivedC | ||||
| ontent="RFC5391"/>, redundant encoding <bcp14>MAY</bcp14> be used, but | ||||
| this will result in a potentially significant bitrate increase, and | ||||
| suddenly increasing bitrate to deal with losses from congestion | ||||
| may actually make things worse.</t> | ||||
| <t indent="0" pn="section-4.1-5">Because of the lower packet rate of aud | ||||
| io encodings, usually a | ||||
| single packet per frame, use of a separate FEC stream comes with a | ||||
| higher overhead than other mechanisms, and therefore is <bcp14>NOT RECOM | ||||
| MENDED</bcp14>.</t> | ||||
| <t indent="0" pn="section-4.1-6">As mentioned above, the recommended mec | ||||
| hanisms do not allow recovery | ||||
| of parts of the RTP header that may be important in certain audio | ||||
| applications, e.g., CSRCs and RTP header extensions like those | ||||
| specified in | ||||
| <xref target="RFC6464" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC6464"/> and | ||||
| <xref target="RFC6465" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC6465"/>. Implementations <bcp14>SHOULD</bcp14> account for this and | ||||
| attempt to approximate this information, using an approach similar to | ||||
| those described in | ||||
| <xref target="RFC2198" sectionFormat="comma" section="4" format="default | ||||
| " derivedLink="https://rfc-editor.org/rfc/rfc2198#section-4" derivedContent="RFC | ||||
| 2198"/>, and | ||||
| <xref target="RFC6464" sectionFormat="comma" section="5" format="default | ||||
| " derivedLink="https://rfc-editor.org/rfc/rfc6464#section-5" derivedContent="RFC | ||||
| 6464"/>.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-4.2 | ||||
| "> | ||||
| <name slugifiedName="name-negotiating-support">Negotiating Support</name | ||||
| > | ||||
| <t indent="0" pn="section-4.2-1">Support for redundant encoding of a giv | ||||
| en RTP stream <bcp14>SHOULD</bcp14> be | ||||
| indicated by including audio/red | ||||
| <xref target="RFC2198" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC2198"/> as an additional supported media type for the | ||||
| associated "m=" section in the SDP offer | ||||
| <xref target="RFC3264" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC3264"/>. Answerers can reject the use of redundant | ||||
| encoding by not including the audio/red media type in the corresponding | ||||
| "m=" section in the SDP answer.</t> | ||||
| <t indent="0" pn="section-4.2-2">Support for codec-specific FEC mechanis | ||||
| ms are typically indicated | ||||
| via "a=fmtp" parameters.</t> | ||||
| <t indent="0" pn="section-4.2-3">For Opus, a receiver <bcp14>MUST</bcp14 | ||||
| > indicate that it is prepared to use | ||||
| incoming FEC data with the "useinbandfec=1" parameter, as specified in | ||||
| <xref target="RFC7587" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC7587"/>. This parameter is declarative and can be | ||||
| negotiated separately for either media direction.</t> | ||||
| <t indent="0" pn="section-4.2-4">For AMR/AMR-WB, support for redundant e | ||||
| ncoding, and the maximum | ||||
| supported depth, are controlled by the "max-red" parameter, as | ||||
| specified in | ||||
| <xref target="RFC4867" sectionFormat="comma" section="8.1" format="defau | ||||
| lt" derivedLink="https://rfc-editor.org/rfc/rfc4867#section-8.1" derivedContent= | ||||
| "RFC4867"/>. | ||||
| Receivers <bcp14>MUST</bcp14> include this | ||||
| parameter, and set it to an appropriate value, as specified in | ||||
| <xref target="TS.26114" format="default" sectionFormat="of" derivedConte | ||||
| nt="TS.26114"/>, Table 6.3.</t> | ||||
| </section> | ||||
| </section> | ||||
| <section anchor="video-fec" numbered="true" toc="include" removeInRFC="false | ||||
| " pn="section-5"> | ||||
| <name slugifiedName="name-fec-for-video-content">FEC for Video Content</na | ||||
| me> | ||||
| <t indent="0" pn="section-5-1">The following section provides guidance on | ||||
| how to best use FEC for | ||||
| transmitting video data. As indicated in | ||||
| <xref target="adaptive-fec" format="default" sectionFormat="of" derivedCon | ||||
| tent="Section 8"/> below, FEC should only be activated if | ||||
| network conditions warrant it, or upon explicit application request.</t> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5.1 | ||||
| "> | ||||
| <name slugifiedName="name-recommended-mechanism-2">Recommended Mechanism | ||||
| </name> | ||||
| <t indent="0" pn="section-5.1-1">Video frames, due to their size, often | ||||
| require multiple RTP packets. | ||||
| As discussed above, a separate FEC stream can protect multiple packets | ||||
| with a single FEC packet. In addition, the Flexible FEC mechanism | ||||
| described in | ||||
| <xref target="RFC8627" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC8627"/> is also capable | ||||
| of protecting multiple RTP streams via a single FEC stream, including | ||||
| all the streams that are part of a BUNDLE group | ||||
| <xref target="RFC8843" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC8843"/>. As a | ||||
| result, for video content, use of a separate FEC stream with the | ||||
| Flexible FEC RTP payload format is <bcp14>RECOMMENDED</bcp14>.</t> | ||||
| <t indent="0" pn="section-5.1-2">To process the incoming FEC stream, the | ||||
| receiver can demultiplex it | ||||
| by SSRC, and then correlate it with the appropriate primary stream(s) | ||||
| via the CSRC(s) present in the RTP header of Flexible FEC repair packets | ||||
| , or | ||||
| the SSRC field present in the FEC header of Flexible FEC retransmission | ||||
| packets.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5.2 | ||||
| "> | ||||
| <name slugifiedName="name-negotiating-support-2">Negotiating Support</na | ||||
| me> | ||||
| <t indent="0" pn="section-5.2-1">Support for an SSRC-multiplexed Flexibl | ||||
| e FEC stream to protect a given RTP | ||||
| stream <bcp14>SHOULD</bcp14> be indicated by including video/flexfec (de | ||||
| scribed in | ||||
| <xref target="RFC8627" sectionFormat="comma" section="5.1.2" format="def | ||||
| ault" derivedLink="https://rfc-editor.org/rfc/rfc8627#section-5.1.2" derivedCont | ||||
| ent="RFC8627"/>) as | ||||
| an additional supported media type for the associated "m=" section in th | ||||
| e | ||||
| SDP offer | ||||
| <xref target="RFC3264" format="default" sectionFormat="of" derivedConten | ||||
| t="RFC3264"/>. As mentioned above, when BUNDLE is used, | ||||
| only a single Flexible FEC repair stream will be created for each BUNDLE | ||||
| group, even if Flexible FEC is negotiated for each primary stream.</t> | ||||
| <t indent="0" pn="section-5.2-2">Answerers can reject the use of SSRC-mu | ||||
| ltiplexed FEC by not | ||||
| including the video/flexfec media type in the corresponding "m=" section | ||||
| in | ||||
| the SDP answer.</t> | ||||
| <t indent="0" pn="section-5.2-3">Use of FEC-only "m=" lines, and groupin | ||||
| g using the SDP group mechanism | ||||
| as described in | ||||
| <xref target="RFC5956" sectionFormat="comma" section="4.1" format="defau | ||||
| lt" derivedLink="https://rfc-editor.org/rfc/rfc5956#section-4.1" derivedContent= | ||||
| "RFC5956"/>, is not currently defined for | ||||
| WebRTC, and <bcp14>SHOULD NOT</bcp14> be offered.</t> | ||||
| <t indent="0" pn="section-5.2-4">Answerers <bcp14>SHOULD</bcp14> reject | ||||
| any FEC-only "m=" lines, unless they | ||||
| specifically know how to handle such a thing in a WebRTC context | ||||
| (perhaps defined by a future version of the WebRTC specifications).</t> | ||||
| </section> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-6"> | ||||
| <name slugifiedName="name-fec-for-application-content">FEC for Application | ||||
| Content</name> | ||||
| <t indent="0" pn="section-6-1">WebRTC also supports the ability to send ge | ||||
| neric application data, and | ||||
| provides transport-level retransmission mechanisms to support full and | ||||
| partial (e.g., timed) reliability. See | ||||
| <xref target="RFC8831" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC8831"/> for details.</t> | ||||
| <t indent="0" pn="section-6-2">Because the application can control exactly | ||||
| what data to send, it has | ||||
| the ability to monitor packet statistics and perform its own | ||||
| application-level FEC if necessary.</t> | ||||
| <t indent="0" pn="section-6-3">As a result, this document makes no recomme | ||||
| ndations regarding FEC for | ||||
| the underlying data transport.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-7"> | ||||
| <name slugifiedName="name-implementation-requirements">Implementation Requ | ||||
| irements</name> | ||||
| <t indent="0" pn="section-7-1">To support the functionality recommended ab | ||||
| ove, implementations <bcp14>MUST</bcp14> | ||||
| be able to receive and make use of the relevant FEC formats for their | ||||
| supported audio codecs, and <bcp14>MUST</bcp14> indicate this support, as | ||||
| described in | ||||
| <xref target="audio-fec" format="default" sectionFormat="of" derivedConten | ||||
| t="Section 4"/>. Use of these formats when sending, as | ||||
| mentioned above, is <bcp14>RECOMMENDED</bcp14>.</t> | ||||
| <t indent="0" pn="section-7-2">The general FEC mechanism described in | ||||
| <xref target="RFC8627" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC8627"/> <bcp14>SHOULD</bcp14> also be | ||||
| supported, as mentioned in | ||||
| <xref target="video-fec" format="default" sectionFormat="of" derivedConten | ||||
| t="Section 5"/>.</t> | ||||
| <t indent="0" pn="section-7-3">Implementations <bcp14>MAY</bcp14> support | ||||
| additional FEC mechanisms if desired, e.g., | ||||
| <xref target="RFC5109" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC5109"/>.</t> | ||||
| </section> | ||||
| <section anchor="adaptive-fec" numbered="true" toc="include" removeInRFC="fa | ||||
| lse" pn="section-8"> | ||||
| <name slugifiedName="name-adaptive-use-of-fec">Adaptive Use of FEC</name> | ||||
| <t indent="0" pn="section-8-1">Because use of FEC always causes redundant | ||||
| data to be transmitted, and | ||||
| the total amount of data must remain within any bandwidth limits indicated | ||||
| by congestion control and the receiver, this will lead to less bandwidth | ||||
| available for the primary encoding, even when the redundant data is not | ||||
| being used. This is in contrast to methods like RTX | ||||
| <xref target="RFC4588" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC4588"/> or Flexible FEC's retransmission mode (<xref target="RFC8627" sectio | ||||
| nFormat="comma" section="1.1.7" format="default" derivedLink="https://rfc-editor | ||||
| .org/rfc/rfc8627#section-1.1.7" derivedContent="RFC8627"/>), | ||||
| which only transmit redundant data when necessary, at the cost of an | ||||
| extra round trip and thereby increased media latency.</t> | ||||
| <t indent="0" pn="section-8-2">Given this, WebRTC implementations <bcp14>S | ||||
| HOULD</bcp14> prefer using RTX or | ||||
| Flexible FEC retransmissions instead of FEC when the connection RTT is wit | ||||
| hin | ||||
| the application's latency budget, and otherwise <bcp14>SHOULD</bcp14> only | ||||
| transmit the amount of FEC needed to protect against the observed packet | ||||
| loss (which can be determined, e.g., by monitoring transmit packet loss | ||||
| data from RTP Control Protocol (RTCP) receiver reports | ||||
| <xref target="RFC3550" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC3550"/>), unless the application indicates it is | ||||
| willing to pay a quality penalty to proactively avoid losses.</t> | ||||
| <t indent="0" pn="section-8-3">Note that when probing bandwidth, i.e., spe | ||||
| culatively sending extra | ||||
| data to determine if additional link capacity exists, FEC data <bcp14>SHOU | ||||
| LD</bcp14> be | ||||
| used as the additional data. Given that extra data is going to be sent | ||||
| regardless, it makes sense to have that data protect the primary payload; | ||||
| in addition, FEC can typically be applied in a way that increases | ||||
| bandwidth only modestly, which is necessary when probing.</t> | ||||
| <t indent="0" pn="section-8-4">When using FEC with layered codecs, e.g., | ||||
| <xref target="RFC6386" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC6386"/>, where only base layer frames are critical to | ||||
| the decoding of future frames, implementations <bcp14>SHOULD</bcp14> only | ||||
| apply FEC to | ||||
| these base layer frames.</t> | ||||
| <t indent="0" pn="section-8-5">Finally, it should be noted that, although | ||||
| applying redundancy is often | ||||
| useful in protecting a stream against packet loss, if the loss is caused | ||||
| by network congestion, the additional bandwidth used by the redundant | ||||
| data may actually make the situation worse and can lead to significant | ||||
| degradation of the network.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-9"> | ||||
| <name slugifiedName="name-security-considerations">Security Considerations | ||||
| </name> | ||||
| <t indent="0" pn="section-9-1">In the WebRTC context, FEC is specifically | ||||
| concerned with recovering | ||||
| data from lost packets; any corrupted packets will be discarded by the | ||||
| Secure Real-Time Transport Protocol (SRTP) <xref target="RFC3711" format=" | ||||
| default" sectionFormat="of" derivedContent="RFC3711"/> | ||||
| decryption process. Therefore, as described | ||||
| in <xref target="RFC3711" sectionFormat="comma" section="10" format="defau | ||||
| lt" derivedLink="https://rfc-editor.org/rfc/rfc3711#section-10" derivedContent=" | ||||
| RFC3711"/>, the default processing when | ||||
| using FEC with SRTP is to perform FEC followed by SRTP at the sender, and | ||||
| SRTP followed by FEC at the receiver. This ordering is used for all the | ||||
| SRTP protection profiles used in DTLS-SRTP | ||||
| <xref target="RFC5763" format="default" sectionFormat="of" derivedContent= | ||||
| "RFC5763"/>, which are enumerated in | ||||
| <xref target="RFC5764" sectionFormat="comma" section="4.1.2" format="defau | ||||
| lt" derivedLink="https://rfc-editor.org/rfc/rfc5764#section-4.1.2" derivedConten | ||||
| t="RFC5764"/>.</t> | ||||
| <t indent="0" pn="section-9-2">Additional security considerations for each | ||||
| individual FEC mechanism | ||||
| are enumerated in their respective documents.</t> | ||||
| </section> | ||||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-10"> | ||||
| <name slugifiedName="name-iana-considerations">IANA Considerations</name> | ||||
| <t indent="0" pn="section-10-1">This document requires no actions from IAN | ||||
| A.</t> | ||||
| </section> | ||||
| </middle> | ||||
| <back> | ||||
| <references pn="section-11"> | ||||
| <name slugifiedName="name-references">References</name> | ||||
| <references pn="section-11.1"> | ||||
| <name slugifiedName="name-normative-references">Normative References</na | ||||
| me> | ||||
| <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | ||||
| 119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
| <front> | ||||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| le> | ||||
| <author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="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 ca | ||||
| pitalized. This document defines these words as they should be interpreted in IE | ||||
| TF documents. This document specifies an Internet Best Current Practices for th | ||||
| e Internet Community, and requests discussion and suggestions for improvements.< | ||||
| /t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="2119"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2119"/> | ||||
| </reference> | ||||
| <reference anchor="RFC2198" target="https://www.rfc-editor.org/info/rfc2 | ||||
| 198" quoteTitle="true" derivedAnchor="RFC2198"> | ||||
| <front> | ||||
| <title>RTP Payload for Redundant Audio Data</title> | ||||
| <author initials="C." surname="Perkins" fullname="C. Perkins"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="I." surname="Kouvelas" fullname="I. Kouvelas"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author 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-Par | ||||
| isis"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="1997" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes a payload format for use wit | ||||
| h the real-time transport protocol (RTP), version 2, for encoding redundant audi | ||||
| o data. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="2198"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC2198"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 264" quoteTitle="true" derivedAnchor="RFC3264"> | ||||
| <front> | ||||
| <title>An Offer/Answer Model with Session Description Protocol (SDP) | ||||
| </title> | ||||
| <author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2002" month="June"/> | ||||
| <abstract> | ||||
| <t indent="0">This document defines a mechanism by which two entit | ||||
| ies 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 offer | ||||
| s the other a description of the desired session from their perspective, and the | ||||
| other participant answers with the desired session from their perspective. Thi | ||||
| s offer/answer model is most useful in unicast sessions where information from b | ||||
| oth participants is needed for the complete view of the session. The offer/answ | ||||
| er model is used by protocols like the Session Initiation Protocol (SIP). [STAN | ||||
| DARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3264"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3264"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4867" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 867" quoteTitle="true" derivedAnchor="RFC4867"> | ||||
| <front> | ||||
| <title>RTP Payload Format and File Storage Format for the Adaptive M | ||||
| ulti-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codecs</title> | ||||
| <author initials="J." surname="Sjoberg" fullname="J. Sjoberg"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Lakaniemi" fullname="A. Lakaniemi"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="Q." surname="Xie" fullname="Q. Xie"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2007" month="April"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies a Real-time Transport Protoc | ||||
| ol (RTP) payload format to be used for Adaptive Multi-Rate (AMR) and Adaptive Mu | ||||
| lti-Rate Wideband (AMR-WB) encoded speech signals. The payload format is design | ||||
| ed to be able to interoperate with existing AMR and AMR-WB transport formats on | ||||
| non-IP networks. In addition, a file format is specified for transport of AMR a | ||||
| nd AMR-WB speech data in storage mode applications such as email. Two separate | ||||
| media type registrations are included, one for AMR and one for AMR-WB, specifyin | ||||
| g use of both the RTP payload format and the storage format. This document obso | ||||
| letes RFC 3267. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4867"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4867"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5956" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 956" quoteTitle="true" derivedAnchor="RFC5956"> | ||||
| <front> | ||||
| <title>Forward Error Correction Grouping Semantics in the Session De | ||||
| scription Protocol</title> | ||||
| <author initials="A." surname="Begen" fullname="A. Begen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2010" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document defines the semantics for grouping the | ||||
| associated source and FEC-based (Forward Error Correction) repair flows in the | ||||
| Session Description Protocol (SDP). The semantics defined in this document are | ||||
| to be used with the SDP Grouping Framework (RFC 5888). These semantics allow the | ||||
| description of grouping relationships between the source and repair flows when | ||||
| one or more source and/or repair flows are associated in the same group, and the | ||||
| y provide support for additive repair flows. SSRC-level (Synchronization Source | ||||
| ) grouping semantics are also defined in this document for Real-time Transport P | ||||
| rotocol (RTP) streams using SSRC multiplexing. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5956"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5956"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7587" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 587" quoteTitle="true" derivedAnchor="RFC7587"> | ||||
| <front> | ||||
| <title>RTP Payload Format for the Opus Speech and Audio Codec</title | ||||
| > | ||||
| <author initials="J." surname="Spittka" fullname="J. Spittka"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="K." surname="Vos" fullname="K. Vos"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="JM." surname="Valin" fullname="JM. Valin"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2015" month="June"/> | ||||
| <abstract> | ||||
| <t indent="0">This document defines the Real-time Transport Protoc | ||||
| ol (RTP) payload format for packetization of Opus-encoded speech and audio data | ||||
| necessary to integrate the codec in the most compatible way. It also provides a | ||||
| n applicability statement for the use of Opus over RTP. Further, it describes me | ||||
| dia type registrations for the RTP payload format.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7587"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7587"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8174" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 174" quoteTitle="true" derivedAnchor="RFC8174"> | ||||
| <front> | ||||
| <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti | ||||
| tle> | ||||
| <author initials="B." surname="Leiba" fullname="B. Leiba"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="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 cla | ||||
| rifying that only UPPERCASE usage of the key words have the defined special mea | ||||
| nings.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="BCP" value="14"/> | ||||
| <seriesInfo name="RFC" value="8174"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8174"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8627" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 627" quoteTitle="true" derivedAnchor="RFC8627"> | ||||
| <front> | ||||
| <title>RTP Payload Format for 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> | ||||
| <author initials="G." surname="Mandyam" fullname="G. Mandyam"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2019" month="July"/> | ||||
| <abstract> | ||||
| <t indent="0">This document defines new RTP payload formats for th | ||||
| e Forward Error Correction (FEC) packets that are generated by the non-interleav | ||||
| ed and interleaved parity codes from source media encapsulated in RTP. These par | ||||
| ity codes are systematic codes (Flexible FEC, or "FLEX F | ||||
| EC"), where a number of FEC repair packets are generated from a set of source pa | ||||
| ckets 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 recon | ||||
| structed using the source and repair packets that were received. The non-interl | ||||
| eaved and interleaved parity codes that are defined in this specification offer | ||||
| a good protection against random and bursty packet losses, respectively, at a co | ||||
| st of complexity. The RTP payload formats that are defined in this document add | ||||
| ress scalability issues experienced with the earlier specifications and offer se | ||||
| veral improvements. Due to these changes, the new payload formats are not backw | ||||
| ard compatible with earlier specifications; however, endpoints that do not imple | ||||
| ment this specification can still work by simply ignoring the FEC repair packets | ||||
| .</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8627"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8627"/> | ||||
| </reference> | ||||
| <reference anchor="TS.26114" target="http://www.3gpp.org/ftp/Specs/html- | ||||
| info/26114.htm" quoteTitle="true" derivedAnchor="TS.26114"> | ||||
| <front> | ||||
| <title>IP Multimedia Subsystem (IMS); Multimedia telephony; Media ha | ||||
| ndling and interaction</title> | ||||
| <seriesInfo name="3GPP TS" value="26.114 15.0.0"/> | ||||
| <author> | ||||
| <organization showOnFrontPage="true">3GPP</organization> | ||||
| </author> | ||||
| <date day="22" month="September" year="2017"/> | ||||
| </front> | ||||
| </reference> | ||||
| </references> | ||||
| <references pn="section-11.2"> | ||||
| <name slugifiedName="name-informative-references">Informative References | ||||
| </name> | ||||
| <reference anchor="OpusFEC" target="http://lists.xiph.org/pipermail/opus | ||||
| /2013-January/001904.html" quoteTitle="true" derivedAnchor="OpusFEC"> | ||||
| <front> | ||||
| <title>Subject: Opus FEC</title> | ||||
| <author fullname="Tim Terriberry" initials="T." surname="Terriberry" | ||||
| > | ||||
| <organization showOnFrontPage="true">Xiph</organization> | ||||
| </author> | ||||
| <date day="28" month="January" year="2013"/> | ||||
| </front> | ||||
| <refcontent>message to the opus mailing list</refcontent> | ||||
| </reference> | ||||
| <reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 550" quoteTitle="true" derivedAnchor="RFC3550"> | ||||
| <front> | ||||
| <title>RTP: A Transport Protocol for Real-Time Applications</title> | ||||
| <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> | ||||
| <date year="2003" month="July"/> | ||||
| <abstract> | ||||
| <t indent="0">This memorandum describes RTP, the real-time transpo | ||||
| rt protocol. RTP provides end-to-end network transport functions suitable for a | ||||
| pplications transmitting real-time data, such as audio, video or simulation data | ||||
| , over multicast or unicast network services. RTP does not address resource res | ||||
| ervation 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 prov | ||||
| ide 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 govern | ||||
| ing how the protocol is used. The biggest change is an enhancement to the scalab | ||||
| le timer algorithm for calculating when to send RTCP packets in order to minimiz | ||||
| e transmission in excess of the intended rate when many participants join a sess | ||||
| ion simultaneously. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="64"/> | ||||
| <seriesInfo name="RFC" value="3550"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3550"/> | ||||
| </reference> | ||||
| <reference anchor="RFC3711" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 711" quoteTitle="true" derivedAnchor="RFC3711"> | ||||
| <front> | ||||
| <title>The Secure Real-time Transport Protocol (SRTP)</title> | ||||
| <author initials="M." surname="Baugher" fullname="M. Baugher"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="D." surname="McGrew" fullname="D. McGrew"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Naslund" fullname="M. Naslund"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Carrara" fullname="E. Carrara"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="K." surname="Norrman" fullname="K. Norrman"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2004" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the Secure Real-time Transpo | ||||
| rt Protocol (SRTP), a profile of the Real-time Transport Protocol (RTP), which c | ||||
| an provide confidentiality, message authentication, and replay protection to the | ||||
| RTP traffic and to the control traffic for RTP, the Real-time Transport Control | ||||
| Protocol (RTCP). [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3711"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3711"/> | ||||
| </reference> | ||||
| <reference anchor="RFC4588" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 588" 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 recov | ||||
| ery technique for real-time applications with relaxed delay bounds. This docume | ||||
| nt 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 avail | ||||
| able in this memo. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4588"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4588"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5109" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 109" quoteTitle="true" derivedAnchor="RFC5109"> | ||||
| <front> | ||||
| <title>RTP Payload Format for Generic Forward Error Correction</titl | ||||
| e> | ||||
| <author initials="A." surname="Li" fullname="A. Li" role="editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="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 d | ||||
| ocument allows end systems to apply protection using various protection lengths | ||||
| and levels, in addition to using various protection group sizes to adapt to diff | ||||
| erent media and channel characteristics. It enables complete recovery of the pro | ||||
| tected packets or partial recovery of the critical parts of the payload dependin | ||||
| g on the packet loss situation. This scheme is completely compatible with non-F | ||||
| EC-capable hosts, so the receivers in a multicast group that do not implement FE | ||||
| C can still work by simply ignoring the protection data. This specification obs | ||||
| oletes RFC 2733 and RFC 3009. The FEC specified in this document is not backwar | ||||
| d compatible with RFC 2733 and RFC 3009. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5109"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5109"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5391" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 391" quoteTitle="true" derivedAnchor="RFC5391"> | ||||
| <front> | ||||
| <title>RTP Payload Format for ITU-T Recommendation G.711.1</title> | ||||
| <author initials="A." surname="Sollaud" fullname="A. Sollaud"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2008" month="November"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies a Real-time Transport Protoc | ||||
| ol (RTP) payload format to be used for the ITU Telecommunication Standardization | ||||
| Sector (ITU-T) G.711.1 audio codec. Two media type registrations are also incl | ||||
| uded. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5391"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5391"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5763" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 763" quoteTitle="true" derivedAnchor="RFC5763"> | ||||
| <front> | ||||
| <title>Framework for Establishing a Secure Real-time Transport Proto | ||||
| col (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)</titl | ||||
| e> | ||||
| <author initials="J." surname="Fischl" fullname="J. Fischl"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H." surname="Tschofenig" fullname="H. Tschofenig"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2010" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies how to use the Session Initi | ||||
| ation Protocol (SIP) to establish a Secure Real-time Transport Protocol (SRTP) s | ||||
| ecurity context using the Datagram Transport Layer Security (DTLS) protocol. It | ||||
| describes a mechanism of transporting a fingerprint attribute in the Session De | ||||
| scription Protocol (SDP) that identifies the key that will be presented during t | ||||
| he DTLS handshake. The key exchange travels along the media path as opposed to | ||||
| the signaling path. The SIP Identity mechanism can be used to protect the integ | ||||
| rity of the fingerprint attribute from modification by intermediate proxies. [S | ||||
| TANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5763"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5763"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5764" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 764" quoteTitle="true" derivedAnchor="RFC5764"> | ||||
| <front> | ||||
| <title>Datagram Transport Layer Security (DTLS) Extension to Establi | ||||
| sh Keys for the Secure Real-time Transport Protocol (SRTP)</title> | ||||
| <author initials="D." surname="McGrew" fullname="D. McGrew"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Rescorla" fullname="E. Rescorla"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2010" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes a Datagram Transport Layer S | ||||
| ecurity (DTLS) extension to establish keys for Secure RTP (SRTP) and Secure RTP | ||||
| Control Protocol (SRTCP) flows. DTLS keying happens on the media path, independ | ||||
| ent of any out-of-band signalling channel present. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5764"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5764"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6386" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 386" quoteTitle="true" derivedAnchor="RFC6386"> | ||||
| <front> | ||||
| <title>VP8 Data Format and Decoding Guide</title> | ||||
| <author initials="J." surname="Bankoski" fullname="J. Bankoski"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Koleszar" fullname="J. Koleszar"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="L." surname="Quillio" fullname="L. Quillio"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Salonen" fullname="J. Salonen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="P." surname="Wilkins" fullname="P. Wilkins"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="Y." surname="Xu" fullname="Y. Xu"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2011" month="November"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes the VP8 compressed video dat | ||||
| a format, together with a discussion of the decoding procedure for the format. | ||||
| This document is not an Internet Standards Track specification; it is published | ||||
| for informational purposes.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6386"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6386"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6464" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 464" quoteTitle="true" derivedAnchor="RFC6464"> | ||||
| <front> | ||||
| <title>A Real-time Transport Protocol (RTP) Header Extension for Cli | ||||
| ent-to-Mixer Audio Level Indication</title> | ||||
| <author initials="J." surname="Lennox" fullname="J. Lennox" role="ed | ||||
| itor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Ivov" fullname="E. Ivov"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Marocco" fullname="E. Marocco"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2011" month="December"/> | ||||
| <abstract> | ||||
| <t indent="0">This document defines a mechanism by which packets o | ||||
| f Real-time Transport Protocol (RTP) audio streams can indicate, in an RTP heade | ||||
| r extension, the audio level of the audio sample carried in the RTP packet. In | ||||
| large conferences, this can reduce the load on an audio mixer or other middlebox | ||||
| that wants to forward only a few of the loudest audio streams, without requirin | ||||
| g it to decode and measure every stream that is received. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6464"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6464"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6465" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 465" quoteTitle="true" derivedAnchor="RFC6465"> | ||||
| <front> | ||||
| <title>A Real-time Transport Protocol (RTP) Header Extension for Mix | ||||
| er-to-Client Audio Level Indication</title> | ||||
| <author initials="E." surname="Ivov" fullname="E. Ivov" role="editor | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="E." surname="Marocco" fullname="E. Marocco" role=" | ||||
| editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="J." surname="Lennox" fullname="J. Lennox"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2011" month="December"/> | ||||
| <abstract> | ||||
| <t indent="0">This document describes a mechanism for RTP-level mi | ||||
| xers in audio conferences to deliver information about the audio level of indivi | ||||
| dual participants. Such audio level indicators are transported in the same RTP | ||||
| packets as the audio data they pertain to. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6465"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6465"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6716" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 716" quoteTitle="true" derivedAnchor="RFC6716"> | ||||
| <front> | ||||
| <title>Definition of the Opus Audio Codec</title> | ||||
| <author initials="JM." surname="Valin" fullname="JM. Valin"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="K." surname="Vos" fullname="K. Vos"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Terriberry" fullname="T. Terriberry"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2012" month="September"/> | ||||
| <abstract> | ||||
| <t indent="0">This document defines the Opus interactive speech an | ||||
| d audio codec. Opus is designed to handle a wide range of interactive audio appl | ||||
| ications, including Voice over IP, videoconferencing, in-game chat, and even liv | ||||
| e, distributed music performances. It scales from low bitrate narrowband speech | ||||
| at 6 kbit/s to very high quality stereo music at 510 kbit/s. Opus uses both Li | ||||
| near Prediction (LP) and the Modified Discrete Cosine Transform (MDCT) to achiev | ||||
| e good compression of both speech and music. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6716"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6716"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8831" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 831" quoteTitle="true" derivedAnchor="RFC8831"> | ||||
| <front> | ||||
| <title>WebRTC Data Channels</title> | ||||
| <author initials="R" surname="Jesup" fullname="Randell Jesup"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S" surname="Loreto" fullname="Salvatore Loreto"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8831"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8831"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8843" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 843" quoteTitle="true" derivedAnchor="RFC8843"> | ||||
| <front> | ||||
| <title>Negotiating Media Multiplexing Using the Session Description | ||||
| Protocol (SDP)</title> | ||||
| <author initials="C" surname="Holmberg" fullname="Christer Holmberg" | ||||
| > | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H" surname="Alvestrand" fullname="Harald Alvestran | ||||
| d"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C" surname="Jennings" fullname="Cullen Jennings"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8843"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8843"/> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | ||||
| <section numbered="false" toc="include" removeInRFC="false" pn="section-appe | ||||
| ndix.a"> | ||||
| <name slugifiedName="name-acknowledgements">Acknowledgements</name> | ||||
| <t indent="0" pn="section-appendix.a-1">Several people provided significan | ||||
| t input into this document, | ||||
| including <contact fullname="Bernard Aboba"/>, <contact fullname="Jonathan | ||||
| Lennox"/>, <contact fullname="Giri Mandyam"/>, <contact fullname="Varun S | ||||
| ingh"/>, | ||||
| <contact fullname="Tim Terriberry"/>, <contact fullname="Magnus West | ||||
| erlund"/>, and <contact fullname="Mo Zanaty"/>.</t> | ||||
| </section> | ||||
| <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
| ="include" pn="section-appendix.b"> | ||||
| <name slugifiedName="name-authors-address">Author's Address</name> | ||||
| <author fullname="Justin Uberti" initials="J." surname="Uberti"> | ||||
| <organization showOnFrontPage="true">Google</organization> | ||||
| <address> | ||||
| <postal> | ||||
| <street>747 6th St S</street> | ||||
| <city>Kirkland</city> | ||||
| <region>WA</region> | ||||
| <code>98033</code> | ||||
| <country>United States of America</country> | ||||
| </postal> | ||||
| <email>justin@uberti.name</email> | ||||
| </address> | ||||
| </author> | ||||
| </section> | ||||
| </back> | ||||
| </rfc> | ||||
| End of changes. 1 change blocks. | ||||
| lines changed or deleted | lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||