| rfc8853xml2.original.xml | rfc8853.xml | |||
|---|---|---|---|---|
| <?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
| <!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="std" conse | |||
| <?rfc toc="yes"?> | nsus="true" docName="draft-ietf-mmusic-sdp-simulcast-14" indexInclude="true" ipr | |||
| <?rfc tocompact="yes"?> | ="trust200902" number="8853" prepTime="2021-01-17T00:22:15" scripts="Common,Lati | |||
| <?rfc tocdepth="3"?> | n" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclude= | |||
| <?rfc tocindent="yes"?> | "true" xml:lang="en"> | |||
| <?rfc symrefs="yes"?> | <link href="https://datatracker.ietf.org/doc/draft-ietf-mmusic-sdp-simulcast-1 | |||
| <?rfc sortrefs="yes"?> | 4" rel="prev"/> | |||
| <?rfc comments="yes"?> | <link href="https://dx.doi.org/10.17487/rfc8853" rel="alternate"/> | |||
| <?rfc inline="yes"?> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
| <?rfc compact="yes"?> | ||||
| <?rfc subcompact="no"?> | ||||
| <rfc category="std" docName="draft-ietf-mmusic-sdp-simulcast-14" | ||||
| ipr="trust200902" submissionType="IETF"> | ||||
| <front> | <front> | |||
| <title abbrev="Simulcast">Using Simulcast in SDP and RTP Sessions</title> | <title abbrev="Simulcast">Using Simulcast in Session Description Protocol (S | |||
| DP) and RTP Sessions</title> | ||||
| <seriesInfo name="RFC" value="8853" stream="IETF"/> | ||||
| <author fullname="Bo Burman" initials="B." surname="Burman"> | <author fullname="Bo Burman" initials="B." surname="Burman"> | |||
| <organization>Ericsson</organization> | <organization showOnFrontPage="true">Ericsson</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Gronlandsgatan 31</street> | <street>Gronlandsgatan 31</street> | |||
| <city>SE-164 60 Stockholm</city> | <city>SE-164 60 Stockholm</city> | |||
| <region/> | <region/> | |||
| <code/> | <code/> | |||
| <country>Sweden</country> | <country>Sweden</country> | |||
| </postal> | </postal> | |||
| <phone/> | <phone/> | |||
| <facsimile/> | ||||
| <email>bo.burman@ericsson.com</email> | <email>bo.burman@ericsson.com</email> | |||
| <uri/> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Magnus Westerlund" initials="M." surname="Westerlund"> | <author fullname="Magnus Westerlund" initials="M." surname="Westerlund"> | |||
| <organization>Ericsson</organization> | <organization showOnFrontPage="true">Ericsson</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>Torshamnsgatan 23</street> | <street>Torshamnsgatan 23</street> | |||
| <city>SE-164 83 Stockholm</city> | <city>SE-164 83 Stockholm</city> | |||
| <country>Sweden</country> | <country>Sweden</country> | |||
| </postal> | </postal> | |||
| <phone>+46 10 714 82 87</phone> | ||||
| <email>magnus.westerlund@ericsson.com</email> | <email>magnus.westerlund@ericsson.com</email> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar"> | <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar"> | |||
| <organization>Cisco</organization> | <organization showOnFrontPage="true">Cisco</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>170 West Tasman Drive</street> | <street>170 West Tasman Drive</street> | |||
| <city>San Jose</city> | <city>San Jose</city> | |||
| <region>CA</region> | <region>CA</region> | |||
| <code>95134</code> | <code>95134</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <phone/> | <phone/> | |||
| <facsimile/> | ||||
| <email>snandaku@cisco.com</email> | <email>snandaku@cisco.com</email> | |||
| <uri/> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <author fullname="Mo Zanaty" initials="M." surname="Zanaty"> | <author fullname="Mo Zanaty" initials="M." surname="Zanaty"> | |||
| <organization>Cisco</organization> | <organization showOnFrontPage="true">Cisco</organization> | |||
| <address> | <address> | |||
| <postal> | <postal> | |||
| <street>170 West Tasman Drive</street> | <street>170 West Tasman Drive</street> | |||
| <city>San Jose</city> | <city>San Jose</city> | |||
| <region>CA</region> | <region>CA</region> | |||
| <code>95134</code> | <code>95134</code> | |||
| <country>United States of America</country> | ||||
| <country>USA</country> | ||||
| </postal> | </postal> | |||
| <phone/> | <phone/> | |||
| <facsimile/> | ||||
| <email>mzanaty@cisco.com</email> | <email>mzanaty@cisco.com</email> | |||
| <uri/> | <uri/> | |||
| </address> | </address> | |||
| </author> | </author> | |||
| <date month="01" year="2021"/> | ||||
| <date day="5" month="March" year="2019"/> | <keyword>Conference</keyword> | |||
| <keyword>multi-party</keyword> | ||||
| <abstract> | <keyword>middlebox</keyword> | |||
| <t>In some application scenarios it may be desirable to send multiple | <keyword>MCU</keyword> | |||
| <keyword>SFU</keyword> | ||||
| <keyword>media</keyword> | ||||
| <keyword>video</keyword> | ||||
| <keyword>restrictions</keyword> | ||||
| <keyword>RTCP</keyword> | ||||
| <keyword>RID</keyword> | ||||
| <keyword>RtpStreamId</keyword> | ||||
| <abstract pn="section-abstract"> | ||||
| <t indent="0" pn="section-abstract-1">In some application scenarios, it ma | ||||
| y be desirable to send multiple | ||||
| differently encoded versions of the same media source in different RTP | differently encoded versions of the same media source in different RTP | |||
| streams. This is called simulcast. This document describes how to | streams. This is called simulcast. This document describes how to | |||
| accomplish simulcast in RTP and how to signal it in SDP. The described | accomplish simulcast in RTP and how to signal it in the Session | |||
| solution uses an RTP/RTCP identification method to identify RTP streams | Description Protocol (SDP). The described solution uses an RTP/RTCP | |||
| belonging to the same media source, and makes an extension to SDP to | identification method to identify RTP streams | |||
| relate those RTP streams as being different simulcast formats of that | belonging to the same media source and makes an extension to SDP to | |||
| media source. The SDP extension consists of a new media level SDP | indicate that those RTP streams are 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 | attribute that expresses capability to send and/or receive simulcast RTP | |||
| streams.</t> | streams.</t> | |||
| </abstract> | </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/rfc8853" 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" pn="section-toc.1-1.2.1"><xref derivedContent="2" form | ||||
| at="counter" sectionFormat="of" target="section-2"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-definitions">Definitions</xref></t | ||||
| > | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.2.2"> | ||||
| <li pn="section-toc.1-1.2.2.1"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.1.1">< | ||||
| xref derivedContent="2.1" format="counter" sectionFormat="of" target="section-2. | ||||
| 1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-te | ||||
| rminology">Terminology</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.2.2.2"> | ||||
| <t indent="0" keepWithNext="true" pn="section-toc.1-1.2.2.2.1">< | ||||
| xref derivedContent="2.2" format="counter" sectionFormat="of" target="section-2. | ||||
| 2"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-re | ||||
| quirements-language">Requirements Language</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </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-use-cases">Use Cases</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" pn="section-toc.1-1.3.2.1.1"><xref derivedContent= | ||||
| "3.1" format="counter" sectionFormat="of" target="section-3.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-reaching-a-diverse-set | ||||
| -of-r">Reaching a Diverse Set of Receivers</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-application-specific-m | ||||
| edia-">Application-Specific Media Source Handling</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-receiver-media-source- | ||||
| prefe">Receiver Media-Source Preferences</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-overview">Overview</xref></t> | ||||
| </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-detailed-description">Detailed Des | ||||
| cription</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-simulcast-attribute">S | ||||
| imulcast Attribute</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-simulcast-capability"> | ||||
| Simulcast Capability</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.1"><xref derivedContent= | ||||
| "5.3" format="counter" sectionFormat="of" target="section-5.3"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-offer-answer-use">Offe | ||||
| r/Answer Use</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.5.2.3.2"> | ||||
| <li pn="section-toc.1-1.5.2.3.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.1.1"><xref derived | ||||
| Content="5.3.1" format="counter" sectionFormat="of" target="section-5.3.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.5.2.3.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.2.1"><xref derived | ||||
| Content="5.3.2" format="counter" sectionFormat="of" target="section-5.3.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-creating-t | ||||
| he-sdp-answer">Creating the SDP Answer</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.3.1"><xref derived | ||||
| Content="5.3.3" format="counter" sectionFormat="of" target="section-5.3.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-offerer-pr | ||||
| ocessing-the-sdp-">Offerer Processing the SDP Answer</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.3.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.3.2.4.1"><xref derived | ||||
| Content="5.3.4" format="counter" sectionFormat="of" target="section-5.3.4"/>. < | ||||
| 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.5.2.4"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.4.1"><xref derivedContent= | ||||
| "5.4" format="counter" sectionFormat="of" target="section-5.4"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-use-with-declarative-s | ||||
| dp">Use with Declarative SDP</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.5"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.5.1"><xref derivedContent= | ||||
| "5.5" format="counter" sectionFormat="of" target="section-5.5"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-relating-simulcast-str | ||||
| eams">Relating Simulcast Streams</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.6"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.6.1"><xref derivedContent= | ||||
| "5.6" format="counter" sectionFormat="of" target="section-5.6"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-signaling-examples">Si | ||||
| gnaling Examples</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-toc.1-1.5.2.6.2"> | ||||
| <li pn="section-toc.1-1.5.2.6.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.6.2.1.1"><xref derived | ||||
| Content="5.6.1" format="counter" sectionFormat="of" target="section-5.6.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-single-sou | ||||
| rce-client">Single-Source Client</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.6.2.2"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.6.2.2.1"><xref derived | ||||
| Content="5.6.2" format="counter" sectionFormat="of" target="section-5.6.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-multisourc | ||||
| e-client">Multisource Client</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.5.2.6.2.3"> | ||||
| <t indent="0" pn="section-toc.1-1.5.2.6.2.3.1"><xref derived | ||||
| Content="5.6.3" format="counter" sectionFormat="of" target="section-5.6.3"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-simulcast- | ||||
| and-redundancy">Simulcast and Redundancy</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </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-rtp-aspects">RTP Aspects</xref></t | ||||
| > | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-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 derived | ||||
| Content="" format="title" sectionFormat="of" target="name-outgoing-from-endpoint | ||||
| -with">Outgoing from Endpoint with Media Source</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 derived | ||||
| Content="" format="title" sectionFormat="of" target="name-rtp-middlebox-to-recei | ||||
| ver">RTP Middlebox to Receiver</xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="se | ||||
| ction-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 derived | ||||
| Content="6.2.1" format="counter" sectionFormat="of" target="section-6.2.1"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-media-swit | ||||
| ching-mixer">Media-Switching Mixer</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 derived | ||||
| Content="6.2.2" format="counter" sectionFormat="of" target="section-6.2.2"/>. < | ||||
| xref derivedContent="" format="title" sectionFormat="of" target="name-selective- | ||||
| forwarding-middle">Selective Forwarding Middlebox</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 derived | ||||
| Content="" format="title" sectionFormat="of" target="name-rtp-middlebox-to-rtp-m | ||||
| iddle">RTP Middlebox to RTP Middlebox</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" form | ||||
| at="counter" sectionFormat="of" target="section-7"/>. <xref derivedContent="" f | ||||
| ormat="title" sectionFormat="of" target="name-network-aspects">Network Aspects</ | ||||
| xref></t> | ||||
| <ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
| n-toc.1-1.7.2"> | ||||
| <li pn="section-toc.1-1.7.2.1"> | ||||
| <t indent="0" pn="section-toc.1-1.7.2.1.1"><xref derivedContent= | ||||
| "7.1" format="counter" sectionFormat="of" target="section-7.1"/>. <xref derived | ||||
| Content="" format="title" sectionFormat="of" target="name-bitrate-adaptation">Bi | ||||
| trate Adaptation</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </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-limitation">Limitation</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-iana-considerations">IANA Consider | ||||
| ations</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-security-considerations">Securit | ||||
| y Considerations</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="Append | ||||
| ix A" format="default" sectionFormat="of" target="section-appendix.a"/>. <xref | ||||
| derivedContent="" format="title" sectionFormat="of" target="name-requirements">R | ||||
| equirements</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-acknowledgements">Acknowledgeme | ||||
| nts</xref></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.14"> | ||||
| <t indent="0" pn="section-toc.1-1.14.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.c"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-contributors">Contributors</xre | ||||
| f></t> | ||||
| </li> | ||||
| <li pn="section-toc.1-1.15"> | ||||
| <t indent="0" pn="section-toc.1-1.15.1"><xref derivedContent="" form | ||||
| at="none" sectionFormat="of" target="section-appendix.d"/><xref derivedContent=" | ||||
| " format="title" sectionFormat="of" target="name-authors-addresses">Authors' Add | ||||
| resses</xref></t> | ||||
| </li> | ||||
| </ul> | ||||
| </section> | ||||
| </toc> | ||||
| </front> | </front> | |||
| <middle> | <middle> | |||
| <section anchor="sec-intro" title="Introduction"> | <section anchor="sec-intro" numbered="true" toc="include" removeInRFC="false | |||
| <t>Most of today's multiparty video conference solutions make use of | " pn="section-1"> | |||
| <name slugifiedName="name-introduction">Introduction</name> | ||||
| <t indent="0" pn="section-1-1">Most of today's multiparty video-conference | ||||
| solutions make use of | ||||
| centralized servers to reduce the bandwidth and CPU consumption in the | centralized servers to reduce the bandwidth and CPU consumption in the | |||
| endpoints. Those servers receive RTP streams from each participant and | endpoints. Those servers receive RTP streams from each participant and | |||
| send some suitable set of possibly modified RTP streams to the rest of | send some suitable set of possibly modified RTP streams to the rest of | |||
| the participants, which usually have heterogeneous capabilities (screen | the participants, which usually have heterogeneous capabilities (screen | |||
| size, CPU, bandwidth, codec, etc). One of the biggest issues is how to | size, CPU, bandwidth, codec, etc.). One of the biggest issues is how to | |||
| perform RTP stream adaptation to different participants' constraints | perform RTP stream adaptation to different participants' constraints | |||
| with the minimum possible impact on both video quality and server | with the minimum possible impact on both video quality and server | |||
| performance.</t> | performance.</t> | |||
| <t indent="0" pn="section-1-2">Simulcast is defined in this memo as the ac | ||||
| <t>Simulcast is defined in this memo as the act of simultaneously | t of simultaneously | |||
| sending multiple different encoded streams of the same media source, | sending multiple different encoded streams of the same media source -- | |||
| e.g. the same video source encoded with different video encoder types or | e.g., the same video source encoded with different video-encoder types or | |||
| image resolutions. This can be done in several ways and for different | image resolutions. This can be done in several ways and for different | |||
| purposes. This document focuses on the case where it is desirable to | purposes. This document focuses on the case where it is desirable to | |||
| provide a media source as multiple encoded streams over <xref | provide a media source as multiple encoded streams over <xref target="RFC3 | |||
| target="RFC3550">RTP</xref> towards an intermediary so that the | 550" format="default" sectionFormat="of" derivedContent="RFC3550">RTP</xref> tow | |||
| ards an intermediary so that the | ||||
| intermediary can provide the wanted functionality by selecting which RTP | intermediary can provide the wanted functionality by selecting which RTP | |||
| stream(s) to forward to other participants in the session, and more | stream(s) to forward to other participants in the session, and more | |||
| specifically how the identification and grouping of the involved RTP | specifically how the identification and grouping of the involved RTP | |||
| streams are done.</t> | streams are done.</t> | |||
| <t indent="0" pn="section-1-3">The intended scope of the defined mechanism | ||||
| <t>The intended scope of the defined mechanism is to support negotiation | is to support negotiation | |||
| and usage of simulcast when using SDP offer/answer and media transport | and usage of simulcast when using SDP offer/answer and media transport | |||
| over RTP. The media transport topologies considered are point to point | over RTP. The media transport topologies considered are point-to-point | |||
| RTP sessions as well as centralized multi-party RTP sessions, where a | RTP sessions, as well as centralized multiparty RTP sessions, where a | |||
| media sender will provide the simulcasted streams to an RTP middlebox or | media sender will provide the simulcasted streams to an RTP middlebox or | |||
| endpoint, and middleboxes may further distribute the simulcast streams | endpoint, and middleboxes may further distribute the simulcast streams | |||
| to other middleboxes or endpoints. Simulcast could, as part of a | to other middleboxes or endpoints. Simulcast could be used point to point | |||
| distributed multi-party scenario, be used point-to-point between | between | |||
| middleboxes. Usage of multicast or broadcast transport is out of scope | middleboxes as part of a distributed multiparty scenario. Usage of | |||
| multicast or broadcast transport is out of scope | ||||
| and left for future extensions.</t> | and left for future extensions.</t> | |||
| <t indent="0" pn="section-1-4">This document describes a few scenarios tha | ||||
| <t>This document describes a few scenarios that motivate the use of | t motivate the use of | |||
| simulcast, and also defines the needed RTP/RTCP and SDP signaling for | simulcast and also defines the needed RTP/RTCP and SDP signaling for | |||
| it.</t> | it.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-definitions" numbered="true" toc="include" removeInRFC= | ||||
| <section anchor="sec-definitions" title="Definitions"> | "false" pn="section-2"> | |||
| <t/> | <name slugifiedName="name-definitions">Definitions</name> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2.1 | ||||
| <section title="Terminology"> | "> | |||
| <t>This document makes use of the terminology defined in <xref | <name slugifiedName="name-terminology">Terminology</name> | |||
| target="RFC7656">RTP Taxonomy</xref>, and <xref target="RFC7667">RTP | <t indent="0" pn="section-2.1-1">This document makes use of the terminol | |||
| Topologies</xref>. The following terms are especially noted or here | ogy defined in <xref target="RFC7656" format="default" sectionFormat="of" derive | |||
| defined:<list style="hanging"> | dContent="RFC7656">"A Taxonomy of Semantics and | |||
| <t hangText="RTP Mixer:">An RTP middle node, defined in <xref | Mechanisms for Real-Time | |||
| target="RFC7667"/> (Section 3.6 to 3.9).</t> | Transport Protocol (RTP) Sources"</xref> and <xref target="RFC7667" forma | |||
| t="default" sectionFormat="of" derivedContent="RFC7667">"RTP Topologies"</xref>. | ||||
| <t hangText="RTP Session:">An association among a group of | The following terms are | |||
| participants communicating with RTP, as defined in <xref | especially noted or here defined:</t> | |||
| target="RFC3550"/> and amended by <xref target="RFC7656"/>.</t> | <dl newline="false" spacing="normal" indent="3" pn="section-2.1-2"> | |||
| <dt pn="section-2.1-2.1">RTP mixer:</dt> | ||||
| <t hangText="RTP Stream:">A stream of RTP packets containing media | <dd pn="section-2.1-2.2">An RTP middlebox, in the wide sense of the te | |||
| data, as defined in <xref target="RFC7656"/>.</t> | rm, encompassing | |||
| Sections <xref target="RFC7667" section="3.6" sectionFormat="bare" for | ||||
| <t hangText="RTP Switch:">A common short term for the terms | mat="default" derivedLink="https://rfc-editor.org/rfc/rfc7667#section-3.6" deriv | |||
| edContent="RFC7667"/> | ||||
| to <xref target="RFC7667" section="3.9" sectionFormat="bare" format="d | ||||
| efault" derivedLink="https://rfc-editor.org/rfc/rfc7667#section-3.9" derivedCont | ||||
| ent="RFC7667"/> of | ||||
| <xref target="RFC7667" format="default" sectionFormat="of" derivedCont | ||||
| ent="RFC7667"/>.</dd> | ||||
| <dt pn="section-2.1-2.3">RTP session:</dt> | ||||
| <dd pn="section-2.1-2.4">An association among a group of | ||||
| participants communicating with RTP, as defined in <xref target="RFC | ||||
| 3550" format="default" sectionFormat="of" derivedContent="RFC3550"/> and amended | ||||
| by <xref target="RFC7656" format="default" sectionFormat="of" derivedContent="R | ||||
| FC7656"/>.</dd> | ||||
| <dt pn="section-2.1-2.5">RTP stream:</dt> | ||||
| <dd pn="section-2.1-2.6">A stream of RTP packets containing media | ||||
| data, as defined in <xref target="RFC7656" format="default" sectionF | ||||
| ormat="of" derivedContent="RFC7656"/>.</dd> | ||||
| <dt pn="section-2.1-2.7">RTP switch:</dt> | ||||
| <dd pn="section-2.1-2.8">A common short term for the terms | ||||
| "switching RTP mixer", "source projecting middlebox", and "video | "switching RTP mixer", "source projecting middlebox", and "video | |||
| switching MCU" as discussed in <xref target="RFC7667"/>.</t> | switching Multipoint Control Unit (MCU)", as discussed in <xref targ | |||
| et="RFC7667" format="default" sectionFormat="of" derivedContent="RFC7667"/>.</dd | ||||
| <t hangText="Simulcast Stream:">One encoded stream or dependent | > | |||
| <dt pn="section-2.1-2.9">Simulcast stream:</dt> | ||||
| <dd pn="section-2.1-2.10">One encoded stream or dependent | ||||
| stream from a set of concurrently transmitted encoded streams and | stream from a set of concurrently transmitted encoded streams and | |||
| optional dependent streams, all sharing a common media source, as | optional dependent streams, all sharing a common media source, as | |||
| defined in <xref target="RFC7656"/>. For example, HD and thumbnail | defined in <xref target="RFC7656" format="default" sectionFormat="of " derivedContent="RFC7656"/>. For example, HD and thumbnail | |||
| video simulcast versions of a single media source sent | video simulcast versions of a single media source sent | |||
| concurrently as separate RTP Streams.</t> | concurrently as separate RTP streams.</dd> | |||
| <dt pn="section-2.1-2.11">Simulcast format:</dt> | ||||
| <t hangText="Simulcast Format:">Different formats of a simulcast | <dd pn="section-2.1-2.12">Different formats of a simulcast | |||
| stream serve the same purpose as alternative RTP payload types in | stream serve the same purpose as alternative RTP payload types in | |||
| non-simulcast SDP: to allow multiple alternative media formats for | nonsimulcast SDP: to allow multiple alternative media formats for | |||
| a given RTP stream. As for multiple RTP payload types on the | a given RTP stream. As for multiple RTP payload types on the | |||
| m-line in <xref target="RFC3264">offer/answer</xref>, any one of | "m=" line in <xref target="RFC3264" format="default" sectionFormat=" of" derivedContent="RFC3264">offer/answer</xref>, any one of | |||
| the negotiated alternative formats can be used in a single RTP | the negotiated alternative formats can be used in a single RTP | |||
| stream at a given point in time, but not more than one (based on | stream at a given point in time, but not more than one (based on | |||
| RTP timestamp). What format is used can change dynamically from | RTP timestamp). What format is used can change dynamically from | |||
| one RTP packet to another.</t> | one RTP packet to another.</dd> | |||
| </list></t> | </dl> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-2.2 | ||||
| <section title="Requirements Language"> | "> | |||
| <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <name slugifiedName="name-requirements-language">Requirements Language</ | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | name> | |||
| "OPTIONAL" in this document are to be interpreted as described in BCP | <t indent="0" pn="section-2.2-1"> | |||
| 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
| when, they appear in all capitals, as shown here.</t> | "<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 "<bcp14>OPTIONAL</bcp14>" in this document are | ||||
| to be interpreted as | ||||
| described in BCP 14 <xref target="RFC2119" format="default" sectionFormat="o | ||||
| f" derivedContent="RFC2119"/> <xref target="RFC8174" format="default" sectionFor | ||||
| mat="of" derivedContent="RFC8174"/> | ||||
| when, and only when, they appear in all capitals, as shown here. | ||||
| </t> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-use-cases" numbered="true" toc="include" removeInRFC="f | ||||
| <section anchor="sec-use-cases" title="Use Cases"> | alse" pn="section-3"> | |||
| <t>The use cases of simulcast described in this document relate to a | <name slugifiedName="name-use-cases">Use Cases</name> | |||
| multi-party communication session where one or more central nodes are | <t indent="0" pn="section-3-1">The use cases of simulcast described in thi | |||
| s document relate to a | ||||
| multiparty communication session where one or more central nodes are | ||||
| used to adapt the view of the communication session towards individual | used to adapt the view of the communication session towards individual | |||
| participants, and facilitate the media transport between participants. | participants and facilitate the media transport between participants. | |||
| Thus, these cases target the RTP Mixer type of topology.</t> | Thus, these cases target the RTP mixer type of topology.</t> | |||
| <t indent="0" pn="section-3-2">There are two principal approaches for an R | ||||
| <t>There are two principal approaches for an RTP Mixer to provide this | TP mixer to provide this | |||
| adapted view of the communication session to each receiving | adapted view of the communication session to each receiving | |||
| participant:<list style="symbols"> | participant:</t> | |||
| <t>Transcoding (decoding and re-encoding) received RTP streams with | <ul spacing="normal" bare="false" empty="false" indent="3" pn="section-3-3 | |||
| "> | ||||
| <li pn="section-3-3.1">Transcoding (decoding and re-encoding) received R | ||||
| TP streams with | ||||
| characteristics adapted to each receiving participant. This often | characteristics adapted to each receiving participant. This often | |||
| include mixing or composition of media sources from multiple | includes mixing or composition of media sources from multiple | |||
| participants into a mixed media source originated by the RTP Mixer. | participants into a mixed media source originated by the RTP mixer. | |||
| The main advantage of this approach is that it achieves close to | The main advantage of this approach is that it achieves | |||
| optimal adaptation to individual receiving participants. The main | close-to-optimal adaptation to individual receiving | |||
| participants. The main | ||||
| disadvantages are that it can be very computationally expensive to | disadvantages are that it can be very computationally expensive to | |||
| the RTP Mixer, typically degrades media Quality of Experience (QoE) | the RTP mixer, typically degrades media Quality of Experience (QoE) | |||
| such as end-to-end delay for the receiving participants, and | such as creating end-to-end delay for the receiving participants, and | |||
| requires RTP Mixer access to media content.</t> | requires the RTP mixer to have access to media content.</li> | |||
| <li pn="section-3-3.2">Switching a subset of all received RTP streams or | ||||
| <t>Switching a subset of all received RTP streams or sub-streams to | substreams to | |||
| each receiving participant, where the used subset is typically | each receiving participant, where the used subset is typically | |||
| specific to each receiving participant. The main advantages of this | specific to each receiving participant. The main advantages of this | |||
| approach are that it is computationally cheap to the RTP Mixer, has | approach are that it is computationally cheap to the RTP mixer, has | |||
| very limited impact on media QoE, and does not require RTP Mixer | very limited impact on media QoE, and does not require the RTP mixer | |||
| (full) access to media content. The main disadvantage is that it can | to have (full) access to media content. The main disadvantage is | |||
| be difficult to combine a subset of received RTP streams into a | that it can be difficult to combine a subset of received RTP streams in | |||
| perfect fit to the resource situation of a receiving participant. It | to a | |||
| perfect fit for the resource situation of a receiving participant. It | ||||
| is also a disadvantage that sending multiple RTP streams consumes | is also a disadvantage that sending multiple RTP streams consumes | |||
| more network resources from the sending participant to the RTP | more network resources from the sending participant to the RTP | |||
| Mixer.</t> | mixer.</li> | |||
| </list></t> | </ul> | |||
| <t indent="0" pn="section-3-4">The use of simulcast relates to the latter | ||||
| <t>The use of simulcast relates to the latter approach, where it is more | approach, where it is more | |||
| important to reduce the load on the RTP Mixer and/or minimize QoE impact | important to reduce the load on the RTP mixer and/or minimize QoE impact | |||
| than to achieve an optimal adaptation of resource usage.</t> | than to achieve an optimal adaptation of resource usage.</t> | |||
| <section anchor="sec-diverse-receivers" numbered="true" toc="include" remo | ||||
| <section anchor="sec-diverse-receivers" | veInRFC="false" pn="section-3.1"> | |||
| title="Reaching a Diverse Set of Receivers"> | <name slugifiedName="name-reaching-a-diverse-set-of-r">Reaching a Divers | |||
| <t>The media sources provided by a sending participant potentially | e Set of Receivers</name> | |||
| <t indent="0" pn="section-3.1-1">The media sources provided by a sending | ||||
| participant potentially | ||||
| need to reach several receiving participants that differ in terms of | need to reach several receiving participants that differ in terms of | |||
| available resources. The receiver resources that typically differ | available resources. The receiver resources that typically differ | |||
| include, but are not limited to:<list style="hanging"> | include, but are not limited to:</t> | |||
| <t hangText="Codec:">This includes codec type (such as RTP payload | <dl newline="false" spacing="normal" indent="3" pn="section-3.1-2"> | |||
| <dt pn="section-3.1-2.1">Codec:</dt> | ||||
| <dd pn="section-3.1-2.2">This includes codec type (such as RTP payload | ||||
| format MIME type) and can include codec configuration. A couple of | format MIME type) and can include codec configuration. A couple of | |||
| codec resources that differ only in codec configuration will be | codec resources that differ only in codec configuration will be | |||
| "different" if they are somehow not "compatible", like if they | "different" if they are somehow not "compatible", such as if they | |||
| differ in video codec profile, or the transport packetization | differ in video codec profile or the transport packetization | |||
| configuration.</t> | configuration.</dd> | |||
| <dt pn="section-3.1-2.3">Sampling:</dt> | ||||
| <t hangText="Sampling:">This relates to how the media source is | <dd pn="section-3.1-2.4">This relates to how the media source is | |||
| sampled, in spatial as well as in temporal domain. For video | sampled, in spatial as well as temporal domain. For video | |||
| streams, spatial sampling affects image resolution and temporal | streams, spatial sampling affects image resolution, and temporal | |||
| sampling affects video frame rate. For audio, spatial sampling | sampling affects video frame rate. For audio, spatial sampling | |||
| relates to the number of audio channels and temporal sampling | relates to the number of audio channels, and temporal sampling | |||
| affects audio bandwidth. This may be used to suit different | affects audio bandwidth. This may be used to suit different | |||
| rendering capabilities or needs at the receiving endpoints.</t> | rendering capabilities or needs at the receiving endpoints.</dd> | |||
| <dt pn="section-3.1-2.5">Bitrate:</dt> | ||||
| <t hangText="Bitrate:">This relates to the number of bits sent per | <dd pn="section-3.1-2.6">This relates to the number of bits sent per | |||
| second to transmit the media source as an RTP stream, which | second to transmit the media source as an RTP stream, which | |||
| typically also affects the QoE for the receiving user.</t> | typically also affects the QoE for the receiving user.</dd> | |||
| </list>Letting the sending participant create a simulcast of a few | </dl> | |||
| <t indent="0" pn="section-3.1-3">Letting the sending participant create | ||||
| a simulcast of a few | ||||
| differently configured RTP streams per media source can be a good | differently configured RTP streams per media source can be a good | |||
| tradeoff when using an RTP switch as middlebox, instead of sending a | trade-off when using an RTP switch as middlebox, instead of sending a | |||
| single RTP stream and using an RTP mixer to create individual | single RTP stream and using an RTP mixer to create individual | |||
| transcodings to each receiving participant.</t> | transcodings to each receiving participant.</t> | |||
| <t indent="0" pn="section-3.1-4">This requires that the receiving partic | ||||
| <t>This requires that the receiving participants can be categorized in | ipants can be categorized in | |||
| terms of available resources and that the sending participant can | terms of available resources and that the sending participant can | |||
| choose a matching configuration for a single RTP stream per category | choose a matching configuration for a single RTP stream per category | |||
| and media source. For example, a set of receiving participants differ | and media source. For example, a set of receiving participants differ | |||
| only in screen resolution; some are able to display video with at most | only in screen resolution; some are able to display video with at most | |||
| 360p resolution and some support 720p resolution. A sending | 360p resolution, and some support 720p resolution. A sending | |||
| participant can then reach all receivers with best possible resolution | participant can then reach all receivers with best possible resolution | |||
| by creating a simulcast of RTP streams with 360p and 720p resolution | by creating a simulcast of RTP streams with 360p and 720p resolution | |||
| for each sent video media source.</t> | for each sent video media source.</t> | |||
| <t indent="0" pn="section-3.1-5">The maximum number of simulcasted RTP s | ||||
| <t>The maximum number of simulcasted RTP streams that can be sent is | treams that can be sent is | |||
| mainly limited by the amount of processing and uplink network | mainly limited by the amount of processing and uplink network | |||
| resources available to the sending participant.</t> | resources available to the sending participant.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-application-specific" numbered="true" toc="include" r | ||||
| <section anchor="sec-application-specific" | emoveInRFC="false" pn="section-3.2"> | |||
| title="Application Specific Media Source Handling"> | <name slugifiedName="name-application-specific-media-">Application-Speci | |||
| <t>The application logic that controls the communication session may | fic Media Source Handling</name> | |||
| <t indent="0" pn="section-3.2-1">The application logic that controls the | ||||
| communication session may | ||||
| include special handling of some media sources. It is, for example, | include special handling of some media sources. It is, for example, | |||
| commonly the case that the media from a sending participant is not | commonly the case that the media from a sending participant is not | |||
| sent back to itself.</t> | sent back to itself.</t> | |||
| <t indent="0" pn="section-3.2-2">It is also common that a currently acti | ||||
| <t>It is also common that a currently active speaker participant is | ve speaker participant is | |||
| shown in larger size or higher quality than other participants (the | shown in larger size or higher quality than other participants (the | |||
| sampling or bitrate aspects of <xref target="sec-diverse-receivers"/>) | sampling or bitrate aspects of <xref target="sec-diverse-receivers" form at="default" sectionFormat="of" derivedContent="Section 3.1"/>) | |||
| in a receiving client. Many conferencing systems do not send the | in a receiving client. Many conferencing systems do not send the | |||
| active speaker's media back to the sender itself, which means there is | active speaker's media back to the sender itself, which means there is | |||
| some other participant's media that instead is forwarded to the active | some other participant's media that instead is forwarded to the active | |||
| speaker; typically the previous active speaker. This way, the | speaker -- typically the previous active speaker. This way, the | |||
| previously active speaker is needed both in larger size (to current | previously active speaker is needed both in larger size (to current | |||
| active speaker) and in small size (to the rest of the participants), | active speaker) and in small size (to the rest of the participants), | |||
| which can be solved with a simulcast from the previously active | which can be solved with a simulcast from the previously active | |||
| speaker to the RTP switch.</t> | speaker to the RTP switch.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-receiver-preferences" numbered="true" toc="include" r | ||||
| <section anchor="sec-receiver-preferences" | emoveInRFC="false" pn="section-3.3"> | |||
| title="Receiver Media Source Preferences"> | <name slugifiedName="name-receiver-media-source-prefe">Receiver Media-So | |||
| <t>The application logic that controls the communication session may | urce Preferences</name> | |||
| <t indent="0" pn="section-3.3-1">The application logic that controls the | ||||
| communication session may | ||||
| allow receiving participants to state preferences on the | allow receiving participants to state preferences on the | |||
| characteristics of the RTP stream they like to receive, for example in | characteristics of the RTP stream they like to receive, for example in | |||
| terms of the aspects listed in <xref target="sec-diverse-receivers"/>. | terms of the aspects listed in <xref target="sec-diverse-receivers" form at="default" sectionFormat="of" derivedContent="Section 3.1"/>. | |||
| Sending a simulcast of RTP streams is one way of accommodating | Sending a simulcast of RTP streams is one way of accommodating | |||
| receivers with conflicting or otherwise incompatible preferences.</t> | receivers with conflicting or otherwise incompatible preferences.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-overview" numbered="true" toc="include" removeInRFC="fa | ||||
| <section anchor="sec-overview" title="Overview"> | lse" pn="section-4"> | |||
| <t>This memo defines <xref target="RFC4566">SDP</xref> signaling that | <name slugifiedName="name-overview">Overview</name> | |||
| <t indent="0" pn="section-4-1">This memo defines <xref target="RFC4566" fo | ||||
| rmat="default" sectionFormat="of" derivedContent="RFC4566">SDP</xref> signaling | ||||
| that | ||||
| covers the above described simulcast use cases and functionalities. A | covers the above described simulcast use cases and functionalities. A | |||
| number of requirements for such signaling are elaborated in <xref | number of requirements for such signaling are elaborated in <xref target=" | |||
| target="sec-requirements"/>.</t> | sec-requirements" format="default" sectionFormat="of" derivedContent="Appendix A | |||
| "/>.</t> | ||||
| <t>The RID mechanism, as defined in <xref | <t indent="0" pn="section-4-2">The Restriction Identifier (RID) mechanism, | |||
| target="I-D.ietf-mmusic-rid"/>, enables an SDP offerer or answerer to | as defined in <xref target="RFC8851" format="default" sectionFormat="of" derive | |||
| dContent="RFC8851"/>, enables an SDP offerer or answerer to | ||||
| specify a number of different RTP stream restrictions for a rid-id by | specify a number of different RTP stream restrictions for a rid-id by | |||
| using the "a=rid" line. Examples of such restrictions are maximum | using the "a=rid" line. Examples of such restrictions are maximum | |||
| bitrate, maximum spatial video resolution (width and height), maximum | bitrate, maximum spatial video resolution (width and height), maximum | |||
| video framerate, etc. Each rid-id may also be restricted to use only a | video frame rate, etc. Each rid-id may also be restricted to use only a | |||
| subset of the RTP payload types in the associated SDP media description. | subset of the RTP payload types in the associated SDP media description. | |||
| Those RTP payload types can have their own configurations and parameters | Those RTP payload types can have their own configurations and parameters | |||
| affecting what can be sent or received, using the "a=fmtp" line as well | affecting what can be sent or received, using the "a=fmtp" line as well | |||
| as other SDP attributes.</t> | as other SDP attributes.</t> | |||
| <t indent="0" pn="section-4-3">A new SDP media-level attribute, "a=simulca | ||||
| <t>A new SDP media level attribute "a=simulcast" is defined. The | st", is defined. The | |||
| attribute describes, independently for send and receive directions, the | attribute describes, independently for "send" and "receive" directions, th | |||
| e | ||||
| number of simulcast RTP streams as well as potential alternative formats | number of simulcast RTP streams as well as potential alternative formats | |||
| for each simulcast RTP stream. Each simulcast RTP stream, including | for each simulcast RTP stream. Each simulcast RTP stream, including | |||
| alternatives, is identified using the RID identifier (rid-id), defined | alternatives, is identified using the RID identifier (rid-id), defined | |||
| in <xref target="I-D.ietf-mmusic-rid"/>.</t> | in <xref target="RFC8851" format="default" sectionFormat="of" derivedConte | |||
| nt="RFC8851"/>.</t> | ||||
| <figure align="left"> | <sourcecode type="sdp" markers="false" pn="section-4-4"> | |||
| <artwork align="left"><![CDATA[a=simulcast:send 1;2,3 recv 4 | a=simulcast:send 1;2,3 recv 4 | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | <t indent="0" pn="section-4-5">If this line is included in an SDP offer, t | |||
| he "send" part | ||||
| <t>If the above line is included in an SDP offer, the "send" part | ||||
| indicates the offerer's capability and proposal to send two simulcast | indicates the offerer's capability and proposal to send two simulcast | |||
| RTP streams. Each simulcast stream is described by one or more RTP | RTP streams. Each simulcast stream is described by one or more RTP | |||
| stream identifiers (rid-id), each group of rid-ids for a simulcast | stream identifiers (rid-ids), and each group of rid-ids for a simulcast | |||
| stream is separated by a semicolon (";"). When a simulcast stream has | stream is separated by a semicolon (";"). When a simulcast stream has | |||
| multiple rid-ids that are separated by a comma (","), they describe | multiple rid-ids that are separated by a comma (","), they describe | |||
| alternative representations for that particular simulcast RTP stream. | alternative representations for that particular simulcast RTP stream. | |||
| Thus, the above "send" part is interpreted as an intention to send two | Thus, the "send" part shown above is interpreted as an intention to send t wo | |||
| simulcast RTP streams. The first simulcast RTP stream is identified and | simulcast RTP streams. The first simulcast RTP stream is identified and | |||
| restricted according to rid-id 1. The second simulcast RTP stream can be | restricted according to rid-id 1. The second simulcast RTP stream can be | |||
| sent as two alternatives, identified and restricted according to rid-ids | sent as two alternatives, identified and restricted according to rid-ids | |||
| 2 and 3. The "recv" part of the above line indicates that the offerer | 2 and 3. The "recv" part of the line shown here indicates that the offerer | |||
| desires to receive a single RTP stream (no simulcast) according to | desires to receive a single RTP stream (no simulcast) according to | |||
| rid-id 4.</t> | rid-id 4.</t> | |||
| <t indent="0" pn="section-4-6">A more complete example SDP-offer media des | ||||
| <t>A more complete example SDP offer media description is provided | cription is provided | |||
| below:</t> | in <xref target="fig-md-offer" format="default" sectionFormat="of" derived | |||
| Content="Figure 1"/>.</t> | ||||
| <figure align="center" anchor="fig-md-offer" | <figure anchor="fig-md-offer" align="left" suppress-title="false" pn="figu | |||
| title="Example Simulcast Media Description in Offer"> | re-1"> | |||
| <artwork align="left"><![CDATA[ | <name slugifiedName="name-example-simulcast-media-des">Example Simulcast | |||
| Media Description in Offer</name> | ||||
| <sourcecode type="sdp" markers="false" pn="section-4-7.1"> | ||||
| m=video 49300 RTP/AVP 97 98 99 | m=video 49300 RTP/AVP 97 98 99 | |||
| a=rtpmap:97 H264/90000 | a=rtpmap:97 H264/90000 | |||
| a=rtpmap:98 H264/90000 | a=rtpmap:98 H264/90000 | |||
| a=rtpmap:99 VP8/90000 | a=rtpmap:99 VP8/90000 | |||
| a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000 | a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000 | |||
| a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600 | a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600 | |||
| a=fmtp:99 max-fs=240; max-fr=30 | a=fmtp:99 max-fs=240; max-fr=30 | |||
| a=rid:1 send pt=97;max-width=1280;max-height=720 | a=rid:1 send pt=97;max-width=1280;max-height=720 | |||
| a=rid:2 send pt=98;max-width=320;max-height=180 | a=rid:2 send pt=98;max-width=320;max-height=180 | |||
| a=rid:3 send pt=99;max-width=320;max-height=180 | a=rid:3 send pt=99;max-width=320;max-height=180 | |||
| a=rid:4 recv pt=97 | a=rid:4 recv pt=97 | |||
| a=simulcast:send 1;2,3 recv 4 | a=simulcast:send 1;2,3 recv 4 | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-4-8">The SDP media description in <xref target=" | ||||
| <t>The above SDP media description can be interpreted at a high level to | fig-md-offer" format="default" sectionFormat="of" derivedContent="Figure 1"/> ca | |||
| say that the offerer is capable of sending two simulcast RTP streams, | n be | |||
| interpreted at a high level to | ||||
| say that the offerer is capable of sending two simulcast RTP streams: | ||||
| one H.264 encoded stream in up to 720p resolution, and one additional | one H.264 encoded stream in up to 720p resolution, and one additional | |||
| stream encoded as either H.264 or VP8 with a maximum resolution of | stream encoded as either H.264 or VP8 with a maximum resolution of | |||
| 320x180 pixels. The offerer can receive one H.264 stream with maximum | 320x180 pixels. The offerer can receive one H.264 stream with maximum | |||
| 720p resolution.</t> | 720p resolution.</t> | |||
| <t indent="0" pn="section-4-9">The receiver of this SDP offer can generate | ||||
| <t>The receiver of this SDP offer can generate an SDP answer that | an SDP answer that | |||
| indicates what it accepts. It uses the "a=simulcast" attribute to | indicates what it accepts. It uses the "a=simulcast" attribute to | |||
| indicate simulcast capability and specify what simulcast RTP streams and | indicate simulcast capability and specify what simulcast RTP streams and | |||
| alternatives to receive and/or send. An example of such answering | alternatives to receive and/or send. An example of such an answering | |||
| "a=simulcast" attribute, corresponding to the above offer, is:</t> | "a=simulcast" attribute, corresponding to the above offer, is:</t> | |||
| <sourcecode type="sdp" markers="false" pn="section-4-10"> | ||||
| <figure align="left"> | a=simulcast:recv 1;2 send 4 | |||
| <artwork align="left"><![CDATA[a=simulcast:recv 1;2 send 4 | </sourcecode> | |||
| ]]></artwork> | <t indent="0" pn="section-4-11">With this SDP answer, the answerer indicat | |||
| </figure> | es in the "recv" part that | |||
| <t>With this SDP answer, the answerer indicates in the "recv" part that | ||||
| it wants to receive the two simulcast RTP streams. It has removed an | it wants to receive the two simulcast RTP streams. It has removed an | |||
| alternative that it doesn't support (rid-id 3). The send part confirms | alternative that it doesn't support (rid-id 3). The "send" part confirms | |||
| to the offerer that it will receive one stream for this media source | to the offerer that it will receive one stream for this media source | |||
| according to rid-id 4. The corresponding, more complete example SDP | according to rid-id 4. The corresponding, more complete example SDP | |||
| answer media description could look like:</t> | answer media description could look like <xref target="fig-md-answer" form | |||
| at="default" sectionFormat="of" derivedContent="Figure 2"/>.</t> | ||||
| <figure align="center" anchor="fig-md-answer" | <figure anchor="fig-md-answer" align="left" suppress-title="false" pn="fig | |||
| title="Example Simulcast Media Description in Answer"> | ure-2"> | |||
| <artwork align="left"><![CDATA[ | <name slugifiedName="name-example-simulcast-media-desc">Example Simulcas | |||
| t Media Description in Answer</name> | ||||
| <sourcecode type="sdp" markers="false" pn="section-4-12.1"> | ||||
| m=video 49674 RTP/AVP 97 98 | m=video 49674 RTP/AVP 97 98 | |||
| a=rtpmap:97 H264/90000 | a=rtpmap:97 H264/90000 | |||
| a=rtpmap:98 H264/90000 | a=rtpmap:98 H264/90000 | |||
| a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000 | a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000 | |||
| a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600 | a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600 | |||
| a=rid:1 recv pt=97;max-width=1280;max-height=720 | a=rid:1 recv pt=97;max-width=1280;max-height=720 | |||
| a=rid:2 recv pt=98;max-width=320;max-height=180 | a=rid:2 recv pt=98;max-width=320;max-height=180 | |||
| a=rid:4 send pt=97 | a=rid:4 send pt=97 | |||
| a=simulcast:recv 1;2 send 4 | a=simulcast:recv 1;2 send 4 | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-4-13">It is assumed that a single SDP media desc | ||||
| <t>It is assumed that a single SDP media description is used to describe | ription is used to describe | |||
| a single media source. This is aligned with the concepts defined in | a single media source. This is aligned with the concepts defined in | |||
| <xref target="RFC7656"/> and will work in a WebRTC context, both with | <xref target="RFC7656" format="default" sectionFormat="of" derivedContent= | |||
| and without <xref | "RFC7656"/> and will work in a WebRTC context, both with | |||
| target="I-D.ietf-mmusic-sdp-bundle-negotiation">BUNDLE</xref> grouping | and without BUNDLE grouping of media descriptions <xref target="RFC8843" f | |||
| of media descriptions.</t> | ormat="default" sectionFormat="of" derivedContent="RFC8843"/>.</t> | |||
| <t indent="0" pn="section-4-14">To summarize, the "a=simulcast" line descr | ||||
| <t>To summarize, the "a=simulcast" line describes send and receive | ibes "send"- and | |||
| direction simulcast streams separately. Each direction can in turn | "receive"-direction simulcast streams separately. Each direction can in | |||
| describe one or more simulcast streams, separated by semicolon. The | turn describe one or more simulcast streams, separated by semicolons. The | |||
| identifiers describing simulcast streams on the "a=simulcast" line are | identifiers describing simulcast streams on the "a=simulcast" line are | |||
| rid-id, as defined by "a=rid" lines in <xref | rid-ids, as defined by "a=rid" lines in <xref target="RFC8851" format="def | |||
| target="I-D.ietf-mmusic-rid"/>. Each simulcast stream can be offered as | ault" sectionFormat="of" derivedContent="RFC8851"/>. Each simulcast stream can b | |||
| a list of alternative rid-id, with each alternative separated by comma | e offered as | |||
| (not in the examples above). A detailed specification can be found in | a list of alternative rid-ids, with each alternative separated by a comma | |||
| <xref target="sec-details"/> and more detailed examples are outlined in | as shown in the example offer in <xref target="fig-md-offer" format="defau | |||
| <xref target="sec-ex"/>.</t> | lt" sectionFormat="of" derivedContent="Figure 1"/>. A detailed specification can | |||
| be found in | ||||
| <xref target="sec-details" format="default" sectionFormat="of" derivedCont | ||||
| ent="Section 5"/>, and more detailed examples are outlined in | ||||
| <xref target="sec-ex" format="default" sectionFormat="of" derivedContent=" | ||||
| Section 5.6"/>.</t> | ||||
| </section> | </section> | |||
| <section anchor="sec-details" numbered="true" toc="include" removeInRFC="fal | ||||
| <section anchor="sec-details" title="Detailed Description"> | se" pn="section-5"> | |||
| <t>This section further details the overview <xref | <name slugifiedName="name-detailed-description">Detailed Description</name | |||
| target="sec-overview">above</xref>. First, formal syntax is <xref | > | |||
| target="sec-attr">provided</xref>, followed by the rest of the SDP | <t indent="0" pn="section-5-1">This section provides further details to th | |||
| attribute definition in <xref target="sec-cap"/>. <xref | e overview in <xref target="sec-overview" format="default" sectionFormat="of" de | |||
| target="sec-relating">Relating Simulcast Streams </xref> provides the | rivedContent="Section 4"/>. First, formal syntax is <xref target="sec-attr" form | |||
| definition of the RTP/RTCP mechanisms used. The section is concluded | at="default" sectionFormat="of" derivedContent="Section 5.1">provided</xref>, fo | |||
| llowed by the rest of the SDP | ||||
| attribute definition in <xref target="sec-cap" format="default" sectionFor | ||||
| mat="of" derivedContent="Section 5.2"/>. <xref target="sec-relating" format="def | ||||
| ault" sectionFormat="of" derivedContent="Section 5.5">"Relating Simulcast Stream | ||||
| s"</xref> provides the | ||||
| definition of the RTP/RTCP mechanisms used. The section concludes | ||||
| with a number of examples.</t> | with a number of examples.</t> | |||
| <section anchor="sec-attr" numbered="true" toc="include" removeInRFC="fals | ||||
| <section anchor="sec-attr" title="Simulcast Attribute"> | e" pn="section-5.1"> | |||
| <t>This document defines a new SDP media-level "a=simulcast" | <name slugifiedName="name-simulcast-attribute">Simulcast Attribute</name | |||
| attribute, with value according to the following <xref | > | |||
| target="RFC5234">ABNF</xref> syntax and its update for <xref | <t indent="0" pn="section-5.1-1">This document defines a new SDP media-l | |||
| target="RFC7405">Case-Sensitive String Support in ABNF</xref>:</t> | evel "a=simulcast" | |||
| attribute, with value according to the syntax in <xref target="fig-abnf" | ||||
| <figure align="center" anchor="fig-abnf" | format="default" sectionFormat="of" derivedContent="Figure 3"/>, which uses <xr | |||
| title="ABNF for Simulcast Value"> | ef target="RFC5234" format="default" sectionFormat="of" derivedContent="RFC5234" | |||
| <artwork align="center"><![CDATA[ | >ABNF</xref> and its update, <xref target="RFC7405" format="default" sectionForm | |||
| at="of" derivedContent="RFC7405">"Case-Sensitive String Support in ABNF"</xref>: | ||||
| </t> | ||||
| <figure anchor="fig-abnf" align="left" suppress-title="false" pn="figure | ||||
| -3"> | ||||
| <name slugifiedName="name-abnf-for-simulcast-value">ABNF for Simulcast | ||||
| Value</name> | ||||
| <sourcecode type="abnf" markers="false" pn="section-5.1-2.1"> | ||||
| sc-value = ( sc-send [SP sc-recv] ) / ( sc-recv [SP sc-send] ) | sc-value = ( sc-send [SP sc-recv] ) / ( sc-recv [SP sc-send] ) | |||
| sc-send = %s"send" SP sc-str-list | sc-send = %s"send" SP sc-str-list | |||
| sc-recv = %s"recv" SP sc-str-list | sc-recv = %s"recv" SP sc-str-list | |||
| sc-str-list = sc-alt-list *( ";" sc-alt-list ) | sc-str-list = sc-alt-list *( ";" sc-alt-list ) | |||
| sc-alt-list = sc-id *( "," sc-id ) | sc-alt-list = sc-id *( "," sc-id ) | |||
| sc-id-paused = "~" | sc-id-paused = "~" | |||
| sc-id = [sc-id-paused] rid-id | sc-id = [sc-id-paused] rid-id | |||
| ; SP defined in [RFC5234] | ; SP defined in [RFC5234] | |||
| ; rid-id defined in [I-D.ietf-mmusic-rid] | ; rid-id defined in [RFC8851] | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-5.1-3">The "a=simulcast" attribute has a param | ||||
| <t><list style="empty"> | eter in the form of one or | |||
| <t>Note to RFC Editor: Replace "I-D.ietf-mmusic-rid" in the above | ||||
| figure with RFC number of draft-ietf-mmusic-rid before publication | ||||
| of this document.</t> | ||||
| </list></t> | ||||
| <t>The "a=simulcast" attribute has a parameter in the form of one or | ||||
| two simulcast stream descriptions, each consisting of a direction | two simulcast stream descriptions, each consisting of a direction | |||
| ("send" or "recv"), followed by a list of one or more simulcast | ("send" or "recv"), followed by a list of one or more simulcast | |||
| streams. Each simulcast stream consists of one or more alternative | streams. Each simulcast stream consists of one or more alternative | |||
| simulcast formats. Each simulcast format is identified by a simulcast | simulcast formats. Each simulcast format is identified by a simulcast | |||
| stream identifier (rid-id). The rid-id MUST have the form of an RTP | stream identifier (rid-id). The rid-id <bcp14>MUST</bcp14> have the form | |||
| stream identifier, as described by <xref | of an RTP | |||
| target="I-D.ietf-mmusic-rid">RTP Payload Format | stream identifier, as described by <xref target="RFC8851" format="defaul | |||
| Restrictions</xref>.</t> | t" sectionFormat="of" derivedContent="RFC8851">"RTP Payload Format Restrictions" | |||
| </xref>.</t> | ||||
| <t>In the list of simulcast streams, each simulcast stream is | <t indent="0" pn="section-5.1-4">In the list of simulcast streams, each | |||
| separated by a semicolon (";"). Each simulcast stream can in turn be | simulcast stream is | |||
| separated by a semicolon (";"). Each simulcast stream can, in turn, be | ||||
| offered in one or more alternative formats, represented by rid-ids, | offered in one or more alternative formats, represented by rid-ids, | |||
| separated by a comma (","). Each rid-id can also be specified as | separated by commas (","). Each rid-id can also be specified as | |||
| initially <xref target="RFC7728">paused</xref>, indicated by | initially <xref target="RFC7728" format="default" sectionFormat="of" der | |||
| ivedContent="RFC7728">paused</xref>, indicated by | ||||
| prepending a "~" to the rid-id. The reason to allow separate initial | prepending a "~" to the rid-id. The reason to allow separate initial | |||
| pause states for each rid-id is that pause capability can be specified | pause states for each rid-id is that pause capability can be specified | |||
| individually for each RTP payload type referenced by an rid-id. Since | individually for each RTP payload type referenced by a rid-id. Since | |||
| pause capability specified via the "a=rtcp-fb" attribute applies only | pause capability specified via the "a=rtcp-fb" attribute applies only | |||
| to specified payload types and rid-id specified by "a=rid" can refer | to specified payload types, and a rid-id specified by "a=rid" can refer | |||
| to multiple different payload types, it is unfeasible to pause streams | to multiple different payload types, it is unfeasible to pause streams | |||
| with rid-id where any of the related RTP payload type(s) do not have | with rid-id where any of the related RTP payload type(s) do not have | |||
| pause capability.</t> | pause capability.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-cap" numbered="true" toc="include" removeInRFC="false | ||||
| <section anchor="sec-cap" title="Simulcast Capability"> | " pn="section-5.2"> | |||
| <t>Simulcast capability is expressed through a new media level <xref | <name slugifiedName="name-simulcast-capability">Simulcast Capability</na | |||
| target="sec-attr">SDP attribute, "a=simulcast"</xref>. The use of this | me> | |||
| <t indent="0" pn="section-5.2-1">Simulcast capability is expressed throu | ||||
| gh a new media-level <xref target="sec-attr" format="default" sectionFormat="of" | ||||
| derivedContent="Section 5.1">SDP attribute, "a=simulcast"</xref>. The use of th | ||||
| is | ||||
| attribute at the session level is undefined. Implementations of this | attribute at the session level is undefined. Implementations of this | |||
| specification MUST NOT use it at the session level and MUST ignore it | specification <bcp14>MUST NOT</bcp14> use it at the session level and <b cp14>MUST</bcp14> ignore it | |||
| if received at the session level. Extensions to this specification may | if received at the session level. Extensions to this specification may | |||
| define such session level usage. Each SDP media description MUST | define such session-level usage. Each SDP media description <bcp14>MUST< /bcp14> | |||
| contain at most one "a=simulcast" line.</t> | contain at most one "a=simulcast" line.</t> | |||
| <t indent="0" pn="section-5.2-2">There are separate and independent sets | ||||
| <t>There are separate and independent sets of simulcast streams in | of simulcast streams in the | |||
| send and receive directions. When listing multiple directions, each | "send" and "receive" directions. When listing multiple directions, each | |||
| direction MUST NOT occur more than once on the same line.</t> | direction <bcp14>MUST NOT</bcp14> occur more than once on the same line. | |||
| </t> | ||||
| <t>Simulcast streams using undefined rid-id MUST NOT be used as valid | <t indent="0" pn="section-5.2-3">Simulcast streams using undefined rid-i | |||
| simulcast streams by an RTP stream receiver. The direction for an | ds <bcp14>MUST NOT</bcp14> be used as valid | |||
| rid-id MUST be aligned with the direction specified for the | simulcast streams by an RTP stream receiver. The direction for a | |||
| rid-id <bcp14>MUST</bcp14> be aligned with the direction specified for t | ||||
| he | ||||
| corresponding RTP stream identifier on the "a=rid" line.</t> | corresponding RTP stream identifier on the "a=rid" line.</t> | |||
| <t indent="0" pn="section-5.2-4">The listed number of simulcast streams | ||||
| <t>The listed number of simulcast streams for a direction sets a limit | for a direction sets a limit | |||
| to the number of supported simulcast streams in that direction. The | to the number of supported simulcast streams in that direction. The | |||
| order of the listed simulcast streams in the "send" direction suggests | order of the listed simulcast streams in the "send" direction suggests | |||
| a proposed order of preference, in decreasing order: the rid-id listed | a proposed order of preference, in decreasing order: the rid-id listed | |||
| first is the most preferred and subsequent streams have progressively | first is the most preferred, and subsequent streams have progressively | |||
| lower preference. The order of the listed rid-id in the "recv" | lower preference. The order of the listed rid-ids in the "recv" | |||
| direction expresses which simulcast streams that are preferred, with | direction expresses which simulcast streams are preferred, with | |||
| the leftmost being most preferred. This can be of importance if the | the leftmost being most preferred. This can be of importance if the | |||
| number of actually sent simulcast streams have to be reduced for some | number of actually sent simulcast streams has to be reduced for some | |||
| reason.</t> | reason.</t> | |||
| <t indent="0" pn="section-5.2-5">rid-ids that have explicit <xref target | ||||
| <t>rid-id that have explicit <xref | ="RFC5583" format="default" sectionFormat="of" derivedContent="RFC5583">dependen | |||
| target="RFC5583">dependencies</xref> <xref | cies</xref> <xref target="RFC8851" format="default" sectionFormat="of" derivedCo | |||
| target="I-D.ietf-mmusic-rid"/> to other rid-id (even in the same media | ntent="RFC8851"/> to other rid-ids (even in the same media | |||
| description) MAY be used.</t> | description) <bcp14>MAY</bcp14> be used.</t> | |||
| <t indent="0" pn="section-5.2-6">Use of more than a single, alternative | ||||
| <t>Use of more than a single, alternative simulcast format for a | simulcast format for a | |||
| simulcast stream MAY be specified as part of the attribute parameters | simulcast stream <bcp14>MAY</bcp14> be specified as part of the | |||
| by expressing the simulcast stream as a comma-separated list of | attribute parameters by expressing the simulcast stream as a | |||
| alternative rid-id. The order of the rid-id alternatives within a | comma-separated list of alternative rid-ids. The order of the rid-id | |||
| simulcast stream is significant; the rid-id alternatives are listed | alternatives within a simulcast stream is significant; the rid-id | |||
| from (left) most preferred to (right) least preferred. For the use of | alternatives are listed from (left) most preferred to (right) least | |||
| simulcast, this overrides the normal codec preference as expressed by | preferred. For the use of simulcast, this overrides the normal codec | |||
| format type ordering on the "m=" line, using regular SDP rules. This | preference as expressed by format-type ordering on the "m=" line, | |||
| is to enable a separation of general codec preferences and simulcast | using regular SDP rules. This is to enable a separation of general | |||
| stream configuration preferences. However, the choice of which | codec preferences and simulcast-stream configuration | |||
| alternative to use per simulcast stream is independent, and there is | preferences. However, the choice of which alternative to use per | |||
| currently no mechanism to align the choice between alternative rid-ids | simulcast stream is independent, and there is currently no mechanism | |||
| between different simulcast streams.</t> | for the offerer to force the answerer to choose the same alternative | |||
| for multiple simulcast streams. | ||||
| <t>A simulcast stream can use a codec defined such that the same RTP | </t> | |||
| SSRC can change RTP payload type multiple times during a session, | <t indent="0" pn="section-5.2-7">A simulcast stream can use a codec defi | |||
| possibly even on a per-packet basis. A typical example can be a speech | ned such that the same RTP | |||
| codec that makes use of <xref target="RFC3389">Comfort Noise</xref> | synchronization source (SSRC) can change RTP payload type multiple | |||
| and/or <xref target="RFC4733">DTMF</xref> formats.</t> | times during a session, possibly even on a per-packet basis. A typical | |||
| example is a speech codec that makes use of formats for <xref target="RF | ||||
| <t>If <xref target="RFC7728">RTP stream pause/resume</xref> is | C3389" format="default" sectionFormat="of" derivedContent="RFC3389">Comfort Nois | |||
| supported, any rid-id MAY be prefixed by a "~" character to indicate | e</xref> and/or <xref target="RFC4733" format="default" sectionFormat="of" deriv | |||
| that the corresponding simulcast stream is initially paused already | edContent="RFC4733">dual-tone multifrequency | |||
| from start of the RTP session. In this case, support for RTP stream | (DTMF)</xref>.</t> | |||
| pause/resume MUST also be included under the same "m=" line where | <t indent="0" pn="section-5.2-8">If <xref target="RFC7728" format="defau | |||
| lt" sectionFormat="of" derivedContent="RFC7728">RTP stream | ||||
| pause/resume</xref> is supported, any rid-id <bcp14>MAY</bcp14> be | ||||
| prefixed by a "~" character to indicate that the corresponding | ||||
| simulcast stream is paused already from the start of the RTP | ||||
| session. In this case, support for RTP stream pause/resume | ||||
| <bcp14>MUST</bcp14> also be included under the same "m=" line where | ||||
| "a=simulcast" is included. All RTP payload types related to such an | "a=simulcast" is included. All RTP payload types related to such an | |||
| initially paused simulcast stream MUST be listed in the SDP as | initially paused simulcast stream <bcp14>MUST</bcp14> be listed in the | |||
| pause/resume capable as specified by <xref target="RFC7728"/>, e.g. by | SDP as pause/resume capable as specified by <xref target="RFC7728" forma | |||
| using the "*" wildcard format for "a=rtcp-fb".</t> | t="default" sectionFormat="of" derivedContent="RFC7728"/> -- e.g., by using the | |||
| "*" wildcard format for | ||||
| <t>An initially paused simulcast stream in "send" direction for the | "a=rtcp-fb".</t> | |||
| endpoint sending the SDP MUST be considered equivalent to an | <t indent="0" pn="section-5.2-9">An initially paused simulcast stream in | |||
| unsolicited locally paused stream, and be handled accordingly. | the "send" direction for the | |||
| endpoint sending the SDP <bcp14>MUST</bcp14> be considered equivalent to | ||||
| an | ||||
| unsolicited locally paused stream and handled accordingly. | ||||
| Initially paused simulcast streams are resumed as described by the RTP | Initially paused simulcast streams are resumed as described by the RTP | |||
| pause/resume specification. An RTP stream receiver that wishes to | pause/resume specification. An RTP stream receiver that wishes to | |||
| resume an unsolicited locally paused stream needs to know the SSRC of | resume an unsolicited locally paused stream needs to know the SSRC of | |||
| that stream. The SSRC of an initially paused simulcast stream can be | that stream. | |||
| obtained from an RTP stream sender RTCP Sender Report (SR) including | ||||
| both the desired SSRC as "SSRC of sender", and the rid-id value in an | ||||
| <xref target="I-D.ietf-avtext-rid">RtpStreamId RTCP SDES | ||||
| item</xref>.</t> | ||||
| <t>If the endpoint sending the SDP includes an "recv" direction | The SSRC of an initially paused simulcast stream can be obtained from | |||
| an RTP stream sender RTCP Sender Report (SR) or Receiver Report (RR) | ||||
| that includes both the desired SSRC as initial SSRC in the source | ||||
| description (SDES) chunk, optionally a <xref target="RFC8843" format="def | ||||
| ault" sectionFormat="of" derivedContent="RFC8843">MID SDES item</xref> (if used | ||||
| and if rid-ids are not | ||||
| unique across "m=" lines), and the rid-id value in an <xref target="RFC88 | ||||
| 52" format="default" sectionFormat="of" derivedContent="RFC8852">RtpStreamId RTC | ||||
| P SDES | ||||
| item</xref>.</t> | ||||
| <t indent="0" pn="section-5.2-10">If the endpoint sending the SDP includ | ||||
| es a "recv"-direction | ||||
| simulcast stream that is initially paused, then the remote RTP sender | simulcast stream that is initially paused, then the remote RTP sender | |||
| receiving the SDP SHOULD put its RTP stream in a unsolicited locally | receiving the SDP <bcp14>SHOULD</bcp14> put its RTP stream in an unsolic ited locally | |||
| paused state. The simulcast stream sender does not put the stream in | paused state. The simulcast stream sender does not put the stream in | |||
| the locally paused state if there are other RTP stream receivers in | the locally paused state if there are other RTP stream receivers in | |||
| the session that do not mark the simulcast stream as initially paused. | the session that do not mark the simulcast stream as initially paused. | |||
| However, in centralized conferencing the RTP sender usually does not | However, in centralized conferencing, the RTP sender usually does not | |||
| see the SDP signalling from RTP receivers and cannot make this | see the SDP signaling from RTP receivers and cannot make this | |||
| determination. The reason to require an initially paused "recv" stream | determination. The reason for requiring that an initially paused "recv" | |||
| to be considered locally paused by the remote RTP sender, instead of | stream | |||
| making it equivalent to implicitly sending a pause request, is because | be considered locally paused by the remote RTP sender instead of | |||
| making it equivalent to implicitly sending a pause request is that | ||||
| the pausing RTP sender cannot know which receiving SSRC owns the | the pausing RTP sender cannot know which receiving SSRC owns the | |||
| restriction when Temporary Maximum Media Stream Bit Rate Request | restriction when Temporary Maximum Media Stream Bit Rate Request | |||
| (TMMBR) and Temporary Maximum Media Stream Bit Rate Notification | (TMMBR) and Temporary Maximum Media Stream Bit Rate Notification | |||
| (TMMBN) are used for pause/resume signaling (<xref | (TMMBN) are used for pause/resume signaling (<xref target="RFC7728" sect | |||
| target="RFC7728">Section 5.6 of </xref>) since the RTP receiver's SSRC | ionFormat="of" section="5.6" format="default" derivedLink="https://rfc-editor.or | |||
| in send direction is sometimes not yet known.</t> | g/rfc/rfc7728#section-5.6" derivedContent="RFC7728"/>); this is because the RTP | |||
| receiver's SSRC | ||||
| <t>Use of the <xref target="RFC2198">redundant audio data</xref> | in the "send" direction is sometimes not yet known.</t> | |||
| format could be seen as a form of simulcast for loss protection | <t indent="0" pn="section-5.2-11">Use of the redundant audio data format | |||
| purposes, but is not considered conflicting with the mechanisms | <xref target="RFC2198" format="default" sectionFormat="of" derivedContent="RFC2 | |||
| described in this memo and MAY therefore be used as any other format. | 198"/> | |||
| In this case the "red" format, rather than the carried formats, SHOULD | could be seen as a form of simulcast for loss-protection | |||
| purposes, but it is not considered conflicting with the mechanisms | ||||
| described in this memo and <bcp14>MAY</bcp14> therefore be used as any o | ||||
| ther format. | ||||
| In this case, the "red" format, rather than the carried formats, <bcp14> | ||||
| SHOULD</bcp14> | ||||
| be the one to list as a simulcast stream on the "a=simulcast" | be the one to list as a simulcast stream on the "a=simulcast" | |||
| line.</t> | line.</t> | |||
| <t indent="0" pn="section-5.2-12">The media formats and corresponding ch | ||||
| <t>The media formats and corresponding characteristics of simulcast | aracteristics of simulcast | |||
| streams SHOULD be chosen such that they are different, e.g. as | streams <bcp14>SHOULD</bcp14> be chosen such that they are different -- | |||
| e.g., as | ||||
| different SDP formats with differing "a=rtpmap" and/or "a=fmtp" lines, | different SDP formats with differing "a=rtpmap" and/or "a=fmtp" lines, | |||
| or as differently defined RTP payload format restrictions. If this | or as differently defined RTP payload format restrictions. If this | |||
| difference is not required, it is RECOMMENDED to use <xref | difference is not required, it is <bcp14>RECOMMENDED</bcp14> to use RTP | |||
| target="RFC7104">RTP duplication</xref> procedures instead of | duplication | |||
| simulcast. To avoid complications in implementations, a single rid-id | procedures <xref target="RFC7104" format="default" sectionFormat="of" der | |||
| MUST NOT occur more than once per "a=simulcast" line. Note that this | ivedContent="RFC7104"/> instead of simulcast. To avoid | |||
| complications in implementations, a single rid-id | ||||
| <bcp14>MUST NOT</bcp14> occur more than once per "a=simulcast" line. Not | ||||
| e that this | ||||
| does not eliminate use of simulcast as an RTP duplication mechanism, | does not eliminate use of simulcast as an RTP duplication mechanism, | |||
| since it is possible to define multiple different rid-id that are | since it is possible to define multiple different rid-ids that are | |||
| effectively equivalent.</t> | effectively equivalent.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-offer-answer" numbered="true" toc="include" removeInR | ||||
| <section anchor="sec-offer-answer" title="Offer/Answer Use"> | FC="false" pn="section-5.3"> | |||
| <t><list style="empty"> | <name slugifiedName="name-offer-answer-use">Offer/Answer Use</name> | |||
| <t>Note: The inclusion of "a=simulcast" or the use of simulcast | <dl indent="3" newline="false" spacing="normal" pn="section-5.3-1"> | |||
| <dt pn="section-5.3-1.1">Note:</dt> | ||||
| <dd pn="section-5.3-1.2">The inclusion of "a=simulcast" or the use of | ||||
| simulcast | ||||
| does not change any of the interpretation or Offer/Answer | does not change any of the interpretation or Offer/Answer | |||
| procedures for other SDP attributes, like "a=fmtp" or "a=rid".</t> | procedures for other SDP attributes, such as "a=fmtp" or "a=rid".</d | |||
| </list></t> | d> | |||
| </dl> | ||||
| <section title="Generating the Initial SDP Offer"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-5 | |||
| <t>An offerer wanting to use simulcast for a media description SHALL | .3.1"> | |||
| <name slugifiedName="name-generating-the-initial-sdp-">Generating the | ||||
| Initial SDP Offer</name> | ||||
| <t indent="0" pn="section-5.3.1-1">An offerer wanting to use simulcast | ||||
| for a media description <bcp14>SHALL</bcp14> | ||||
| include one "a=simulcast" attribute in that media description in the | include one "a=simulcast" attribute in that media description in the | |||
| offer. An offerer listing a set of receive simulcast streams and/or | offer. An offerer listing a set of receive simulcast streams and/or | |||
| alternative formats as rid-id in the offer MUST be prepared to | alternative formats as rid-ids in the offer <bcp14>MUST</bcp14> be pre pared to | |||
| receive RTP streams for any of those simulcast streams and/or | receive RTP streams for any of those simulcast streams and/or | |||
| alternative formats from the answerer.</t> | alternative formats from the answerer.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5 | ||||
| <section title="Creating the SDP Answer"> | .3.2"> | |||
| <t>An answerer that does not understand the concept of simulcast | <name slugifiedName="name-creating-the-sdp-answer">Creating the SDP An | |||
| swer</name> | ||||
| <t indent="0" pn="section-5.3.2-1">An answerer that does not understan | ||||
| d the concept of simulcast | ||||
| will also not know the attribute and will remove it in the SDP | will also not know the attribute and will remove it in the SDP | |||
| answer, as defined in existing <xref target="RFC3264">SDP | answer, as defined in existing SDP offer/answer procedures <xref targe | |||
| Offer/Answer</xref> procedures. Since SDP session level simulcast is | t="RFC3264" format="default" sectionFormat="of" derivedContent="RFC3264"/>. Sinc | |||
| e SDP session-level simulcast is | ||||
| undefined in this memo, an answerer that receives an offer with the | undefined in this memo, an answerer that receives an offer with the | |||
| "a=simulcast" attribute on SDP session level SHALL remove it in the | "a=simulcast" attribute on the SDP session level <bcp14>SHALL</bcp14> remove it in the | |||
| answer. An answerer that understands the attribute but receives | answer. An answerer that understands the attribute but receives | |||
| multiple "a=simulcast" attributes in the same media description | multiple "a=simulcast" attributes in the same media description | |||
| SHALL disable use of simulcast by removing all "a=simulcast" lines | <bcp14>SHALL</bcp14> disable use of simulcast by removing all "a=simul cast" lines | |||
| for that media description in the answer.</t> | for that media description in the answer.</t> | |||
| <t indent="0" pn="section-5.3.2-2">An answerer that does understand th | ||||
| <t>An answerer that does understand the attribute and that wants to | e attribute and wants to | |||
| support simulcast in an indicated direction SHALL reverse | support simulcast in an indicated direction <bcp14>SHALL</bcp14> rever | |||
| directionality of the unidirectional direction parameters; "send" | se | |||
| becomes "recv" and vice versa, and include it in the answer.</t> | directionality of the unidirectional direction parameters -- "send" | |||
| becomes "recv" and vice versa -- and include it in the answer.</t> | ||||
| <t>An answerer that receives an offer with simulcast containing an | <t indent="0" pn="section-5.3.2-3">An answerer that receives an offer | |||
| "a=simulcast" attribute listing alternative rid-id MAY keep all the | with simulcast containing an | |||
| alternative rid-id in the answer, but it MAY also choose to remove | "a=simulcast" attribute listing alternative rid-ids <bcp14>MAY</bcp14> | |||
| any non-desirable alternative rid-id in the answer. The answerer | keep all the | |||
| MUST NOT add any alternative rid-id in send direction in the answer | alternative rid-ids in the answer, but it <bcp14>MAY</bcp14> also choo | |||
| se to remove | ||||
| any nondesirable alternative rid-ids in the answer. The answerer | ||||
| <bcp14>MUST NOT</bcp14> add any alternative rid-ids in the "send" dire | ||||
| ction in the answer | ||||
| that were not present in the offer receive direction. The answerer | that were not present in the offer receive direction. The answerer | |||
| MUST be prepared to receive any of the receive direction rid-id | <bcp14>MUST</bcp14> be prepared to receive any of the receive-directio | |||
| alternatives and MAY send any of the send direction alternatives | n rid-id | |||
| alternatives and <bcp14>MAY</bcp14> send any of the "send"-direction a | ||||
| lternatives | ||||
| that are part of the answer.</t> | that are part of the answer.</t> | |||
| <t indent="0" pn="section-5.3.2-4">An answerer that receives an offer | ||||
| <t>An answerer that receives an offer with simulcast that lists a | with simulcast that lists a | |||
| number of simulcast streams, MAY reduce the number of simulcast | number of simulcast streams <bcp14>MAY</bcp14> reduce the number of si | |||
| streams in the answer, but MUST NOT add simulcast streams.</t> | mulcast | |||
| streams in the answer, but it <bcp14>MUST NOT</bcp14> add simulcast st | ||||
| <t>An answerer that receives an offer without RTP stream | reams.</t> | |||
| pause/resume capability MUST NOT mark any simulcast streams as | <t indent="0" pn="section-5.3.2-5">An answerer that receives an offer | |||
| without RTP stream | ||||
| pause/resume capability <bcp14>MUST NOT</bcp14> mark any simulcast str | ||||
| eams as | ||||
| initially paused in the answer.</t> | initially paused in the answer.</t> | |||
| <t indent="0" pn="section-5.3.2-6">An RTP stream answerer capable of p | ||||
| <t>An RTP stream pause/resume capable answerer that receives an | ause/resume that receives an | |||
| offer with RTP stream pause/resume capability MAY mark any rid-id | offer with RTP stream pause/resume capability <bcp14>MAY</bcp14> mark | |||
| any rid-ids | ||||
| that refer to pause/resume capable formats as initially paused in | that refer to pause/resume capable formats as initially paused in | |||
| the answer.</t> | the answer.</t> | |||
| <t indent="0" pn="section-5.3.2-7">An answerer that receives indicatio | ||||
| <t>An answerer that receives indication in an offer of an rid-id | n in an offer of a rid-id | |||
| being initially paused SHOULD mark that rid-id as initially paused | being initially paused <bcp14>SHOULD</bcp14> mark that rid-id as initi | |||
| ally paused | ||||
| also in the answer, regardless of direction, unless it has good | also in the answer, regardless of direction, unless it has good | |||
| reason for the rid-id not being initially paused. One reason to | reason for the rid-id not being initially paused. One reason to | |||
| remove an initial pause in the answer compared to the offer could, | remove an initial pause in the answer compared to the offer could be, | |||
| for example, be that all receive direction simulcast streams for a | for example, that all "receive"-direction simulcast streams for a | |||
| media source the answerer accepts in the answer would otherwise be | media source the answerer accepts in the answer would otherwise be | |||
| paused.</t> | paused.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5 | ||||
| <section title="Offerer Processing the SDP Answer"> | .3.3"> | |||
| <t>An offerer that receives an answer without "a=simulcast" MUST NOT | <name slugifiedName="name-offerer-processing-the-sdp-">Offerer Process | |||
| ing the SDP Answer</name> | ||||
| <t indent="0" pn="section-5.3.3-1">An offerer that receives an answer | ||||
| without "a=simulcast" <bcp14>MUST NOT</bcp14> | ||||
| use simulcast towards the answerer. An offerer that receives an | use simulcast towards the answerer. An offerer that receives an | |||
| answer with "a=simulcast" without any rid-id in a specified | answer with "a=simulcast" without any rid-id in a specified | |||
| direction MUST NOT use simulcast in that direction.</t> | direction <bcp14>MUST NOT</bcp14> use simulcast in that direction.</t> | |||
| <t indent="0" pn="section-5.3.3-2">An offerer that receives an answer | ||||
| <t>An offerer that receives an answer where some rid-id alternatives | where some rid-id alternatives | |||
| are kept MUST be prepared to receive any of the kept send direction | are kept <bcp14>MUST</bcp14> be prepared to receive any of the kept "s | |||
| rid-id alternatives, and MAY send any of the kept receive direction | end"-direction | |||
| rid-id alternatives and <bcp14>MAY</bcp14> send any of the kept "recei | ||||
| ve"-direction | ||||
| rid-id alternatives.</t> | rid-id alternatives.</t> | |||
| <t indent="0" pn="section-5.3.3-3">An offerer that receives an answer | ||||
| <t>An offerer that receives an answer where some of the rid-id are | where some of the rid-ids are | |||
| removed compared to the offer MAY release the corresponding | removed compared to the offer <bcp14>MAY</bcp14> release the correspon | |||
| resources (codec, transport, etc) in its receive direction and MUST | ding | |||
| NOT send any RTP packets corresponding to the removed rid-id.</t> | resources (codec, transport, etc) in its "receive" direction and <bcp1 | |||
| 4>MUST NOT</bcp14> send any RTP packets corresponding to the removed rid-ids.</t | ||||
| <t>An offerer that offered some of its rid-id as initially paused | > | |||
| and that receives an answer that does not indicate RTP stream | <t indent="0" pn="section-5.3.3-4">An offerer that offered some of its | |||
| pause/resume capability, MUST NOT initially pause any simulcast | rid-ids as initially paused | |||
| and receives an answer that does not indicate RTP stream | ||||
| pause/resume capability <bcp14>MUST NOT</bcp14> initially pause any si | ||||
| mulcast | ||||
| streams.</t> | streams.</t> | |||
| <t indent="0" pn="section-5.3.3-5">An offerer with RTP stream pause/re | ||||
| <t>An offerer with RTP stream pause/resume capability that receives | sume capability that receives | |||
| an answer where some rid-id are marked as initially paused, SHOULD | an answer where some rid-ids are marked as initially paused <bcp14>SHO | |||
| initially pause those RTP streams regardless if they were marked as | ULD</bcp14> | |||
| initially pause those RTP streams, even if they were marked as | ||||
| initially paused also in the offer, unless it has good reason for | initially paused also in the offer, unless it has good reason for | |||
| those RTP streams not being initially paused. One such reason could, | those RTP streams not being initially paused. One such reason could be | |||
| for example, be that the answerer would otherwise initially not | , | |||
| for example, that the answerer would otherwise initially not | ||||
| receive any media of that type at all.</t> | receive any media of that type at all.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5 | ||||
| <section title="Modifying the Session"> | .3.4"> | |||
| <t>Offers inside an existing session follow the same rules as for | <name slugifiedName="name-modifying-the-session">Modifying the Session | |||
| initial SDP offer, with these additions:<list style="numbers"> | </name> | |||
| <t>rid-id marked as initially paused in the offerer's send | <t indent="0" pn="section-5.3.4-1">Offers inside an existing session f | |||
| direction SHALL reflect the offerer's opinion of the current | ollow the same rules as for | |||
| initial SDP offer, with these additions:</t> | ||||
| <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section- | ||||
| 5.3.4-2"> | ||||
| <li pn="section-5.3.4-2.1" derivedCounter="1.">rid-ids marked as ini | ||||
| tially paused in the offerer's "send" | ||||
| direction <bcp14>SHALL</bcp14> reflect the offerer's opinion of th | ||||
| e current | ||||
| pause state at the time of creating the offer. This is purely | pause state at the time of creating the offer. This is purely | |||
| informational, and <xref target="RFC7728">RTP stream | informational, and RTP stream | |||
| pause/resume</xref> signaling in the ongoing session SHALL take | pause/resume signaling <xref target="RFC7728" format="default" sec | |||
| precedence in case of any conflict or ambiguity.</t> | tionFormat="of" derivedContent="RFC7728"/> in the ongoing | |||
| session <bcp14>SHALL</bcp14> take precedence in case of any conflic | ||||
| <t>rid-id marked as initially paused in the offerer's receive | t or | |||
| direction SHALL (as in an initial offer) reflect the offerer's | ambiguity.</li> | |||
| <li pn="section-5.3.4-2.2" derivedCounter="2.">rid-ids marked as ini | ||||
| tially paused in the offerer's "receive" | ||||
| direction <bcp14>SHALL</bcp14> (as in an initial offer) reflect th | ||||
| e offerer's | ||||
| desired rid-id pause state. Except for the case where the | desired rid-id pause state. Except for the case where the | |||
| offerer already paused the corresponding RTP stream through | offerer already paused the corresponding RTP stream through | |||
| <xref target="RFC7728">RTP stream pause/resume</xref> signaling | <xref target="RFC7728" format="default" sectionFormat="of" derived | |||
| , this is identical to the conditions at an initial offer.</t> | Content="RFC7728">RTP stream pause/resume</xref> signaling, | |||
| </list></t> | this is identical to the conditions at an initial offer.</li> | |||
| </ol> | ||||
| <t>Creation of SDP answers and processing of SDP answers inside an | <t indent="0" pn="section-5.3.4-3">Creation of SDP answers and process | |||
| ing of SDP answers inside an | ||||
| existing session follow the same rules as described above for | existing session follow the same rules as described above for | |||
| initial SDP offer/answer.</t> | initial SDP offer/answer.</t> | |||
| <t indent="0" pn="section-5.3.4-4">Session modification restrictions i | ||||
| <t>Session modification restrictions in section 6.5 of <xref | n <xref target="RFC8851" sectionFormat="of" section="6.5" format="default" deriv | |||
| target="I-D.ietf-mmusic-rid">RTP payload format restrictions</xref> | edLink="https://rfc-editor.org/rfc/rfc8851#section-6.5" derivedContent="RFC8851" | |||
| >"RTP Payload Format | ||||
| Restrictions"</xref> | ||||
| also apply.</t> | also apply.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5.4 | ||||
| <section title="Use with Declarative SDP"> | "> | |||
| <t>This document does not define the use of "a=simulcast" in | <name slugifiedName="name-use-with-declarative-sdp">Use with Declarative | |||
| declarative SDP, partly motivated by use of the <xref | SDP</name> | |||
| target="I-D.ietf-mmusic-rid">simulcast format identification</xref> | <t indent="0" pn="section-5.4-1">This document does not define the use o | |||
| not being defined for use in declarative SDP. If concrete use cases | f "a=simulcast" in | |||
| declarative SDP, partly because use of the <xref target="RFC8851" format | ||||
| ="default" sectionFormat="of" derivedContent="RFC8851">simulcast format identifi | ||||
| cation</xref> | ||||
| is not defined for use in declarative SDP. If concrete use cases | ||||
| for simulcast in declarative SDP are identified in the future, the | for simulcast in declarative SDP are identified in the future, the | |||
| authors of this memo expect that additional specifications will | authors of this memo expect that additional specifications will | |||
| address such use.</t> | address such use.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-relating" numbered="true" toc="include" removeInRFC=" | ||||
| <section anchor="sec-relating" title="Relating Simulcast Streams"> | false" pn="section-5.5"> | |||
| <t>Simulcast RTP streams MUST be related on RTP level through <xref | <name slugifiedName="name-relating-simulcast-streams">Relating Simulcast | |||
| target="I-D.ietf-avtext-rid">RtpStreamId</xref>, as specified in the | Streams</name> | |||
| SDP <xref target="sec-cap">"a=simulcast" attribute </xref> parameters. | <t indent="0" pn="section-5.5-1">Simulcast RTP streams <bcp14>MUST</bcp1 | |||
| 4> be related on the RTP | ||||
| level through <xref target="RFC8852" format="default" sectionFormat="of" | ||||
| derivedContent="RFC8852">RtpStreamId</xref>, as specified in the | ||||
| SDP <xref target="sec-cap" format="default" sectionFormat="of" derivedCo | ||||
| ntent="Section 5.2">"a=simulcast" attribute | ||||
| </xref> parameters. | ||||
| This is sufficient as long as there is only a single media source per | This is sufficient as long as there is only a single media source per | |||
| SDP media description. When using <xref | SDP media description. When using <xref target="RFC8843" format="default | |||
| target="I-D.ietf-mmusic-sdp-bundle-negotiation">BUNDLE</xref>, where | " sectionFormat="of" derivedContent="RFC8843">BUNDLE</xref>, where | |||
| multiple SDP media descriptions jointly specify a single RTP session, | multiple SDP media descriptions jointly specify a single RTP session, | |||
| the SDES MID identification mechanism in BUNDLE allows relating RTP | the SDES MID (Media Identification) mechanism in BUNDLE allows relating | |||
| streams back to individual media descriptions, after which the above | RTP | |||
| described RtpStreamId relations can be used. Use of the <xref | streams back to individual media descriptions, after which the | |||
| target="RFC8285">RTP header extension</xref> for both MID and | RtpStreamId relations described above can be used. | |||
| RtpStreamId identifications can be important to ensure rapid initial | ||||
| reception, required to correctly interpret and process the RTP | ||||
| streams. Implementers of this specification MUST support the RTCP | ||||
| source description (SDES) item method and SHOULD support RTP header | ||||
| extension method to signal RtpStreamId on RTP level.<list | ||||
| style="hanging"> | ||||
| <t hangText="NOTE:">For the case where it is clear from SDP that | ||||
| RTP PT uniquely maps to corresponding RtpStreamId, an RTP receiver | ||||
| can use RTP PT to relate simulcast streams. This can sometimes | ||||
| enable decoding even in advance to receiving RtpStreamId | ||||
| information in RTCP SDES and/or RTP header extensions.</t> | ||||
| </list></t> | ||||
| <t>RTP streams MUST only use a single alternative rid-id at a time | Use of the RTP header extension for the <xref target="RFC7941" format="de | |||
| (based on RTP timestamps), but MAY change format (and rid-id) on a | fault" sectionFormat="of" derivedContent="RFC7941">RTCP | |||
| per-RTP packet basis. This corresponds to the existing (non-simulcast) | source description items</xref> for both MID | |||
| and RtpStreamId identifications can be important to ensure rapid | ||||
| initial reception, required to correctly interpret and process the RTP | ||||
| streams. Implementers of this specification <bcp14>MUST</bcp14> | ||||
| support the RTCP source description (SDES) item method and | ||||
| <bcp14>SHOULD</bcp14> support RTP header extension method to signal | ||||
| RtpStreamId on the RTP level.</t> | ||||
| <dl newline="false" spacing="normal" indent="3" pn="section-5.5-2"> | ||||
| <dt pn="section-5.5-2.1">NOTE:</dt> | ||||
| <dd pn="section-5.5-2.2">For the case where it is clear from SDP that | ||||
| the | ||||
| RTP PT uniquely maps to a corresponding RtpStreamId, an RTP receiver | ||||
| can use RTP PT to relate simulcast streams. This can sometimes | ||||
| enable decoding even in advance of receiving RtpStreamId | ||||
| information in RTCP SDES and/or RTP header extensions.</dd> | ||||
| </dl> | ||||
| <t indent="0" pn="section-5.5-3">RTP streams <bcp14>MUST</bcp14> only us | ||||
| e a single alternative rid-id at a time | ||||
| (based on RTP timestamps) but <bcp14>MAY</bcp14> change format (and rid- | ||||
| id) on a | ||||
| per-RTP packet basis. This corresponds to the existing (nonsimulcast) | ||||
| SDP offer/answer case when multiple formats are included on the "m=" | SDP offer/answer case when multiple formats are included on the "m=" | |||
| line in the SDP answer, enabling per-RTP packet change of RTP payload | line in the SDP answer, enabling per-RTP packet change of RTP payload | |||
| type.</t> | type.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-ex" numbered="true" toc="include" removeInRFC="false" | ||||
| <section anchor="sec-ex" title="Signaling Examples"> | pn="section-5.6"> | |||
| <t>These examples describe a client to video conference service, using | <name slugifiedName="name-signaling-examples">Signaling Examples</name> | |||
| <t indent="0" pn="section-5.6-1">These examples describe a client-to-vid | ||||
| eo-conference service, using | ||||
| a centralized media topology with an RTP mixer.</t> | a centralized media topology with an RTP mixer.</t> | |||
| <figure anchor="fig-mixer-four-party" align="left" suppress-title="false | ||||
| <figure align="center" anchor="fig-mixer-four-party" | " pn="figure-4"> | |||
| title="Four-party Mixer-based Conference"> | <name slugifiedName="name-four-party-mixer-based-conf">Four-Party Mixe | |||
| <artwork align="center"><![CDATA[ | r-Based Conference</name> | |||
| <artwork align="center" name="" type="" alt="" pn="section-5.6-2.1"> | ||||
| +---+ +-----------+ +---+ | +---+ +-----------+ +---+ | |||
| | A |<---->| |<---->| B | | | A |<---->| |<---->| B | | |||
| +---+ | | +---+ | +---+ | | +---+ | |||
| | Mixer | | | Mixer | | |||
| +---+ | | +---+ | +---+ | | +---+ | |||
| | F |<---->| |<---->| J | | | F |<---->| |<---->| J | | |||
| +---+ +-----------+ +---+]]></artwork> | +---+ +-----------+ +---+</artwork> | |||
| </figure> | </figure> | |||
| ---+ +-----------+ <span class="insert">+---+</artwork></span> | ||||
| <section anchor="sec-ex-single-source" title="Single-Source Client"> | <section anchor="sec-ex-single-source" numbered="true" toc="include" rem | |||
| <t>Alice is calling in to the mixer with a simulcast-enabled client | oveInRFC="false" pn="section-5.6.1"> | |||
| <name slugifiedName="name-single-source-client">Single-Source Client</ | ||||
| name> | ||||
| <t indent="0" pn="section-5.6.1-1">Alice is calling in to the mixer wi | ||||
| th a simulcast-enabled client | ||||
| capable of a single media source per media type. The client can send | capable of a single media source per media type. The client can send | |||
| a simulcast of 2 video resolutions and frame rates: HD 1280x720p | a simulcast of 2 video resolutions and frame rates: HD 1280x720p | |||
| 30fps and thumbnail 320x180p 15fps. This is defined below using the | 30fps and thumbnail 320x180p 15fps. This is defined below using the | |||
| <xref target="RFC6236">"imageattr"</xref>. In this example, only the | <xref target="RFC6236" format="default" sectionFormat="of" derivedCont | |||
| "pt" "a=rid" parameter is used, effectively achieving a 1:1 mapping | ent="RFC6236">"imageattr"</xref>. In this example, only the | |||
| between RtpStreamId and media formats (RTP payload types), to | "pt" "a=rid" parameter is used to | |||
| describe simulcast stream formats. Alice's Offer:</t> | describe simulcast stream formats, effectively achieving a 1:1 mapping | |||
| between RtpStreamId and media formats (RTP payload types). Alice's Off | ||||
| <figure align="center" anchor="fig-up-offer" | er:</t> | |||
| title="Single-Source Simulcast Offer"> | <figure anchor="fig-up-offer" align="left" suppress-title="false" pn=" | |||
| <artwork align="left"><![CDATA[ | figure-5"> | |||
| <name slugifiedName="name-single-source-simulcast-off">Single-Source | ||||
| Simulcast Offer</name> | ||||
| <sourcecode type="sdp" markers="false" pn="section-5.6.1-2.1"> | ||||
| v=0 | v=0 | |||
| o=alice 2362969037 2362969040 IN IP4 192.0.2.156 | o=alice 2362969037 2362969040 IN IP4 192.0.2.156 | |||
| s=Simulcast Enabled Client | s=Simulcast-Enabled Client | |||
| c=IN IP4 192.0.2.156 | c=IN IP4 192.0.2.156 | |||
| t=0 0 | t=0 0 | |||
| m=audio 49200 RTP/AVP 0 | m=audio 49200 RTP/AVP 0 | |||
| a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
| m=video 49300 RTP/AVP 97 98 | m=video 49300 RTP/AVP 97 98 | |||
| a=rtpmap:97 H264/90000 | a=rtpmap:97 H264/90000 | |||
| a=rtpmap:98 H264/90000 | a=rtpmap:98 H264/90000 | |||
| a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000 | a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000 | |||
| a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600 | a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600 | |||
| a=imageattr:97 send [x=1280,y=720] recv [x=1280,y=720] | a=imageattr:97 send [x=1280,y=720] recv [x=1280,y=720] | |||
| a=imageattr:98 send [x=320,y=180] recv [x=320,y=180] | a=imageattr:98 send [x=320,y=180] recv [x=320,y=180] | |||
| a=rid:1 send pt=97 | a=rid:1 send pt=97 | |||
| a=rid:2 send pt=98 | a=rid:2 send pt=98 | |||
| a=rid:3 recv pt=97 | a=rid:3 recv pt=97 | |||
| a=simulcast:send 1;2 recv 3 | a=simulcast:send 1;2 recv 3 | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-5.6.1-3">The only thing in the SDP that indi | ||||
| <t>The only thing in the SDP that indicates simulcast capability is | cates simulcast capability is | |||
| the line in the video media description containing the "simulcast" | the line in the video media description containing the "simulcast" | |||
| attribute. The included "a=fmtp" and "a=imageattr" parameters | attribute. The included "a=fmtp" and "a=imageattr" parameters | |||
| indicates that sent simulcast streams can differ in video | indicate that sent simulcast streams can differ in video | |||
| resolution. The RTP header extension for RtpStreamId is offered to | resolution. The RTP header extension for RtpStreamId is offered to | |||
| avoid issues with the initial binding between RTP streams (SSRCs) | avoid issues with the initial binding between RTP streams (SSRCs) | |||
| and the RtpStreamId identifying the simulcast stream and its | and the RtpStreamId identifying the simulcast stream and its | |||
| format.</t> | format.</t> | |||
| <t indent="0" pn="section-5.6.1-4">The answer from the server indicate | ||||
| <t>The Answer from the server indicates that it too is simulcast | s that it, too, is simulcast | |||
| capable. Should it not have been simulcast capable, the | capable. Should it not have been simulcast capable, the | |||
| "a=simulcast" line would not have been present and communication | "a=simulcast" line would not have been present, and communication | |||
| would have started with the media negotiated in the SDP. Also the | would have started with the media negotiated in the SDP. Also, the | |||
| usage of the RtpStreamId RTP header extension is accepted.</t> | usage of the RtpStreamId RTP header extension is accepted.</t> | |||
| <figure anchor="fig-up-answer" align="left" suppress-title="false" pn= | ||||
| <figure align="center" anchor="fig-up-answer" | "figure-6"> | |||
| title="Single-Source Simulcast Answer"> | <name slugifiedName="name-single-source-simulcast-ans">Single-Source | |||
| <artwork align="left"><![CDATA[ | Simulcast Answer</name> | |||
| <sourcecode type="sdp" markers="false" pn="section-5.6.1-5.1"> | ||||
| v=0 | v=0 | |||
| o=server 823479283 1209384938 IN IP4 192.0.2.2 | o=server 823479283 1209384938 IN IP4 192.0.2.2 | |||
| s=Answer to Simulcast Enabled Client | s=Answer to Simulcast-Enabled Client | |||
| c=IN IP4 192.0.2.43 | c=IN IP4 192.0.2.43 | |||
| t=0 0 | t=0 0 | |||
| m=audio 49672 RTP/AVP 0 | m=audio 49672 RTP/AVP 0 | |||
| a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
| m=video 49674 RTP/AVP 97 98 | m=video 49674 RTP/AVP 97 98 | |||
| a=rtpmap:97 H264/90000 | a=rtpmap:97 H264/90000 | |||
| a=rtpmap:98 H264/90000 | a=rtpmap:98 H264/90000 | |||
| a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000 | a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000 | |||
| a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600 | a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600 | |||
| a=imageattr:97 send [x=1280,y=720] recv [x=1280,y=720] | a=imageattr:97 send [x=1280,y=720] recv [x=1280,y=720] | |||
| a=imageattr:98 send [x=320,y=180] recv [x=320,y=180] | a=imageattr:98 send [x=320,y=180] recv [x=320,y=180] | |||
| a=rid:1 recv pt=97 | a=rid:1 recv pt=97 | |||
| a=rid:2 recv pt=98 | a=rid:2 recv pt=98 | |||
| a=rid:3 send pt=97 | a=rid:3 send pt=97 | |||
| a=simulcast:recv 1;2 send 3 | a=simulcast:recv 1;2 send 3 | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | </figure> | |||
| <t indent="0" pn="section-5.6.1-6">Since the server is the simulcast m | ||||
| <t>Since the server is the simulcast media receiver, it reverses the | edia receiver, it reverses the | |||
| direction of the "simulcast" and "rid" attribute parameters.</t> | direction of the "simulcast" and "rid" attribute parameters.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-ex-multi-source" numbered="true" toc="include" remo | ||||
| <section anchor="sec-ex-multi-source" title="Multi-Source Client"> | veInRFC="false" pn="section-5.6.2"> | |||
| <t>Fred is calling in to the same conference as in the example above | <name slugifiedName="name-multisource-client">Multisource Client</name | |||
| > | ||||
| <t indent="0" pn="section-5.6.2-1">Fred is calling in to the same conf | ||||
| erence as in the example above | ||||
| with a two-camera, two-display system, thus capable of handling two | with a two-camera, two-display system, thus capable of handling two | |||
| separate media sources in each direction, where each media source is | separate media sources in each direction, where each media source is | |||
| simulcast-enabled in the send direction. Fred's client is restricted | simulcast enabled in the "send" direction. Fred's client is restricted | |||
| to a single media source per media description.</t> | to a single media source per media description.</t> | |||
| <t indent="0" pn="section-5.6.2-2">The first two simulcast streams for | ||||
| <t>The first two simulcast streams for the first media source use | the first media source use | |||
| different codecs, <xref target="RFC6190">H264-SVC</xref> and <xref | different codecs, <xref target="RFC6190" format="default" sectionForma | |||
| target="RFC6184">H264</xref>. These two simulcast streams also have | t="of" derivedContent="RFC6190">H264-SVC</xref> and <xref target="RFC6184" forma | |||
| a temporal dependency. Two different video codecs, <xref | t="default" sectionFormat="of" derivedContent="RFC6184">H264</xref>. These two s | |||
| target="RFC7741">VP8</xref> and H264, are offered as alternatives | imulcast streams also have | |||
| a temporal dependency. Two different video codecs, <xref target="RFC77 | ||||
| 41" format="default" sectionFormat="of" derivedContent="RFC7741">VP8</xref> and | ||||
| H264, are offered as alternatives | ||||
| for the third simulcast stream for the first media source. Only the | for the third simulcast stream for the first media source. Only the | |||
| highest fidelity simulcast stream is sent from start, the lower | highest-fidelity simulcast stream is sent from start, the | |||
| fidelity streams being initially paused.</t> | lower-fidelity streams being initially paused.</t> | |||
| <t indent="0" pn="section-5.6.2-3">The second media source is offered | ||||
| <t>The second media source is offered with three different simulcast | with three different simulcast | |||
| streams. All video streams of this second media source are loss | streams. All video streams of this second media source are loss | |||
| protected by <xref target="RFC4588">RTP retransmission</xref>. Also | protected by <xref target="RFC4588" format="default" sectionFormat="of | |||
| here, all but the highest fidelity simulcast stream are initially | " derivedContent="RFC4588">RTP retransmission</xref>. In | |||
| paused. Note that the lower resolution is more prioritized than the | addition, all but the highest-fidelity simulcast stream are | |||
| medium resolution simulcast stream.</t> | initially paused. Note that the lower resolution is more prioritized | |||
| than the medium-resolution simulcast stream.</t> | ||||
| <t>Fred's client is also using BUNDLE to send all RTP streams from | <t indent="0" pn="section-5.6.2-4">Fred's client is also using BUNDLE | |||
| to send all RTP streams from | ||||
| all media descriptions in the same RTP session on a single media | all media descriptions in the same RTP session on a single media | |||
| transport. Although using many different simulcast streams in this | transport. Although using many different simulcast streams in this | |||
| example, the use of RtpStreamId as simulcast stream identification | example, the use of RtpStreamId as simulcast stream identification | |||
| enables use of a low number of RTP payload types. Note that the use | enables use of a low number of RTP payload types. | |||
| of both <xref | ||||
| target="I-D.ietf-mmusic-sdp-bundle-negotiation">BUNDLE</xref> and | ||||
| <xref target="I-D.ietf-mmusic-rid">"a=rid"</xref> recommends using | ||||
| the <xref target="RFC8285">RTP header extension</xref> for carrying | ||||
| these RTP stream identification fields, which is consequently also | ||||
| included in the SDP. Note also that for "a=rid", the corresponding | ||||
| RtpStreamId SDES attribute RTP header extension is named <xref | ||||
| target="I-D.ietf-avtext-rid">rtp-stream-id</xref>.</t> | ||||
| <figure anchor="fig-ms-offer" | Note that when using both <xref target="RFC8843" format="default" secti | |||
| title="Fred's Multi-Source Simulcast Offer"> | onFormat="of" derivedContent="RFC8843">BUNDLE</xref> and <xref target="RFC8851" | |||
| <artwork><![CDATA[ | format="default" sectionFormat="of" derivedContent="RFC8851">"a=rid"</xref>, it | |||
| is recommended to use the RTP | ||||
| header extension for the <xref target="RFC7941" format="default" sectio | ||||
| nFormat="of" derivedContent="RFC7941">RTCP | ||||
| source descriptions items</xref> for carrying | ||||
| these RTP stream-identification fields, which is consequently also | ||||
| included in the SDP. | ||||
| Note also that for "a=rid", | ||||
| the corresponding RtpStreamId SDES attribute RTP header extension is | ||||
| named <xref target="RFC8852" format="default" sectionFormat="of" derive | ||||
| dContent="RFC8852">rtp-stream-id</xref>.</t> | ||||
| <figure anchor="fig-ms-offer" align="left" suppress-title="false" pn=" | ||||
| figure-7"> | ||||
| <name slugifiedName="name-freds-multisource-simulcast">Fred's Multis | ||||
| ource Simulcast Offer</name> | ||||
| <sourcecode type="sdp" markers="false" pn="section-5.6.2-5.1"> | ||||
| v=0 | v=0 | |||
| o=fred 238947129 823479223 IN IP6 2001:db8::c000:27d | o=fred 238947129 823479223 IN IP6 2001:db8::c000:27d | |||
| s=Offer from Simulcast Enabled Multi-Source Client | s=Offer from Simulcast-Enabled Multi-Source Client | |||
| c=IN IP6 2001:db8::c000:27d | c=IN IP6 2001:db8::c000:27d | |||
| t=0 0 | t=0 0 | |||
| a=group:BUNDLE foo bar zen | a=group:BUNDLE foo bar zen | |||
| m=audio 49200 RTP/AVP 99 | m=audio 49200 RTP/AVP 99 | |||
| a=mid:foo | a=mid:foo | |||
| a=rtpmap:99 G722/8000 | a=rtpmap:99 G722/8000 | |||
| m=video 49600 RTP/AVPF 100 101 103 | m=video 49600 RTP/AVPF 100 101 103 | |||
| a=mid:bar | a=mid:bar | |||
| a=rtpmap:100 H264-SVC/90000 | a=rtpmap:100 H264-SVC/90000 | |||
| a=rtpmap:101 H264/90000 | a=rtpmap:101 H264/90000 | |||
| skipping to change at line 979 ¶ | skipping to change at line 1063 ¶ | |||
| a=rtpmap:104 rtx/90000 | a=rtpmap:104 rtx/90000 | |||
| a=fmtp:104 apt=96;rtx-time=200 | a=fmtp:104 apt=96;rtx-time=200 | |||
| a=rid:1 send max-fs=921600;max-fps=30 | a=rid:1 send max-fs=921600;max-fps=30 | |||
| a=rid:2 send max-fs=614400;max-fps=15 | a=rid:2 send max-fs=614400;max-fps=15 | |||
| a=rid:3 send max-fs=230400;max-fps=30 | a=rid:3 send max-fs=230400;max-fps=30 | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
| a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | |||
| a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id | a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id | |||
| a=rtcp-fb:* ccm pause nowait | a=rtcp-fb:* ccm pause nowait | |||
| a=simulcast:send 1;~3;~2 | a=simulcast:send 1;~3;~2 | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | </figure> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-5 | ||||
| .6.3"> | ||||
| <name slugifiedName="name-simulcast-and-redundancy">Simulcast and Redu | ||||
| ndancy</name> | ||||
| <t indent="0" pn="section-5.6.3-1">The example in this section looks a | ||||
| t applying simulcast with | ||||
| audio and video redundancy formats. | ||||
| <section title="Simulcast and Redundancy"> | The audio media description uses codec and bitrate restrictions, | |||
| <t>The example in this section looks at applying simulcast with | combined with the <xref target="RFC2198" format="default" sectionFormat=" | |||
| audio and video redundancy formats. The audio media description uses | of" derivedContent="RFC2198">RTP | |||
| codec and bitrate restrictions, combining it with <xref | payload for redundant audio data</xref> for enhanced packet-loss | |||
| target="RFC2198">RTP Payload for Redundant Audio Data</xref> for | resilience. The video media description applies both resolution and | |||
| enhanced packet loss resilience. The video media description applies | bitrate restrictions, combined with Forward Error Correction (FEC) | |||
| both resolution and bitrate restrictions, combining it with FEC in | in the form of <xref target="RFC8627" format="default" sectionFormat="of" | |||
| the form of <xref | derivedContent="RFC8627">flexible | |||
| target="I-D.ietf-payload-flexible-fec-scheme">Flexible FEC</xref> | FEC</xref> and <xref target="RFC4588" format="default" sectionFormat="of" | |||
| and <xref target="RFC4588">RTP Retransmission</xref>.</t> | derivedContent="RFC4588">RTP | |||
| retransmission</xref>.</t> | ||||
| <t>The audio source is offered to be sent as two simulcast streams. | <t indent="0" pn="section-5.6.3-2"> | |||
| The first simulcast stream is encoded with Opus, restricted to 50 | The audio source is offered to be sent as two simulcast | |||
| kbps (rid-id=5), and the second simulcast stream is encoded either | streams. The first simulcast stream is encoded with Opus, | |||
| with G.711 (rid-id=7) or with G.711 combined with LPC for redundancy | restricted to 64 kbps (rid-id=1), and the second simulcast stream | |||
| (rid-id=6). In this example, stand-alone LPC is not offered as an | (rid-id=2) is encoded with either G.711, or G.711 combined with | |||
| possible payload type for the second simulcast stream's RID, which | linear predictive coding (LPC) for redundancy and explicit comfort | |||
| could e.g. be motivated by not providing sufficient quality.</t> | noise (CN). Both simulcast streams include telephone-event | |||
| capability. In this example, stand-alone LPC is not offered as a | ||||
| <t>The video source is offered to be sent as two simulcast streams, | possible payload type for the second simulcast stream's RID, which | |||
| could be motivated by, for example, not providing sufficient | ||||
| quality. | ||||
| </t> | ||||
| <t indent="0" pn="section-5.6.3-3">The video source is offered to be s | ||||
| ent as two simulcast streams, | ||||
| both with two alternative simulcast formats. Redundancy and repair | both with two alternative simulcast formats. Redundancy and repair | |||
| are offered in the form of both Flexible FEC and RTP Retransmission. | are offered in the form of both flexible FEC and RTP retransmission. | |||
| The Flexible FEC is not bound to any particular RTP streams and is | The flexible FEC is not bound to any particular RTP streams and is | |||
| therefore possible to use across all RTP streams that are being sent | therefore able to be used across all RTP streams that are being sent | |||
| as part of this media description.</t> | as part of this media description.</t> | |||
| <figure anchor="fig-sim-red" align="left" suppress-title="false" pn="f | ||||
| <figure anchor="fig-sim-red" | igure-8"> | |||
| title="Simulcast and Redundancy Example"> | <name slugifiedName="name-simulcast-and-redundancy-ex">Simulcast and | |||
| <artwork><![CDATA[v=0 | Redundancy Example</name> | |||
| <sourcecode type="sdp" markers="false" pn="section-5.6.3-4.1"> | ||||
| o=fred 238947129 823479223 IN IP6 2001:db8::c000:27d | o=fred 238947129 823479223 IN IP6 2001:db8::c000:27d | |||
| s=Offer from Simulcast Enabled Client using Redundancy | s=Offer from Simulcast-Enabled Client using Redundancy | |||
| c=IN IP6 2001:db8::c000:27d | c=IN IP6 2001:db8::c000:27d | |||
| t=0 0 | t=0 0 | |||
| a=group:BUNDLE foo bar | a=group:BUNDLE foo bar | |||
| m=audio 49200 RTP/AVP 97 98 99 100 101 102 | m=audio 49200 RTP/AVP 97 98 99 100 101 102 | |||
| a=mid:foo | a=mid:foo | |||
| a=rtpmap:97 G711/8000 | a=rtpmap:97 G711/8000 | |||
| a=rtpmap:98 LPC/8000 | a=rtpmap:98 LPC/8000 | |||
| a=rtpmap:99 OPUS/48000/1 | a=rtpmap:99 OPUS/48000/1 | |||
| a=rtpmap:100 RED/8000/1 | a=rtpmap:100 RED/8000/1 | |||
| a=rtpmap:101 CN/8000 | a=rtpmap:101 CN/8000 | |||
| skipping to change at line 1046 ¶ | skipping to change at line 1134 ¶ | |||
| a=mid:bar | a=mid:bar | |||
| a=rtpmap:103 H264/90000 | a=rtpmap:103 H264/90000 | |||
| a=rtpmap:104 VP8/90000 | a=rtpmap:104 VP8/90000 | |||
| a=rtpmap:105 rtx/90000 | a=rtpmap:105 rtx/90000 | |||
| a=rtpmap:106 rtx/90000 | a=rtpmap:106 rtx/90000 | |||
| a=rtpmap:107 flexfec/90000 | a=rtpmap:107 flexfec/90000 | |||
| a=fmtp:103 profile-level-id=42c00d;max-fs=3600;max-mbps=108000 | a=fmtp:103 profile-level-id=42c00d;max-fs=3600;max-mbps=108000 | |||
| a=fmtp:104 max-fs=3600; max-fr=30 | a=fmtp:104 max-fs=3600; max-fr=30 | |||
| a=fmtp:105 apt=103;rtx-time=200 | a=fmtp:105 apt=103;rtx-time=200 | |||
| a=fmtp:106 apt=104;rtx-time=200 | a=fmtp:106 apt=104;rtx-time=200 | |||
| a=fmtp:107 repair-window=2000 | a=fmtp:107 repair-window=100000 | |||
| a=rid:1 send pt=103;max-width=1280;max-height=720;max-fps=30 | a=rid:1 send pt=103;max-width=1280;max-height=720;max-fps=30 | |||
| a=rid:2 send pt=104;max-width=1280;max-height=720;max-fps=30 | a=rid:2 send pt=104;max-width=1280;max-height=720;max-fps=30 | |||
| a=rid:3 send pt=103;max-width=640;max-height=360;max-br=300000 | a=rid:3 send pt=103;max-width=640;max-height=360;max-br=300000 | |||
| a=rid:4 send pt=104;max-width=640;max-height=360;max-br=300000 | a=rid:4 send pt=104;max-width=640;max-height=360;max-br=300000 | |||
| a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid | |||
| a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id | |||
| a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id | a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id | |||
| a=rtcp-fb:* ccm pause nowait | a=rtcp-fb:* ccm pause nowait | |||
| a=simulcast:send 1,2;3,4 | a=simulcast:send 1,2;3,4 | |||
| ]]></artwork> | </sourcecode> | |||
| </figure> | </figure> | |||
| <t/> | ||||
| </section> | </section> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-rtp-aspects" numbered="true" toc="include" removeInRFC= | ||||
| <section anchor="sec-rtp-aspects" title="RTP Aspects"> | "false" pn="section-6"> | |||
| <t>This section discusses what the different entities in a simulcast | <name slugifiedName="name-rtp-aspects">RTP Aspects</name> | |||
| media path can expect to happen on RTP level. This is explored from | <t indent="0" pn="section-6-1">This section discusses what the different e | |||
| ntities in a simulcast | ||||
| media path can expect to happen on the RTP level. This is explored from | ||||
| source to sink by starting in an endpoint with a media source that is | source to sink by starting in an endpoint with a media source that is | |||
| simulcasted to an RTP middlebox. That RTP middlebox sends media sources | simulcasted to an RTP middlebox. That RTP middlebox sends media sources | |||
| both to other RTP middleboxes (cascaded middleboxes), as well as | to other RTP middleboxes (cascaded middleboxes), as well as | |||
| selecting some simulcast format of the media source and sending it to | selecting some simulcast format of the media source and sending it to | |||
| receiving endpoints. Different types of RTP middleboxes and their usage | receiving endpoints. Different types of RTP middleboxes and their usage | |||
| of the different simulcast formats results in several different | of the different simulcast formats results in several different | |||
| behaviors.</t> | behaviors.</t> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-6.1 | ||||
| <section title="Outgoing from Endpoint with Media Source"> | "> | |||
| <t>The most straightforward simulcast case is the RTP streams being | <name slugifiedName="name-outgoing-from-endpoint-with">Outgoing from End | |||
| point with Media Source</name> | ||||
| <t indent="0" pn="section-6.1-1">The most straightforward simulcast case | ||||
| is the RTP streams being | ||||
| emitted from the endpoint that originates a media source. When | emitted from the endpoint that originates a media source. When | |||
| simulcast has been negotiated in the sending direction, the endpoint | simulcast has been negotiated in the sending direction, the endpoint | |||
| can transmit up to the number of RTP streams needed for the negotiated | can transmit up to the number of RTP streams needed for the negotiated | |||
| simulcast streams for that media source. Each RTP stream (SSRC) is | simulcast streams for that media source. Each RTP stream (SSRC) is | |||
| identified by <xref target="sec-relating">associating</xref> it with | identified by associating it (<xref target="sec-relating" format="defaul t" sectionFormat="of" derivedContent="Section 5.5"/>) with | |||
| an RtpStreamId SDES item, transmitted in RTCP and possibly also as an | an RtpStreamId SDES item, transmitted in RTCP and possibly also as an | |||
| RTP header extension. In cases where multiple media sources have been | RTP header extension. In cases where multiple media sources have been | |||
| negotiated for the same RTP session and thus <xref | negotiated for the same RTP session and thus <xref target="RFC8843" form | |||
| target="I-D.ietf-mmusic-sdp-bundle-negotiation">BUNDLE</xref> is used, | at="default" sectionFormat="of" derivedContent="RFC8843">BUNDLE</xref> is used, | |||
| also the MID SDES item will be sent similarly to the RtpStreamId.</t> | the MID SDES item will also be | |||
| sent, similarly to the RtpStreamId.</t> | ||||
| <t>Each RTP stream might not be continuously transmitted due to any of | <t indent="0" pn="section-6.1-2">Each RTP stream might not be continuous | |||
| the following reasons; temporarily paused using <xref | ly transmitted due to any of | |||
| target="RFC7728">Pause/Resume</xref>, sender side application logic | the following reasons: temporarily paused using <xref target="RFC7728" f | |||
| ormat="default" sectionFormat="of" derivedContent="RFC7728">Pause/Resume</xref>, | ||||
| sender-side application logic | ||||
| temporarily pausing it, or lack of network resources to transmit this | temporarily pausing it, or lack of network resources to transmit this | |||
| simulcast stream. However, all simulcast streams that have been | simulcast stream. However, all simulcast streams that have been | |||
| negotiated have active and maintained SSRC (at least in regular RTCP | negotiated have active and maintained SSRCs (at least in regular RTCP | |||
| reports), even if no RTP packets are currently transmitted. The | reports), even if no RTP packets are currently transmitted. The | |||
| relation between an RTP Stream (SSRC) and a particular simulcast | relation between an RTP stream (SSRC) and a particular simulcast | |||
| stream is not expected to change, except in exceptional situations | stream is not expected to change, except in exceptional situations | |||
| such as SSRC collisions. At SSRC changes, the usage of MID and | such as SSRC collisions. At SSRC changes, the usage of MID and | |||
| RtpStreamId should enable the receiver to correctly identify the RTP | RtpStreamId should enable the receiver to correctly identify the RTP | |||
| streams even after an SSRC change.</t> | streams even after an SSRC change.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-6.2 | ||||
| <section title="RTP Middlebox to Receiver"> | "> | |||
| <t>RTP streams in a multi-party RTP session can be used in multiple | <name slugifiedName="name-rtp-middlebox-to-receiver">RTP Middlebox to Re | |||
| different ways, when the session utilizes simulcast at least on the | ceiver</name> | |||
| media source to middlebox legs. This is to a large degree due to the | <t indent="0" pn="section-6.2-1">RTP streams in a multiparty RTP session | |||
| can be used in multiple | ||||
| different ways when the session utilizes simulcast at least on the | ||||
| media-source-to-middlebox legs. This is to a large degree due to the | ||||
| different RTP middlebox behaviors, but also the needs of the | different RTP middlebox behaviors, but also the needs of the | |||
| application. This text assumes that the RTP middlebox will select a | application. This text assumes that the RTP middlebox will select a | |||
| media source and choose which simulcast stream for that media source | media source and choose which simulcast stream for that media source | |||
| to deliver to a specific receiver. In many cases, at most one | to deliver to a specific receiver. In many cases, at most one | |||
| simulcast stream per media source will be forwarded to a particular | simulcast stream per media source will be forwarded to a particular | |||
| receiver at any instant in time, even if the selected simulcast stream | receiver at any instant in time, even if the selected simulcast stream | |||
| may vary. For cases where this does not hold due to application needs, | may vary. For cases where this does not hold due to application needs, | |||
| then the RTP stream aspects will fall under the middlebox to middlebox | the RTP stream aspects will fall under the middlebox-to-middlebox | |||
| case <xref target="sec-rtp-box-box"/>.</t> | case (<xref target="sec-rtp-box-box" format="default" sectionFormat="of" | |||
| derivedContent="Section 6.3"/>).</t> | ||||
| <t>The selection of which simulcast streams to forward towards the | <t indent="0" pn="section-6.2-2">The selection of which simulcast stream | |||
| receiver, is application specific. However, in conferencing | s to forward towards the | |||
| receiver is application specific. However, in conferencing | ||||
| applications, active speaker selection is common. In case the number | applications, active speaker selection is common. In case the number | |||
| of media sources possible to forward, N, is less than the total amount | of media sources possible to forward, N, is less than the total number | |||
| of media sources available in an multi-media session, the current and | of media sources available in a multimedia session, the current and | |||
| previous speakers (up to N in total) are often the ones forwarded. To | previous speakers (up to N in total) are often the ones forwarded. To | |||
| avoid the need for media specific processing to determine the current | avoid the need for media-specific processing to determine the current | |||
| speaker(s) in the RTP middlebox, the endpoint providing a media source | speaker(s) in the RTP middlebox, the endpoint providing a media source | |||
| may include meta data, such as the <xref target="RFC6464">RTP Header | may include metadata, such as the <xref target="RFC6464" format="default | |||
| Extension for Client-to-Mixer Audio Level Indication</xref>.</t> | " sectionFormat="of" derivedContent="RFC6464">RTP header | |||
| extension for client-to-mixer audio level indication</xref>.</t> | ||||
| <t>The possibilities for stream switching are media type specific, but | <t indent="0" pn="section-6.2-3">The possibilities for stream switching | |||
| are media type specific, but | ||||
| for media types with significant interframe dependencies in the | for media types with significant interframe dependencies in the | |||
| encoding, like most video coding, the switching needs to be made at | encoding, like most video coding, the switching needs to be made at | |||
| suitable switching points in the media stream that breaks or otherwise | suitable switching points in the media stream that breaks or otherwise | |||
| deals with the dependency structure. Even if switching points can be | deals with the dependency structure. Even if switching points can be | |||
| included periodically, it is common to use mechanisms like <xref | included periodically, it is common to use mechanisms like <xref target= | |||
| target="RFC5104">Full Intra Requests</xref> to request switching | "RFC5104" format="default" sectionFormat="of" derivedContent="RFC5104">Full Intr | |||
| a Requests</xref> to request switching | ||||
| points from the endpoint performing the encoding of the media | points from the endpoint performing the encoding of the media | |||
| source.</t> | source.</t> | |||
| <t indent="0" pn="section-6.2-4">Inclusion of the RtpStreamId SDES item | ||||
| <t>Inclusion of the RtpStreamId SDES item for an SSRC in the middlebox | for an SSRC in the | |||
| to receiver direction should only occur when use of RtpStreamId has | middlebox-to-receiver direction should only occur when use of | |||
| RtpStreamId has | ||||
| been negotiated in that direction. It is worth noting that one can | been negotiated in that direction. It is worth noting that one can | |||
| signal multiple RtpStreamIds when simulcast signalling indicates only | signal multiple RtpStreamIds when simulcast signaling indicates only | |||
| a single simulcast stream, allowing one to use all of the RtpStreamIds | a single simulcast stream, allowing one to use all of the RtpStreamIds | |||
| as alternatives for that simulcast stream. One reason for including | as alternatives for that simulcast stream. One reason for including | |||
| the RtpStreamId in the middlebox to receiver direction for an RTP | the RtpStreamId in the middlebox-to-receiver direction for an RTP | |||
| stream is to let the receiver know which restrictions apply to the | stream is to let the receiver know which restrictions apply to the | |||
| currently delivered RTP stream. In case the RtpStreamId is negotiated | currently delivered RTP stream. In case the RtpStreamId is negotiated | |||
| to be used, it is important to remember that the used identifiers will | to be used, it is important to remember that the used identifiers will | |||
| be specific to each signalling session. Even if the central entity can | be specific to each signaling session. Even if the central entity can | |||
| attempt to coordinate, it is likely that the RtpStreamIds need to be | attempt to coordinate, it is likely that the RtpStreamIds need to be | |||
| translated to the leg specific values. The below cases will have as | translated to the leg-specific values. The below cases will assume | |||
| base line that RtpStreamId is not used in the mixer to receiver | that RtpStreamId is not used in the mixer to receiver | |||
| direction.</t> | direction.</t> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-6 | ||||
| <section title="Media-Switching Mixer"> | .2.1"> | |||
| <t>This section discusses the behavior in cases where the RTP | <name slugifiedName="name-media-switching-mixer">Media-Switching Mixer | |||
| middlebox behaves like the Media-Switching Mixer (Section 3.6.2) in | </name> | |||
| <xref target="RFC7667">RTP Topologies</xref>. The fundamental aspect | <t indent="0" pn="section-6.2.1-1">This section discusses the behavior | |||
| in cases where the RTP | ||||
| middlebox behaves like the media-switching mixer in | ||||
| RTP topologies (<xref target="RFC7667" sectionFormat="of" section="3.6 | ||||
| .2" format="default" derivedLink="https://rfc-editor.org/rfc/rfc7667#section-3.6 | ||||
| .2" derivedContent="RFC7667"/>). The | ||||
| fundamental aspect | ||||
| here is that the media sources delivered from the middlebox will be | here is that the media sources delivered from the middlebox will be | |||
| the mixer's conceptual or functional ones. For example, one media | the mixer's conceptual or functional ones. For example, one media | |||
| source may be the main speaker in high resolution video, while a | source may be the main speaker in high-resolution video, while a | |||
| number of other media sources are thumbnails of each | number of other media sources are thumbnails of each | |||
| participant.</t> | participant.</t> | |||
| <t indent="0" pn="section-6.2.1-2">The above results in the RTP stream | ||||
| <t>The above results in that the RTP stream produced by the mixer is | produced by the mixer being | |||
| one that switches between a number of received incoming RTP streams | one that switches between a number of received incoming RTP streams | |||
| for different media sources and in different simulcast versions. The | for different media sources and in different simulcast versions. The | |||
| mixer selects the media source to be sent as one of the RTP streams, | mixer selects the media source to be sent as one of the RTP streams | |||
| and then selects among the available simulcast streams for the most | and then selects among the available simulcast streams for the most | |||
| appropriate one. The selection criteria include available bandwidth | appropriate one. The selection criteria include available bandwidth | |||
| on the mixer to receiver path and restrictions based on the | on the mixer-to-receiver path and restrictions based on the | |||
| functional usage of the RTP stream delivered to the receiver. As an | functional usage of the RTP stream delivered to the receiver. As an | |||
| example of the latter, it is unnecessary to forward a full HD video | example of the latter, it is unnecessary to forward a full HD video | |||
| to a receiver if the display area is just a thumbnail. Thus, | to a receiver if the display area is just a thumbnail. Thus, | |||
| restrictions may exist to not allow some simulcast streams to be | restrictions may exist to not allow some simulcast streams to be | |||
| forwarded for some of the mixer's media sources.</t> | forwarded for some of the mixer's media sources.</t> | |||
| <t indent="0" pn="section-6.2.1-3">This will result in a single RTP st | ||||
| <t>This will result in a single RTP stream being used for each of | ream being used for each of | |||
| the RTP mixer's media sources. This RTP stream is at any point in | the RTP mixer's media sources. At any point in time, this RTP stream | |||
| time a selection of one particular RTP stream arriving to the mixer, | is a selection of one particular RTP stream arriving to the mixer, | |||
| where the RTP header field values are rewritten to provide a | where the RTP header-field values are rewritten to provide a | |||
| consistent, single RTP stream. If the RTP mixer doesn't receive any | consistent, single RTP stream. If the RTP mixer doesn't receive any | |||
| incoming stream matched to this media source, the SSRC will not | incoming stream matched to this media source, the SSRC will not | |||
| transmit, but be kept alive using RTCP. The SSRC and thus RTP stream | transmit but be kept alive using RTCP. The SSRC and thus RTP stream | |||
| for the mixer's media source is expected to be long term stable. It | for the mixer's media source is expected to be long-term stable. It | |||
| will only be changed by signalling or other disruptive events. Note | will only be changed by signaling or other disruptive events. Note | |||
| that although the above talks about a single RTP stream, there can | that although the above talks about a single RTP stream, there can | |||
| in some cases be multiple RTP streams carrying the selected | in some cases be multiple RTP streams carrying the selected | |||
| simulcast stream for the originating media source, including | simulcast stream for the originating media source, including | |||
| redundancy or other auxiliary RTP streams.</t> | redundancy or other auxiliary RTP streams.</t> | |||
| <t indent="0" pn="section-6.2.1-4">The mixer may communicate the ident | ||||
| <t>The mixer may communicate the identity of the originating media | ity of the originating media | |||
| source to the receiver by including the CSRC field with the | source to the receiver by including the Contributing Source (CSRC) fie | |||
| ld with the | ||||
| originating media source's SSRC value. Note that due to the | originating media source's SSRC value. Note that due to the | |||
| possibility that the RTP mixer switches between simulcast versions | possibility that the RTP mixer switches between simulcast versions | |||
| of the media source, the CSRC value may change, even if the media | of the media source, the CSRC value may change, even if the media | |||
| source is kept the same.</t> | source is kept the same.</t> | |||
| <t indent="0" pn="section-6.2.1-5">It is important to note that any MI | ||||
| <t>It is important to note that any MID SDES item from the | D SDES item from the | |||
| originating media source needs to be removed and not be associated | originating media source needs to be removed and not be associated | |||
| with the RTP stream's SSRC. That is, there is nothing in the | with the RTP stream's SSRC. That is, there is nothing in the | |||
| signalling between the mixer and the receiver that is structured | signaling between the mixer and the receiver that is structured | |||
| around the originating media sources, only the mixer's media | around the originating media sources, only the mixer's media | |||
| sources. If they would be associated with the SSRC, the receiver | sources. If they were associated with the SSRC, the receiver | |||
| would likely believe that there has been an SSRC collision, and that | would likely believe that there has been an SSRC collision and | |||
| the RTP stream is spurious as it doesn't carry the identifiers used | the RTP stream is spurious, because it doesn't carry the identifiers u | |||
| sed | ||||
| to relate it to the correct context. However, this is not true for | to relate it to the correct context. However, this is not true for | |||
| CSRC values, as long as they are never used as SSRC. In these cases | CSRC values, as long as they are never used as an SSRC. In these cases , | |||
| one could provide CNAME and MID as SDES items. A receiver could use | one could provide CNAME and MID as SDES items. A receiver could use | |||
| this to determine which CSRC values that are associated with the | this to determine which CSRC values that are associated with the | |||
| same originating media source.</t> | same originating media source.</t> | |||
| <t indent="0" pn="section-6.2.1-6">If RtpStreamIds are used in the sce | ||||
| <t>If RtpStreamIds are used in the scenario described by this | nario described by this | |||
| section, it should be noted that the RtpStreamId on a particular | section, it should be noted that the RtpStreamId on a particular | |||
| SSRC will change based on the actual simulcast stream selected for | SSRC will change based on the actual simulcast stream selected for | |||
| switching. These RtpStreamId identifiers will be local to this leg's | switching. These RtpStreamId identifiers will be local to this leg's | |||
| signalling context. In addition, the defined RtpStreamIds and their | signaling context. In addition, the defined RtpStreamIds and their | |||
| parameters need to cover all the media sources and simulcast streams | parameters need to cover all the media sources and simulcast streams | |||
| received by the RTP mixer that can be switched into this media | received by the RTP mixer that can be switched into this media | |||
| source, sent by the RTP mixer.</t> | source, sent by the RTP mixer.</t> | |||
| </section> | </section> | |||
| <section numbered="true" toc="include" removeInRFC="false" pn="section-6 | ||||
| <section title="Selective Forwarding Middlebox"> | .2.2"> | |||
| <t>This section discusses the behavior in cases where the RTP | <name slugifiedName="name-selective-forwarding-middle">Selective Forwa | |||
| middlebox behaves like the Selective Forwarding Middlebox (Section | rding Middlebox</name> | |||
| 3.7) in <xref target="RFC7667">RTP Topologies</xref>. Applications | <t indent="0" pn="section-6.2.2-1">This section discusses the behavior | |||
| for this type of RTP middlebox results in that each originating | in cases where the RTP | |||
| media source will have a corresponding media source on the leg | middlebox behaves like the Selective Forwarding Middlebox in RTP | |||
| topologies (<xref target="RFC7667" sectionFormat="of" section="3.7" for | ||||
| mat="default" derivedLink="https://rfc-editor.org/rfc/rfc7667#section-3.7" deriv | ||||
| edContent="RFC7667"/>). Applications | ||||
| for this type of RTP middlebox result in each originating | ||||
| media source having a corresponding media source on the leg | ||||
| between the middlebox and the receiver. A Selective Forwarding | between the middlebox and the receiver. A Selective Forwarding | |||
| Middlebox (SFM) could go as far as exposing all the simulcast | Middlebox (SFM) could go as far as exposing all the simulcast | |||
| streams for an media source, however this section will focus on | streams for a media source; however, this section will focus on | |||
| having a single simulcast stream that can contain any of the | having a single simulcast stream that can contain any of the | |||
| simulcast formats. This section will assume that the SFM projection | simulcast formats. This section will assume that the SFM projection | |||
| mechanism works on media source level, and maps one of the media | mechanism works on the media-source level and maps one of the media | |||
| source's simulcast streams onto one RTP stream from the SFM to the | source's simulcast streams onto one RTP stream from the SFM to the | |||
| receiver.</t> | receiver.</t> | |||
| <t indent="0" pn="section-6.2.2-2">This usage will result in the indiv | ||||
| <t>This usage will result in that the individual RTP stream(s) for | idual RTP stream(s) for | |||
| one media source can switch between being active to paused, based on | one media source being able to switch between being active and | |||
| paused, based on | ||||
| the subset of media sources the SFM wants to provide the receiver | the subset of media sources the SFM wants to provide the receiver | |||
| for the moment. With SFMs there exist no reasons to use CSRC to | for the moment. With SFMs, there exist no reasons to use CSRC to | |||
| indicate the originating stream, as there is a one to one media | indicate the originating stream, as there is a one-to-one | |||
| source mapping. If the application requires knowing the simulcast | media-source mapping. If the application requires knowing the | |||
| simulcast | ||||
| version received to function well, then RtpStreamId should be | version received to function well, then RtpStreamId should be | |||
| negotiated on the SFM to receiver leg. Which simulcast stream that | negotiated on the SFM to receiver leg. Which simulcast stream that | |||
| is being forwarded is not made explicit unless RtpStreamId is used | is being forwarded is not made explicit unless RtpStreamId is used | |||
| on the leg.</t> | on the leg.</t> | |||
| <t indent="0" pn="section-6.2.2-3">Any MID SDES items being sent by th | ||||
| <t>Any MID SDES items being sent by the SFM to the receiver are only | e SFM to the receiver are only | |||
| those agreed between the SFM and the receiver, and no MID values | those agreed between the SFM and the receiver, and no MID values | |||
| from the originating side of the SFM are to be forwarded.</t> | from the originating side of the SFM are to be forwarded.</t> | |||
| <t indent="0" pn="section-6.2.2-4">An SFM could expose corresponding R | ||||
| <t>A SFM could expose corresponding RTP streams for all the media | TP streams for all the media | |||
| sources and their simulcast streams, and then for any media source | sources and their simulcast streams and then, for any media source | |||
| that is to be provided forward one selected simulcast stream. | that is to be provided, forward one selected simulcast stream. | |||
| However, this is not recommended as it would unnecessarily increase | However, this is not recommended, as it would unnecessarily increase | |||
| the number of RTP streams and require the receiver to timely detect | the number of RTP streams and require the receiver to timely detect | |||
| switching between simulcast streams. The above usage requires the | switching between simulcast streams. The above usage requires the | |||
| same SFM functionality for switching, while avoiding the | same SFM functionality for switching, while avoiding the | |||
| uncertainties of timely detecting that a RTP stream ends. The | uncertainties of timely detecting that an RTP stream ends. The | |||
| benefit would be that the received simulcast stream would be | benefit would be that the received simulcast stream would be | |||
| implicitly provided by which RTP stream would be active for a media | implicitly provided by which RTP stream would be active for a media | |||
| source. However, using RtpStreamId to make this explicit also | source. However, using RtpStreamId to make this explicit also | |||
| exposes which alternative format is used. The conclusion is that | exposes which alternative format is used. The conclusion is that | |||
| using one RTP stream per simulcast stream is unnecessary. The issue | using one RTP stream per simulcast stream is unnecessary. The issue | |||
| with timely detecting end of streams, independent if they are | with timely detecting end of streams, independent of whether they are | |||
| stopped temporarily or long term, is that there is no explicit | stopped temporarily or long term, is that there is no explicit | |||
| indication that the transmission has intentionally been stopped. The | indication that the transmission has intentionally been stopped. The | |||
| RTCP based <xref target="RFC7728">Pause and Resume mechanism</xref> | RTCP-based <xref target="RFC7728" format="default" sectionFormat="of" | |||
| derivedContent="RFC7728">pause and resume | ||||
| mechanism</xref> | ||||
| includes a PAUSED indication that provides the last RTP sequence | includes a PAUSED indication that provides the last RTP sequence | |||
| number transmitted prior to the pause. Due to usage, the timeliness | number transmitted prior to the pause. Due to usage, the timeliness | |||
| of this solution depends on when delivery using RTCP can occur in | of this solution depends on when delivery using RTCP can occur in | |||
| relation to the transmission of the last RTP packet. If no explicit | relation to the transmission of the last RTP packet. If no explicit | |||
| information is provided at all, then detection based on non | information is provided at all, then detection based on | |||
| increasing RTCP SR field values and timers need to be used to | nonincreasing RTCP SR field values and timers need to be used to | |||
| determine pause in RTP packet delivery. This results in that one can | determine pause in RTP packet delivery. As a result, when the last | |||
| usually not determine when the last RTP packet arrives (if it | RTP packet arrives (if it arrives), one usually | |||
| arrives) that this will be the last. That it was the last is | cannot determine that this will be the last. That it was the last is | |||
| something that one learns later.</t> | something that one learns later.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-rtp-box-box" numbered="true" toc="include" removeInRF | ||||
| <section anchor="sec-rtp-box-box" title="RTP Middlebox to RTP Middlebox"> | C="false" pn="section-6.3"> | |||
| <t>This relates to the transmission of simulcast streams between RTP | <name slugifiedName="name-rtp-middlebox-to-rtp-middle">RTP Middlebox to | |||
| RTP Middlebox</name> | ||||
| <t indent="0" pn="section-6.3-1">This relates to the transmission of sim | ||||
| ulcast streams between RTP | ||||
| middleboxes or other usages where one wants to enable the delivery of | middleboxes or other usages where one wants to enable the delivery of | |||
| multiple simultaneous simulcast streams per media source, but the | multiple simultaneous simulcast streams per media source, but the | |||
| transmitting entity is not the originating endpoint. For a particular | transmitting entity is not the originating endpoint. For a particular | |||
| direction between middlebox A and B, this looks very similar to the | direction between middleboxes A and B, this looks very similar to the | |||
| originating to middlebox case on a media source basis. However, in | originating-to-middlebox case on a media-source basis. However, in | |||
| this case there is usually multiple media sources, originating from | this case, there are usually multiple media sources, originating from | |||
| multiple endpoints. This can create situations where limitations in | multiple endpoints. This can create situations where limitations in | |||
| the number of simultaneously received media streams can arise, for | the number of simultaneously received media streams can arise -- for | |||
| example due to limitation in network bandwidth. In this case, a subset | example, due to limitation in network bandwidth. In this case, a subset | |||
| of not only the simulcast streams, but also media sources can be | of not only the simulcast streams but also media sources can be | |||
| selected. This results in that individual RTP streams can be become | selected. As a result, individual RTP streams can become | |||
| paused at any point and later being resumed based on various | paused at any point and later be resumed based on various criteria.</t> | |||
| criteria.</t> | <t indent="0" pn="section-6.3-2">The MIDs used between A and B are the o | |||
| nes agreed between these two | ||||
| <t>The MIDs used between A and B are the ones agreed between these two | identities in signaling. The RtpStreamId values will also be provided | |||
| identities in signalling. The RtpStreamId values will also be provided | ||||
| to ensure explicit information about which simulcast stream they are. | to ensure explicit information about which simulcast stream they are. | |||
| The RTP stream to MID and RtpStreamId associations should here be long | The RTP-stream-to-MID and -RtpStreamId associations should here be | |||
| term stable.</t> | long-term stable.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-network-aspects" numbered="true" toc="include" removeIn | ||||
| <section anchor="sec-network-aspects" title="Network Aspects"> | RFC="false" pn="section-7"> | |||
| <t>Simulcast is in this memo defined as the act of sending multiple | <name slugifiedName="name-network-aspects">Network Aspects</name> | |||
| alternative encoded streams of the same underlying media source. When | <t indent="0" pn="section-7-1">Simulcast is in this memo defined as the ac | |||
| transmitting multiple independent streams that originate from the same | t of sending multiple | |||
| source, it could potentially be done in several different ways using | alternative encoded streams of the same underlying media | |||
| source. Transmitting multiple independent streams that originate from | ||||
| the same | ||||
| source could potentially be done in several different ways using | ||||
| RTP. A general discussion on considerations for use of the different RTP | RTP. A general discussion on considerations for use of the different RTP | |||
| multiplexing alternatives can be found in <xref | multiplexing alternatives can be found in <xref target="RFC8872" format="d | |||
| target="I-D.ietf-avtcore-multiplex-guidelines">Guidelines for | efault" sectionFormat="of" derivedContent="RFC8872">"Guidelines for Using the Mu | |||
| Multiplexing in RTP</xref>. Discussion and clarification on how to | ltiplexing Features of | |||
| handle multiple streams in an RTP session can be found in <xref | RTP to Support Multiple Media Streams"</xref>. Discussion and | |||
| target="RFC8108"/>.</t> | clarification on how to handle multiple streams in an RTP session can be | |||
| found in <xref target="RFC8108" format="default" sectionFormat="of" derive | ||||
| <t>The network aspects that are relevant for simulcast are:<list | dContent="RFC8108"/>.</t> | |||
| style="hanging"> | <t indent="0" pn="section-7-2">The network aspects that are relevant for s | |||
| <t hangText="Quality of Service:">When using simulcast it might be | imulcast are:</t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-7-3"> | ||||
| <dt pn="section-7-3.1">Quality of Service (QoS):</dt> | ||||
| <dd pn="section-7-3.2">When using simulcast, it might be | ||||
| of interest to prioritize a particular simulcast stream, rather than | of interest to prioritize a particular simulcast stream, rather than | |||
| applying equal treatment to all streams. For example, lower bitrate | applying equal treatment to all streams. For example, lower-bitrate | |||
| streams may be prioritized over higher bitrate streams to minimize | streams may be prioritized over higher-bitrate streams to minimize | |||
| congestion or packet losses in the low bitrate streams. Thus, there | congestion or packet losses in the low-bitrate streams. Thus, there | |||
| is a benefit to use a simulcast solution with good QoS support.</t> | is a benefit to using a simulcast solution with good QoS support.</dd> | |||
| <dt pn="section-7-3.3">NAT/FW Traversal (Network Address Translator / Fi | ||||
| <t hangText="NAT/FW Traversal:">Using multiple RTP sessions incurs | rewall Traversal):</dt> | |||
| more cost for NAT/FW traversal unless they can re-use the same | <dd pn="section-7-3.4">Using multiple RTP sessions incurs | |||
| transport flow, which can be achieved by <xref | more cost for NAT/FW traversal unless they can reuse the same | |||
| target="I-D.ietf-mmusic-sdp-bundle-negotiation">Multiplexing | transport flow, which can be achieved by <xref target="RFC8843" format | |||
| Negotiation Using SDP Port Numbers</xref>.</t> | ="default" sectionFormat="of" derivedContent="RFC8843">multiplexing negotiation | |||
| </list></t> | using SDP port | |||
| numbers</xref>.</dd> | ||||
| <t/> | </dl> | |||
| <t indent="0" pn="section-7-4"/> | ||||
| <section title="Bitrate Adaptation"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-7.1 | |||
| <t>Use of multiple simulcast streams can require a significant amount | "> | |||
| <name slugifiedName="name-bitrate-adaptation">Bitrate Adaptation</name> | ||||
| <t indent="0" pn="section-7.1-1">Use of multiple simulcast streams can r | ||||
| equire a significant amount | ||||
| of network resources. The aggregate bandwidth for all simulcast | of network resources. The aggregate bandwidth for all simulcast | |||
| streams for a media source (and thus SDP media description) is bounded | streams for a media source (and thus SDP media description) is bounded | |||
| by any SDP "b=" line applicable to that media source. It is assumed | by any SDP "b=" line applicable to that media source. It is assumed | |||
| that a suitable congestion control mechanism is used by the | that a suitable congestion-control mechanism is used by the | |||
| application to ensure that it doesn't cause persistent congestion. If | application to ensure that it doesn't cause persistent congestion. If | |||
| the amount of available network resources varies during an RTP session | the amount of available network resources varies during an RTP session | |||
| such that it does not match what is negotiated in SDP, the bitrate | such that it does not match what is negotiated in SDP, the bitrate | |||
| used by the different simulcast streams may have to be reduced | used by the different simulcast streams may have to be reduced | |||
| dynamically. When a simulcasting media source uses a single media | dynamically. When a simulcasting media source uses a single media | |||
| transport for all of the simulcast streams, it is likely that a joint | transport for all of the simulcast streams, it is likely that a joint | |||
| congestion control across all simulcast streams is used for that media | congestion control across all simulcast streams is used for that media | |||
| source. What simulcast streams to prioritize when allocating available | source. What simulcast streams to prioritize when allocating available | |||
| bitrate among the simulcast streams in such adaptation SHOULD be taken | bitrate among the simulcast streams in such adaptation <bcp14>SHOULD</bc p14> be taken | |||
| from the simulcast stream order on the "a=simulcast" line and ordering | from the simulcast stream order on the "a=simulcast" line and ordering | |||
| of alternative simulcast formats <xref target="sec-cap"/>. Simulcast | of alternative simulcast formats (<xref target="sec-cap" format="default " sectionFormat="of" derivedContent="Section 5.2"/>). Simulcast | |||
| streams that have pause/resume capability and that would be given such | streams that have pause/resume capability and that would be given such | |||
| low bitrate by the adaptation process that they are considered not | low bitrate by the adaptation process that they are considered not | |||
| really useful can be temporarily paused until the limiting condition | really useful can be temporarily paused until the limiting condition | |||
| clears.</t> | clears.</t> | |||
| </section> | </section> | |||
| </section> | </section> | |||
| <section anchor="sec-limitation" numbered="true" toc="include" removeInRFC=" | ||||
| <section anchor="sec-limitation" title="Limitation"> | false" pn="section-8"> | |||
| <t>The chosen approach has a limitation that relates to the use of a | <name slugifiedName="name-limitation">Limitation</name> | |||
| <t indent="0" pn="section-8-1">The chosen approach has a limitation that r | ||||
| elates to the use of a | ||||
| single RTP session for all simulcast formats of a media source, which | single RTP session for all simulcast formats of a media source, which | |||
| comes from sending all simulcast streams related to a media source under | comes from sending all simulcast streams related to a media source under | |||
| the same SDP media description.</t> | the same SDP media description.</t> | |||
| <t indent="0" pn="section-8-2">It is not possible to use different simulca | ||||
| <t>It is not possible to use different simulcast streams on different | st streams on different | |||
| media transports, limiting the possibilities to apply different QoS to | media transports, which limits the possibilities for applying different Qo | |||
| S to | ||||
| different simulcast streams. When using unicast, QoS mechanisms based on | different simulcast streams. When using unicast, QoS mechanisms based on | |||
| individual packet marking are feasible, since they do not require | individual packet marking are feasible, since they do not require | |||
| separation of simulcast streams into different RTP sessions to apply | separation of simulcast streams into different RTP sessions to apply | |||
| different QoS.</t> | different QoS.</t> | |||
| <t indent="0" pn="section-8-3">It is also not possible to separate differe | ||||
| <t>It is also not possible to separate different simulcast streams into | nt simulcast streams into | |||
| different multicast groups to allow a multicast receiver to pick the | different multicast groups to allow a multicast receiver to pick the | |||
| stream it wants, rather than receive all of them. In this case, the only | stream it wants, rather than receive all of them. In this case, the only | |||
| reasonable implementation is to use different RTP sessions for each | reasonable implementation is to use different RTP sessions for each | |||
| multicast group so that reporting and other RTCP functions operate as | multicast group so that reporting and other RTCP functions operate as | |||
| intended. Such simulcast usage in multicast context is out of scope for | intended. Such simulcast usage in a multicast context is out of scope for | |||
| the current document and would require additional specification.</t> | the current document and would require additional specification.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-iana" numbered="true" toc="include" removeInRFC="false" | ||||
| <section anchor="sec-iana" title="IANA Considerations"> | pn="section-9"> | |||
| <t>This document requests to register a new media-level SDP attribute, | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
| <t indent="0" pn="section-9-1">This document registers a new media-level S | ||||
| DP attribute, | ||||
| "simulcast", in the "att-field (media level only)" registry within the | "simulcast", in the "att-field (media level only)" registry within the | |||
| SDP parameters registry, according to the procedures of <xref | "Session Description Protocol (SDP) Parameters" registry, according to the | |||
| target="RFC4566"/> and <xref | procedures of <xref target="RFC4566" format="default" sectionFormat="of" d | |||
| target="I-D.ietf-mmusic-sdp-mux-attributes"/>.<list style="hanging"> | erivedContent="RFC4566"/> and <xref target="RFC8859" format="default" sectionFor | |||
| <t hangText="Contact name, email:">The IESG (iesg@ietf.org)</t> | mat="of" derivedContent="RFC8859"/>.</t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-9-2"> | ||||
| <t hangText="Attribute name:">simulcast</t> | <dt pn="section-9-2.1">Contact name, email:</dt> | |||
| <dd pn="section-9-2.2">The IESG (iesg@ietf.org)</dd> | ||||
| <t hangText="Long-form attribute name:">Simulcast stream | <dt pn="section-9-2.3">Attribute name:</dt> | |||
| description</t> | <dd pn="section-9-2.4">simulcast</dd> | |||
| <dt pn="section-9-2.5">Long-form attribute name:</dt> | ||||
| <t hangText="Charset dependent:">No</t> | <dd pn="section-9-2.6">Simulcast stream description</dd> | |||
| <dt pn="section-9-2.7">Charset dependent:</dt> | ||||
| <t hangText="Attribute value:">sc-value; see <xref | <dd pn="section-9-2.8">No</dd> | |||
| target="sec-attr"/> of RFC XXXX.</t> | <dt pn="section-9-2.9">Attribute value:</dt> | |||
| <dd pn="section-9-2.10">sc-value; see <xref target="sec-attr" format="de | ||||
| <t hangText="Purpose:">Signals simulcast capability for a set of RTP | fault" sectionFormat="of" derivedContent="Section 5.1"/> of RFC | |||
| streams</t> | 8853.</dd> | |||
| <dt pn="section-9-2.11">Purpose:</dt> | ||||
| <t hangText="MUX category:">NORMAL</t> | <dd pn="section-9-2.12">Signals simulcast capability for a set of RTP | |||
| </list>Note to RFC Editor: Please replace "RFC XXXX" with the assigned | streams</dd> | |||
| number of this RFC.</t> | <dt pn="section-9-2.13">Mux category:</dt> | |||
| <dd pn="section-9-2.14">NORMAL</dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="sec-security" numbered="true" toc="include" removeInRFC="fa | ||||
| <section anchor="sec-security" title="Security Considerations"> | lse" pn="section-10"> | |||
| <t>The simulcast capability, configuration attributes, and parameters | <name slugifiedName="name-security-considerations">Security Considerations | |||
| </name> | ||||
| <t indent="0" pn="section-10-1">The simulcast capability, configuration at | ||||
| tributes, and parameters | ||||
| are vulnerable to attacks in signaling.</t> | are vulnerable to attacks in signaling.</t> | |||
| <t indent="0" pn="section-10-2">A false inclusion of the "a=simulcast" att | ||||
| <t>A false inclusion of the "a=simulcast" attribute may result in | ribute may result in | |||
| simultaneous transmission of multiple RTP streams that would otherwise | simultaneous transmission of multiple RTP streams that would otherwise | |||
| not be generated. The impact is limited by the media description joint | not be generated. The impact is limited by the media description joint | |||
| bandwidth, shared by all simulcast streams irrespective of their number. | bandwidth, shared by all simulcast streams irrespective of their number. | |||
| There may however be a large number of unwanted RTP streams that will | However, there may be a large number of unwanted RTP streams that will | |||
| impact the share of bandwidth allocated for the originally wanted RTP | impact the share of bandwidth allocated for the originally wanted RTP | |||
| stream.</t> | stream.</t> | |||
| <t indent="0" pn="section-10-3">A hostile removal of the "a=simulcast" att | ||||
| <t>A hostile removal of the "a=simulcast" attribute will result in | ribute will result in | |||
| simulcast not being used.</t> | simulcast not being used.</t> | |||
| <t indent="0" pn="section-10-4"> | ||||
| <t>Neither of the above will likely have any major consequences and can | Integrity protection and source authentication of all SDP signaling, | |||
| be mitigated by signaling that is at least integrity and source | including simulcast attributes, can mitigate the risks of such attacks | |||
| authenticated to prevent an attacker to change it.</t> | that attempt to alter signaling. | |||
| </t> | ||||
| <t>Security considerations related to the use of "a=rid" and the | <t indent="0" pn="section-10-5">Security considerations related to the use | |||
| RtpStreamId SDES item is covered in <xref target="I-D.ietf-mmusic-rid"/> | of "a=rid" and the | |||
| and <xref target="I-D.ietf-avtext-rid"/>. There are no additional | RtpStreamId SDES item are covered in <xref target="RFC8851" format="defaul | |||
| t" sectionFormat="of" derivedContent="RFC8851"/> | ||||
| and <xref target="RFC8852" format="default" sectionFormat="of" derivedCont | ||||
| ent="RFC8852"/>. There are no additional | ||||
| security concerns related to their use in this specification.</t> | security concerns related to their use in this specification.</t> | |||
| </section> | </section> | |||
| <section anchor="sec-contributors" title="Contributors"> | ||||
| <t>Morgan Lindqvist and Fredrik Jansson, both from Ericsson, have | ||||
| contributed with important material to the first versions of this | ||||
| document. Robert Hansen and Cullen Jennings, from Cisco, Peter Thatcher, | ||||
| from Google, and Adam Roach, from Mozilla, contributed significantly to | ||||
| subsequent versions.</t> | ||||
| </section> | ||||
| <section anchor="sec-ack" title="Acknowledgements"> | ||||
| <t>The authors would like to thank Bernard Aboba, Thomas Belling, Roni | ||||
| Even, Adam Roach, Inaki Baz Castillo, Paul Kyzivat, and Arun Arunachalam | ||||
| for the feedback they provided during the development of this | ||||
| document.</t> | ||||
| </section> | ||||
| </middle> | </middle> | |||
| <back> | <back> | |||
| <references title="Normative References"> | <references pn="section-11"> | |||
| <?rfc include="reference.RFC.2119"?> | <name slugifiedName="name-references">References</name> | |||
| <references pn="section-11.1"> | ||||
| <?rfc include='reference.RFC.3550'?> | <name slugifiedName="name-normative-references">Normative References</na | |||
| me> | ||||
| <?rfc include='reference.RFC.4566'?> | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
| 119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
| <?rfc include='reference.RFC.5234'?> | <front> | |||
| <title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
| <?rfc include='reference.RFC.7405'?> | le> | |||
| <author initials="S." surname="Bradner" fullname="S. Bradner"> | ||||
| <?rfc include='reference.RFC.7728'?> | <organization showOnFrontPage="true"/> | |||
| </author> | ||||
| <?rfc include='reference.RFC.8174'?> | <date year="1997" month="March"/> | |||
| <abstract> | ||||
| <?rfc include='reference.I-D.ietf-mmusic-rid'?> | <t indent="0">In many standards track documents several words are | |||
| used to signify the requirements in the specification. These words are often ca | ||||
| <?rfc include='reference.I-D.ietf-avtext-rid'?> | 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 | ||||
| <?rfc include='reference.I-D.ietf-mmusic-sdp-mux-attributes'?> | e Internet Community, and requests discussion and suggestions for improvements.< | |||
| /t> | ||||
| <?rfc include='reference.I-D.ietf-mmusic-sdp-bundle-negotiation'?> | </abstract> | |||
| </references> | </front> | |||
| <seriesInfo name="BCP" value="14"/> | ||||
| <references title="Informative References"> | <seriesInfo name="RFC" value="2119"/> | |||
| <?rfc include='reference.RFC.2198'?> | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
| </reference> | ||||
| <?rfc include='reference.RFC.3264'?> | <reference anchor="RFC3264" target="https://www.rfc-editor.org/info/rfc3 | |||
| 264" quoteTitle="true" derivedAnchor="RFC3264"> | ||||
| <?rfc include='reference.RFC.3389'?> | <front> | |||
| <title>An Offer/Answer Model with Session Description Protocol (SDP) | ||||
| <?rfc include='reference.RFC.4588'?> | </title> | |||
| <author initials="J." surname="Rosenberg" fullname="J. Rosenberg"> | ||||
| <?rfc include='reference.RFC.4733'?> | <organization showOnFrontPage="true"/> | |||
| </author> | ||||
| <?rfc include='reference.RFC.5104'?> | <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | |||
| "> | ||||
| <?rfc include='reference.RFC.5109'?> | <organization showOnFrontPage="true"/> | |||
| </author> | ||||
| <?rfc include='reference.RFC.5583'?> | <date year="2002" month="June"/> | |||
| <abstract> | ||||
| <?rfc include='reference.RFC.6184'?> | <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 | ||||
| <?rfc include='reference.RFC.6190'?> | 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 | ||||
| <?rfc include='reference.RFC.6236'?> | 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 | ||||
| <?rfc include='reference.RFC.6464'?> | 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 | ||||
| <?rfc include='reference.RFC.7104'?> | DARDS-TRACK]</t> | |||
| </abstract> | ||||
| <?rfc include='reference.RFC.7656'?> | </front> | |||
| <seriesInfo name="RFC" value="3264"/> | ||||
| <?rfc include='reference.RFC.7667'?> | <seriesInfo name="DOI" value="10.17487/RFC3264"/> | |||
| </reference> | ||||
| <?rfc include='reference.RFC.7741'?> | <reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3 | |||
| 550" quoteTitle="true" derivedAnchor="RFC3550"> | ||||
| <?rfc include='reference.RFC.8108'?> | <front> | |||
| <title>RTP: A Transport Protocol for Real-Time Applications</title> | ||||
| <?rfc include='reference.RFC.8285'?> | <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | |||
| "> | ||||
| <?rfc include='reference.I-D.ietf-avtcore-multiplex-guidelines'?> | <organization showOnFrontPage="true"/> | |||
| </author> | ||||
| <?rfc include='reference.I-D.ietf-payload-flexible-fec-scheme'?> | <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="RFC4566" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 566" quoteTitle="true" derivedAnchor="RFC4566"> | ||||
| <front> | ||||
| <title>SDP: Session Description Protocol</title> | ||||
| <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> | ||||
| <date year="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 se | ||||
| ssion announcement, session invitation, and other forms of multimedia session in | ||||
| itiation. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4566"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4566"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5234" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 234" quoteTitle="true" derivedAnchor="RFC5234"> | ||||
| <front> | ||||
| <title>Augmented BNF for Syntax Specifications: ABNF</title> | ||||
| <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> | ||||
| <date year="2008" month="January"/> | ||||
| <abstract> | ||||
| <t indent="0">Internet technical specifications often need to defi | ||||
| ne a formal syntax. Over the years, a modified version of Backus-Naur Form (BNF | ||||
| ), called Augmented BNF (ABNF), has been popular among many Internet specificati | ||||
| ons. The current specification documents ABNF. It balances compactness and simp | ||||
| licity 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 definition | ||||
| s and encoding for a core lexical analyzer of the type common to several Interne | ||||
| t specifications. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="STD" value="68"/> | ||||
| <seriesInfo name="RFC" value="5234"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5234"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7405" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 405" quoteTitle="true" derivedAnchor="RFC7405"> | ||||
| <front> | ||||
| <title>Case-Sensitive String Support in ABNF</title> | ||||
| <author initials="P." surname="Kyzivat" fullname="P. Kyzivat"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2014" month="December"/> | ||||
| <abstract> | ||||
| <t indent="0">This document extends the base definition of ABNF (A | ||||
| ugmented Backus-Naur Form) to include a way to specify US-ASCII string literals | ||||
| that are matched in a case-sensitive manner.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7405"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7405"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7728" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 728" quoteTitle="true" derivedAnchor="RFC7728"> | ||||
| <front> | ||||
| <title>RTP Stream Pause and Resume</title> | ||||
| <author initials="B." surname="Burman" fullname="B. Burman"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Akram" fullname="A. Akram"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Even" fullname="R. Even"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2016" month="February"/> | ||||
| <abstract> | ||||
| <t indent="0">With the increased popularity of real-time multimedi | ||||
| a applications, it is desirable to provide good control of resource usage, and u | ||||
| sers also demand more control over communication sessions. This document descri | ||||
| bes how a receiver in a multimedia conversation can pause and resume incoming da | ||||
| ta from a sender by sending real-time feedback messages when using the Real-time | ||||
| Transport Protocol (RTP) for real- time data transport. This document extends | ||||
| the Codec Control Message (CCM) RTP Control Protocol (RTCP) feedback package by | ||||
| explicitly allowing and describing specific use of existing CCMs and adding a gr | ||||
| oup of new real-time feedback messages used to pause and resume RTP data streams | ||||
| . This document updates RFC 5104.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7728"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7728"/> | ||||
| </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="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> | ||||
| <reference anchor="RFC8851" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 851" quoteTitle="true" derivedAnchor="RFC8851"> | ||||
| <front> | ||||
| <title>RTP Payload Format Restrictions</title> | ||||
| <author initials="A.B." surname="Roach" fullname="Adam Roach" role=" | ||||
| editor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8851"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8851"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8852" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 852" 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> | ||||
| <reference anchor="RFC8859" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 859" quoteTitle="true" derivedAnchor="RFC8859"> | ||||
| <front> | ||||
| <title>A Framework for Session Description Protocol (SDP) Attributes | ||||
| When Multiplexing</title> | ||||
| <author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8859"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8859"/> | ||||
| </reference> | ||||
| </references> | ||||
| <references pn="section-11.2"> | ||||
| <name slugifiedName="name-informative-references">Informative References | ||||
| </name> | ||||
| <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="RFC3389" target="https://www.rfc-editor.org/info/rfc3 | ||||
| 389" quoteTitle="true" derivedAnchor="RFC3389"> | ||||
| <front> | ||||
| <title>Real-time Transport Protocol (RTP) Payload for Comfort Noise | ||||
| (CN)</title> | ||||
| <author initials="R." surname="Zopf" fullname="R. Zopf"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2002" month="September"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="3389"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC3389"/> | ||||
| </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="RFC4733" target="https://www.rfc-editor.org/info/rfc4 | ||||
| 733" quoteTitle="true" derivedAnchor="RFC4733"> | ||||
| <front> | ||||
| <title>RTP Payload for DTMF Digits, Telephony Tones, and Telephony S | ||||
| ignals</title> | ||||
| <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | ||||
| "> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Taylor" fullname="T. Taylor"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2006" month="December"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo describes how to carry dual-tone multifreq | ||||
| uency (DTMF) signalling, other tone signals, and telephony events in RTP packets | ||||
| . It obsoletes RFC 2833.</t> | ||||
| <t indent="0">This memo captures and expands upon the basic framew | ||||
| ork defined in RFC 2833, but retains only the most basic event codes. It sets u | ||||
| p an IANA registry to which other event code assignments may be added. Companion | ||||
| documents add event codes to this registry relating to modem, fax, text telepho | ||||
| ny, and channel-associated signalling events. The remainder of the event codes d | ||||
| efined in RFC 2833 are conditionally reserved in case other documents revive the | ||||
| ir use.</t> | ||||
| <t indent="0">This document provides a number of clarifications to | ||||
| the original document. However, it specifically differs from RFC 2833 by remov | ||||
| ing the requirement that all compliant implementations support the DTMF events. | ||||
| Instead, compliant implementations taking part in out-of-band negotiations of m | ||||
| edia stream content indicate what events they support. This memo adds three new | ||||
| procedures to the RFC 2833 framework: subdivision of long events into segments, | ||||
| reporting of multiple events in a single packet, and the concept and reporting | ||||
| of state events. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="4733"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC4733"/> | ||||
| </reference> | ||||
| <reference anchor="RFC5104" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 104" quoteTitle="true" derivedAnchor="RFC5104"> | ||||
| <front> | ||||
| <title>Codec Control Messages in the RTP Audio-Visual Profile with F | ||||
| eedback (AVPF)</title> | ||||
| <author initials="S." surname="Wenger" fullname="S. Wenger"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="U." surname="Chandra" fullname="U. Chandra"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="B." surname="Burman" fullname="B. Burman"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2008" month="February"/> | ||||
| <abstract> | ||||
| <t indent="0">This document specifies a few extensions to the mess | ||||
| ages defined in the Audio-Visual Profile with Feedback (AVPF). They are helpful | ||||
| primarily in conversational multimedia scenarios where centralized multipoint f | ||||
| unctionalities are in use. However, some are also usable in smaller multicast e | ||||
| nvironments and point-to-point calls.</t> | ||||
| <t indent="0">The extensions discussed are messages related to the | ||||
| ITU-T Rec. H.271 Video Back Channel, Full Intra Request, Temporary Maximum Medi | ||||
| a Stream Bit Rate, and Temporal-Spatial Trade-off. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5104"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5104"/> | ||||
| </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="RFC5583" target="https://www.rfc-editor.org/info/rfc5 | ||||
| 583" quoteTitle="true" derivedAnchor="RFC5583"> | ||||
| <front> | ||||
| <title>Signaling Media Decoding Dependency in the Session Descriptio | ||||
| n Protocol (SDP)</title> | ||||
| <author initials="T." surname="Schierl" fullname="T. Schierl"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Wenger" fullname="S. Wenger"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2009" month="July"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo defines semantics that allow for signaling | ||||
| the decoding dependency of different media descriptions with the same media typ | ||||
| e in the Session Description Protocol (SDP). This is required, for example, if | ||||
| media data is separated and transported in different network streams as a result | ||||
| of the use of a layered or multiple descriptive media coding process.</t> | ||||
| <t indent="0">A new grouping type "DDP" -- decoding dependency -- | ||||
| is defined, to be used in conjunction with RFC 3388 entitled "Grouping of Media | ||||
| Lines in the Session Description Protocol". In addition, an attribute is specif | ||||
| ied describing the relationship of the media streams in a "DDP" group indicated | ||||
| by media identification attribute(s) and media format description(s). [STANDARD | ||||
| S-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="5583"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC5583"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6184" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 184" quoteTitle="true" derivedAnchor="RFC6184"> | ||||
| <front> | ||||
| <title>RTP Payload Format for H.264 Video</title> | ||||
| <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> | ||||
| <date year="2011" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo describes an RTP Payload format for the IT | ||||
| U-T Recommendation H.264 video codec and the technically identical ISO/IEC Inter | ||||
| national 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. The RTP payload format allows for packetization o | ||||
| f one or more Network Abstraction Layer Units (NALUs), produced by an H.264 vide | ||||
| o encoder, in each RTP payload. The payload format has wide applicability, as i | ||||
| t supports applications from simple low bitrate conversational usage, to Interne | ||||
| t video streaming with interleaved transmission, to high 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="RFC6190" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 190" quoteTitle="true" derivedAnchor="RFC6190"> | ||||
| <front> | ||||
| <title>RTP Payload Format for Scalable Video Coding</title> | ||||
| <author initials="S." surname="Wenger" fullname="S. Wenger"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="Y.-K." surname="Wang" fullname="Y.-K. Wang"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="T." surname="Schierl" fullname="T. Schierl"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="A." surname="Eleftheriadis" fullname="A. Eleftheri | ||||
| adis"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2011" month="May"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo describes an RTP payload format for Scalab | ||||
| le Video Coding (SVC) as defined in Annex G of ITU-T Recommendation H.264, which | ||||
| is technically identical to Amendment 3 of ISO/IEC International Standard 14496 | ||||
| -10. The RTP payload format allows for packetization of one or more Network Abs | ||||
| traction Layer (NAL) units in each RTP packet payload, as well as fragmentation | ||||
| of a NAL unit in multiple RTP packets. Furthermore, it supports transmission of | ||||
| an SVC stream over a single as well as multiple RTP sessions. The payload forma | ||||
| t defines a new media subtype name "H264-SVC", but is still backward compatible | ||||
| to RFC 6184 since the base layer, when encapsulated in its own RTP stream, must | ||||
| use the H.264 media subtype name ("H264") and the packetization method specified | ||||
| in RFC 6184. The payload format has wide applicability in videoconferencing, I | ||||
| nternet video streaming, and high-bitrate entertainment-quality video, among oth | ||||
| ers. [STANDARDS-TRACK]</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="6190"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC6190"/> | ||||
| </reference> | ||||
| <reference anchor="RFC6236" target="https://www.rfc-editor.org/info/rfc6 | ||||
| 236" quoteTitle="true" derivedAnchor="RFC6236"> | ||||
| <front> | ||||
| <title>Negotiation of Generic Image Attributes in the Session Descri | ||||
| ption 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 new generic session setup a | ||||
| ttribute to make it possible to negotiate different image attributes such as ima | ||||
| ge size. A possible use case is to make it possible for a \%low-end \%hand- hel | ||||
| d terminal to display video without the need to rescale the image, something tha | ||||
| t may consume large amounts of memory and processing power. The document also h | ||||
| elps to maintain an optimal bitrate for video as only the image size that is des | ||||
| ired 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="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="RFC7104" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 104" quoteTitle="true" derivedAnchor="RFC7104"> | ||||
| <front> | ||||
| <title>Duplication Grouping Semantics in the Session Description Pro | ||||
| tocol</title> | ||||
| <author initials="A." surname="Begen" fullname="A. Begen"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="Y." surname="Cai" fullname="Y. Cai"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H." surname="Ou" fullname="H. Ou"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2014" month="January"/> | ||||
| <abstract> | ||||
| <t indent="0">Packet loss is undesirable for real-time multimedia | ||||
| sessions, but it can occur due to congestion or other unplanned network outages. | ||||
| This is especially true for IP multicast networks, where packet loss patterns | ||||
| can vary greatly between receivers. One technique that can be used to recover f | ||||
| rom packet loss without incurring unbounded delay for all the receivers is to du | ||||
| plicate the packets and send them in separate redundant streams. This document | ||||
| defines the semantics for grouping redundant streams in the Session Description | ||||
| Protocol (SDP). The semantics defined in this document are to be used with the S | ||||
| DP Grouping Framework. Grouping semantics at the Synchronization Source (SSRC) | ||||
| level are also defined in this document for RTP streams using SSRC multiplexing. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7104"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7104"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7656" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 656" quoteTitle="true" derivedAnchor="RFC7656"> | ||||
| <front> | ||||
| <title>A Taxonomy of Semantics and Mechanisms for Real-Time Transpor | ||||
| t 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="ed | ||||
| itor"> | ||||
| <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 be complex and somewhat opaque. This | ||||
| document describes a number of existing and proposed properties and relationship | ||||
| s among RTP sources and defines common terminology for discussing protocol entit | ||||
| ies and their relationships.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7656"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7656"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7667" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 667" quoteTitle="true" derivedAnchor="RFC7667"> | ||||
| <front> | ||||
| <title>RTP Topologies</title> | ||||
| <author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="S." surname="Wenger" fullname="S. Wenger"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2015" month="November"/> | ||||
| <abstract> | ||||
| <t indent="0">This document discusses point-to-point and multi-end | ||||
| point topologies used in environments based on the Real-time Transport Protocol | ||||
| (RTP). In particular, centralized topologies commonly employed in the video conf | ||||
| erencing industry are mapped to the RTP terminology.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7667"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7667"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7741" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 741" quoteTitle="true" derivedAnchor="RFC7741"> | ||||
| <front> | ||||
| <title>RTP Payload Format for VP8 Video</title> | ||||
| <author initials="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 format for the VP | ||||
| 8 video codec. The payload format has wide applicability, as it supports applica | ||||
| tions from low-bitrate peer-to-peer usage to high-bitrate video conferences.</t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7741"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7741"/> | ||||
| </reference> | ||||
| <reference anchor="RFC7941" target="https://www.rfc-editor.org/info/rfc7 | ||||
| 941" quoteTitle="true" derivedAnchor="RFC7941"> | ||||
| <front> | ||||
| <title>RTP Header Extension for the RTP Control Protocol (RTCP) Sour | ||||
| ce Description Items</title> | ||||
| <author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="B." surname="Burman" fullname="B. Burman"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R." surname="Even" fullname="R. Even"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Zanaty" fullname="M. Zanaty"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2016" month="August"/> | ||||
| <abstract> | ||||
| <t indent="0">Source Description (SDES) items are normally transpo | ||||
| rted in the RTP Control Protocol (RTCP). In some cases, it can be beneficial to | ||||
| speed up the delivery of these items. The main case is when a new synchronizat | ||||
| ion source (SSRC) joins an RTP session and the receivers need this source's iden | ||||
| tity, relation to other sources, or its synchronization context, all of which ma | ||||
| y be fully or partially identified using SDES items. To enable this optimizatio | ||||
| n, this document specifies a new RTP header extension that can carry SDES items. | ||||
| </t> | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="7941"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC7941"/> | ||||
| </reference> | ||||
| <reference anchor="RFC8108" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 108" quoteTitle="true" derivedAnchor="RFC8108"> | ||||
| <front> | ||||
| <title>Sending Multiple RTP Streams in a Single RTP Session</title> | ||||
| <author initials="J." surname="Lennox" fullname="J. Lennox"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="Q." surname="Wu" fullname="Q. Wu"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C." surname="Perkins" fullname="C. Perkins"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <date year="2017" month="March"/> | ||||
| <abstract> | ||||
| <t indent="0">This memo expands and clarifies the behavior of Real | ||||
| -time Transport Protocol (RTP) endpoints that use multiple synchronization sourc | ||||
| es (SSRCs). This occurs, for example, when an endpoint sends multiple RTP strea | ||||
| ms in a single RTP session. This memo updates RFC 3550 with regard to handling | ||||
| multiple SSRCs per endpoint in RTP sessions, with a particular focus on RTP Cont | ||||
| rol Protocol (RTCP) behavior. It also updates RFC 4585 to change and clarify th | ||||
| e calculation of the timeout of SSRCs and the inclusion of feedback messages.</t | ||||
| > | ||||
| </abstract> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8108"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8108"/> | ||||
| </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="RFC8872" target="https://www.rfc-editor.org/info/rfc8 | ||||
| 872" quoteTitle="true" derivedAnchor="RFC8872"> | ||||
| <front> | ||||
| <title>Guidelines for Using the Multiplexing Features of RTP to Supp | ||||
| ort Multiple Media Streams</title> | ||||
| <author initials="M" surname="Westerlund" fullname="Magnus Westerlun | ||||
| d"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="B" surname="Burman" fullname="Bo Burman"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="C" surname="Perkins" fullname="Colin Perkins"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="H" surname="Alvestrand" fullname="Harald Alvestran | ||||
| d"> | ||||
| <organization showOnFrontPage="true"/> | ||||
| </author> | ||||
| <author initials="R" surname="Even" fullname="Roni Even"> | ||||
| </author> | ||||
| <date month="January" year="2021"/> | ||||
| </front> | ||||
| <seriesInfo name="RFC" value="8872"/> | ||||
| <seriesInfo name="DOI" value="10.17487/RFC8872"/> | ||||
| </reference> | ||||
| </references> | ||||
| </references> | </references> | |||
| <section anchor="sec-requirements" numbered="true" toc="include" removeInRFC | ||||
| <section anchor="sec-requirements" title="Requirements"> | ="false" pn="section-appendix.a"> | |||
| <t>The following requirements are met by the defined solution to support | <name slugifiedName="name-requirements">Requirements</name> | |||
| the <xref target="sec-use-cases">use cases</xref>:<list style="hanging"> | <t indent="0" pn="section-appendix.a-1">The following requirements are met | |||
| <t anchor="req-1" hangText="REQ-1:">Identification:<list | by the defined solution to support | |||
| style="hanging"> | the <xref target="sec-use-cases" format="default" sectionFormat="of" deriv | |||
| <t anchor="req-1.1" hangText="REQ-1.1:">It must be possible to | edContent="Section 3">use cases</xref>:</t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-appendix.a-2"> | ||||
| <dt pn="section-appendix.a-2.1">REQ-1:</dt> | ||||
| <dd anchor="req-1" pn="section-appendix.a-2.2"> | ||||
| <t indent="0" pn="section-appendix.a-2.2.1">Identification:</t> | ||||
| <dl newline="false" spacing="normal" indent="3" pn="section-appendix.a | ||||
| -2.2.2"> | ||||
| <dt pn="section-appendix.a-2.2.2.1">REQ-1.1:</dt> | ||||
| <dd anchor="req-1.1" pn="section-appendix.a-2.2.2.2">It must be poss | ||||
| ible to | ||||
| identify a set of simulcasted RTP streams as originating from | identify a set of simulcasted RTP streams as originating from | |||
| the same media source in SDP signaling.</t> | the same media source in SDP signaling.</dd> | |||
| <dt pn="section-appendix.a-2.2.2.3">REQ-1.2:</dt> | ||||
| <t anchor="req-1.2" hangText="REQ-1.2:">An RTP endpoint must be | <dd anchor="req-1.2" pn="section-appendix.a-2.2.2.4">An RTP endpoint | |||
| capable of identifying the simulcast stream a received RTP | must be | |||
| capable of identifying the simulcast stream that a received RTP | ||||
| stream is associated with, knowing the content of the SDP | stream is associated with, knowing the content of the SDP | |||
| signalling.</t> | signaling.</dd> | |||
| </list></t> | </dl> | |||
| </dd> | ||||
| <t anchor="req-2" hangText="REQ-2:">Transport usage. The solution | <dt pn="section-appendix.a-2.3">REQ-2:</dt> | |||
| must work when using:<list style="hanging"> | <dd anchor="req-2" pn="section-appendix.a-2.4"> | |||
| <t anchor="req-2.1" hangText="REQ-2.1:">Legacy SDP with separate | <t indent="0" pn="section-appendix.a-2.4.1">Transport usage. The solut | |||
| media transports per SDP media description.</t> | ion | |||
| must work when using:</t> | ||||
| <t anchor="req-2.2" hangText="REQ-2.2:"><xref | <dl newline="false" spacing="normal" indent="3" pn="section-appendix.a | |||
| target="I-D.ietf-mmusic-sdp-bundle-negotiation">Bundled</xref> | -2.4.2"> | |||
| SDP media descriptions.</t> | <dt pn="section-appendix.a-2.4.2.1">REQ-2.1:</dt> | |||
| </list></t> | <dd anchor="req-2.1" pn="section-appendix.a-2.4.2.2">Legacy SDP with | |||
| separate | ||||
| <t anchor="req-3" hangText="REQ-3:">Capability negotiation. It must | media transports per SDP media description.</dd> | |||
| be possible that:<list style="hanging"> | <dt pn="section-appendix.a-2.4.2.3">REQ-2.2:</dt> | |||
| <t anchor="req-3.1" hangText="REQ-3.1:">Sender can express | <dd anchor="req-2.2" pn="section-appendix.a-2.4.2.4"> | |||
| capability of sending simulcast.</t> | <xref target="RFC8843" format="default" sectionFormat="of" derived | |||
| Content="RFC8843">Bundled</xref> | ||||
| <t anchor="req-3.2" hangText="REQ-3.2:">Receiver can express | SDP media descriptions.</dd> | |||
| capability of receiving simulcast.</t> | </dl> | |||
| </dd> | ||||
| <t anchor="req-3.3" hangText="REQ-3.3:">Sender can express | <dt pn="section-appendix.a-2.5">REQ-3:</dt> | |||
| maximum number of simulcast streams that can be provided.</t> | <dd anchor="req-3" pn="section-appendix.a-2.6"> | |||
| <t indent="0" pn="section-appendix.a-2.6.1">Capability negotiation. Th | ||||
| <t anchor="req-3.4" hangText="REQ-3.4:">Receiver can express | e | |||
| maximum number of simulcast streams that can be received.</t> | following must be possible:</t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-appendix.a | ||||
| <t anchor="req-3.5" hangText="REQ-3.5:">Sender can detail the | -2.6.2"> | |||
| <dt pn="section-appendix.a-2.6.2.1">REQ-3.1:</dt> | ||||
| <dd anchor="req-3.1" pn="section-appendix.a-2.6.2.2">The sender can | ||||
| express | ||||
| capability of sending simulcast.</dd> | ||||
| <dt pn="section-appendix.a-2.6.2.3">REQ-3.2:</dt> | ||||
| <dd anchor="req-3.2" pn="section-appendix.a-2.6.2.4">The receiver ca | ||||
| n express | ||||
| capability of receiving simulcast.</dd> | ||||
| <dt pn="section-appendix.a-2.6.2.5">REQ-3.3:</dt> | ||||
| <dd anchor="req-3.3" pn="section-appendix.a-2.6.2.6">The sender can | ||||
| express | ||||
| the maximum number of simulcast streams that can be | ||||
| provided.</dd> | ||||
| <dt pn="section-appendix.a-2.6.2.7">REQ-3.4:</dt> | ||||
| <dd anchor="req-3.4" pn="section-appendix.a-2.6.2.8">The receiver ca | ||||
| n express the | ||||
| maximum number of simulcast streams that can be received.</dd> | ||||
| <dt pn="section-appendix.a-2.6.2.9">REQ-3.5:</dt> | ||||
| <dd anchor="req-3.5" pn="section-appendix.a-2.6.2.10">The sender can | ||||
| detail the | ||||
| characteristics of the simulcast streams that can be | characteristics of the simulcast streams that can be | |||
| provided.</t> | provided.</dd> | |||
| <dt pn="section-appendix.a-2.6.2.11">REQ-3.6:</dt> | ||||
| <t anchor="req-3.6" hangText="REQ-3.6:">Receiver can detail the | <dd anchor="req-3.6" pn="section-appendix.a-2.6.2.12">The receiver c | |||
| an detail the | ||||
| characteristics of the simulcast streams that it prefers to | characteristics of the simulcast streams that it prefers to | |||
| receive.</t> | receive.</dd> | |||
| </list></t> | </dl> | |||
| </dd> | ||||
| <t anchor="req-4" hangText="REQ-4:">Distinguishing features. It must | <dt pn="section-appendix.a-2.7">REQ-4:</dt> | |||
| <dd anchor="req-4" pn="section-appendix.a-2.8">Distinguishing features. | ||||
| It must | ||||
| be possible to have different simulcast streams use different codec | be possible to have different simulcast streams use different codec | |||
| parameters, as can be expressed by SDP format values and RTP payload | parameters, as can be expressed by SDP format values and RTP payload | |||
| types.</t> | types.</dd> | |||
| <dt pn="section-appendix.a-2.9">REQ-5:</dt> | ||||
| <t anchor="req-5" hangText="REQ-5:">Compatibility. It must be | <dd anchor="req-5" pn="section-appendix.a-2.10"> | |||
| <t indent="0" pn="section-appendix.a-2.10.1">Compatibility. It must be | ||||
| possible to use simulcast in combination with other RTP mechanisms | possible to use simulcast in combination with other RTP mechanisms | |||
| that generate additional RTP streams:<list style="hanging"> | that generate additional RTP streams:</t> | |||
| <t anchor="req-5.1" hangText="REQ-5.1:"><xref | <dl newline="false" spacing="normal" indent="3" pn="section-appendix.a | |||
| target="RFC4588">RTP Retransmission</xref>.</t> | -2.10.2"> | |||
| <dt pn="section-appendix.a-2.10.2.1">REQ-5.1:</dt> | ||||
| <t anchor="req-5.2" hangText="REQ-5.2:"><xref | <dd anchor="req-5.1" pn="section-appendix.a-2.10.2.2"> | |||
| target="RFC5109">RTP Forward Error Correction</xref>.</t> | <xref target="RFC4588" format="default" sectionFormat="of" derived | |||
| Content="RFC4588">RTP retransmission</xref>.</dd> | ||||
| <t anchor="req-5.3" hangText="REQ-5.3:">Related payload types | <dt pn="section-appendix.a-2.10.2.3">REQ-5.2:</dt> | |||
| such as audio Comfort Noise and/or DTMF.</t> | <dd anchor="req-5.2" pn="section-appendix.a-2.10.2.4"> | |||
| <xref target="RFC5109" format="default" sectionFormat="of" derived | ||||
| <t hangText="REQ-5.4:">A single simulcast stream can consist of | Content="RFC5109">RTP Forward Error Correction</xref>.</dd> | |||
| <dt pn="section-appendix.a-2.10.2.5">REQ-5.3:</dt> | ||||
| <dd anchor="req-5.3" pn="section-appendix.a-2.10.2.6">Related payloa | ||||
| d types | ||||
| such as audio Comfort Noise and/or DTMF.</dd> | ||||
| <dt pn="section-appendix.a-2.10.2.7">REQ-5.4:</dt> | ||||
| <dd pn="section-appendix.a-2.10.2.8">A single simulcast stream can c | ||||
| onsist of | ||||
| multiple RTP streams, to support codecs where a dependent stream | multiple RTP streams, to support codecs where a dependent stream | |||
| is dependent on a set of encoded and dependent streams, each | is dependent on a set of encoded and dependent streams, each | |||
| potentially carried in their own RTP stream.</t> | potentially carried in their own RTP stream.</dd> | |||
| </list></t> | </dl> | |||
| </dd> | ||||
| <t anchor="req-6" hangText="REQ-6:">Interoperability. The solution | <dt pn="section-appendix.a-2.11">REQ-6:</dt> | |||
| must be possible to use in:<list style="hanging"> | <dd anchor="req-6" pn="section-appendix.a-2.12"> | |||
| <t anchor="req-6.1" hangText="REQ-6.1:">Interworking with | <t indent="0" pn="section-appendix.a-2.12.1">Interoperability. The sol | |||
| non-simulcast legacy clients using a single media source per | ution | |||
| media type.</t> | must be possible to use in:</t> | |||
| <dl newline="false" spacing="normal" indent="3" pn="section-appendix.a | ||||
| <t anchor="req-6.2" hangText="REQ-6.2:">WebRTC environment with | -2.12.2"> | |||
| a single media source per SDP media description.</t> | <dt pn="section-appendix.a-2.12.2.1">REQ-6.1:</dt> | |||
| </list></t> | <dd anchor="req-6.1" pn="section-appendix.a-2.12.2.2">Interworking w | |||
| </list></t> | ith | |||
| nonsimulcast legacy clients using a single media source per | ||||
| media type.</dd> | ||||
| <dt pn="section-appendix.a-2.12.2.3">REQ-6.2:</dt> | ||||
| <dd anchor="req-6.2" pn="section-appendix.a-2.12.2.4">WebRTC environ | ||||
| ment with | ||||
| a single media source per SDP media description.</dd> | ||||
| </dl> | ||||
| </dd> | ||||
| </dl> | ||||
| </section> | </section> | |||
| <section anchor="sec-ack" numbered="false" toc="include" removeInRFC="false" | ||||
| <section title="Changes From Earlier Versions"> | pn="section-appendix.b"> | |||
| <t>NOTE TO RFC EDITOR: Please remove this section prior to | <name slugifiedName="name-acknowledgements">Acknowledgements</name> | |||
| publication.</t> | <t indent="0" pn="section-appendix.b-1">The authors would like to thank <c | |||
| ontact fullname="Bernard Aboba"/>, <contact fullname="Thomas Belling"/>, <contac | ||||
| <section title="Modifications Between WG Version -13 and -14"> | t fullname="Roni Even"/>, <contact fullname="Adam Roach"/>, <contact fullname="I | |||
| <t><list style="symbols"> | ñaki Baz Castillo"/>, | |||
| <t>c= and t= line order corrected in SDP examples</t> | <contact fullname="Paul Kyzivat"/>, and <contact fullname="Arun Arun | |||
| </list></t> | achalam"/> for the feedback they provided during the development of | |||
| </section> | this document.</t> | |||
| </section> | ||||
| <section title="Modifications Between WG Version -12 and -13"> | <section anchor="sec-contributors" numbered="false" toc="include" removeInRF | |||
| <t><list style="symbols"> | C="false" pn="section-appendix.c"> | |||
| <t>Examples corrected to follow RID ABNF</t> | <name slugifiedName="name-contributors">Contributors</name> | |||
| <t indent="0" pn="section-appendix.c-1"><contact fullname="Morgan Lindqvis | ||||
| <t>Example <xref target="fig-ms-offer"/> now comments on priority | t"/> and <contact fullname="Fredrik Jansson"/>, both from Ericsson, have c | |||
| for second media source.</t> | ontributed with important material | |||
| to the first draft versions of this document. <contact fullname="Robert | ||||
| <t>Clarified a SHOULD limitation.</t> | Hanton"/> and <contact fullname="Cullen Jennings"/> from Cisco, <contact ful | |||
| lname="Peter Thatcher"/> from Google, and <contact fullname="Adam Roach"/> | ||||
| <t>Added urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id in | from Mozilla contributed significantly to subsequent | |||
| examples with RTX.</t> | versions.</t> | |||
| </section> | ||||
| <t>ABNF now uses RFC 7405 to indicate case sensitivity</t> | <section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | |||
| ="include" pn="section-appendix.d"> | ||||
| <t>Various minor editorials and nits.</t> | <name slugifiedName="name-authors-addresses">Authors' Addresses</name> | |||
| </list></t> | <author fullname="Bo Burman" initials="B." surname="Burman"> | |||
| </section> | <organization showOnFrontPage="true">Ericsson</organization> | |||
| <address> | ||||
| <section title="Modifications Between WG Version -11 and -12"> | <postal> | |||
| <t><list style="symbols"> | <street>Gronlandsgatan 31</street> | |||
| <t>Modified Normative statement regarding RTP stream duplication | <city>SE-164 60 Stockholm</city> | |||
| in Section 5.2.</t> | <region/> | |||
| <code/> | ||||
| <t>Clarified assumption about use of congestion control by | <country>Sweden</country> | |||
| applications.</t> | </postal> | |||
| <phone/> | ||||
| <t>Changed to use RFC 8174 boilerplate instead of RFC 2119.</t> | <email>bo.burman@ericsson.com</email> | |||
| <uri/> | ||||
| <t>Clarified explanation of syntax for simulcast attribute in | </address> | |||
| Section 4.</t> | </author> | |||
| <author fullname="Magnus Westerlund" initials="M." surname="Westerlund"> | ||||
| <t>Editorial clarification in Section 5.2 and 5.3.2.</t> | <organization showOnFrontPage="true">Ericsson</organization> | |||
| <address> | ||||
| <t>Various minor editorials and nits.</t> | <postal> | |||
| </list></t> | <street>Torshamnsgatan 23</street> | |||
| </section> | <city>SE-164 83 Stockholm</city> | |||
| <country>Sweden</country> | ||||
| <section title="Modifications Between WG Version -10 and -11"> | </postal> | |||
| <t><list style="symbols"> | <email>magnus.westerlund@ericsson.com</email> | |||
| <t>Added new SDP example section on Simulcast and Redundancy, | </address> | |||
| including both RED (RFC2198), RTP RTX (RFC4588), and FEC | </author> | |||
| (draft-ietf-payload-flexible-fec-scheme).</t> | <author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar"> | |||
| <organization showOnFrontPage="true">Cisco</organization> | ||||
| <t>Removed restriction that "related" payload formats in an RTP | <address> | |||
| stream (such as CN and DTMF) must not have their own rid-id, since | <postal> | |||
| there is no reason to forbid this and corresponding clarification | <street>170 West Tasman Drive</street> | |||
| is made in draft-ietf-mmusic-rid.</t> | <city>San Jose</city> | |||
| <region>CA</region> | ||||
| <t>Removed any mention of source-specific signaling and the | <code>95134</code> | |||
| reference to RFC5576, since draft-ietf-mmusic-rid is not defined | <country>United States of America</country> | |||
| for source-specific signaling.</t> | </postal> | |||
| <phone/> | ||||
| <t>Changed some SDP examples to use a=rid restrictions instead of | <email>snandaku@cisco.com</email> | |||
| a=imageattr.</t> | <uri/> | |||
| </address> | ||||
| <t>Changed reference from the obsoleted RFC 5285 to RFC 8285.</t> | </author> | |||
| </list></t> | <author fullname="Mo Zanaty" initials="M." surname="Zanaty"> | |||
| </section> | <organization showOnFrontPage="true">Cisco</organization> | |||
| <address> | ||||
| <section title="Modifications Between WG Version -09 and -10"> | <postal> | |||
| <t><list style="symbols"> | <street>170 West Tasman Drive</street> | |||
| <t>Amended overview section with a bit more explanation on the | <city>San Jose</city> | |||
| examples, and added an rid-id alternative for one of the | <region>CA</region> | |||
| streams.</t> | <code>95134</code> | |||
| <country>United States of America</country> | ||||
| <t>Removed SCID also from the Terminology section, which was | </postal> | |||
| forgotten in -09 when changing SCID to rid-id.</t> | <phone/> | |||
| </list></t> | <email>mzanaty@cisco.com</email> | |||
| </section> | <uri/> | |||
| </address> | ||||
| <section title="Modifications Between WG Version -08 and -09"> | </author> | |||
| <t><list style="symbols"> | ||||
| <t>Changed SCID to rid-id, to align with ietf-draft-mmusic-rid | ||||
| naming.</t> | ||||
| <t>Changed Overview to be based on examples and shortened it.</t> | ||||
| <t>Changed semantics of initially paused rid-id in modified SDP | ||||
| offers from requiring it to follow actual RFC 7728 pause state to | ||||
| an informational offerer's opinion at the time of offer creation, | ||||
| not in any way overriding or amending RFC 7728 signaling.</t> | ||||
| <t>Replaced text on ignoring all but the first of multiple | ||||
| "a=simulcast" lines in a media description with mandating that at | ||||
| most one "a=simulcast" line is included.</t> | ||||
| <t>Clarified with a note that, for the case it is clear from the | ||||
| SDP that RTP PT uniquely maps to RtpStreamId, an RTP receiver can | ||||
| use RTP PT to relate simulcast streams.</t> | ||||
| <t>Moved Section 4 Requirements to become Appendix A.</t> | ||||
| <t>Editorial corrections and clarifications.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between WG Version -07 and -08"> | ||||
| <t><list style="symbols"> | ||||
| <t>Correcting syntax of SDP examples in section 6.6.1, as found by | ||||
| Inaki Baz Castillo.</t> | ||||
| <t>Changing ABNF to only define the sc-value, not the SDP | ||||
| attribute itself, as suggested by Paul Kyzivat.</t> | ||||
| <t>Changing I-D reference to newly published RFC 8108.</t> | ||||
| <t>Adding list of modifications between -06 and -07.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between WG Version -06 and -07"> | ||||
| <t><list style="symbols"> | ||||
| <t>A scope clarification, as result of the discussion with Roni | ||||
| Even.</t> | ||||
| <t>A reformulation of the identification requirements for | ||||
| simulcast stream.</t> | ||||
| <t>Correcting the statement related to source specific signalling | ||||
| (RFC 5576) to address Roni Even's comment.</t> | ||||
| <t>Update of the last paragraph in Section 6.2 regarding simulcast | ||||
| stream differences as well as forbidding multiple instances of the | ||||
| same SCID within a single a=simulcast line.</t> | ||||
| <t>Removal of note in Section 6.4 as result of issue raised by | ||||
| Roni Even.</t> | ||||
| <t>Use of "m=" has been changed to media description and a few | ||||
| other editorial improvements and clarifications.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between WG Version -05 and -06"> | ||||
| <t><list style="symbols"> | ||||
| <t>Added section on RTP Aspects</t> | ||||
| <t>Added a requirement (5-4) on that capability exchange must be | ||||
| capable of handling multi RTP stream cases.</t> | ||||
| <t>Added extmap attribute also on first signalling example as it | ||||
| is a recommended to use mechanism.</t> | ||||
| <t>Clarified the definition of the simulcast attribute and how | ||||
| simulcast streams relates to simulcast formats and SCIDs.</t> | ||||
| <t>Updated References list and moved around some references | ||||
| between informative and normative categories.</t> | ||||
| <t>Editorial improvements and corrections.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between WG Version -04 and -05"> | ||||
| <t><list style="symbols"> | ||||
| <t>Aligned with recent changes in draft-ietf-mmusic-rid and | ||||
| draft-ietf-avtext-rid.</t> | ||||
| <t>Modified the SDP offer/answer section to follow the generally | ||||
| accepted structure, also adding a brief text on modifying the | ||||
| session that is aligned with draft-ietf-mmusic-rid.</t> | ||||
| <t>Improved text around simulcast stream identification (as | ||||
| opposed to the simulcast stream itself) to consistently use the | ||||
| acronym SCID and defined that in the Terminology section.</t> | ||||
| <t>Changed references for RTP-level pause/resume and VP8 payload | ||||
| format that are now published as RFC.</t> | ||||
| <t>Improved IANA registration text.</t> | ||||
| <t>Removed unused reference to | ||||
| draft-ietf-payload-flexible-fec-scheme.</t> | ||||
| <t>Editorial improvements and corrections.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between WG Version -03 and -04"> | ||||
| <t><list style="symbols"> | ||||
| <t>Changed to only use RID identification, as was consensus during | ||||
| IETF 94.</t> | ||||
| <t>ABNF improvements.</t> | ||||
| <t>Clarified offer-answer rules for initially paused streams.</t> | ||||
| <t>Changed references for RTP topologies and RTP taxonomy | ||||
| documents that are now published as RFC.</t> | ||||
| <t>Added reference to the new RID draft in AVTEXT.</t> | ||||
| <t>Re-structured section 6 to provide an easy reference by the | ||||
| updated IANA section.</t> | ||||
| <t>Added a sub-section 7.1 with a discussion of bitrate | ||||
| adaptation.</t> | ||||
| <t>Editorial improvements.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between WG Version -02 and -03"> | ||||
| <t><list style="symbols"> | ||||
| <t>Removed text on multicast / broadcast from use cases, since it | ||||
| is not supported by the solution.</t> | ||||
| <t>Removed explicit references to unified plan draft.</t> | ||||
| <t>Added possibility to initiate simulcast streams in paused | ||||
| mode.</t> | ||||
| <t>Enabled an offerer to offer multiple stream identification (pt | ||||
| or rid) methods and have the answerer choose which to use.</t> | ||||
| <t>Added a preference indication also in send direction | ||||
| offers.</t> | ||||
| <t>Added a section on limitations of the current proposal, | ||||
| including identification method specific limitations.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between WG Version -01 and -02"> | ||||
| <t><list style="symbols"> | ||||
| <t>Relying on the new RID solution for codec constraints and | ||||
| configuration identification. This has resulted in changes in | ||||
| syntax to identify if pt or RID is used to describe the simulcast | ||||
| stream.</t> | ||||
| <t>Renamed simulcast version and simulcast version alternative to | ||||
| simulcast stream and simulcast format respectively, and improved | ||||
| definitions for them.</t> | ||||
| <t>Clarification that it is possible to switch between simulcast | ||||
| version alternatives, but that only a single one be used at any | ||||
| point in time.</t> | ||||
| <t>Changed the definition so that ordering of simulcast formats | ||||
| for a specific simulcast stream do have a preference order.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between WG Version -00 and -01"> | ||||
| <t><list style="symbols"> | ||||
| <t>No changes. Only preventing expiry.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| <section title="Modifications Between Individual Version -00 and WG Versio | ||||
| n -00"> | ||||
| <t><list style="symbols"> | ||||
| <t>Added this appendix.</t> | ||||
| </list></t> | ||||
| </section> | ||||
| </section> | </section> | |||
| </back> | </back> | |||
| </rfc> | </rfc> | |||
| End of changes. 257 change blocks. | ||||
| 1238 lines changed or deleted | 2443 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/ | ||||