draft-ietf-mmusic-sdp-simulcast-04.txt | draft-ietf-mmusic-sdp-simulcast-05.txt | |||
---|---|---|---|---|
Network Working Group B. Burman | Network Working Group B. Burman | |||
Internet-Draft M. Westerlund | Internet-Draft M. Westerlund | |||
Intended status: Standards Track Ericsson | Intended status: Standards Track Ericsson | |||
Expires: August 6, 2016 S. Nandakumar | Expires: December 31, 2016 S. Nandakumar | |||
M. Zanaty | M. Zanaty | |||
Cisco | Cisco | |||
February 3, 2016 | June 29, 2016 | |||
Using Simulcast in SDP and RTP Sessions | Using Simulcast in SDP and RTP Sessions | |||
draft-ietf-mmusic-sdp-simulcast-04 | draft-ietf-mmusic-sdp-simulcast-05 | |||
Abstract | Abstract | |||
In some application scenarios it may be desirable to send multiple | In some application scenarios it may be desirable to send multiple | |||
differently encoded versions of the same media source in different | differently encoded versions of the same media source in different | |||
RTP streams. This is called simulcast. This document describes how | RTP streams. This is called simulcast. This document describes how | |||
to accomplish simulcast in RTP and how to signal it in SDP. The | to accomplish simulcast in RTP and how to signal it in SDP. The | |||
described solution uses an RTP/RTCP identification method to identify | described solution uses an RTP/RTCP identification method to identify | |||
RTP streams belonging to the same media source, and makes an | RTP streams belonging to the same media source, and makes an | |||
extension to SDP to relate those RTP streams as being different | extension to SDP to relate those RTP streams as being different | |||
skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on August 6, 2016. | This Internet-Draft will expire on December 31, 2016. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2016 IETF Trust and the persons identified as the | Copyright (c) 2016 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 2, line 30 ¶ | skipping to change at page 2, line 30 ¶ | |||
2.2. Requirements Language . . . . . . . . . . . . . . . . . . 4 | 2.2. Requirements Language . . . . . . . . . . . . . . . . . . 4 | |||
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1. Reaching a Diverse Set of Receivers . . . . . . . . . . . 5 | 3.1. Reaching a Diverse Set of Receivers . . . . . . . . . . . 5 | |||
3.2. Application Specific Media Source Handling . . . . . . . 6 | 3.2. Application Specific Media Source Handling . . . . . . . 6 | |||
3.3. Receiver Media Source Preferences . . . . . . . . . . . . 7 | 3.3. Receiver Media Source Preferences . . . . . . . . . . . . 7 | |||
4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 7 | 4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
5. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 5. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
6. Detailed Description . . . . . . . . . . . . . . . . . . . . 9 | 6. Detailed Description . . . . . . . . . . . . . . . . . . . . 9 | |||
6.1. Simulcast Attribute . . . . . . . . . . . . . . . . . . . 9 | 6.1. Simulcast Attribute . . . . . . . . . . . . . . . . . . . 9 | |||
6.2. Simulcast Capability . . . . . . . . . . . . . . . . . . 11 | 6.2. Simulcast Capability . . . . . . . . . . . . . . . . . . 11 | |||
6.2.1. Declarative Use . . . . . . . . . . . . . . . . . . . 13 | 6.3. Offer/Answer Use . . . . . . . . . . . . . . . . . . . . 13 | |||
6.2.2. Offer/Answer Use . . . . . . . . . . . . . . . . . . 13 | 6.3.1. Generating the Initial SDP Offer . . . . . . . . . . 13 | |||
6.3. Relating Simulcast Streams . . . . . . . . . . . . . . . 15 | 6.3.2. Creating the SDP Answer . . . . . . . . . . . . . . . 13 | |||
6.4. Signaling Examples . . . . . . . . . . . . . . . . . . . 15 | 6.3.3. Offerer Processing the SDP Answer . . . . . . . . . . 14 | |||
6.4.1. Single-Source Client . . . . . . . . . . . . . . . . 16 | 6.3.4. Modifying the Session . . . . . . . . . . . . . . . . 15 | |||
6.4.2. Multi-Source Client . . . . . . . . . . . . . . . . . 17 | 6.4. Declarative Use . . . . . . . . . . . . . . . . . . . . . 15 | |||
7. Network Aspects . . . . . . . . . . . . . . . . . . . . . . . 20 | 6.5. Relating Simulcast Streams . . . . . . . . . . . . . . . 15 | |||
7.1. Bitrate Adaptation . . . . . . . . . . . . . . . . . . . 20 | 6.6. Signaling Examples . . . . . . . . . . . . . . . . . . . 16 | |||
8. Limitations . . . . . . . . . . . . . . . . . . . . . . . . . 21 | 6.6.1. Single-Source Client . . . . . . . . . . . . . . . . 16 | |||
8.1. Single RTP Session . . . . . . . . . . . . . . . . . . . 21 | 6.6.2. Multi-Source Client . . . . . . . . . . . . . . . . . 18 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | 7. Network Aspects . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
10. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 7.1. Bitrate Adaptation . . . . . . . . . . . . . . . . . . . 21 | |||
11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 22 | 8. Limitation . . . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 22 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | |||
13. References . . . . . . . . . . . . . . . . . . . . . . . . . 22 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | |||
13.1. Normative References . . . . . . . . . . . . . . . . . . 22 | 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
13.2. Informative References . . . . . . . . . . . . . . . . . 23 | 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 23 | |||
Appendix A. Changes From Earlier Versions . . . . . . . . . . . 25 | 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
A.1. Modifications Between WG Version -03 and -04 . . . . . . 25 | 13.1. Normative References . . . . . . . . . . . . . . . . . . 23 | |||
A.2. Modifications Between WG Version -02 and -03 . . . . . . 26 | 13.2. Informative References . . . . . . . . . . . . . . . . . 25 | |||
A.3. Modifications Between WG Version -01 and -02 . . . . . . 26 | Appendix A. Changes From Earlier Versions . . . . . . . . . . . 26 | |||
A.4. Modifications Between WG Version -00 and -01 . . . . . . 26 | A.1. Modifications Between WG Version -04 and -05 . . . . . . 26 | |||
A.5. Modifications Between Individual Version -00 and WG | A.2. Modifications Between WG Version -03 and -04 . . . . . . 27 | |||
Version -00 . . . . . . . . . . . . . . . . . . . . . . . 26 | A.3. Modifications Between WG Version -02 and -03 . . . . . . 27 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | A.4. Modifications Between WG Version -01 and -02 . . . . . . 28 | |||
A.5. Modifications Between WG Version -00 and -01 . . . . . . 28 | ||||
A.6. Modifications Between Individual Version -00 and WG | ||||
Version -00 . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
1. Introduction | 1. Introduction | |||
Most of today's multiparty video conference solutions make use of | Most of today's multiparty video conference solutions make use of | |||
centralized servers to reduce the bandwidth and CPU consumption in | centralized servers to reduce the bandwidth and CPU consumption in | |||
the endpoints. Those servers receive RTP streams from each | the endpoints. Those servers receive RTP streams from each | |||
participant and send some suitable set of possibly modified RTP | participant and send some suitable set of possibly modified RTP | |||
streams to the rest of the participants, which usually have | streams to the rest of the participants, which usually have | |||
heterogeneous capabilities (screen size, CPU, bandwidth, codec, etc). | heterogeneous capabilities (screen size, CPU, bandwidth, codec, etc). | |||
One of the biggest issues is how to perform RTP stream adaptation to | One of the biggest issues is how to perform RTP stream adaptation to | |||
skipping to change at page 3, line 50 ¶ | skipping to change at page 4, line 9 ¶ | |||
[RFC7656], and RTP Topologies [RFC7667]. In addition, the following | [RFC7656], and RTP Topologies [RFC7667]. In addition, the following | |||
terms are used: | terms are used: | |||
RTP Mixer: An RTP middle node, defined in [RFC7667] (Section 3.6 to | RTP Mixer: An RTP middle node, defined in [RFC7667] (Section 3.6 to | |||
3.9). | 3.9). | |||
RTP Switch: A common short term for the terms "switching RTP mixer", | RTP Switch: A common short term for the terms "switching RTP mixer", | |||
"source projecting middlebox", and "video switching MCU" as | "source projecting middlebox", and "video switching MCU" as | |||
discussed in [RFC7667]. | discussed in [RFC7667]. | |||
Simulcast Stream: One Encoded Stream or Dependent Stream from a set | Simulcast Stream: One encoded stream or dependent stream from a set | |||
of concurrently transmitted Encoded Streams and optional Dependent | of concurrently transmitted encoded streams and optional dependent | |||
Streams, all sharing a common Media Source, as defined in | streams, all sharing a common media source, as defined in | |||
[RFC7656]. Decoding a Dependent Stream also requires the related | [RFC7656]. Decoding a dependent stream also requires the related | |||
(Dependent and) Encoded Stream(s), but in the context of simulcast | (dependent and) encoded stream(s), but in the context of simulcast | |||
that is considered a property of the Dependent Stream constituting | that is considered a property of the dependent stream constituting | |||
the simulcast stream. For example, HD and thumbnail video | the simulcast stream. For example, HD and thumbnail video | |||
simulcast versions of a single Media Source sent concurrently as | simulcast versions of a single media source sent concurrently as | |||
separate RTP Streams. | separate RTP Streams. | |||
Simulcast Format: Different formats of a simulcast stream serve the | Simulcast Format: Different formats of a simulcast stream serve the | |||
same purpose as alternative RTP payload types in non-simulcast | same purpose as alternative RTP payload types in non-simulcast | |||
SDP, to allow multiple alternative media formats for a given RTP | SDP, to allow multiple alternative media formats for a given RTP | |||
Stream. As for multiple RTP payload types on the m-line, any one | stream. As for multiple RTP payload types on the m-line in offer/ | |||
of the alternative formats can be used at a given point in time, | answer [RFC3264], any one of the negotiated alternative formats | |||
but not more than one (based on RTP timestamp), and what format is | can be used in a single RTP stream at a given point in time, but | |||
used can change dynamically from one RTP packet to another. For | not more than one (based on RTP timestamp). What format is used | |||
example, if all participants in a group video call can decode | can change dynamically from one RTP packet to another. | |||
H.264 and H.265 video, but only some can encode H.265, both H.264 | ||||
and H.265 can be kept as alternative formats, and the format may | Simulcast Stream Identifier (SCID): The identification value used to | |||
dynamically switch between H.264 and H.265 as different | refer to individual simulcast streams, identical to the "rid-id" | |||
participants become active speaker. | identification value for an RTP Constraint [I-D.ietf-mmusic-rid] | |||
and the corresponding content of "RtpStreamId" RTCP SDES Item | ||||
[I-D.ietf-avtext-rid]. | ||||
2.2. Requirements Language | 2.2. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119 [RFC2119]. | document are to be interpreted as described in RFC 2119 [RFC2119]. | |||
3. Use Cases | 3. Use Cases | |||
Many use cases of simulcast as described in this document relate to a | Many use cases of simulcast as described in this document relate to a | |||
multi-party communication session where one or more central nodes are | multi-party communication session where one or more central nodes are | |||
used to adapt the view of the communication session towards | used to adapt the view of the communication session towards | |||
individual participants, and facilitate the media transport between | individual participants, and facilitate the media transport between | |||
participants. Thus, these cases targets the RTP Mixer type of | participants. Thus, these cases target the RTP Mixer type of | |||
topology. | topology. | |||
There are two principle approaches for an RTP Mixer to provide this | There are two principle approaches for an RTP Mixer to provide this | |||
adapted view of the communication session to each receiving | adapted view of the communication session to each receiving | |||
participant: | participant: | |||
o Transcoding (decoding and re-encoding) received RTP streams with | o Transcoding (decoding and re-encoding) received RTP 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 | include mixing or composition of media sources from multiple | |||
participants into a mixed media source originated by the RTP | participants into a mixed media source originated by the RTP | |||
skipping to change at page 6, line 22 ¶ | skipping to change at page 6, line 30 ¶ | |||
For example, assume for simplicity a set of receiving participants | For example, assume for simplicity a set of receiving participants | |||
that differ only in that some have support to receive Codec A, and | that differ only in that some have support to receive Codec A, and | |||
the others have support to receive Codec B. Further assume that the | the others have support to receive Codec B. Further assume that the | |||
sending participant can send both Codec A and B. It can then reach | sending participant can send both Codec A and B. It can then reach | |||
all receivers by creating two simulcasted RTP streams from each media | all receivers by creating two simulcasted RTP streams from each media | |||
source; one for Codec A and one for Codec B. | source; one for Codec A and one for Codec B. | |||
In another simple example, a set of receiving participants differ | In another simple example, a set of receiving participants differ | |||
only in screen resolution; some are able to display video with at | only in screen resolution; some are able to display video with at | |||
most 360p resolution and some support 720p resolution. A sending | most 360p resolution and some support 720p resolution. A sending | |||
participant can then reach all receivers by creating a simulcast of | participant can then reach all receivers with best possible | |||
RTP streams with 360p and 720p resolution for each sent video media | resolution by creating a simulcast of RTP streams with 360p and 720p | |||
source. | resolution for each sent video media source. | |||
In more elaborate cases, the receiving participants differ both in | In more elaborate cases, the receiving participants differ both in | |||
available sampling and bitrate, and maybe also codec, and it is up to | available sampling and bitrate, and maybe also codec, and it is up to | |||
the RTP switch to find a good trade-off in which simulcasted stream | the RTP switch to find a good trade-off in which simulcasted stream | |||
to choose for each intended receiver. It is also the responsibility | to choose for each intended receiver. It is also the responsibility | |||
of the RTP switch to negotiate a good fit of simulcast streams with | of the RTP switch to negotiate a good fit of simulcast streams with | |||
the sending participant. | the sending participant. | |||
The maximum number of simulcasted RTP streams that can be sent is | The maximum number of simulcasted RTP streams 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 | |||
skipping to change at page 8, line 46 ¶ | skipping to change at page 9, line 6 ¶ | |||
5. Overview | 5. Overview | |||
As an overview, the above requirements are met by signaling simulcast | As an overview, the above requirements are met by signaling simulcast | |||
capability and configurations in SDP [RFC4566]: | capability and configurations in SDP [RFC4566]: | |||
o An offer or answer can contain a number of simulcast streams, | o An offer or answer can contain a number of simulcast streams, | |||
separate for send and receive directions. | separate for send and receive directions. | |||
o An offer or answer can contain multiple, alternative simulcast | o An offer or answer can contain multiple, alternative simulcast | |||
stream formats in the same fashion as multiple, alternative codecs | stream formats in the same fashion as multiple, alternative | |||
can be offered in a media description. | formats can be offered in a media description. | |||
o A single media source per SDP media description is assumed, which | o A single media source per SDP media description is assumed, which | |||
is aligned with the concepts defined in [RFC7656] and will | is aligned with the concepts defined in [RFC7656] and will | |||
specifically work in a WebRTC context, both with and without | specifically work in a WebRTC context, both with and without | |||
BUNDLE [I-D.ietf-mmusic-sdp-bundle-negotiation] grouping. | BUNDLE [I-D.ietf-mmusic-sdp-bundle-negotiation] grouping. | |||
o The codec configuration for a simulcast stream is expressed | o The codec configuration for a simulcast stream is expressed | |||
through use of a separately specified RTP-level identification | through use of separately specified RTP payload format constraints | |||
mechanism [I-D.ietf-mmusic-rid][I-D.roach-avtext-rid], which | [I-D.ietf-mmusic-rid] with an associated RTP-level identification | |||
complements and effectively extends the available simulcast stream | mechanism [I-D.ietf-avtext-rid] to identify which RTP payload | |||
identification and configuration possibilities that could be | format constraints an RTP stream adheres to. This complements and | |||
provided by using only SDP formats. | effectively extends simulcast stream identification and | |||
configuration possibilities that could be provided by using only | ||||
SDP formats as identifier. | ||||
o It is possible, but not required to use source-specific signaling | o It is possible, but not required to use source-specific signaling | |||
[RFC5576] with the proposed solution. | [RFC5576] with the proposed solution. | |||
6. Detailed Description | 6. Detailed Description | |||
This section further details the overview above (Section 5). First, | This section further details the overview above (Section 5). First, | |||
formal syntax is provided (Section 6.1), followed by the rest of the | formal syntax is provided (Section 6.1), followed by the rest of the | |||
SDP attribute definition in Section 6.2. Relating Simulcast Streams | SDP attribute definition in Section 6.2. Relating Simulcast Streams | |||
(Section 6.3) provides the definition of the RTP/RTCP mechanisms | (Section 6.5) provides the definition of the RTP/RTCP mechanisms | |||
used. The section is concluded with a number of examples. | used. The section is concluded with a number of examples. | |||
6.1. Simulcast Attribute | 6.1. Simulcast Attribute | |||
Name: simulcast | This document defines a new SDP media-level "a=simulcast" attribute | |||
with the following ABNF [RFC5234] syntax: | ||||
Value: sc-value | ||||
Usage Level: media | ||||
Charset Dependent: no | ||||
Multiplex Category: NORMAL | ||||
Syntax [RFC5234]: | ||||
sc-attr = "a=simulcast:" sc-value | sc-attr = "a=simulcast:" sc-value | |||
sc-value = sc-str-list [SP sc-str-list] | sc-value = sc-str-list [SP sc-str-list] | |||
sc-str-list = sc-dir SP sc-alt-list *( ";" sc-alt-list ) | sc-str-list = sc-dir SP sc-alt-list *( ";" sc-alt-list ) | |||
sc-dir = "send" / "recv" | sc-dir = "send" / "recv" | |||
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-identifier / token | sc-id = [sc-id-paused] rid-identifier | |||
; SP defined in [RFC5234] | ; SP defined in [RFC5234] | |||
; token defined in [RFC4566] | ||||
; rid-identifier defined in [I-D.ietf-mmusic-rid] | ; rid-identifier defined in [I-D.ietf-mmusic-rid] | |||
Figure 1: ABNF for Simulcast | Figure 1: ABNF for Simulcast | |||
The "a=simulcast" attribute has a parameter in the form of one or two | The "a=simulcast" attribute has a parameter in the form of one or two | |||
simulcast stream descriptions, each consisting of a direction ("send" | simulcast stream descriptions, each consisting of a direction ("send" | |||
or "recv"), followed by a list of one or more simulcast streams. | or "recv"), followed by a list of one or more simulcast streams. The | |||
Each simulcast stream in that list is separated by a semicolon (";"). | simulcast stream identification (SCID) MUST be have the form of an | |||
Each simulcast stream can in turn be offered in one or more | RTP stream identifier, as described by RTP Payload Format Constraints | |||
alternative formats, where each simulcast stream alternative is | [I-D.ietf-mmusic-rid]. | |||
separated by a comma (","). The simulcast stream alternative MUST be | ||||
described in the form of a RID, as described by | In the list of simulcast streams, each SCID is separated by a | |||
[I-D.ietf-mmusic-rid]. Each simulcast stream can be initially paused | semicolon (";"). Each simulcast stream can in turn be offered in one | |||
[I-D.ietf-avtext-rtp-stream-pause], indicated by prepending a "~" to | or more alternative formats, where each alternative SCID is separated | |||
the simulcast stream. In case there are simulcast stream | by a comma (","). Each simulcast stream can also be specified as | |||
alternatives, pause can be specified individually for each | initially paused [RFC7728], indicated by prepending a "~" to the | |||
alternative. The reason to allow separate initial pause states for | SCID. In case there are alternative SCID, pause can be specified | |||
each simulcast stream alternative is that pause capability can be | individually for each SCID. The reason to allow separate initial | |||
specified individually for each RTP payload type referenced by a RID, | pause states for each SCID is that pause capability can be specified | |||
which makes it infeasible to pause RID where any of the related RTP | individually for each RTP payload type referenced by an SCID. Since | |||
pause capability specified via the "a=rtcp-fb" attribute and SCID | ||||
specified by "a=rid" can refer to common payload types, it is | ||||
unfeasible to pause streams with SCID where any of the related RTP | ||||
payload type(s) do not have pause capability. | payload type(s) do not have pause capability. | |||
Examples: | Examples: | |||
a=simulcast:send 1,2,3;~4,~5 recv 1;~2,~5 | a=simulcast:send 1,2,3;~4,~5 recv 6;~7,~8 | |||
a=simulcast:recv 1;4,5 send 1;2 | a=simulcast:recv 1;4,5 send 6;7 | |||
Figure 2: Simulcast Examples | Figure 2: Simulcast Examples | |||
Above are two examples of different "a=simulcast" lines. | Above are two examples of different "a=simulcast" lines. | |||
The first line is an example offer to send two simulcast streams and | The first line is an example offer to send two simulcast streams and | |||
to receive two simulcast streams. The first simulcast stream in send | to receive two simulcast streams. The first simulcast stream in send | |||
direction can be sent as three different alternatives (1, 2, 3), and | direction can be sent in three different alternative formats (SCID 1, | |||
the second simulcast stream in send direction can be sent as two | 2, 3), and the second simulcast stream in send direction can be sent | |||
different alternatives (4, 5). All second stream send alternatives | in two different alternative formats (SCID 4, 5). Both of the second | |||
are offered as initially paused. The first simulcast stream in | stream alternative formats in send direction are offered as initially | |||
receive direction has no alternatives (only 1). The second simulcast | paused. The first simulcast stream in receive direction has no | |||
stream in receive direction has two alternatives (2, 5) that are both | alternative formats (SCID 6). The second simulcast stream in receive | |||
direction has two alternative formats (SCID 7, 8) that are both | ||||
offered as initially paused. | offered as initially paused. | |||
The second line is an example answer to the first line, accepting to | The second line is an example answer to the first line, accepting to | |||
send and receive the two offered simulcast streams, however send and | send and receive the two offered simulcast streams, however send and | |||
receive directions are specified in opposite order compared to the | receive directions are specified in opposite order compared to the | |||
first line, which lets the answer keep the same order of simulcast | first line, which lets the answer keep the same order of simulcast | |||
streams in the SDP as in the offer, even though directionality is | streams in the SDP as in the offer, for convenience, even though | |||
reversed. This example answer has removed all offered alternatives | directionality is reversed. This example answer has removed all | |||
for the first simulcast stream (keeping only 1), but kept alternative | offered alternative formats for the first simulcast stream (keeping | |||
formats for the second simulcast stream in receive direction (4, 5). | only SCID 1), but kept alternative formats for the second simulcast | |||
The answer accepts to send two simulcast streams, without | stream in receive direction (4, 5). The answer accepts to send two | |||
alternatives. The answer does not accept initial pause of any | simulcast streams, without alternatives. The answer does not accept | |||
simulcast streams, in either direction. More examples can be found | initial pause of any simulcast streams, in either direction. More | |||
in Section 6.4. | examples can be found in Section 6.6. | |||
6.2. Simulcast Capability | 6.2. Simulcast Capability | |||
Simulcast capability is expressed as a new media level SDP attribute, | Simulcast capability is expressed through a new media level SDP | |||
"a=simulcast" (Section 6.1), with multiplex category | attribute, "a=simulcast" (Section 6.1). The meaning of the attribute | |||
[I-D.ietf-mmusic-sdp-mux-attributes] NORMAL. | on SDP session level is undefined and MUST NOT be used. The meaning | |||
of including multiple "a=simulcast" lines in a single SDP media | ||||
description is undefined and MUST NOT be used. | ||||
For each desired direction (send/recv), the simulcast attribute | For each desired direction (send/recv), the simulcast attribute | |||
defines a list of simulcast streams (separated by semicolons), each | defines a list of simulcast streams (separated by semicolons), each | |||
of which is a list of simulcast formats (separated by commas). The | of which is a list of alternate simulcast stream formats (separated | |||
meaning of the attribute on SDP session level is undefined and MUST | by commas). The different simulcast stream formats MUST be | |||
NOT be used. | identified through the RTP payload format constraints | |||
[I-D.ietf-mmusic-rid] RTP-level identification mechanism | ||||
The meaning of including multiple "a=simulcast" lines in a single SDP | [I-D.ietf-avtext-rid], here denoted SCID. Simulcast streams using | |||
media description is undefined and MUST NOT be used. There are | undefined SCID MUST NOT be used as valid simulcast streams by an RTP | |||
separate and independent sets of parameters for simulcast in send and | stream receiver. | |||
receive directions. When listing multiple directions, each direction | ||||
MUST NOT occur more than once on the same line. | ||||
The different simulcast streams MUST be identified through the RTP- | ||||
level "RID" identification mechanism [I-D.ietf-mmusic-rid]. | ||||
There are separate and independent sets of parameters for simulcast | ||||
in send and receive directions. When listing multiple directions, | ||||
each direction MUST NOT occur more than once on the same line. | ||||
Attribute parameters are grouped by direction and consist of a | Attribute parameters are grouped by direction and consist of a | |||
listing of simulcast stream identifications to be used. The number | listing of SCID to be used. The direction for an SCID MUST be | |||
of (non-alternative, see below) identifications in the list sets a | aligned with the direction specified for the corresponding RTP stream | |||
identifier on the "a=rid" line. | ||||
The number of (non-alternative, see above) SCID in the list sets a | ||||
limit to the number of supported simulcast streams in that direction. | limit to the number of supported simulcast streams in that direction. | |||
The order of the listed simulcast versions in the "send" direction | The order of the listed SCID in the "send" direction suggests a | |||
suggests a proposed order of preference, in decreasing order: the | proposed order of preference, in decreasing order: the SCID listed | |||
stream listed first is the most preferred Section 3.1, and subsequent | first is the most preferred and subsequent streams have progressively | |||
streams have progressively lower preference. The order of the listed | lower preference. The order of the listed SCID in the "recv" | |||
simulcast streams in the "recv" direction expresses a preference | direction expresses a preference which simulcast streams that are | |||
which simulcast streams that are preferred, with the leftmost being | preferred, with the leftmost being most preferred. This can be of | |||
most preferred. This can be of importance if the number of actually | importance if the number of actually sent simulcast streams have to | |||
sent simulcast streams have to be reduced for some reason. | be reduced for some reason. | |||
Formats that have explicit dependencies [RFC5583] | SCID that have explicit dependencies [RFC5583] [I-D.ietf-mmusic-rid] | |||
[I-D.ietf-mmusic-rid] to other formats (even in the same media | to other SCID (even in the same media description) MAY be used. | |||
description) MAY be listed as different simulcast streams. | ||||
Alternative simulcast formats MAY be specified as part of the | Alternative SCID MAY be specified as part of the attribute parameters | |||
attribute parameters by expressing each simulcast stream as a comma- | by expressing each simulcast stream as a comma-separated list of | |||
separated list of alternative format identifiers. In this case, it | alternative SCID. In this case, it is not possible to align what | |||
is not possible to align what alternative formats that are used | alternative SCID that are used between different simulcast streams, | |||
between different simulcast streams, like requiring all simulcast | like requiring all simulcast streams to use SCID alternatives | |||
streams to use alternatives with the same codec format. The order of | referring to the same codec format. The order of the SCID | |||
the format alternatives within a simulcast stream is significant; the | alternatives within a simulcast stream is significant; the SCID | |||
alternatives are listed from (left) most preferred to (right) least | alternatives are listed from (left) most preferred to (right) least | |||
preferred. For the use of simulcast, this overrides the normal codec | preferred. For the use of simulcast, this overrides the normal codec | |||
preference as expressed by format type ordering on the "m="-line, | preference as expressed by format type ordering on the "m=" line, | |||
using regular SDP rules. This is to enable a separation of general | using regular SDP rules. This is to enable a separation of general | |||
codec preferences and simulcast stream configuration preferences. | codec preferences and simulcast stream configuration preferences. | |||
A simulcast stream can use a codec defined such that the same RTP | A simulcast stream can use a codec defined such that the same RTP | |||
SSRC can change RTP payload type multiple times during a session, | SSRC can change RTP payload type multiple times during a session, | |||
possibly even on a per-packet basis. A typical example can be a | possibly even on a per-packet basis. A typical example can be a | |||
speech codec that makes use of Comfort Noise [RFC3389] and/or DTMF | speech codec that makes use of Comfort Noise [RFC3389] and/or DTMF | |||
[RFC4733] formats. In those cases, such "related" formats MUST NOT | [RFC4733] formats. In those cases, such "related" formats MUST NOT | |||
be listed explicitly in the attribute parameters, since they are not | be defined as SCID and listed explicitly in the attribute parameters, | |||
strictly simulcast streams of the media source, but rather a specific | since they are not strictly simulcast streams of the media source, | |||
way of generating the RTP stream of a single simulcast stream with | but rather a specific way of generating the RTP stream of a single | |||
varying RTP payload type. Instead, only a single simulcast stream | simulcast stream with varying RTP payload type. | |||
identification MUST be used per simulcast stream or alternative | ||||
simulcast format (if there are such) in the SDP. | ||||
If RTP stream pause/resume [I-D.ietf-avtext-rtp-stream-pause] is | If RTP stream pause/resume [RFC7728] is supported, any SCID MAY be | |||
supported, any simulcast stream identification MAY be prefixed by a | prefixed by a "~" character to indicate that the corresponding | |||
"~" character to indicate that the corresponding simulcast stream is | simulcast stream is initially paused already from start of the RTP | |||
initially paused already from start of the RTP session. In this | session. In this case, support for RTP stream pause/resume MUST also | |||
case, support for RTP stream pause/resume MUST also be included under | be included under the same "m=" line where "a=simulcast" is included. | |||
the same "m="-line listing "a=simulcast". If the simulcast stream is | If the simulcast stream is specified as a list of alternative SCID, | |||
specified as a list of alternative formats, the indication is | each of which can be individually prefixed by the paused indication. | |||
prepended to the first format of the list and applies to whatever | All RTP payload types related to such initially paused simulcast | |||
alternative that is eventually chosen. All RTP payload types related | stream MUST be listed in the SDP as pause/resume capable as specified | |||
to such initially paused simulcast stream MUST be listed in the SDP | by [RFC7728], e.g. by using the "*" wildcard format for "a=rtcp-fb". | |||
as pause/resume capable as specified by | ||||
[I-D.ietf-avtext-rtp-stream-pause]. | ||||
An initially paused simulcast stream in "send" direction MUST be | An initially paused simulcast stream in "send" direction MUST be | |||
considered equivalent to an unsolicited locally paused stream, and be | considered equivalent to an unsolicited locally paused stream, and be | |||
handled accordingly. Initially paused simulcast streams are resumed | handled accordingly. Initially paused simulcast streams are resumed | |||
as described by the RTP pause/resume specification. An RTP stream | as described by the RTP pause/resume specification. An RTP stream | |||
receiver that wishes to resume an unsolicited locally paused stream | receiver that wishes to resume an unsolicited locally paused stream | |||
needs to know the SSRC of that stream. The SSRC of an initially | needs to know the SSRC of that stream. The SSRC of an initially | |||
paused simulcast stream can be obtained from an RTP stream sender | paused simulcast stream can be obtained from an RTP stream sender | |||
RTCP Sender Report (SR) including both the desired SSRC as "SSRC of | RTCP Sender Report (SR) including both the desired SSRC as "SSRC of | |||
sender", and the stream RID identification as an RID RTCP SDES item. | sender", and the SCID value in an RtpStreamId RTCP SDES item | |||
[I-D.ietf-avtext-rid]. | ||||
Including an initially paused simulcast stream in "recv" direction in | Including an initially paused simulcast stream in "recv" direction in | |||
an SDP towards an RTP sender, SHOULD cause the remote RTP sender to | an SDP towards an RTP sender, SHOULD cause the remote RTP sender to | |||
put the stream as unsolicited locally paused, unless there are other | put the stream as unsolicited locally paused, unless there are other | |||
RTP stream receivers that do not mark the simulcast stream as | RTP stream receivers that do not mark the simulcast stream as | |||
initially paused. The reason to require an initially paused "recv" | initially paused. The reason to require an initially paused "recv" | |||
stream to be considered locally paused by the remote RTP sender, | stream to be considered locally paused by the remote RTP sender, | |||
instead of making it equivalent to implicitly sending a pause | instead of making it equivalent to implicitly sending a pause | |||
request, is because the pausing RTP sender cannot know which SSRC | request, is because the pausing RTP sender cannot know which | |||
owns the restriction when TMMBR/TMMBN are used for pause/resume | receiving SSRC owns the restriction when TMMBR/TMMBN are used for | |||
signaling since the RTP receiver's SSRC in send direction is not | pause/resume signaling since the RTP receiver's SSRC in send | |||
known yet. | direction is sometimes not yet known. | |||
Use of the redundant audio data [RFC2198] format could be seen as a | Use of the redundant audio data [RFC2198] format could be seen as a | |||
form of simulcast for loss protection purposes, but is not considered | form of simulcast for loss protection purposes, but is not considered | |||
conflicting with the mechanisms described in this memo and MAY | conflicting with the mechanisms described in this memo and MAY | |||
therefore be used as any other format. In this case the "red" | therefore be used as any other format. In this case the "red" | |||
format, rather than the carried formats, SHOULD be the one to list as | format, rather than the carried formats, SHOULD be the one to list as | |||
a simulcast stream on the "a=simulcast" line. | a simulcast stream on the "a=simulcast" line. | |||
The media formats and corresponding characteristics of simulcast | The media formats and corresponding characteristics of simulcast | |||
streams SHOULD be chosen such that they are different. If this | streams SHOULD be chosen such that they are different, either as | |||
different SDP formats with differing "a=rtpmap" and/or "a=fmtp" | ||||
lines, as differently defined RTP Constraints, or both. If this | ||||
difference is not required, RTP duplication [RFC7104] procedures | difference is not required, RTP duplication [RFC7104] procedures | |||
SHOULD be considered instead of simulcast. | SHOULD be considered instead of simulcast. | |||
6.2.1. Declarative Use | 6.3. Offer/Answer Use | |||
When used as a declarative media description, "a=simulcast" line | ||||
"recv" direction formats indicate the configured end point's required | ||||
capability to recognize and receive a specified set of RTP streams as | ||||
simulcast streams. In the same fashion, "a=simulcast" line "send" | ||||
direction requests the end point to send a specified set of RTP | ||||
streams as simulcast streams. | ||||
If multiple simulcast formats are listed, it means that the | ||||
configured end point MUST be prepared to receive any of the "recv" | ||||
formats, and MAY send any of the "send" formats for that simulcast | ||||
stream. | ||||
Editor's note: It may not be beneficial for declarative use to be | Note: The inclusion of "a=simulcast" or the use of simulcast does | |||
limited to a single media source per "m=" line, as elaborated | not change any of the interpretation or Offer/Answer procedures | |||
further in Section 8. | for other SDP attributes, like "a=fmtp" or "a=rid". | |||
6.2.2. Offer/Answer Use | 6.3.1. Generating the Initial SDP Offer | |||
An offerer wanting to use simulcast SHALL include the "a=simulcast" | An offerer wanting to use simulcast SHALL include the "a=simulcast" | |||
attribute in the offer. An offerer that receives an answer without | attribute in the offer. An offerer listing a set of receive | |||
"a=simulcast" MUST NOT use simulcast towards the answerer. An | simulcast streams and/or alternative formats as SCID in the offer | |||
offerer that receives an answer with "a=simulcast" without any | MUST be prepared to receive RTP streams for any of those simulcast | |||
simulcast stream identifications in a specified direction MUST NOT | streams and/or alternative formats from the answerer. | |||
use simulcast in that direction. | ||||
6.3.2. Creating the SDP Answer | ||||
An answerer that does not understand the concept of simulcast will | An answerer that does not understand the concept of simulcast will | |||
also not know the attribute and will remove it in the SDP answer, as | also not know the attribute and will remove it in the SDP answer, as | |||
defined in existing SDP Offer/Answer [RFC3264] procedures. | defined in existing SDP Offer/Answer [RFC3264] procedures. | |||
An answerer that does understand the attribute and that wants to | An answerer that does understand the attribute and that wants to | |||
support simulcast in an indicated direction SHALL reverse | support simulcast in an indicated direction SHALL reverse | |||
directionality of the unidirectional direction parameters; "send" | directionality of the unidirectional direction parameters; "send" | |||
becomes "recv" and vice versa, and include it in the answer. | becomes "recv" and vice versa, and include it in the answer. | |||
An offerer listing a set of receive simulcast streams and/or | ||||
alternative formats in the offer MUST be prepared to receive RTP | ||||
streams for any of those simulcast streams and/or alternative formats | ||||
from the answerer. | ||||
An answerer that receives an offer with simulcast containing an | An answerer that receives an offer with simulcast containing an | |||
"a=simulcast" attribute listing alternative formats for simulcast | "a=simulcast" attribute listing alternative SCID MAY keep all the | |||
streams MAY keep all the alternatives in the answer, but it MAY also | alternative SCID in the answer, but it MAY also choose to remove any | |||
choose to remove any non-desirable alternatives per simulcast stream | non-desirable alternative SCID in the answer. The answerer MUST NOT | |||
in the answer. The answerer MUST NOT add any alternatives that were | add any alternative SCID that were not present in the offer. The | |||
not present in the offer. | answerer MUST be prepared to receive any of the receive direction | |||
SCID alternatives, and MAY send any of the send direction | ||||
alternatives that are kept in the answer. | ||||
An answerer that receives an offer with simulcast that lists a number | An answerer that receives an offer with simulcast that lists a number | |||
of simulcast streams, MAY reduce the number of simulcast streams in | of simulcast streams, MAY reduce the number of simulcast streams in | |||
the answer, but MUST NOT add simulcast streams. | the answer, but MUST NOT add simulcast streams. | |||
An offerer that receives an answer where some simulcast formats are | An answerer that receives an offer without RTP stream pause/resume | |||
kept MUST be prepared to receive any of the kept send direction | capability MUST NOT mark any simulcast streams as initially paused in | |||
alternatives, and MAY send any of the kept receive direction | the answer. | |||
alternatives from the answer. Similarly, the answerer MUST be | ||||
prepared to receive any of the kept receive direction alternatives, | ||||
and MAY send any of the kept send direction alternatives in the | ||||
answer. | ||||
The offerer and answerer MUST NOT send more than a single alternative | An RTP stream pause/resume capable answerer that receives an offer | |||
format at a time (based on RTP timestamps) per simulcast stream, but | with RTP stream pause/resume capability MAY mark any SCID that refer | |||
MAY change format on a per-RTP packet basis. This corresponds to the | to pause/resume capable formats as initially paused in the answer. | |||
existing (non-simulcast) SDP offer/answer case when multiple formats | ||||
are included on the "m=" line in the SDP answer. | ||||
An offerer that receives an answer where some of the simulcast | An answerer that receives indication in an offer of an SCID being | |||
streams are removed MAY release the corresponding resources (codec, | initially paused , SHOULD mark that SCID as initially paused also in | |||
transport, etc) in its receive direction and MUST NOT send any RTP | the answer, regardless of direction, unless it has good reason for | |||
packets corresponding to the removed simulcast streams. | the SCID not being initially paused. One such reason could for | |||
example be that the answerer would otherwise initially not receive | ||||
any media of that type at all. | ||||
Simulcast streams or formats using undefined simulcast stream | 6.3.3. Offerer Processing the SDP Answer | |||
identifications MUST NOT be used as valid simulcast streams by an RTP | ||||
stream receiver. | ||||
An answerer that receives an offer without RTP stream pause/resume | An offerer that receives an answer without "a=simulcast" MUST NOT use | |||
capability MUST NOT mark any simulcast streams as initially paused in | simulcast towards the answerer. An offerer that receives an answer | |||
the answer. | with "a=simulcast" without any SCID in a specified direction MUST NOT | |||
use simulcast in that direction. | ||||
An answerer that receives an offer with RTP stream pause/resume | An offerer that receives an answer where some SCID alternatives are | |||
capability MAY mark any simulcast streams as initially paused in the | kept MUST be prepared to receive any of the kept send direction SCID | |||
answer. | alternatives, and MAY send any of the kept receive direction SCID | |||
alternatives. | ||||
An answerer that receives indication in an offer of a simulcast | An offerer that receives an answer where some of the SCID are removed | |||
stream being initially paused , SHOULD mark that simulcast stream as | MAY release the corresponding resources (codec, transport, etc) in | |||
initially paused also in the answer, regardless of direction, unless | its receive direction and MUST NOT send any RTP packets corresponding | |||
it has good reason for the stream not being initially paused. | to the removed SCID. | |||
An offerer that offered some of its simulcast streams as initially | An offerer that offered some of its SCID as initially paused and that | |||
paused and that receives an answer that does not indicate RTP stream | receives an answer that does not indicate RTP stream pause/resume | |||
pause/resume capability, MUST NOT intially pause any simulcast | capability, MUST NOT initially pause any simulcast streams. | |||
streams. | ||||
An offerer with RTP stream pause/resume capability that receives an | An offerer with RTP stream pause/resume capability that receives an | |||
answer where some simulcast streams are marked as initially paused, | answer where some SCID are marked as initially paused, SHOULD | |||
SHOULD initially pause them regardless if they were marked as | initially pause those RTP streams regardless 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 streams not being initially paused. | those RTP streams not being initially paused. One such reason could | |||
for example be that the answerer would otherwise initially not | ||||
receive any media of that type at all. | ||||
Note: The inclusion of "a=simulcast" or the use of simulcast does | 6.3.4. Modifying the Session | |||
not change any of the interpretation or Offer/Answer procedures | ||||
for other SDP attributes, like "a=fmtp" or "a=rid". | ||||
6.3. Relating Simulcast Streams | Offers and answers inside an existing session follow the rules for | |||
initial session negotiation, with the additional restriction that any | ||||
SCID marked as initially paused in such offer or answer MUST already | ||||
be paused, thus a new offer/answer MUST NOT replace use of RTP stream | ||||
pause/resume [RFC7728] in the session. Session modification | ||||
restrictions in section 6.5 of "a=rid" [I-D.ietf-mmusic-rid] also | ||||
apply. | ||||
6.4. Declarative Use | ||||
When used as a declarative media description, "a=simulcast" line | ||||
"recv" direction formats indicate the configured end point's required | ||||
capability to recognize and receive a specified set of RTP streams as | ||||
simulcast streams. In the same fashion, "a=simulcast" line "send" | ||||
direction requests the end point to send a specified set of RTP | ||||
streams as simulcast streams. | ||||
If multiple alternative simulcast formats are listed, it means that | ||||
the configured end point MUST be prepared to receive any of the | ||||
"recv" formats, and MAY send any of the "send" formats for that | ||||
simulcast stream, which is aligned with the semantics of listing | ||||
multiple formats on the "m=" line. | ||||
It may not be beneficial for declarative use to be limited to a | ||||
single media source per "m=" line, as elaborated further in | ||||
Section 8. | ||||
6.5. Relating Simulcast Streams | ||||
Simulcast RTP streams MUST be related on RTP level through RID | Simulcast RTP streams MUST be related on RTP level through RID | |||
[I-D.roach-avtext-rid], as specified in the SDP "a=simulcast" | [I-D.ietf-avtext-rid], as specified in the SDP "a=simulcast" | |||
attribute (Section 6.2) parameters. This is sufficient as long as | attribute (Section 6.2) parameters. This is sufficient as long as | |||
there is only a single media source per SDP media description. When | there is only a single media source per SDP media description. When | |||
using BUNDLE [I-D.ietf-mmusic-sdp-bundle-negotiation], where multiple | using BUNDLE [I-D.ietf-mmusic-sdp-bundle-negotiation], where multiple | |||
SDP media descriptions jointly specify a single RTP session, the SDES | SDP media descriptions jointly specify a single RTP session, the SDES | |||
MID identification mechanism in BUNDLE allows relating RTP streams | MID identification mechanism in BUNDLE allows relating RTP streams | |||
back to individual media descriptions, after which the above | back to individual media descriptions, after which the above | |||
described RID relations can be used. Use of the RTP header extension | described RID relations can be used. Use of the RTP header extension | |||
[RFC5285] for both MID and RID identifications can be important to | [RFC5285] for both MID and RID identifications can be important to | |||
ensure rapid initial reception, required to correctly interpret and | ensure rapid initial reception, required to correctly interpret and | |||
process the RTP streams. Implementers of this specification MUST | process the RTP streams. Implementers of this specification MUST | |||
support RTCP source description (SDES) item and SHOULD support RTP | support RTCP source description (SDES) item and SHOULD support RTP | |||
header extension method to signal RID on RTP level. | header extension method to signal RID on RTP level. | |||
6.4. Signaling Examples | RTP streams MUST only use a single alternative SCID at a time (based | |||
on RTP timestamps), but MAY change format on a per-RTP packet basis. | ||||
This corresponds to the existing (non-simulcast) SDP offer/answer | ||||
case when multiple formats are included on the "m=" line in the SDP | ||||
answer. | ||||
6.6. Signaling Examples | ||||
These examples describe a client to video conference service, using a | These examples describe a client to video conference service, using a | |||
centralized media topology with an RTP mixer. | centralized media topology with an RTP mixer. | |||
+---+ +-----------+ +---+ | +---+ +-----------+ +---+ | |||
| A |<---->| |<---->| B | | | A |<---->| |<---->| B | | |||
+---+ | | +---+ | +---+ | | +---+ | |||
| Mixer | | | Mixer | | |||
+---+ | | +---+ | +---+ | | +---+ | |||
| F |<---->| |<---->| J | | | F |<---->| |<---->| J | | |||
+---+ +-----------+ +---+ | +---+ +-----------+ +---+ | |||
Figure 3: Four-party Mixer-based Conference | Figure 3: Four-party Mixer-based Conference | |||
6.4.1. Single-Source Client | 6.6.1. Single-Source Client | |||
Alice is calling in to the mixer with a simulcast-enabled client | Alice is calling in to the mixer with 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 | |||
"imageattr" [RFC6236]. In this example, only the "pt" RID parameter | "imageattr" [RFC6236]. In this example, only the "pt" RID parameter | |||
is used, effectively achieving a 1:1 mapping between RID and media | is used, effectively achieving a 1:1 mapping between RID and media | |||
formats (RTP payload types), to describe simulcast stream formats. | formats (RTP payload types), to describe simulcast stream formats. | |||
Alice's Offer: | Alice's Offer: | |||
skipping to change at page 16, line 40 ¶ | skipping to change at page 17, line 19 ¶ | |||
c=IN IP4 192.0.2.156 | c=IN IP4 192.0.2.156 | |||
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 pt=97 | a=rid:1 pt=97 send | |||
a=rid:2 pt=98 | a=rid:2 pt=98 send | |||
a=simulcast:send 1;2 recv 1 | a=rid:3 pt=97 recv | |||
a=simulcast:send 1;2 recv 3 | ||||
Figure 4: Single-Source Simulcast Offer | Figure 4: Single-Source Simulcast Offer | |||
The only thing in the SDP that indicates simulcast capability is the | The only thing in the SDP that indicates simulcast capability is the | |||
line in the video media description containing the "simulcast" | line in the video media description containing the "simulcast" | |||
attribute. The included format parameters indicates that sent | attribute. The included "a=fmtp" and "a=imageattr" parameters | |||
simulcast streams can differ in video resolution. | indicates that sent simulcast streams can differ in video resolution. | |||
The Answer from the server indicates that it too is simulcast | The Answer from the server indicates 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. | would have started with the media negotiated in the SDP. | |||
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 | |||
t=0 0 | t=0 0 | |||
c=IN IP4 192.0.2.43 | c=IN IP4 192.0.2.43 | |||
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 pt=97 | a=rid:1 pt=97 recv | |||
a=rid:2 pt=98 | a=rid:2 pt=98 recv | |||
a=simulcast:recv 1;2 send 1 | a=rid:3 pt=97 send | |||
a=simulcast:recv 1;2 send 3 | ||||
Figure 5: Single-Source Simulcast Answer | Figure 5: Single-Source Simulcast Answer | |||
Since the server is the simulcast media receiver, it reverses the | Since the server is the simulcast media receiver, it reverses the | |||
direction of the "simulcast" attribute parameters. | direction of the "simulcast" and "rid" attribute parameters. | |||
6.4.2. Multi-Source Client | 6.6.2. Multi-Source Client | |||
Fred is calling in to the same conference as in the example above | Fred is calling in to the same conference 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. | to a single media source per media description. | |||
The first two simulcast streams for the first media source use | The first two simulcast streams for the first media source use | |||
different codecs, H264-SVC [RFC6190] and H264 [RFC6184]. These two | different codecs, H264-SVC [RFC6190] and H264 [RFC6184]. These two | |||
simulcast streams also have a temporal dependency. Two different | simulcast streams also have a temporal dependency. Two different | |||
video codecs, VP8 [I-D.ietf-payload-vp8] and H264, are offered as | video codecs, VP8 [RFC7741] and H264, are offered as alternatives for | |||
alternatives for the third simulcast stream for the first media | the third simulcast stream for the first media source. Only the | |||
source. Only the highest fidelity simulcast stream are sent from | highest fidelity simulcast stream are sent from start, the lower | |||
start, the lower fidelity streams being initially paused. | fidelity streams being initially paused. | |||
The second media source is offered with three different simulcast | The second media source is offered 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 RTP retransmission [RFC4588]. Also here, all but the | protected by RTP retransmission [RFC4588]. Also here, all but the | |||
highest fidelity simulcast stream are initially paused. | highest fidelity simulcast stream are initially paused. | |||
Fred's client is also using BUNDLE to send all RTP streams from all | 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 | 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 RID as simulcast stream identification enables | example, the use of RID as simulcast stream identification enables | |||
use of a low number of RTP payload types. Note that the use of both | use of a low number of RTP payload types. Note that the use of both | |||
BUNDLE and RID recommends using the RTP header extension [RFC5285] | BUNDLE [I-D.ietf-mmusic-sdp-bundle-negotiation] and RID | |||
for carrying these fields, which is consequently also included in the | [I-D.ietf-mmusic-rid] recommends using the RTP header extension | |||
SDP. | [RFC5285] for carrying these RTP stream identification fields, which | |||
is consequently also included in the SDP. Note also that for RID, | ||||
the corresponding SDES attribute is named RtpStreamId | ||||
[I-D.ietf-avtext-rid]. | ||||
v=0 | v=0 | |||
o=fred 238947129 823479223 IN IP4 192.0.2.125 | 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 | |||
t=0 0 | t=0 0 | |||
c=IN IP4 192.0.2.125 | c=IN IP6 2001:db8::c000:27d | |||
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 | |||
a=rtpmap:103 VP8/90000 | a=rtpmap:103 VP8/90000 | |||
a=fmtp:100 profile-level-id=42400d; max-fs=3600; max-mbps=108000; \ | a=fmtp:100 profile-level-id=42400d; max-fs=3600; max-mbps=108000; \ | |||
mst-mode=NI-TC | mst-mode=NI-TC | |||
a=fmtp:101 profile-level-id=42c00d; max-fs=3600; max-mbps=54000 | a=fmtp:101 profile-level-id=42c00d; max-fs=3600; max-mbps=54000 | |||
a=fmtp:103 max-fs=900; max-fr=30 | a=fmtp:103 max-fs=900; max-fr=30 | |||
a=rid:1 send pt=100;max-width=1280;max-height=720;max-fr=60;depend=2 | a=rid:1 send pt=100;max-width=1280;max-height=720;max-fps=60;depend=2 | |||
a=rid:2 send pt=101;max-width=1280;max-height=720;max-fr=30 | a=rid:2 send pt=101;max-width=1280;max-height=720;max-fps=30 | |||
a=rid:3 send pt=101;max-width=640;max-height=360 | a=rid:3 send pt=101;max-width=640;max-height=360 | |||
a=rid:4 send pt=103;max-width=640;max-height=360 | a=rid:4 send pt=103;max-width=640;max-height=360 | |||
a=depend:100 lay bar:101 | a=depend:100 lay bar:101 | |||
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:rid | a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:RtpStreamId | |||
a=rtcp-fb:* ccm pause nowait | a=rtcp-fb:* ccm pause nowait | |||
a=simulcast:send 1;2;~4,3 | a=simulcast:send 1;2;~4,3 | |||
m=video 49602 RTP/AVPF 96 104 | m=video 49602 RTP/AVPF 96 104 | |||
a=mid:zen | a=mid:zen | |||
a=rtpmap:96 VP8/90000 | a=rtpmap:96 VP8/90000 | |||
a=fmtp:96 max-fs=3600; max-fr=30 | a=fmtp:96 max-fs=3600; max-fr=30 | |||
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:5 send pt=96;max-fs=921600;max-fr=30 | a=rid:5 send pt=96;max-fs=921600;max-fps=30 | |||
a=rid:6 send pt=96;max-fs=614400;max-fr=15 | a=rid:6 send pt=96;max-fs=614400;max-fps=15 | |||
a=rid:7 send pt=96;max-fs=230400;max-fr=30 | a=rid:7 send pt=96;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:rid | a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:RtpStreamId | |||
a=rtcp-fb:* ccm pause nowait | a=rtcp-fb:* ccm pause nowait | |||
a=simulcast:send 5;~6;~7 | a=simulcast:send 5;~6;~7 | |||
Figure 6: Fred's Multi-Source Simulcast Offer | Figure 6: Fred's Multi-Source Simulcast Offer | |||
Note: Empty lines in the SDP above are added only for readability | Note: Empty lines in the SDP above are added only for readability | |||
and would not be present in an actual SDP. | and would not be present in an actual SDP. | |||
7. Network Aspects | 7. Network Aspects | |||
skipping to change at page 21, line 5 ¶ | skipping to change at page 22, line 5 ¶ | |||
varies during an RTP session such that it does not match what is | varies during an RTP session such that it does not match what is | |||
negotiated in SDP, the bitrate used by the different simulcast | negotiated in SDP, the bitrate used by the different simulcast | |||
streams may have to be reduced dynamically. What simulcast streams | streams may have to be reduced dynamically. What simulcast streams | |||
to prioritize when allocating available bitrate among the simulcast | to prioritize when allocating available bitrate among the simulcast | |||
streams in such adaptation SHOULD be taken from the simulcast stream | streams in such adaptation SHOULD be taken from the simulcast stream | |||
order on the "a=simulcast" line. Simulcast streams that have pause/ | order on the "a=simulcast" line. Simulcast streams that have pause/ | |||
resume capability and that would be given such low bitrate by the | resume capability and that would be given such low bitrate by the | |||
adaptation process that they are considered not really useful can be | adaptation process that they are considered not really useful can be | |||
temporarily paused until the limiting condition clears. | temporarily paused until the limiting condition clears. | |||
8. Limitations | 8. Limitation | |||
The chosen approach has a few limitations that are described in this | ||||
section. The only one currently described relates to the use of a | ||||
single RTP session for all simulcast formats of a media source. | ||||
8.1. Single RTP Session | ||||
The limitations in this section come from sending all simulcast | The chosen approach has a limitation that relates to the use of a | |||
streams related to a media source under the same SDP media | single RTP session for all simulcast formats of a media source, which | |||
description, which also means they are sent in the same RTP session. | comes from sending all simulcast streams related to a media source | |||
under the same SDP media description. | ||||
It is not possible to use different simulcast streams on different | It is not possible to use different simulcast streams on different | |||
media transports, limiting the possibilities to apply different QoS | media transports, limiting the possibilities to apply different QoS | |||
to different simulcast streams. When using unicast, QoS mechanisms | to different simulcast streams. When using unicast, QoS mechanisms | |||
based on individual packet marking are feasible, since they do not | based on individual packet marking are feasible, since they do not | |||
require separation of simulcast streams into different RTP sessions | require separation of simulcast streams into different RTP sessions | |||
to apply different QoS. | to apply different QoS. | |||
It is not possible to separate different simulcast streams into | It is also not possible to separate different 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 | stream it wants, rather than receive all of them. In this case, the | |||
only reasonable implementation is to use different RTP sessions for | only reasonable implementation is to use different RTP sessions for | |||
each multicast group so that reporting and other RTCP functions | each multicast group so that reporting and other RTCP functions | |||
operate as intended. | operate as intended. | |||
9. IANA Considerations | 9. IANA Considerations | |||
This document requests to register a new SDP attribute, simulcast, as | This document requests to register a new media-level SDP attribute, | |||
defined in Section 6.1. | "simulcast", in the "att-field (media level only)" registry within | |||
the SDP parameters registry, according to the procedures of [RFC4566] | ||||
and [I-D.ietf-mmusic-sdp-mux-attributes]. | ||||
Contact name, email: IETF, contacted via mmusic@ietf.org, or a | ||||
successor address designated by IESG | ||||
Attribute name: simulcast | ||||
Long-form attribute name: Simulcast stream description | ||||
Charset dependent: No | ||||
Attribute value: See Section 6.1 of RFC XXXX. | ||||
Purpose: Signals simulcast capability for a set of RTP streams | ||||
MUX category: NORMAL | ||||
Note to RFC Editor: Please replace "RFC XXXX" with the assigned | ||||
number of this RFC. | ||||
10. Security Considerations | 10. Security Considerations | |||
The simulcast capability, configuration attributes, and parameters | The simulcast capability, configuration attributes, and parameters | |||
are vulnerable to attacks in signaling. | are vulnerable to attacks in signaling. | |||
A false inclusion of the "a=simulcast" attribute may result in | A false inclusion of the "a=simulcast" attribute may result in | |||
simultaneous transmission of multiple RTP streams that would | simultaneous transmission of multiple RTP streams that would | |||
otherwise not be generated. The impact is limited by the media | otherwise not be generated. The impact is limited by the media | |||
description joint bandwidth, shared by all simulcast streams | description joint bandwidth, shared by all simulcast streams | |||
skipping to change at page 22, line 10 ¶ | skipping to change at page 23, line 26 ¶ | |||
allocated for the originally wanted RTP stream. | allocated for the originally wanted RTP stream. | |||
A hostile removal of the "a=simulcast" attribute will result in | A hostile removal of the "a=simulcast" attribute will result in | |||
simulcast not being used. | simulcast not being used. | |||
Neither of the above will likely have any major consequences and can | Neither of the above will likely have any major consequences and can | |||
be mitigated by signaling that is at least integrity and source | be mitigated by signaling that is at least integrity and source | |||
authenticated to prevent an attacker to change it. | authenticated to prevent an attacker to change it. | |||
Security considerations related to the use of RID is covered in | Security considerations related to the use of RID is covered in | |||
[I-D.ietf-mmusic-rid] and [I-D.roach-avtext-rid]. There are no | [I-D.ietf-mmusic-rid] and [I-D.ietf-avtext-rid]. There are no | |||
additional security concerns related to its use in this | additional security concerns related to their use in this | |||
specification. | specification. | |||
11. Contributors | 11. Contributors | |||
Morgan Lindqvist and Fredrik Jansson, both from Ericsson, have | Morgan Lindqvist and Fredrik Jansson, both from Ericsson, have | |||
contributed with important material to the first versions of this | contributed with important material to the first versions of this | |||
document. Robert Hansen and Cullen Jennings, from Cisco, Peter | document. Robert Hansen and Cullen Jennings, from Cisco, Peter | |||
Thatcher, from Google, and Adam Roach, from Mozilla, contributed | Thatcher, from Google, and Adam Roach, from Mozilla, contributed | |||
significantly to subsequent versions. | significantly to subsequent versions. | |||
12. Acknowledgements | 12. Acknowledgements | |||
13. References | 13. References | |||
13.1. Normative References | 13.1. Normative References | |||
[I-D.ietf-avtext-rtp-stream-pause] | [I-D.ietf-avtext-rid] | |||
Burman, B., Akram, A., Even, R., and M. Westerlund, "RTP | Roach, A., Nandakumar, S., and P. Thatcher, "RTP Stream | |||
Stream Pause and Resume", draft-ietf-avtext-rtp-stream- | Identifier Source Description (SDES)", draft-ietf-avtext- | |||
pause-10 (work in progress), September 2015. | rid-04 (work in progress), June 2016. | |||
[I-D.ietf-mmusic-rid] | [I-D.ietf-mmusic-rid] | |||
Thatcher, P., Zanaty, M., Nandakumar, S., Burman, B., | Thatcher, P., Zanaty, M., Nandakumar, S., Burman, B., | |||
Roach, A., and B. Campen, "RTP Payload Format | Roach, A., and B. Campen, "RTP Payload Format | |||
Constraints", draft-ietf-mmusic-rid-01 (work in progress), | Constraints", draft-ietf-mmusic-rid-05 (work in progress), | |||
February 2016. | March 2016. | |||
[I-D.ietf-mmusic-sdp-mux-attributes] | [I-D.ietf-mmusic-sdp-mux-attributes] | |||
Nandakumar, S., "A Framework for SDP Attributes when | Nandakumar, S., "A Framework for SDP Attributes when | |||
Multiplexing", draft-ietf-mmusic-sdp-mux-attributes-12 | Multiplexing", draft-ietf-mmusic-sdp-mux-attributes-13 | |||
(work in progress), January 2016. | (work in progress), June 2016. | |||
[I-D.roach-avtext-rid] | ||||
Roach, A., Nandakumar, S., and P. Thatcher, "RTP Payload | ||||
Format Constraints", draft-roach-avtext-rid-01 (work in | ||||
progress), February 2016. | ||||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<http://www.rfc-editor.org/info/rfc2119>. | <http://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | |||
Jacobson, "RTP: A Transport Protocol for Real-Time | Jacobson, "RTP: A Transport Protocol for Real-Time | |||
Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | |||
July 2003, <http://www.rfc-editor.org/info/rfc3550>. | July 2003, <http://www.rfc-editor.org/info/rfc3550>. | |||
skipping to change at page 23, line 28 ¶ | skipping to change at page 24, line 44 ¶ | |||
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF", STD 68, RFC 5234, | Specifications: ABNF", STD 68, RFC 5234, | |||
DOI 10.17487/RFC5234, January 2008, | DOI 10.17487/RFC5234, January 2008, | |||
<http://www.rfc-editor.org/info/rfc5234>. | <http://www.rfc-editor.org/info/rfc5234>. | |||
[RFC7104] Begen, A., Cai, Y., and H. Ou, "Duplication Grouping | [RFC7104] Begen, A., Cai, Y., and H. Ou, "Duplication Grouping | |||
Semantics in the Session Description Protocol", RFC 7104, | Semantics in the Session Description Protocol", RFC 7104, | |||
DOI 10.17487/RFC7104, January 2014, | DOI 10.17487/RFC7104, January 2014, | |||
<http://www.rfc-editor.org/info/rfc7104>. | <http://www.rfc-editor.org/info/rfc7104>. | |||
[RFC7728] Burman, B., Akram, A., Even, R., and M. Westerlund, "RTP | ||||
Stream Pause and Resume", RFC 7728, DOI 10.17487/RFC7728, | ||||
February 2016, <http://www.rfc-editor.org/info/rfc7728>. | ||||
[RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J., and F. | ||||
Galligan, "RTP Payload Format for VP8 Video", RFC 7741, | ||||
DOI 10.17487/RFC7741, March 2016, | ||||
<http://www.rfc-editor.org/info/rfc7741>. | ||||
13.2. Informative References | 13.2. Informative References | |||
[I-D.ietf-avtcore-multiplex-guidelines] | [I-D.ietf-avtcore-multiplex-guidelines] | |||
Westerlund, M., Perkins, C., and H. Alvestrand, | Westerlund, M., Perkins, C., and H. Alvestrand, | |||
"Guidelines for using the Multiplexing Features of RTP to | "Guidelines for using the Multiplexing Features of RTP to | |||
Support Multiple Media Streams", draft-ietf-avtcore- | Support Multiple Media Streams", draft-ietf-avtcore- | |||
multiplex-guidelines-03 (work in progress), October 2014. | multiplex-guidelines-03 (work in progress), October 2014. | |||
[I-D.ietf-avtcore-rtp-multi-stream] | [I-D.ietf-avtcore-rtp-multi-stream] | |||
Lennox, J., Westerlund, M., Wu, Q., and C. Perkins, | Lennox, J., Westerlund, M., Wu, Q., and C. Perkins, | |||
"Sending Multiple RTP Streams in a Single RTP Session", | "Sending Multiple RTP Streams in a Single RTP Session", | |||
draft-ietf-avtcore-rtp-multi-stream-11 (work in progress), | draft-ietf-avtcore-rtp-multi-stream-11 (work in progress), | |||
December 2015. | December 2015. | |||
[I-D.ietf-mmusic-sdp-bundle-negotiation] | [I-D.ietf-mmusic-sdp-bundle-negotiation] | |||
Holmberg, C., Alvestrand, H., and C. Jennings, | Holmberg, C., Alvestrand, H., and C. Jennings, | |||
"Negotiating Media Multiplexing Using the Session | "Negotiating Media Multiplexing Using the Session | |||
Description Protocol (SDP)", draft-ietf-mmusic-sdp-bundle- | Description Protocol (SDP)", draft-ietf-mmusic-sdp-bundle- | |||
negotiation-25 (work in progress), January 2016. | negotiation-31 (work in progress), June 2016. | |||
[I-D.ietf-payload-flexible-fec-scheme] | ||||
Singh, V., Begen, A., Zanaty, M., and G. Mandyam, "RTP | ||||
Payload Format for Flexible Forward Error Correction | ||||
(FEC)", draft-ietf-payload-flexible-fec-scheme-01 (work in | ||||
progress), October 2015. | ||||
[I-D.ietf-payload-vp8] | ||||
Westin, P., Lundin, H., Glover, M., Uberti, J., and F. | ||||
Galligan, "RTP Payload Format for VP8 Video", draft-ietf- | ||||
payload-vp8-17 (work in progress), September 2015. | ||||
[RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., | [RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V., | |||
Handley, M., Bolot, J., Vega-Garcia, A., and S. Fosse- | Handley, M., Bolot, J., Vega-Garcia, A., and S. Fosse- | |||
Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, | Parisis, "RTP Payload for Redundant Audio Data", RFC 2198, | |||
DOI 10.17487/RFC2198, September 1997, | DOI 10.17487/RFC2198, September 1997, | |||
<http://www.rfc-editor.org/info/rfc2198>. | <http://www.rfc-editor.org/info/rfc2198>. | |||
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | |||
with Session Description Protocol (SDP)", RFC 3264, | with Session Description Protocol (SDP)", RFC 3264, | |||
DOI 10.17487/RFC3264, June 2002, | DOI 10.17487/RFC3264, June 2002, | |||
skipping to change at page 25, line 29 ¶ | skipping to change at page 26, line 44 ¶ | |||
<http://www.rfc-editor.org/info/rfc7656>. | <http://www.rfc-editor.org/info/rfc7656>. | |||
[RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, | [RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, | |||
DOI 10.17487/RFC7667, November 2015, | DOI 10.17487/RFC7667, November 2015, | |||
<http://www.rfc-editor.org/info/rfc7667>. | <http://www.rfc-editor.org/info/rfc7667>. | |||
Appendix A. Changes From Earlier Versions | Appendix A. Changes From Earlier Versions | |||
NOTE TO RFC EDITOR: Please remove this section prior to publication. | NOTE TO RFC EDITOR: Please remove this section prior to publication. | |||
A.1. Modifications Between WG Version -03 and -04 | A.1. Modifications Between WG Version -04 and -05 | |||
o Aligned with recent changes in draft-ietf-mmusic-rid and draft- | ||||
ietf-avtext-rid. | ||||
o 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. | ||||
o 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. | ||||
o Changed references for RTP-level pause/resume and VP8 payload | ||||
format that are now published as RFC. | ||||
o Improved IANA registration text. | ||||
o Removed unused reference to draft-ietf-payload-flexible-fec- | ||||
scheme. | ||||
o Editorial improvements and corrections. | ||||
A.2. Modifications Between WG Version -03 and -04 | ||||
o Changed to only use RID identification, as was consensus during | o Changed to only use RID identification, as was consensus during | |||
IETF 94. | IETF 94. | |||
o ABNF improvements. | o ABNF improvements. | |||
o Clarified offer-answer rules for initially paused streams. | o Clarified offer-answer rules for initially paused streams. | |||
o Changed references for RTP topologies and RTP taxonomy documents | o Changed references for RTP topologies and RTP taxonomy documents | |||
that are now published as RFC. | that are now published as RFC. | |||
o Added reference to the new RID draft in AVTEXT. | o Added reference to the new RID draft in AVTEXT. | |||
o Re-structured section 6 to provide an easy reference by the | o Re-structured section 6 to provide an easy reference by the | |||
updated IANA section. | updated IANA section. | |||
o Added a sub-section 7.1 with a discussion of bitrate adaptation. | o Added a sub-section 7.1 with a discussion of bitrate adaptation. | |||
o Editorial improvements. | o Editorial improvements. | |||
A.2. Modifications Between WG Version -02 and -03 | A.3. Modifications Between WG Version -02 and -03 | |||
o Removed text on multicast / broadcast from use cases, since it is | o Removed text on multicast / broadcast from use cases, since it is | |||
not supported by the solution. | not supported by the solution. | |||
o Removed explicit references to unified plan draft. | o Removed explicit references to unified plan draft. | |||
o Added possibility to initiate simulcast streams in paused mode. | o Added possibility to initiate simulcast streams in paused mode. | |||
o Enabled an offerer to offer multiple stream identification (pt or | o Enabled an offerer to offer multiple stream identification (pt or | |||
rid) methods and have the answerer choose which to use. | rid) methods and have the answerer choose which to use. | |||
o Added a preference indication also in send direction offers. | o Added a preference indication also in send direction offers. | |||
o Added a section on limitations of the current proposal, including | o Added a section on limitations of the current proposal, including | |||
identification method specific limitations. | identification method specific limitations. | |||
A.3. Modifications Between WG Version -01 and -02 | A.4. Modifications Between WG Version -01 and -02 | |||
o Relying on the new RID solution for codec constraints and | o Relying on the new RID solution for codec constraints and | |||
configuration identification. This has resulted in changes in | configuration identification. This has resulted in changes in | |||
syntax to identify if pt or RID is used to describe the simulcast | syntax to identify if pt or RID is used to describe the simulcast | |||
stream. | stream. | |||
o Renamed simulcast version and simulcast version alternative to | o Renamed simulcast version and simulcast version alternative to | |||
simulcast stream and simulcast format respectively, and improved | simulcast stream and simulcast format respectively, and improved | |||
definitions for them. | definitions for them. | |||
o Clarification that it is possible to switch between simulcast | o Clarification that it is possible to switch between simulcast | |||
version alternatives, but that only a single one be used at any | version alternatives, but that only a single one be used at any | |||
point in time. | point in time. | |||
o Changed the definition so that ordering of simulcast formats for a | o Changed the definition so that ordering of simulcast formats for a | |||
specific simulcast stream do have a preference order. | specific simulcast stream do have a preference order. | |||
A.4. Modifications Between WG Version -00 and -01 | A.5. Modifications Between WG Version -00 and -01 | |||
o No changes. Only preventing expiry. | o No changes. Only preventing expiry. | |||
A.5. Modifications Between Individual Version -00 and WG Version -00 | A.6. Modifications Between Individual Version -00 and WG Version -00 | |||
o Added this appendix. | o Added this appendix. | |||
Authors' Addresses | Authors' Addresses | |||
Bo Burman | Bo Burman | |||
Ericsson | Ericsson | |||
Kistavagen 25 | Gronlandsgatan 31 | |||
SE-164 80 Stockholm | SE-164 80 Stockholm | |||
Sweden | Sweden | |||
Email: bo.burman@ericsson.com | Email: bo.burman@ericsson.com | |||
Magnus Westerlund | Magnus Westerlund | |||
Ericsson | Ericsson | |||
Farogatan 2 | Farogatan 2 | |||
SE-164 80 Stockholm | SE-164 80 Stockholm | |||
Sweden | Sweden | |||
End of changes. 85 change blocks. | ||||
307 lines changed or deleted | 362 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |