draft-ietf-mmusic-sdp-simulcast-08.txt   draft-ietf-mmusic-sdp-simulcast-09.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: September 14, 2017 S. Nandakumar Expires: January 4, 2018 S. Nandakumar
M. Zanaty M. Zanaty
Cisco Cisco
March 13, 2017 July 3, 2017
Using Simulcast in SDP and RTP Sessions Using Simulcast in SDP and RTP Sessions
draft-ietf-mmusic-sdp-simulcast-08 draft-ietf-mmusic-sdp-simulcast-09
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 September 14, 2017. This Internet-Draft will expire on January 4, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 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 25 skipping to change at page 2, line 25
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 4 2. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
2.2. Requirements Language . . . . . . . . . . . . . . . . . . 5 2.2. Requirements Language . . . . . . . . . . . . . . . . . . 5
3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 5 3. Use Cases . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1. Reaching a Diverse Set of Receivers . . . . . . . . . . . 6 3.1. Reaching a Diverse Set of Receivers . . . . . . . . . . . 6
3.2. Application Specific Media Source Handling . . . . . . . 7 3.2. Application Specific Media Source Handling . . . . . . . 7
3.3. Receiver Media Source Preferences . . . . . . . . . . . . 7 3.3. Receiver Media Source Preferences . . . . . . . . . . . . 7
4. Requirements . . . . . . . . . . . . . . . . . . . . . . . . 7 4. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5. Detailed Description . . . . . . . . . . . . . . . . . . . . 9
6. Detailed Description . . . . . . . . . . . . . . . . . . . . 10 5.1. Simulcast Attribute . . . . . . . . . . . . . . . . . . . 9
6.1. Simulcast Attribute . . . . . . . . . . . . . . . . . . . 10 5.2. Simulcast Capability . . . . . . . . . . . . . . . . . . 10
6.2. Simulcast Capability . . . . . . . . . . . . . . . . . . 11 5.3. Offer/Answer Use . . . . . . . . . . . . . . . . . . . . 12
6.3. Offer/Answer Use . . . . . . . . . . . . . . . . . . . . 14 5.3.1. Generating the Initial SDP Offer . . . . . . . . . . 12
6.3.1. Generating the Initial SDP Offer . . . . . . . . . . 14 5.3.2. Creating the SDP Answer . . . . . . . . . . . . . . . 12
6.3.2. Creating the SDP Answer . . . . . . . . . . . . . . . 14 5.3.3. Offerer Processing the SDP Answer . . . . . . . . . . 13
6.3.3. Offerer Processing the SDP Answer . . . . . . . . . . 15 5.3.4. Modifying the Session . . . . . . . . . . . . . . . . 14
6.3.4. Modifying the Session . . . . . . . . . . . . . . . . 16 5.4. Use with Declarative SDP . . . . . . . . . . . . . . . . 15
6.4. Use with Declarative SDP . . . . . . . . . . . . . . . . 16 5.5. Relating Simulcast Streams . . . . . . . . . . . . . . . 15
6.5. Relating Simulcast Streams . . . . . . . . . . . . . . . 16 5.6. Signaling Examples . . . . . . . . . . . . . . . . . . . 15
6.6. Signaling Examples . . . . . . . . . . . . . . . . . . . 17 5.6.1. Single-Source Client . . . . . . . . . . . . . . . . 16
6.6.1. Single-Source Client . . . . . . . . . . . . . . . . 17 5.6.2. Multi-Source Client . . . . . . . . . . . . . . . . . 17
6.6.2. Multi-Source Client . . . . . . . . . . . . . . . . . 18 6. RTP Aspects . . . . . . . . . . . . . . . . . . . . . . . . . 20
7. RTP Aspects . . . . . . . . . . . . . . . . . . . . . . . . . 21 6.1. Outgoing from Endpoint with Media Source . . . . . . . . 20
7.1. Outgoing from Endpoint with Media Source . . . . . . . . 21 6.2. RTP Middlebox to Receiver . . . . . . . . . . . . . . . . 20
7.2. RTP Middlebox to Receiver . . . . . . . . . . . . . . . . 21 6.2.1. Media-Switching Mixer . . . . . . . . . . . . . . . . 22
7.2.1. Media-Switching Mixer . . . . . . . . . . . . . . . . 23 6.2.2. Selective Forwarding Middlebox . . . . . . . . . . . 23
7.2.2. Selective Forwarding Middlebox . . . . . . . . . . . 24 6.3. RTP Middlebox to RTP Middlebox . . . . . . . . . . . . . 24
7.3. RTP Middlebox to RTP Middlebox . . . . . . . . . . . . . 25 7. Network Aspects . . . . . . . . . . . . . . . . . . . . . . . 25
8. Network Aspects . . . . . . . . . . . . . . . . . . . . . . . 26 7.1. Bitrate Adaptation . . . . . . . . . . . . . . . . . . . 25
8.1. Bitrate Adaptation . . . . . . . . . . . . . . . . . . . 26 8. Limitation . . . . . . . . . . . . . . . . . . . . . . . . . 26
9. Limitation . . . . . . . . . . . . . . . . . . . . . . . . . 26 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 26
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 27 10. Security Considerations . . . . . . . . . . . . . . . . . . . 27
11. Security Considerations . . . . . . . . . . . . . . . . . . . 28 11. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 27
12. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 28 12. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 27
13. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 28 13. References . . . . . . . . . . . . . . . . . . . . . . . . . 27
14. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 13.1. Normative References . . . . . . . . . . . . . . . . . . 27
14.1. Normative References . . . . . . . . . . . . . . . . . . 28 13.2. Informative References . . . . . . . . . . . . . . . . . 28
14.2. Informative References . . . . . . . . . . . . . . . . . 29 Appendix A. Requirements . . . . . . . . . . . . . . . . . . . . 31
Appendix A. Changes From Earlier Versions . . . . . . . . . . . 32 Appendix B. Changes From Earlier Versions . . . . . . . . . . . 32
A.1. Modifications Between WG Version -07 and -08 . . . . . . 32 B.1. Modifications Between WG Version -08 and -09 . . . . . . 32
A.2. Modifications Between WG Version -06 and -07 . . . . . . 32 B.2. Modifications Between WG Version -07 and -08 . . . . . . 33
A.3. Modifications Between WG Version -05 and -06 . . . . . . 32 B.3. Modifications Between WG Version -06 and -07 . . . . . . 33
A.4. Modifications Between WG Version -04 and -05 . . . . . . 33 B.4. Modifications Between WG Version -05 and -06 . . . . . . 33
A.5. Modifications Between WG Version -03 and -04 . . . . . . 33 B.5. Modifications Between WG Version -04 and -05 . . . . . . 34
A.6. Modifications Between WG Version -02 and -03 . . . . . . 34 B.6. Modifications Between WG Version -03 and -04 . . . . . . 34
A.7. Modifications Between WG Version -01 and -02 . . . . . . 34 B.7. Modifications Between WG Version -02 and -03 . . . . . . 35
A.8. Modifications Between WG Version -00 and -01 . . . . . . 34 B.8. Modifications Between WG Version -01 and -02 . . . . . . 35
A.9. Modifications Between Individual Version -00 and WG B.9. Modifications Between WG Version -00 and -01 . . . . . . 35
Version -00 . . . . . . . . . . . . . . . . . . . . . . . 34 B.10. Modifications Between Individual Version -00 and WG
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 34 Version -00 . . . . . . . . . . . . . . . . . . . . . . . 35
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 35
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 4, line 23 skipping to change at page 4, line 23
2.1. Terminology 2.1. Terminology
This document makes use of the terminology defined in RTP Taxonomy This document makes use of the terminology defined in RTP Taxonomy
[RFC7656], and RTP Topologies [RFC7667]. The following terms are [RFC7656], and RTP Topologies [RFC7667]. The following terms are
especially noted or here defined: especially noted or here defined:
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 Session: An association among a group of participants
communicating with RTP, as defined in [RFC3550] and amended by
[RFC7656].
RTP Stream: A stream of RTP packets containing media data, as
defined in [RFC7656].
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]. For example, HD and thumbnail video simulcast versions [RFC7656]. For example, HD and thumbnail video simulcast versions
of a single media source sent concurrently as separate RTP of a single media source sent concurrently as separate RTP
Streams. Streams.
skipping to change at page 5, line 13 skipping to change at page 5, line 16
"RtpStreamId" RTCP SDES Item [I-D.ietf-avtext-rid]. "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 The use cases of simulcast 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 target 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:
skipping to change at page 6, line 13 skipping to change at page 6, line 13
impact than to achieve an optimal adaptation of resource usage. impact than to achieve an optimal adaptation of resource usage.
3.1. Reaching a Diverse Set of Receivers 3.1. Reaching a Diverse Set of Receivers
The media sources provided by a sending participant potentially need The media sources provided by a sending participant potentially need
to reach several receiving participants that differ in terms of 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: include, but are not limited to:
Codec: This includes codec type (such as SDP MIME type) and can Codec: This includes codec type (such as SDP MIME type) and can
include codec configuration options (e.g. SDP fmtp parameters). include codec configuration. A couple of codec resources that
A couple of codec resources that differ only in codec differ only in codec configuration will be "different" if they are
configuration will be "different" if they are somehow not somehow not "compatible", like if they differ in video codec
"compatible", like if they differ in video codec profile, or the profile, or the transport packetization configuration.
transport packetization configuration.
Sampling: This relates to how the media source is sampled, in Sampling: This relates to how the media source is sampled, in
spatial as well as in temporal domain. For video streams, spatial spatial as well as in temporal domain. For video streams, spatial
sampling affects image resolution and temporal sampling affects sampling affects image resolution and temporal sampling affects
video frame rate. For audio, spatial sampling relates to the video frame rate. For audio, spatial sampling relates to the
number of audio channels and temporal sampling affects audio number of audio channels and temporal sampling affects audio
bandwidth. This may be used to suit different rendering bandwidth. This may be used to suit different rendering
capabilities or needs at the receiving endpoints, as well as a capabilities or needs at the receiving endpoints.
method to achieve different transport capabilities, bitrates and
eventually QoE by controlling the amount of source data.
Bitrate: This relates to the amount of bits spent per second to Bitrate: This relates to the amount of bits sent per second to
transmit the media source as an RTP stream, which typically also transmit the media source as an RTP stream, which typically also
affects the Quality of Experience (QoE) for the receiving user. affects the Quality of Experience (QoE) for the receiving user.
Letting the sending participant create a simulcast of a few 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 tradeoff 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. transcodings to each receiving participant.
This requires that the receiving participants can be categorized in This requires that the receiving participants 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. and media source. For example, a set of receiving participants
differ only in screen resolution; some are able to display video with
For example, assume for simplicity a set of receiving participants at most 360p resolution and some support 720p resolution. A sending
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
sending participant can send both Codec A and B. It can then reach
all receivers by creating two simulcasted RTP streams from each media
source; one for Codec A and one for Codec B.
In another simple example, a set of receiving participants differ
only in screen resolution; some are able to display video with at
most 360p resolution and some support 720p resolution. A sending
participant can then reach all receivers with best possible 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. resolution for each sent video media source.
In more elaborate cases, the receiving participants differ both in
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
to choose for each intended receiver. It is also the responsibility
of the RTP switch to negotiate a good fit of simulcast streams with
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
resources available to the sending participant. resources available to the sending participant.
3.2. Application Specific Media Source Handling 3.2. Application Specific Media Source Handling
The application logic that controls the communication session may 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. sent back to itself.
skipping to change at page 7, line 47 skipping to change at page 7, line 32
3.3. Receiver Media Source Preferences 3.3. Receiver Media Source Preferences
The application logic that controls the communication session may The application logic that controls the communication session may
allow receiving participants to apply preferences to the allow receiving participants to apply preferences to the
characteristics of the RTP stream they receive, for example in terms characteristics of the RTP stream they receive, for example in terms
of the aspects listed in Section 3.1. Sending a simulcast of RTP of the aspects listed in Section 3.1. Sending a simulcast of RTP
streams is one way of accommodating receivers with conflicting or streams is one way of accommodating receivers with conflicting or
otherwise incompatible preferences. otherwise incompatible preferences.
4. Requirements 4. Overview
The following requirements need to be met to support the use cases in
previous sections:
REQ-1: Identification:
REQ-1.1: It must be possible to identify a set of simulcasted RTP
streams as originating from the same media source in SDP
signaling.
REQ-1.2: An RTP endpoint must be capable of identifying the
simulcast stream a received RTP stream is associated with,
knowing the content of the SDP signalling.
REQ-2: Transport usage. The solution must work when using:
REQ-2.1: Legacy SDP with separate media transports per SDP media
description.
REQ-2.2: Bundled [I-D.ietf-mmusic-sdp-bundle-negotiation] SDP
media descriptions.
REQ-3: Capability negotiation. It must be possible that:
REQ-3.1: Sender can express capability of sending simulcast.
REQ-3.2: Receiver can express capability of receiving simulcast.
REQ-3.3: Sender can express maximum number of simulcast streams
that can be provided.
REQ-3.4: Receiver can express maximum number of simulcast streams
that can be received.
REQ-3.5: Sender can detail the characteristics of the simulcast
streams that can be provided.
REQ-3.6: Receiver can detail the characteristics of the simulcast
streams that it prefers to receive.
REQ-4: Distinguishing features. It must be possible to have
different simulcast streams use different codec parameters, as can
be expressed by SDP format values and RTP payload types.
REQ-5: Compatibility. It must be possible to use simulcast in
combination with other RTP mechanisms that generate additional RTP
streams:
REQ-5.1: RTP Retransmission [RFC4588].
REQ-5.2: RTP Forward Error Correction [RFC5109].
REQ-5.3: Related payload types such as audio Comfort Noise and/or
DTMF.
REQ-5.4: A single simulcast stream can consist of multiple RTP
streams, to support codecs where a dependent stream is
dependent on a set of encoded and dependent streams, each
potentially carried in their own RTP stream.
REQ-6: Interoperability. The solution must be possible to use in:
REQ-6.1: Interworking with non-simulcast legacy clients using a This memo defines SDP [RFC4566] signaling that covers the above
single media source per media type. described simulcast use cases and functionalities. A number of
requirements for such signaling are elaborated in Appendix A.
REQ-6.2: WebRTC environment with a single media source per SDP A new SDP media level attribute "a=simulcast" is defined:
media description.
5. Overview m=video 49300 RTP/AVP 97 98
a=rtpmap:97 H264/90000
a=rtpmap:98 H264/90000
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=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=rid:1 send pt=97
a=rid:2 send pt=98
a=rid:3 recv pt=97
a=simulcast:send 1;2 recv 3
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:RtpStreamId
As an overview, the above requirements are met by signaling simulcast Figure 1: Example Simulcast Media Description in Offer
capability and configurations in SDP [RFC4566]:
o An offer or answer can contain a number of simulcast streams, The corresponding SDP answer media description example extract could
separate for send and receive directions. look like:
o An offer or answer can contain multiple, alternative simulcast m=video 49674 RTP/AVP 97 98
stream formats in the same fashion as multiple, alternative a=rtpmap:97 H264/90000
formats can be offered in a media description. a=rtpmap:98 H264/90000
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=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=rid:1 recv pt=97
a=rid:2 recv pt=98
a=rid:3 send pt=97
a=simulcast:recv 1;2 send 3
a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:RtpStreamId
o A single media source per SDP media description is assumed, which Figure 2: Example Simulcast Media Description in Answer
is aligned with the concepts defined in [RFC7656] and will
specifically work in a WebRTC context, both with and without
BUNDLE [I-D.ietf-mmusic-sdp-bundle-negotiation] grouping.
o The codec configuration for a simulcast stream is expressed The above are only SDP media description extracts, not a complete
through use of separately specified RTP payload format SDP. The only difference to non-simulcast SDP media descriptions is
restrictions [I-D.ietf-mmusic-rid] with an associated RTP-level the added "a=simulcast" line. It is assumed that a single SDP media
identification mechanism [I-D.ietf-avtext-rid] to identify which description is used to describe a single media source. This is
RTP payload format restrictions an RTP stream adheres to. This aligned with the concepts defined in [RFC7656] and will work in a
complements and effectively extends simulcast stream WebRTC context, both with and without BUNDLE
identification and configuration possibilities that could be [I-D.ietf-mmusic-sdp-bundle-negotiation] grouping of media
provided by using only SDP formats as identifier. Use of multiple descriptions.
RTP streams with the same (non-redundancy) media type in the
context of a single media source, where those RTP streams are
using different RtpStreamId, is a strong but not totally
unambiguous indication of those RTP streams being part of a
simulcast.
o It is possible to use source-specific signaling [RFC5576] with the The "a=simulcast" line describes send and receive direction simulcast
proposed solution, but it is only in certain cases possible to streams separately. Each direction can in turn describe one or more
learn from that signaling which SSRC will belong to a particular simulcast streams, separated by semicolon. The identifiers
simulcast stream. describing simulcast streams on the "a=simulcast" line are rid-id, as
defined by "a=rid" lines in [I-D.ietf-mmusic-rid]. Each simulcast
stream can be offered as a list of alternative rid-id, with each
alternative separated by comma (not in the examples above). A
detailed specification can be found in Section 5 and more detailed
examples are outlined in Section 5.6.
6. Detailed Description 5. Detailed Description
This section further details the overview above (Section 5). First, This section further details the overview above (Section 4). First,
formal syntax is provided (Section 6.1), followed by the rest of the formal syntax is provided (Section 5.1), followed by the rest of the
SDP attribute definition in Section 6.2. Relating Simulcast Streams SDP attribute definition in Section 5.2. Relating Simulcast Streams
(Section 6.5) provides the definition of the RTP/RTCP mechanisms (Section 5.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 5.1. Simulcast Attribute
This document defines a new SDP media-level "a=simulcast" attribute, This document defines a new SDP media-level "a=simulcast" attribute,
with value according to the following ABNF [RFC5234] syntax: with value according to the following ABNF [RFC5234] syntax:
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 = "send" SP sc-str-list sc-send = "send" SP sc-str-list
sc-recv = "recv" SP sc-str-list sc-recv = "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 [I-D.ietf-mmusic-rid]
Figure 1: ABNF for Simulcast Value Figure 3: ABNF for Simulcast Value
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.
Each simulcast stream consists of one or more alternative simulcast Each simulcast stream consists of one or more alternative simulcast
formats. Each simulcast format is identified by a simulcast stream formats. Each simulcast format is identified by a simulcast stream
identifier (SCID). The SCID MUST have the form of an RTP stream identifier (rid-id). The rid-id MUST have the form of an RTP stream
identifier, as described by RTP Payload Format Restrictions identifier, as described by RTP Payload Format Restrictions
[I-D.ietf-mmusic-rid]. [I-D.ietf-mmusic-rid].
In the list of simulcast streams, each simulcast stream is separated In the list of simulcast streams, each simulcast stream is separated
by a semicolon (";"). Each simulcast stream can in turn be offered by a semicolon (";"). Each simulcast stream can in turn be offered
in one or more alternative formats, represented by SCIDs, separated in one or more alternative formats, represented by rid-ids, separated
by a comma (","). Each SCID can also be specified as initially by a comma (","). Each rid-id can also be specified as initially
paused [RFC7728], indicated by prepending a "~" to the SCID. The paused [RFC7728], indicated by prepending a "~" to the rid-id. The
reason to allow separate initial pause states for each SCID is that reason to allow separate initial pause states for each rid-id is that
pause capability can be specified individually for each RTP payload pause capability can be specified individually for each RTP payload
type referenced by an SCID. Since pause capability specified via the type referenced by an rid-id. Since pause capability specified via
"a=rtcp-fb" attribute and SCID specified by "a=rid" can refer to the "a=rtcp-fb" attribute and rid-id specified by "a=rid" can refer
common payload types, it is unfeasible to pause streams with SCID to common payload types, it is unfeasible to pause streams with rid-
where any of the related RTP payload type(s) do not have pause id where any of the related RTP payload type(s) do not have pause
capability. capability.
Examples: It is possible to use source-specific signaling [RFC5576] with
"a=simulcast", but it is only in certain cases possible to learn from
a=simulcast:send 1,2,3;~4,~5 recv 6;~7,~8 that signaling which SSRC will belong to a particular simulcast
a=simulcast:recv 1;4,5 send 6;7 stream.
Figure 2: Simulcast Examples
Above are two examples of different "a=simulcast" lines.
The first line is an example offer to send two simulcast streams and
to receive two simulcast streams. The first simulcast stream in send
direction can be sent in three different alternative formats (SCID 1,
2, 3), and the second simulcast stream in send direction can be sent
in two different alternative formats (SCID 4, 5). Both of the second
simulcast stream alternative formats in send direction are offered as
initially paused. The first simulcast stream in receive direction
has no 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.
The second line is an example answer to the first line, accepting to
send and receive the two offered simulcast streams, however send and
receive directions are specified in opposite order compared to the
first line, which lets the answer keep the same order of simulcast
streams in the SDP as in the offer, for convenience, even though
directionality is reversed. This example answer has removed all
offered alternative formats for the first simulcast stream (keeping
only SCID 1), but kept alternative formats for the second simulcast
stream in receive direction (4, 5). The answer thus accepts to send
two simulcast streams, without alternatives. The answer does not
accept initial pause of any simulcast streams, in either direction.
More examples can be found in Section 6.6.
6.2. Simulcast Capability 5.2. Simulcast Capability
Simulcast capability is expressed through a new media level SDP Simulcast capability is expressed through a new media level SDP
attribute, "a=simulcast" (Section 6.1). The meaning of the attribute attribute, "a=simulcast" (Section 5.1). The meaning of the attribute
on SDP session level is undefined, MUST NOT be used by on SDP session level is undefined, MUST NOT be used by
implementations of this specification and MUST be ignored if received implementations of this specification and MUST be ignored if received
on session level. Extensions to this specification MAY define such on session level. Extensions to this specification MAY define such
session level usage. The meaning of including multiple "a=simulcast" session level usage. Each SDP media description MUST contain at most
lines in a single SDP media description is undefined, MUST NOT be one "a=simulcast" line.
used by implementations of this specification, and any additional
"a=simulcast" lines beyond the first in a media description MUST be
ignored if received.
There are separate and independent sets of simulcast streams in send There are separate and independent sets of simulcast streams in send
and receive directions. When listing multiple directions, each and receive directions. When listing multiple directions, each
direction MUST NOT occur more than once on the same line. direction MUST NOT occur more than once on the same line.
Simulcast streams using undefined SCID MUST NOT be used as valid Simulcast streams using undefined rid-id MUST NOT be used as valid
simulcast streams by an RTP stream receiver. The direction for an simulcast streams by an RTP stream receiver. The direction for an
SCID MUST be aligned with the direction specified for the rid-id MUST be aligned with the direction specified for the
corresponding RTP stream identifier on the "a=rid" line. corresponding RTP stream identifier on the "a=rid" line.
The listed number of simulcast streams for a direction sets a limit The listed number of simulcast streams 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 order of the listed simulcast streams in the "send" direction
suggests a proposed order of preference, in decreasing order: the suggests a proposed order of preference, in decreasing order: the
SCID listed first is the most preferred and subsequent streams have rid-id listed first is the most preferred and subsequent streams have
progressively lower preference. The order of the listed SCID in the progressively lower preference. The order of the listed rid-id in
"recv" direction expresses which simulcast streams that are the "recv" direction expresses which simulcast streams that are
preferred, with the leftmost being most preferred. This can be of preferred, with the leftmost being most preferred. This can be of
importance if the number of actually sent simulcast streams have to importance if the number of actually sent simulcast streams have to
be reduced for some reason. be reduced for some reason.
SCID that have explicit dependencies [RFC5583] [I-D.ietf-mmusic-rid] rid-id that have explicit dependencies [RFC5583]
to other SCID (even in the same media description) MAY be used. [I-D.ietf-mmusic-rid] to other rid-id (even in the same media
description) MAY be used.
Use of more than a single, alternative simulcast format for a Use of more than a single, alternative simulcast format for a
simulcast stream MAY be specified as part of the attribute parameters simulcast stream MAY be specified as part of the attribute parameters
by expressing the simulcast stream as a comma-separated list of by expressing the simulcast stream as a comma-separated list of
alternative SCID. In this case, it is not possible to align what alternative rid-id. In this case, it is not possible to align what
alternative SCID that are used across different simulcast streams, alternative rid-id that are used across different simulcast streams,
like requiring all simulcast streams to use SCID alternatives like requiring all simulcast streams to use rid-id alternatives
referring to the same codec format. The order of the SCID referring to the same codec format. The order of the rid-id
alternatives within a simulcast stream is significant; the SCID alternatives within a simulcast stream is significant; the rid-id
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 defined as having their own SCID listed explicitly in the be defined as having their own rid-id listed explicitly in the
attribute parameters, since they are not strictly simulcast streams attribute parameters, since they are not strictly simulcast streams
of the media source, but rather a specific way of generating the RTP of the media source, but rather a specific way of generating the RTP
stream of a single simulcast stream with varying RTP payload type. stream of a single simulcast stream with varying RTP payload type.
If RTP stream pause/resume [RFC7728] is supported, any SCID MAY be If RTP stream pause/resume [RFC7728] is supported, any rid-id MAY be
prefixed by a "~" character to indicate that the corresponding prefixed by a "~" character to indicate that the corresponding
simulcast stream is initially paused already from start of the RTP simulcast stream is initially paused already from start of the RTP
session. In this case, support for RTP stream pause/resume MUST also session. In this case, support for RTP stream pause/resume MUST also
be included under the same "m=" line where "a=simulcast" is included. be included under the same "m=" line where "a=simulcast" is included.
All RTP payload types related to such initially paused simulcast All RTP payload types related to such initially paused simulcast
stream MUST be listed in the SDP as pause/resume capable as specified stream MUST be listed in the SDP as pause/resume capable as specified
by [RFC7728], e.g. by using the "*" wildcard format for "a=rtcp-fb". by [RFC7728], e.g. by using the "*" wildcard format for "a=rtcp-fb".
An initially paused simulcast stream in "send" direction MUST be An initially paused simulcast stream in "send" direction for the part
considered equivalent to an unsolicited locally paused stream, and be sending the SDP MUST be considered equivalent to an unsolicited
handled accordingly. Initially paused simulcast streams are resumed locally paused stream, and be handled accordingly. Initially paused
as described by the RTP pause/resume specification. An RTP stream simulcast streams are resumed as described by the RTP pause/resume
receiver that wishes to resume an unsolicited locally paused stream specification. An RTP stream receiver that wishes to resume an
needs to know the SSRC of that stream. The SSRC of an initially unsolicited locally paused stream needs to know the SSRC of that
paused simulcast stream can be obtained from an RTP stream sender stream. The SSRC of an initially paused simulcast stream can be
RTCP Sender Report (SR) including both the desired SSRC as "SSRC of obtained from an RTP stream sender RTCP Sender Report (SR) including
sender", and the SCID value in an RtpStreamId RTCP SDES item both the desired SSRC as "SSRC of sender", and the rid-id value in an
[I-D.ietf-avtext-rid]. 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
an SDP towards an RTP sender, SHOULD cause the remote RTP sender to for the part sending the SDP, sent towards an RTP sender, SHOULD
put the stream as unsolicited locally paused, unless there are other cause the remote RTP sender to put the stream as unsolicited locally
RTP stream receivers that do not mark the simulcast stream as paused, unless there are other RTP stream receivers that do not mark
initially paused. The reason to require an initially paused "recv" the simulcast stream as initially paused. The reason to require an
stream to be considered locally paused by the remote RTP sender, initially paused "recv" stream to be considered locally paused by the
instead of making it equivalent to implicitly sending a pause remote RTP sender, instead of making it equivalent to implicitly
request, is because the pausing RTP sender cannot know which sending a pause request, is because the pausing RTP sender cannot
receiving SSRC owns the restriction when TMMBR/TMMBN are used for know which receiving SSRC owns the restriction when TMMBR/TMMBN are
pause/resume signaling since the RTP receiver's SSRC in send used for pause/resume signaling (Section 5.6 of [RFC7728]) since the
direction is sometimes not yet known. RTP receiver's SSRC in send 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, e.g. as streams SHOULD be chosen such that they are different, e.g. as
different SDP formats with differing "a=rtpmap" and/or "a=fmtp" different SDP formats with differing "a=rtpmap" and/or "a=fmtp"
lines, or as differently defined RTP payload format restrictions. If lines, or as differently defined RTP payload format restrictions. If
this difference is not required, RTP duplication [RFC7104] procedures this difference is not required, RTP duplication [RFC7104] procedures
SHOULD be considered instead of simulcast. To avoid complications in SHOULD be considered instead of simulcast. To avoid complications in
implementations, a single SCID MUST NOT occur more than once per implementations, a single rid-id MUST NOT occur more than once per
"a=simulcast" line. Note that this does not eliminate use of "a=simulcast" line. Note that this does not eliminate use of
simulcast as an RTP duplication mechanism, since it is possible to simulcast as an RTP duplication mechanism, since it is possible to
define multiple different SCID that are effectively equivalent. define multiple different rid-id that are effectively equivalent.
6.3. Offer/Answer Use 5.3. Offer/Answer Use
Note: The inclusion of "a=simulcast" or the use of simulcast does Note: The inclusion of "a=simulcast" or the use of simulcast does
not change any of the interpretation or Offer/Answer procedures not change any of the interpretation or Offer/Answer procedures
for other SDP attributes, like "a=fmtp" or "a=rid". for other SDP attributes, like "a=fmtp" or "a=rid".
6.3.1. Generating the Initial SDP Offer 5.3.1. Generating the Initial SDP Offer
An offerer wanting to use simulcast SHALL include the "a=simulcast" An offerer wanting to use simulcast for a media description SHALL
attribute in the offer. An offerer listing a set of receive include one "a=simulcast" attribute in that media description in the
simulcast streams and/or alternative formats as SCID in the offer offer. An offerer listing a set of receive simulcast streams and/or
MUST be prepared to receive RTP streams for any of those simulcast alternative formats as rid-id in the offer MUST be prepared to
streams and/or alternative formats from the answerer. receive RTP streams for any of those simulcast streams and/or
alternative formats from the answerer.
6.3.2. Creating the SDP Answer 5.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. Since SDP
Similarly, an answerer that receives an offer with the "a=simulcast" session level simulcast is undefined in this memo, an answerer that
attribute on session level SHALL remove it in the answer. An receives an offer with the "a=simulcast" attribute on SDP session
answerer that understands the attribute but receives multiple level SHALL remove it in the answer. An answerer that understands
"a=simulcast" attributes in the same media description and that the attribute but receives multiple "a=simulcast" attributes in the
desires to use simulcast SHALL ignore and remove all but the first in same media description SHALL disable use of simulcast by removing all
the answer. "a=simulcast" lines for that media description in the answer.
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 answerer that receives an offer with simulcast containing an An answerer that receives an offer with simulcast containing an
"a=simulcast" attribute listing alternative SCID MAY keep all the "a=simulcast" attribute listing alternative rid-id MAY keep all the
alternative SCID in the answer, but it MAY also choose to remove any alternative rid-id in the answer, but it MAY also choose to remove
non-desirable alternative SCID in the answer. The answerer MUST NOT any non-desirable alternative rid-id in the answer. The answerer
add any alternative SCID in send direction in the answer that were MUST NOT add any alternative rid-id in send direction in the answer
not present in the offer receive direction. The answerer MUST be that were not present in the offer receive direction. The answerer
prepared to receive any of the receive direction SCID alternatives, MUST be prepared to receive any of the receive direction rid-id
and MAY send any of the send direction alternatives that are kept in alternatives, and MAY send any of the send direction alternatives
the answer. 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 answerer that receives an offer without RTP stream pause/resume An answerer that receives an offer without RTP stream pause/resume
capability MUST NOT mark any simulcast streams as initially paused in capability MUST NOT mark any simulcast streams as initially paused in
the answer. the answer.
An RTP stream pause/resume capable answerer that receives an offer An RTP stream pause/resume capable answerer that receives an offer
with RTP stream pause/resume capability MAY mark any SCID that refer with RTP stream pause/resume capability MAY mark any rid-id that
to pause/resume capable formats as initially paused in the answer. refer to pause/resume capable formats as initially paused in the
answer.
An answerer that receives indication in an offer of an SCID being An answerer that receives indication in an offer of an rid-id being
initially paused SHOULD mark that SCID as initially paused also in initially paused SHOULD mark that rid-id as initially paused also in
the answer, regardless of direction, unless it has good reason for the answer, regardless of direction, unless it has good reason for
the SCID not being initially paused. One such reason could, for the rid-id not being initially paused. One reason to remove an
example, be that the answerer would otherwise initially not receive initial pause in the answer compared to the offer could, for example,
any media of that type at all. be that all receive direction simulcast streams for a media source
the answerer accepts in the answer would otherwise be paused.
6.3.3. Offerer Processing the SDP Answer 5.3.3. Offerer Processing the SDP Answer
An offerer that receives an answer without "a=simulcast" MUST NOT use An offerer that receives an answer without "a=simulcast" MUST NOT use
simulcast towards the answerer. An offerer that receives an answer simulcast towards the answerer. An offerer that receives an answer
with "a=simulcast" without any SCID in a specified direction MUST NOT with "a=simulcast" without any rid-id in a specified direction MUST
use simulcast in that direction. NOT use simulcast in that direction.
An offerer that receives an answer where some SCID alternatives are An offerer that receives an answer where some rid-id alternatives are
kept MUST be prepared to receive any of the kept send direction SCID kept MUST be prepared to receive any of the kept send direction rid-
alternatives, and MAY send any of the kept receive direction SCID id alternatives, and MAY send any of the kept receive direction rid-
alternatives. id alternatives.
An offerer that receives an answer where some of the SCID are removed An offerer that receives an answer where some of the rid-id are
compared to the offer MAY release the corresponding resources (codec, removed compared to the offer MAY release the corresponding resources
transport, etc) in its receive direction and MUST NOT send any RTP (codec, transport, etc) in its receive direction and MUST NOT send
packets corresponding to the removed SCID. any RTP packets corresponding to the removed rid-id.
An offerer that offered some of its SCID as initially paused and that An offerer that offered some of its rid-id as initially paused and
receives an answer that does not indicate RTP stream pause/resume that receives an answer that does not indicate RTP stream pause/
capability, MUST NOT initially pause any simulcast streams. resume capability, MUST NOT initially pause any simulcast 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 SCID are marked as initially paused, SHOULD answer where some rid-id are marked as initially paused, SHOULD
initially pause those RTP streams 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 RTP streams not being initially paused. One such reason could, those RTP streams not being initially paused. One such reason could,
for example, be that the answerer would otherwise initially not for example, be that the answerer would otherwise initially not
receive any media of that type at all. receive any media of that type at all.
6.3.4. Modifying the Session 5.3.4. Modifying the Session
Offers and answers inside an existing session follow the rules for Offers inside an existing session follow the same rules as for
initial session negotiation, with the additional restriction that any initial SDP offer, with these additions:
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 RTP payload format restrictions
[I-D.ietf-mmusic-rid] also apply.
6.4. Use with Declarative SDP 1. rid-id marked as initially paused in the offerer's send direction
SHALL reflect the offerer's opinion of the current pause state at
the time of creating the offer. This is purely informational,
and RTP stream pause/resume [RFC7728] signaling in the ongoing
session SHALL take precedence in case of any conflict or
ambiguity.
2. rid-id marked as initally paused in the offerer's receive
direction SHALL (as in an initial offer) reflect the offerer's
desired rid-id pause state. Except for the case where the
offerer already paused the corresponding RTP stream through RTP
stream pause/resume [RFC7728] signaling , this is identical to
the conditions at an initial offer.
Creation of SDP answers and processing of SDP answers inside an
existing session follow the same rules as described above for initial
SDP offer/answer.
Session modification restrictions in section 6.5 of RTP payload
format restrictions [I-D.ietf-mmusic-rid] also apply.
5.4. Use with Declarative SDP
This document does not define the use of "a=simulcast" in declarative This document does not define the use of "a=simulcast" in declarative
SDP, partly motivated by use of the simulcast format identification SDP, partly motivated by use of the simulcast format identification
[I-D.ietf-mmusic-rid] not being defined for use in declarative SDP. [I-D.ietf-mmusic-rid] not being defined for use in declarative SDP.
If concrete use cases for simulcast in declarative SDP are identified If concrete use cases for simulcast in declarative SDP are identified
in the future, we expect that additional specifications will address in the future, the authors of this memo expect that additional
such use. specifications will address such use.
6.5. Relating Simulcast Streams 5.5. Relating Simulcast Streams
Simulcast RTP streams MUST be related on RTP level through Simulcast RTP streams MUST be related on RTP level through
RtpStreamId [I-D.ietf-avtext-rid], as specified in the SDP RtpStreamId [I-D.ietf-avtext-rid], as specified in the SDP
"a=simulcast" attribute (Section 6.2) parameters. This is sufficient "a=simulcast" attribute (Section 5.2) parameters. This is sufficient
as long as there is only a single media source per SDP media as long as there is only a single media source per SDP media
description. When using BUNDLE description. When using BUNDLE
[I-D.ietf-mmusic-sdp-bundle-negotiation], where multiple SDP media [I-D.ietf-mmusic-sdp-bundle-negotiation], where multiple SDP media
descriptions jointly specify a single RTP session, the SDES MID descriptions jointly specify a single RTP session, the SDES MID
identification mechanism in BUNDLE allows relating RTP streams back identification mechanism in BUNDLE allows relating RTP streams back
to individual media descriptions, after which the above described to individual media descriptions, after which the above described
RtpStreamId relations can be used. Use of the RTP header extension RtpStreamId relations can be used. Use of the RTP header extension
[RFC5285] for both MID and RtpStreamId identifications can be [RFC5285] for both MID and RtpStreamId identifications can be
important to ensure rapid initial reception, required to correctly important to ensure rapid initial reception, required to correctly
interpret and process the RTP streams. Implementers of this interpret and process the RTP streams. Implementers of this
specification MUST support the RTCP source description (SDES) item specification MUST support the RTCP source description (SDES) item
method and SHOULD support RTP header extension method to signal method and SHOULD support RTP header extension method to signal
RtpStreamId on RTP level. RtpStreamId on RTP level.
RTP streams MUST only use a single alternative SCID at a time (based NOTE: For the case where it is clear from SDP that RTP PT uniquely
on RTP timestamps), but MAY change format (and SCID) on a per-RTP maps to corresponding RtpStreamId, an RTP receiver can use RTP PT
packet basis. This corresponds to the existing (non-simulcast) SDP to relate simulcast streams. This can sometimes enable decoding
offer/answer case when multiple formats are included on the "m=" line even in advance to receiving RtpStreamId information in RTCP SDES
in the SDP answer, enabling per-RTP packet change of RTP payload and/or RTP header extensions.
type.
6.6. Signaling Examples RTP streams MUST only use a single alternative rid-id at a time
(based on RTP timestamps), but MAY change format (and rid-id) 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, enabling per-RTP packet change of
RTP payload type.
5.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 4: Four-party Mixer-based Conference
6.6.1. Single-Source Client 5.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" "a=rid" "imageattr" [RFC6236]. In this example, only the "pt" "a=rid"
parameter is used, effectively achieving a 1:1 mapping between parameter is used, effectively achieving a 1:1 mapping between
RtpStreamId and media formats (RTP payload types), to describe RtpStreamId and media formats (RTP payload types), to describe
simulcast stream formats. Alice's Offer: simulcast stream formats. Alice's Offer:
skipping to change at page 17, line 51 skipping to change at page 16, line 46
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:RtpStreamId a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:RtpStreamId
Figure 4: Single-Source Simulcast Offer Figure 5: 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 "a=fmtp" and "a=imageattr" parameters attribute. The included "a=fmtp" and "a=imageattr" parameters
indicates that sent simulcast streams can differ in video resolution. indicates that sent simulcast streams can differ in video resolution.
The RTP header extension for RtpStreamId is offered to avoid issues The RTP header extension for RtpStreamId is offered to avoid issues
with the initial binding between RTP streams (SSRCs) and the with the initial binding between RTP streams (SSRCs) and the
RtpStreamId identifying the simulcast stream and its format. RtpStreamId identifying the simulcast stream and its format.
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. Also the would have started with the media negotiated in the SDP. Also the
usage of the RtpStreamId RTP header extension is accepted. usage of the RtpStreamId RTP header extension is accepted.
skipping to change at page 18, line 39 skipping to change at page 17, line 35
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:RtpStreamId a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:RtpStreamId
Figure 5: Single-Source Simulcast Answer Figure 6: 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" and "rid" attribute parameters. direction of the "simulcast" and "rid" attribute parameters.
6.6.2. Multi-Source Client 5.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
skipping to change at page 20, line 49 skipping to change at page 19, line 49
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 pt=96;max-fs=921600;max-fps=30 a=rid:1 send pt=96;max-fs=921600;max-fps=30
a=rid:2 send pt=96;max-fs=614400;max-fps=15 a=rid:2 send pt=96;max-fs=614400;max-fps=15
a=rid:3 send pt=96;max-fs=230400;max-fps=30 a=rid:3 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:RtpStreamId 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;~3 a=simulcast:send 1;~2;~3
Figure 6: Fred's Multi-Source Simulcast Offer Figure 7: 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. RTP Aspects 6. RTP Aspects
This section discusses what the different entities in a simulcast This section discusses what the different entities in a simulcast
media path can expect to happen on RTP level. This is explored from media path can expect to happen on 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 simulcasted to an RTP middlebox. That RTP middlebox sends media
sources both to other RTP middleboxes (cascaded middleboxes), as well sources both to other RTP middleboxes (cascaded middleboxes), as well
as selecting some simulcast format of the media source and sending it as selecting some simulcast format of the media source and sending it
to receiving endpoints. Different types of RTP middleboxes and their to receiving endpoints. Different types of RTP middleboxes and their
usage of the different simulcast formats results in several different usage of the different simulcast formats results in several different
behaviors. behaviors.
7.1. Outgoing from Endpoint with Media Source 6.1. Outgoing from Endpoint with Media Source
The most straightforward simulcast case is the RTP streams being 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 can transmit up to the number of RTP streams needed for the
negotiated simulcast streams for that media source. Each RTP stream negotiated simulcast streams for that media source. Each RTP stream
(SSRC) is identified by associating (Section 6.5) it with an (SSRC) is identified by associating (Section 5.5) it with an
RtpStreamId SDES item, transmitted in RTCP and possibly also as an RtpStreamId SDES item, transmitted in RTCP and possibly also as an
RTP header extension. In cases where multiple media sources have RTP header extension. In cases where multiple media sources have
been negotiated for the same RTP session and thus BUNDLE been negotiated for the same RTP session and thus BUNDLE
[I-D.ietf-mmusic-sdp-bundle-negotiation] is used, also the MID SDES [I-D.ietf-mmusic-sdp-bundle-negotiation] is used, also the MID SDES
item will be sent similarly to the RtpStreamId. item will be sent similarly to the RtpStreamId.
Each RTP stream may not be continuously transmitted due to any of the Each RTP stream may not be continuously transmitted due to any of the
following reasons; temporarily paused using Pause/Resume [RFC7728], following reasons; temporarily paused using Pause/Resume [RFC7728],
sender side application logic temporarily pausing it, or lack of sender side application logic temporarily pausing it, or lack of
network resources to transmit this simulcast stream. However, all network resources to transmit this simulcast stream. However, all
simulcast streams that have been negotiated have active and simulcast streams that have been negotiated have active and
maintained SSRC (at least in regular RTCP reports), even if no RTP maintained SSRC (at least in regular RTCP reports), even if no RTP
packets are currently transmitted. The relation between an RTP packets are currently transmitted. The relation between an RTP
Stream (SSRC) and a particular simulcast stream is not expected to Stream (SSRC) and a particular simulcast stream is not expected to
change, except in exceptional situations such as SSRC collisions. At change, except in exceptional situations such as SSRC collisions. At
SSRC changes, the usage of MID and RtpStreamId should enable the SSRC changes, the usage of MID and RtpStreamId should enable the
receiver to correctly identify the RTP streams even after an SSRC receiver to correctly identify the RTP streams even after an SSRC
change. change.
7.2. RTP Middlebox to Receiver 6.2. RTP Middlebox to Receiver
RTP streams in a multi-party RTP session can be used in multiple RTP streams in a multi-party RTP session can be used in multiple
different ways, when the session utilizes simulcast at least on the 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 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 receiver at any instant in time, even if the selected simulcast
stream may vary. For cases where this does not hold due to stream may vary. For cases where this does not hold due to
application needs, then the RTP stream aspects will fall under the application needs, then the RTP stream aspects will fall under the
middlebox to middlebox case Section 7.3. middlebox to middlebox case Section 6.3.
The selection of which simulcast streams to forward towards the The selection of which simulcast streams to forward towards the
receiver, is application specific. However, in conferencing 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 of media sources possible to forward, N, is less than the total
amount of media sources available in an multi-media session, the amount of media sources available in an multi-media session, the
current and previous speakers (up to N in total) are often the ones current and previous speakers (up to N in total) are often the ones
forwarded. To avoid the need for media specific processing to forwarded. To avoid the need for media specific processing to
determine the current speaker(s) in the RTP middlebox, the endpoint determine the current speaker(s) in the RTP middlebox, the endpoint
providing a media source may include meta data, such as the RTP providing a media source may include meta data, such as the RTP
skipping to change at page 23, line 5 skipping to change at page 22, line 5
for including the RtpStreamId in the middlebox to receiver direction for including the RtpStreamId in the middlebox to receiver direction
for an RTP stream is to let the receiver know which restrictions for an RTP stream is to let the receiver know which restrictions
apply to the currently delivered RTP stream. In case the RtpStreamId apply to the currently delivered RTP stream. In case the RtpStreamId
is negotiated to be used, it is important to remember that the used is negotiated to be used, it is important to remember that the used
identifiers will be specific to each signalling session. Even if the identifiers will be specific to each signalling session. Even if the
central entity can attempt to coordinate, it is likely that the central entity can attempt to coordinate, it is likely that the
RtpStreamIds need to be translated to the leg specific values. The RtpStreamIds need to be translated to the leg specific values. The
below cases will have as base line that RtpStreamId is not used in below cases will have as base line that RtpStreamId is not used in
the mixer to receiver direction. the mixer to receiver direction.
7.2.1. Media-Switching Mixer 6.2.1. Media-Switching Mixer
This section discusses the behavior in cases where the RTP middlebox This section discusses the behavior in cases where the RTP middlebox
behaves like the Media-Switching Mixer (Section 3.6.2) in RTP behaves like the Media-Switching Mixer (Section 3.6.2) in RTP
Topologies [RFC7667]. The fundamental aspect here is that the media Topologies [RFC7667]. The fundamental aspect here is that the media
sources delivered from the middlebox will be the mixer's conceptual sources delivered from the middlebox will be the mixer's conceptual
or functional ones. For example, one media source may be the main or functional ones. For example, one media source may be the main
speaker in high resolution video, while a number of other media speaker in high resolution video, while a number of other media
sources are thumbnails of each participant. sources are thumbnails of each participant.
The above results in that the RTP stream produced by the mixer is one The above results in that the RTP stream produced by the mixer is one
that switches between a number of received incoming RTP streams for that switches between a number of received incoming RTP streams for
different media sources and in different simulcast versions. The 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. An functional usage of the RTP stream delivered to the receiver. As an
example of the latter, is that it is unnecessary to forward a full HD example of the latter, it is unnecessary to forward a full HD video
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. forwarded for some of the mixer's media sources.
This will result in a single RTP stream being used for a particular This will result in a single RTP stream being used for each of the
of the RTP mixer's media sources. This RTP stream is at any point in RTP mixer's media sources. This RTP stream is at any point in time a
time a selection of one particular RTP stream arriving to the mixer, selection of one particular RTP stream arriving to the mixer, where
where the RTP header field values are rewritten to provide a the RTP header field values are rewritten to provide a consistent,
consistent, single RTP stream. If the RTP mixer doesn't receive any single RTP stream. If the RTP mixer doesn't receive any incoming
incoming stream matched to this media source, the SSRC will not stream matched to this media source, the SSRC will not transmit, but
transmit, but be kept alive using RTCP. The SSRC and thus RTP stream be kept alive using RTCP. The SSRC and thus RTP stream for the
for the mixer's media source is expected to be long term stable. It mixer's media source is expected to be long term stable. It will
will only be changed by signalling or other disruptive events. Note only be changed by signalling or other disruptive events. Note that
that although the above talks about a single RTP stream, there can in although the above talks about a single RTP stream, there can in some
some cases be multiple RTP streams carrying the selected simulcast cases be multiple RTP streams carrying the selected simulcast stream
stream for the originating media source, including repair or other for the originating media source, including redundancy or other
auxiliary RTP streams. auxiliary RTP streams.
The mixer may communicate the identity of the originating media The mixer may communicate the identity of the originating media
source to the receiver by including the CSRC field with the source to the receiver by including the CSRC field 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 of possibility that the RTP mixer switches between simulcast versions of
the media source, the CSRC value may change, even if the media source the media source, the CSRC value may change, even if the media source
is kept the same. is kept the same.
It is important to note that any MID SDES item from the originating It is important to note that any MID SDES item from the originating
media source needs to be removed and not be associated with the RTP media source needs to be removed and not be associated with the RTP
stream's SSRC. This as there is nothing in the signalling between stream's SSRC. That is, there is nothing in the signalling between
the mixer and the receiver that is structured around the originating the mixer and the receiver that is structured around the originating
media sources, only the mixer's media sources. If they would be media sources, only the mixer's media sources. If they would be
associated with the SSRC, the receiver would likely believe that associated with the SSRC, the receiver would likely believe that
there has been an SSRC collision, and that the RTP stream is spurious there has been an SSRC collision, and that the RTP stream is spurious
as it doesn't carry the identifiers used to relate it to the correct as it doesn't carry the identifiers used to relate it to the correct
context. However, this is not true for CSRC values, as long as they context. However, this is not true for CSRC values, as long as they
are never used as SSRC. In these cases one could provide CNAME and are never used as SSRC. In these cases one could provide CNAME and
MID as SDES items. A receiver could use this to determine which CSRC MID as SDES items. A receiver could use this to determine which CSRC
values that are associated with the same originating media source. values that are associated with the same originating media source.
If RtpStreamIds are used in this scenario, it should be noted that If RtpStreamIds are used in the scenario described by this section,
the RtpStreamId on a particular SSRC will change based on the actual it should be noted that the RtpStreamId on a particular SSRC will
simulcast stream selected for switching. These RtpStreamId change based on the actual simulcast stream selected for switching.
identifiers will be local to this leg's signalling context. In These RtpStreamId identifiers will be local to this leg's signalling
addition, the defined RtpStreamIds and their parameters need to cover context. In addition, the defined RtpStreamIds and their parameters
all the media sources and simulcast streams that can be switched into need to cover all the media sources and simulcast streams received by
this media source. the RTP mixer that can be switched into this media source, sent by
the RTP mixer.
7.2.2. Selective Forwarding Middlebox 6.2.2. Selective Forwarding Middlebox
This section discusses the behavior in cases where the RTP middlebox This section discusses the behavior in cases where the RTP middlebox
behaves like the Selective Forwarding Middlebox (Section 3.7) in RTP behaves like the Selective Forwarding Middlebox (Section 3.7) in RTP
Topologies [RFC7667]. Applications for this type of RTP middlebox Topologies [RFC7667]. Applications for this type of RTP middlebox
results in that each originating media source will have a results in that each originating media source will have a
corresponding media source on the leg between the middlebox and the corresponding media source on the leg between the middlebox and the
receiver. A SFM could go as far as exposing all the simulcast receiver. A Selective Forwarding Middlebox (SFM) could go as far as
streams for an media source, however this section will focus on exposing all the simulcast streams for an media source, however this
having a single simulcast stream that can contain any of the section will focus on having a single simulcast stream that can
simulcast formats. This section will assume that the SFM projection contain any of the simulcast formats. This section will assume that
mechanism works on media source level, and maps one of the media the SFM projection mechanism works on media source level, and maps
source's simulcast streams onto one RTP stream from the SFM to the one of the media source's simulcast streams onto one RTP stream from
receiver. the SFM to the receiver.
This usage will result in that the individual RTP stream(s) for one This usage will result in that the individual RTP stream(s) for one
media source can switch between being active to paused, based on the media source can switch between being active to paused, based on the
subset of media sources the SFM wants to provide the receiver for 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 indicate the moment. With SFMs there exist no reasons to use CSRC to indicate the
originating stream, as there is a one to one media source mapping. originating stream, as there is a one to one media source mapping.
If the application requires knowing the simulcast version received to If the application requires knowing the simulcast version received to
function well, then RtpStreamId should be negotiated on the SFM to function well, then RtpStreamId should be negotiated on the SFM to
receiver leg. Which simulcast stream that is being forwarded is not receiver leg. Which simulcast stream that is being forwarded is not
made explicit unless RtpStreamId is used on the leg. made explicit unless RtpStreamId is used on the leg.
skipping to change at page 25, line 29 skipping to change at page 24, line 32
that provides the last RTP sequence number transmitted prior to the that provides the last RTP sequence number transmitted prior to the
pause. Due to usage, the timeliness of this solution depends on when pause. Due to usage, the timeliness of this solution depends on when
delivery using RTCP can occur in relation to the transmission of the delivery using RTCP can occur in relation to the transmission of the
last RTP packet. If no explicit information is provided at all, then last RTP packet. If no explicit information is provided at all, then
detection based on non increasing RTCP SR field values and timers detection based on non increasing RTCP SR field values and timers
need to be used to determine pause in RTP packet delivery. This need to be used to determine pause in RTP packet delivery. This
results in that one can usually not determine when the last RTP results in that one can usually not determine when the last RTP
packet arrives (if it arrives) that this will be the last. That it packet arrives (if it arrives) that this will be the last. That it
was the last is something that one learns later. was the last is something that one learns later.
7.3. RTP Middlebox to RTP Middlebox 6.3. RTP Middlebox to RTP Middlebox
This relates to the transmission of simulcast streams between RTP This relates to the transmission of simulcast 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 transmitting entity is not the originating endpoint. For a
particular direction between middlebox A and B, this looks very particular direction between middlebox A and B, this looks very
similar to the originating to middlebox case on a media source basis. similar to the originating to middlebox case on a media source basis.
However, in this case there is usually multiple media sources, However, in this case there is usually multiple media sources,
originating from multiple endpoints. This can create situations originating from multiple endpoints. This can create situations
where limitations in the number of simultaneously received media where limitations in the number of simultaneously received media
skipping to change at page 26, line 5 skipping to change at page 25, line 7
but also media sources can be selected. This results in that but also media sources can be selected. This results in that
individual RTP streams can be become paused at any point and later individual RTP streams can be become paused at any point and later
being resumed based on various criteria. being resumed based on various criteria.
The MIDs used between A and B are the ones agreed between these two The MIDs used between A and B are the ones agreed between these two
identities in signalling. The RtpStreamId values will also be identities in signalling. The RtpStreamId values will also be
provided to ensure explicit information about which simulcast stream provided to ensure explicit information about which simulcast stream
they are. The RTP stream to MID and RtpStreamId associations should they are. The RTP stream to MID and RtpStreamId associations should
here be long term stable. here be long term stable.
8. Network Aspects 7. Network Aspects
Simulcast is in this memo defined as the act of sending multiple Simulcast is in this memo defined as the act of sending multiple
alternative encoded streams of the same underlying media source. alternative encoded streams of the same underlying media source.
When transmitting multiple independent streams that originate from When transmitting multiple independent streams that originate from
the same source, it could potentially be done in several different the same source, it could potentially be done in several different
ways using RTP. A general discussion on considerations for use of ways using RTP. A general discussion on considerations for use of
the different RTP multiplexing alternatives can be found in the different RTP multiplexing alternatives can be found in
Guidelines for Multiplexing in RTP Guidelines for Multiplexing in RTP
[I-D.ietf-avtcore-multiplex-guidelines]. Discussion and [I-D.ietf-avtcore-multiplex-guidelines]. Discussion and
clarification on how to handle multiple streams in an RTP session can clarification on how to handle multiple streams in an RTP session can
skipping to change at page 26, line 33 skipping to change at page 25, line 35
streams may be prioritized over higher bit-rate streams to streams may be prioritized over higher bit-rate streams to
minimize congestion or packet losses in the low bit-rate streams. minimize congestion or packet losses in the low bit-rate streams.
Thus, there is a benefit to use a simulcast solution with good QoS Thus, there is a benefit to use a simulcast solution with good QoS
support. support.
NAT/FW Traversal: Using multiple RTP sessions incurs more cost for NAT/FW Traversal: Using multiple RTP sessions incurs more cost for
NAT/FW traversal unless they can re-use the same transport flow, NAT/FW traversal unless they can re-use the same transport flow,
which can be achieved by Multiplexing Negotiation Using SDP Port which can be achieved by Multiplexing Negotiation Using SDP Port
Numbers [I-D.ietf-mmusic-sdp-bundle-negotiation]. Numbers [I-D.ietf-mmusic-sdp-bundle-negotiation].
8.1. Bitrate Adaptation 7.1. Bitrate Adaptation
Use of multiple simulcast streams can require a significant amount of Use of multiple simulcast streams can require a significant amount of
network resources. If the amount of available network resources network resources. If the amount of available network resources
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 and ordering of alternative simulcast order on the "a=simulcast" line and ordering of alternative simulcast
formats Section 6.2. Simulcast streams that have pause/resume formats Section 5.2. Simulcast streams that have pause/resume
capability and that would be given such low bitrate by the adaptation capability and that would be given such low bitrate by the adaptation
process that they are considered not really useful can be temporarily process that they are considered not really useful can be temporarily
paused until the limiting condition clears. paused until the limiting condition clears.
9. Limitation 8. Limitation
The chosen approach has a limitation that relates to the use of a The chosen approach has a limitation that relates 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 comes from sending all simulcast streams related to a media source
under the same SDP media description. 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
skipping to change at page 27, line 23 skipping to change at page 26, line 28
It is also 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. Such simulcast usage in multicast context is operate as intended. Such simulcast usage in multicast context is
out of scope for the current document and would require additional out of scope for the current document and would require additional
specification. specification.
10. IANA Considerations 9. IANA Considerations
This document requests to register a new media-level SDP attribute, This document requests to register a new media-level SDP attribute,
"simulcast", in the "att-field (media level only)" registry within "simulcast", in the "att-field (media level only)" registry within
the SDP parameters registry, according to the procedures of [RFC4566] the SDP parameters registry, according to the procedures of [RFC4566]
and [I-D.ietf-mmusic-sdp-mux-attributes]. and [I-D.ietf-mmusic-sdp-mux-attributes].
Contact name, email: IETF, contacted via mmusic@ietf.org, or a Contact name, email: IETF, contacted via mmusic@ietf.org, or a
successor address designated by IESG successor address designated by IESG
Attribute name: simulcast Attribute name: simulcast
Long-form attribute name: Simulcast stream description Long-form attribute name: Simulcast stream description
Charset dependent: No Charset dependent: No
Attribute value: sc-value; see Section 6.1 of RFC XXXX. Attribute value: sc-value; see Section 5.1 of RFC XXXX.
Purpose: Signals simulcast capability for a set of RTP streams Purpose: Signals simulcast capability for a set of RTP streams
MUX category: NORMAL MUX category: NORMAL
Note to RFC Editor: Please replace "RFC XXXX" with the assigned Note to RFC Editor: Please replace "RFC XXXX" with the assigned
number of this RFC. number of this RFC.
11. 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
irrespective of their number. There may however be a large number of irrespective of their number. There may however be a large number of
unwanted RTP streams that will impact the share of bandwidth unwanted RTP streams that will impact the share of bandwidth
skipping to change at page 28, line 30 skipping to change at page 27, line 30
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 "a=rid" and the Security considerations related to the use of "a=rid" and the
RtpStreamId SDES item is covered in [I-D.ietf-mmusic-rid] and RtpStreamId SDES item is covered in [I-D.ietf-mmusic-rid] and
[I-D.ietf-avtext-rid]. There are no additional security concerns [I-D.ietf-avtext-rid]. There are no additional security concerns
related to their use in this specification. related to their use in this specification.
12. 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.
13. Acknowledgements 12. Acknowledgements
The authors would like to thank Bernard Aboba, Thomas Belling, Roni The authors would like to thank Bernard Aboba, Thomas Belling, Roni
Even, Adam Roach, Inaki Baz Castillo, and Paul Kyzivat for the Even, Adam Roach, Inaki Baz Castillo, Paul Kyzivat, and Arun
feedback they provided during the development of this document. Arunachalam for the feedback they provided during the development of
this document.
14. References 13. References
14.1. Normative References 13.1. Normative References
[I-D.ietf-avtext-rid] [I-D.ietf-avtext-rid]
Roach, A., Nandakumar, S., and P. Thatcher, "RTP Stream Roach, A., Nandakumar, S., and P. Thatcher, "RTP Stream
Identifier Source Description (SDES)", draft-ietf-avtext- Identifier Source Description (SDES)", draft-ietf-avtext-
rid-09 (work in progress), October 2016. rid-09 (work in progress), October 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
Restrictions", draft-ietf-mmusic-rid-09 (work in Restrictions", draft-ietf-mmusic-rid-10 (work in
progress), February 2017. progress), March 2017.
[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-36 (work in progress), October 2016. negotiation-38 (work in progress), April 2017.
[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-16 Multiplexing", draft-ietf-mmusic-sdp-mux-attributes-16
(work in progress), December 2016. (work in progress), December 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>.
skipping to change at page 29, line 45 skipping to change at page 28, line 45
[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>.
[RFC7728] Burman, B., Akram, A., Even, R., and M. Westerlund, "RTP [RFC7728] Burman, B., Akram, A., Even, R., and M. Westerlund, "RTP
Stream Pause and Resume", RFC 7728, DOI 10.17487/RFC7728, Stream Pause and Resume", RFC 7728, DOI 10.17487/RFC7728,
February 2016, <http://www.rfc-editor.org/info/rfc7728>. February 2016, <http://www.rfc-editor.org/info/rfc7728>.
14.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.
[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,
skipping to change at page 32, line 5 skipping to change at page 31, line 5
[RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J., and F. [RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J., and F.
Galligan, "RTP Payload Format for VP8 Video", RFC 7741, Galligan, "RTP Payload Format for VP8 Video", RFC 7741,
DOI 10.17487/RFC7741, March 2016, DOI 10.17487/RFC7741, March 2016,
<http://www.rfc-editor.org/info/rfc7741>. <http://www.rfc-editor.org/info/rfc7741>.
[RFC8108] Lennox, J., Westerlund, M., Wu, Q., and C. Perkins, [RFC8108] 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",
RFC 8108, DOI 10.17487/RFC8108, March 2017, RFC 8108, DOI 10.17487/RFC8108, March 2017,
<http://www.rfc-editor.org/info/rfc8108>. <http://www.rfc-editor.org/info/rfc8108>.
Appendix A. Changes From Earlier Versions Appendix A. Requirements
The following requirements have to be met to support the use cases
(Section 3):
REQ-1: Identification:
REQ-1.1: It must be possible to identify a set of simulcasted RTP
streams as originating from the same media source in SDP
signaling.
REQ-1.2: An RTP endpoint must be capable of identifying the
simulcast stream a received RTP stream is associated with,
knowing the content of the SDP signalling.
REQ-2: Transport usage. The solution must work when using:
REQ-2.1: Legacy SDP with separate media transports per SDP media
description.
REQ-2.2: Bundled [I-D.ietf-mmusic-sdp-bundle-negotiation] SDP
media descriptions.
REQ-3: Capability negotiation. It must be possible that:
REQ-3.1: Sender can express capability of sending simulcast.
REQ-3.2: Receiver can express capability of receiving simulcast.
REQ-3.3: Sender can express maximum number of simulcast streams
that can be provided.
REQ-3.4: Receiver can express maximum number of simulcast streams
that can be received.
REQ-3.5: Sender can detail the characteristics of the simulcast
streams that can be provided.
REQ-3.6: Receiver can detail the characteristics of the simulcast
streams that it prefers to receive.
REQ-4: Distinguishing features. It must be possible to have
different simulcast streams use different codec parameters, as can
be expressed by SDP format values and RTP payload types.
REQ-5: Compatibility. It must be possible to use simulcast in
combination with other RTP mechanisms that generate additional RTP
streams:
REQ-5.1: RTP Retransmission [RFC4588].
REQ-5.2: RTP Forward Error Correction [RFC5109].
REQ-5.3: Related payload types such as audio Comfort Noise and/or
DTMF.
REQ-5.4: A single simulcast stream can consist of multiple RTP
streams, to support codecs where a dependent stream is
dependent on a set of encoded and dependent streams, each
potentially carried in their own RTP stream.
REQ-6: Interoperability. The solution must be possible to use in:
REQ-6.1: Interworking with non-simulcast legacy clients using a
single media source per media type.
REQ-6.2: WebRTC environment with a single media source per SDP
media description.
Appendix B. 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 -07 and -08 B.1. Modifications Between WG Version -08 and -09
o Changed SCID to rid-id, to align with ietf-draft-mmusic-rid
naming.
o Changed Overview to be based on examples and shortened it.
o 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.
o 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.
o 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.
o Moved Section 4 Requirements to become Appendix A.
o Editorial corrections and clarifications.
B.2. Modifications Between WG Version -07 and -08
o Correcting syntax of SDP examples in section 6.6.1, as found by o Correcting syntax of SDP examples in section 6.6.1, as found by
Inaki Baz Castillo. Inaki Baz Castillo.
o Changing ABNF to only define the sc-value, not the SDP attribute o Changing ABNF to only define the sc-value, not the SDP attribute
itself, as suggested by Paul Kyzivat. itself, as suggested by Paul Kyzivat.
o Changing I-D reference to newly published RFC 8108. o Changing I-D reference to newly published RFC 8108.
o Adding list of modifications between -06 and -07. o Adding list of modifications between -06 and -07.
A.2. Modifications Between WG Version -06 and -07 B.3. Modifications Between WG Version -06 and -07
o A scope clarification, as result of the discussion with Roni Even. o A scope clarification, as result of the discussion with Roni Even.
o A reformulation of the identification requirements for simulcast o A reformulation of the identification requirements for simulcast
stream. stream.
o Correcting the statement related to source specific signalling o Correcting the statement related to source specific signalling
(RFC 5576) to address Roni Even's comment. (RFC 5576) to address Roni Even's comment.
o Update of the last paragraph in Section 6.2 regarding simulcast o Update of the last paragraph in Section 6.2 regarding simulcast
stream differences as well as forbidding multiple instances of the stream differences as well as forbidding multiple instances of the
same SCID within a single a=simulcast line. same SCID within a single a=simulcast line.
o Removal of note in Section 6.4 as result of issue raised by Roni o Removal of note in Section 6.4 as result of issue raised by Roni
Even. Even.
o Use of "m=" has been changed to media description and a few other o Use of "m=" has been changed to media description and a few other
editorial improvements and clarifications. editorial improvements and clarifications.
A.3. Modifications Between WG Version -05 and -06 B.4. Modifications Between WG Version -05 and -06
o Added section on RTP Aspects o Added section on RTP Aspects
o Added a requirement (5-4) on that capability exchange must be o Added a requirement (5-4) on that capability exchange must be
capable of handling multi RTP stream cases. capable of handling multi RTP stream cases.
o Added extmap attribute also on first signalling example as it is a o Added extmap attribute also on first signalling example as it is a
recommended to use mechanism. recommended to use mechanism.
o Clarified the definition of the simulcast attribute and how o Clarified the definition of the simulcast attribute and how
simulcast streams relates to simulcast formats and SCIDs. simulcast streams relates to simulcast formats and SCIDs.
o Updated References list and moved around some references between o Updated References list and moved around some references between
informative and normative categories. informative and normative categories.
o Editorial improvements and corrections. o Editorial improvements and corrections.
A.4. Modifications Between WG Version -04 and -05 B.5. Modifications Between WG Version -04 and -05
o Aligned with recent changes in draft-ietf-mmusic-rid and draft- o Aligned with recent changes in draft-ietf-mmusic-rid and draft-
ietf-avtext-rid. ietf-avtext-rid.
o Modified the SDP offer/answer section to follow the generally o Modified the SDP offer/answer section to follow the generally
accepted structure, also adding a brief text on modifying the accepted structure, also adding a brief text on modifying the
session that is aligned with draft-ietf-mmusic-rid. session that is aligned with draft-ietf-mmusic-rid.
o Improved text around simulcast stream identification (as opposed o Improved text around simulcast stream identification (as opposed
to the simulcast stream itself) to consistently use the acronym to the simulcast stream itself) to consistently use the acronym
skipping to change at page 33, line 33 skipping to change at page 34, line 30
o Changed references for RTP-level pause/resume and VP8 payload o Changed references for RTP-level pause/resume and VP8 payload
format that are now published as RFC. format that are now published as RFC.
o Improved IANA registration text. o Improved IANA registration text.
o Removed unused reference to draft-ietf-payload-flexible-fec- o Removed unused reference to draft-ietf-payload-flexible-fec-
scheme. scheme.
o Editorial improvements and corrections. o Editorial improvements and corrections.
A.5. Modifications Between WG Version -03 and -04 B.6. 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.6. Modifications Between WG Version -02 and -03 B.7. 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.7. Modifications Between WG Version -01 and -02 B.8. 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.8. Modifications Between WG Version -00 and -01 B.9. Modifications Between WG Version -00 and -01
o No changes. Only preventing expiry. o No changes. Only preventing expiry.
A.9. Modifications Between Individual Version -00 and WG Version -00 B.10. 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
Gronlandsgatan 31 Gronlandsgatan 31
SE-164 60 Stockholm SE-164 60 Stockholm
Sweden Sweden
 End of changes. 112 change blocks. 
399 lines changed or deleted 434 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/