One document matched: draft-ietf-rtcweb-sdp-00.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2326 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2326.xml">
<!ENTITY RFC2833 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2833.xml">
<!ENTITY RFC3261 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3261.xml">
<!ENTITY RFC3264 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3264.xml">
<!ENTITY RFC3550 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3550.xml">
<!ENTITY RFC3551 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3551.xml">
<!ENTITY RFC3556 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3556.xml">
<!ENTITY RFC3605 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3605.xml">
<!ENTITY RFC3952 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3952.xml">
<!ENTITY RFC3984 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3984.xml">
<!ENTITY RFC4145 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4145.xml">
<!ENTITY RFC4566 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4566.xml">
<!ENTITY RFC4588 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4588.xml">
<!ENTITY RFC4796 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4796.xml">
<!ENTITY RFC5104 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5104.xml">
<!ENTITY RFC5245 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5245.xml">
<!ENTITY RFC5506 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5506.xml">
<!ENTITY RFC5576 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5576.xml">
<!ENTITY RFC5583 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5583.xml">
<!ENTITY RFC5761 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5761.xml">
<!ENTITY RFC5888 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5888.xml">
<!ENTITY RFC5956 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5956.xml">
<!ENTITY RFC6236 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6236.xml">
<!ENTITY RFC6464 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6464.xml">
<!ENTITY RFC6465 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.6465.xml">
<!ENTITY RFC7022 SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7022.xml">
<!ENTITY I-D.ietf-mmusic-sdp-bundle-negotiation
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-sdp-bundle-negotiation.xml">
<!ENTITY I-D.ietf-mmusic-sdp-simulcast
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-sdp-simulcast.xml">
<!ENTITY I-D.ietf-payload-rtp-opus
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-payload-rtp-opus.xml">
<!ENTITY I-D.ietf-payload-vp8
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-payload-vp8.xml">
<!ENTITY I-D.ietf-rtcweb-jsep
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-rtcweb-jsep.xml">
<!ENTITY I-D.ietf-mmusic-msid
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-msid.xml">
<!ENTITY I-D.ietf-mmusic-trickle-ice
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-trickle-ice.xml">
<!ENTITY I-D.ietf-mmusic-sctp-sdp
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-mmusic-sctp-sdp.xml">
<!ENTITY I-D.ietf-rtcweb-data-channel
SYSTEM "http://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-rtcweb-data-channel.xml">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc iprnotified="yes" ?>
<?rfc strict="no" ?>
<?rfc compact="yes" ?>
<?rfc sortrefs="no" ?>
<?rfc colonspace="yes" ?>
<?rfc rfcedstyle="no" ?>
<?rfc tocdepth="4"?>
<rfc category="info" docName="draft-ietf-rtcweb-sdp-00"
ipr="trust200902">
<front>
<title abbrev="SDP4WebRTC">SDP for the WebRTC</title>
<author fullname="Suhas Nandakumar" initials="S." surname="Nandakumar">
<organization>Cisco</organization>
<address>
<postal>
<street>170 West Tasman Drive</street>
<city>San Jose</city>
<region>CA</region>
<code>95134</code>
<country>USA</country>
</postal>
<email>snandaku@cisco.com</email>
</address>
</author>
<author fullname="Cullen Jennings" initials="C." surname="Jennings">
<organization>Cisco</organization>
<address>
<postal>
<street>170 West Tasman Drive</street>
<city>San Jose</city>
<region>CA</region>
<code>95134</code>
<country>USA</country>
</postal>
<phone>+1 408 421-9990</phone>
<email>fluffy@cisco.com</email>
</address>
</author>
<date day="17" month="September" year="2015" />
<area>RAI</area>
<abstract>
<t>The Web Real-Time Communication <xref target="WebRTC"></xref>
working group is charged to provide protocol support for direct
interactive rich communication using audio, video and data between
two peers' web browsers. With in the WebRTC framework,
Session Description protocol (SDP) <xref target="RFC4566"></xref> is
used for negotiating session capabilities between the peers. Such a
negotiation happens based on the SDP Offer/Answer exchange mechanism
described in <xref target="RFC3264"></xref>.</t>
<t> This document provides an informational reference in describing
the role of SDP and the Offer/Answer exchange mechanism for the most
common WebRTC use-cases.</t>
<t hangText="Note"> This SDP examples provided in this document is
still a work in progress, but it aims to align closest to the evolving
standards work.</t>
</abstract>
</front>
<middle>
<section title="Introduction">
<t>Javascript Session Exchange Protocol(JSEP)
<xref target="I-D.ietf-rtcweb-jsep"></xref> specifies a generic protocol
needed to generate <xref target="RFC3264"></xref> Offers and Answers
negotiated between the WebRTC peers for setting up, updating and tearing
down a WebRTC session. For this purpose, SDP is used to construct
<xref target="RFC3264"></xref> Offers/Answers for describing (media and
non-media) streams as appropriate for the recipients of the session
description to participate in the session.</t>
<t>The remainder of this document is organized as follows: Sections
3 and 4 provides an overview of SDP and the Offer/Answer exchange
mechanism. Section 5 provides sample SDP generated for the most common
WebRTC use-cases.</t>
</section>
<section title="Terminology">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT",
"RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
interpreted as described in <xref target="RFC2119"></xref>.</t>
</section>
<section title="SDP and the WebRTC">
<t> The purpose of this section is to provide a general overview of SDP and
its components. For a more in-depth understanding, the readers are
advised to refer to <xref target="RFC4566"></xref>.</t>
<t>The Session Description Protocol (SDP) <xref target="RFC4566"></xref>
describes multimedia sessions, which can contain audio, video, whiteboard,
fax, modem, and other streams. SDP provides a general purpose, standard
representation to describe various aspects of multimedia session such as
media capabilities, transport addresses and related metadata in a
transport agnostic manner, for the purposes of session announcement,
session invitation and parameter negotiation.</t>
<t>As of today SDP is widely used in the context of Session Initiation
Protocol <xref target="RFC3261"></xref>, Real-time Transport Protocol
<xref target="RFC3550"></xref> and Real-time Streaming Protocol
applications <xref target="RFC2326"></xref>.</t>
<t>Below figure introduces high-level breakup of SDP into components that
semantically describe a multimedia session, in our case, a WebRTC session
<xref target="WebRTC"></xref>. It by no means captures everything about
SDP and hence, should be used for informational purposes only.</t>
<figure title="Semantic Components of SDP" anchor="fig.sdp.semantics">
<artwork><![CDATA[
+---------------------+
| v= |
+---------------------+
+---------------------+ +---------------------+
==== | Session Metadata | ===== | o= |
| +---------------------+ +----------------------
| +---------------------+
| | t= |
| +---------------------+
|
|
| +---------------------+
| | c= |
| +---------------------+
| +---------------------+
==== | Network Description | =====
| +---------------------+
| +---------------------+
| | a=candidate |
| +---------------------+
|
|
| +---------------------+
| | m= |
| +---------------------+
| +---------------------+ +---------------------+
==== | Stream Description | ===== | a=rtpmap |
| +---------------------+ +----------------------
| +---------------------+
| | a=fmtp |
| +---------------------+
| +---------------------+
| | a=sendrecv.. |
| +---------------------+
+---------------+
| SEMANTIC |
| COMPONENTS OF |
| SDP |
+---------------+
| +---------------------+
| | a=crypto |
| +---------------------+
| +---------------------+ +---------------------+
==== |Security Descriptions| =====| a=ice-frag |
| +---------------------+ +----------------------
| +---------------------+
| | a=ice-pwd |
| +---------------------+
| +---------------------+
| | a=fingerprint |
| +---------------------+
|
|
|
| +---------------------+
| | a=rtcp-fb |
| +---------------------+
| +---------------------+ +---------------------+
==== | Qos,Grouping | | |
| Descriptions | =====| a=group |
+---------------------+ +----------------------
+---------------------+
| a=rtcpmux |
+---------------------+
]]></artwork>
</figure>
<t><xref target="WebRTC"></xref> proposes JavaScript application to
fully specify and control the signaling plane of a multimedia session as
described in the JSEP specification <xref target="I-D.ietf-rtcweb-jsep"></xref>. JSEP
provides mechanisms to create session characterization and media
definition information to conduct the session based on SDP exchanges.</t>
<t>In this context, SDP serves two purposes:
<list style="numbers">
<t>Provide grammatical structure syntactically.</t>
<t>Semantically convey participant's intention and capabilities
required to successfully negotiate a session.</t>
</list>
</t>
</section>
<section title="Offer/Answer and the WebRTC">
<t>This section introduces SDP Offer/Answer Exchange mechanism mandated by
WebRTC for negotiating session capabilities while setting up, updating and
tearing down a WebRTC session. This section is intentionally brief in
nature and interested readers are recommended to refer
<xref target="RFC3264"></xref> for specific details on the protocol
operation.</t>
<t>The Offer/Answer <xref target="RFC3264"></xref> model specifies rule for
the bilateral exchange of Session Description Protocol (SDP) messages for
creation of multimedia streams. It defines protocol with involved
participants exchanging desired session characteristics from each others
perspective constructed as SDP to negotiate the session between them.</t>
<t>In the most basic form,the protocol operation begins by one of the
participants sending an initial SDP Offer describing its intent to start a
multimedia communication session. The participant receiving the offer MAY
generate an SDP Answer accepting the offer or it MAY reject the offer. If
the session is accepted the Offer/Answer model guarantees a common view of
the multimedia session between the participants.</t>
<t>At any time, either participant MAY generate a new SDP offer that
updates the session in progress.</t>
<t>With in the context of WebRTC, the Offer/Answer model defines the
state-machinery for WebRTC peers to negotiate session descriptions between
them during the initial setup stages as well as for eventual session updates.
Javascript Session Establishment Protocol specification
<xref target="I-D.ietf-rtcweb-jsep"></xref> for WebRTC provides the mechanism for
generating <xref target="RFC3264"></xref> SDP Offers and Answers in order
for both sides of the session to agree upon details such as list of media
formats to be sent/received, bandwidth information, crypto parameters,
transport parameters, for example.</t>
</section>
<section title="WebRTC Session Description Examples">
<t>A typical web based real-time multimedia communication session can be
characterized as below:</t>
<t>
<list style="symbols">
<t> It has zero or more Audio only, Video only or Audio/Video RTP
Sessions,</t>
<t> MAY contain zero or more non-media data sessions,</t>
<t> All the sessions are secured with DTLS-SRTP,</t>
<t> Supports NAT traversal using ICE mechanism,</t>
<t> Provides RTCP based feedback mechanisms, </t>
<t> Sessions can be over IPv4-only, IPv6-only, dual-stack based
clients.</t>
</list>
</t>
<section title="Some Conventions">
<t>
The examples given in this document follow the conventions listed
below:
</t>
<t>
<list style="symbols">
<t>In all the examples, Alice and Bob are assumed to be the WebRTC
peers.</t>
<t><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"/> support for
multiplexing several media streams over a single underlying transport is
assumed by default unless explicitly specified otherwise.</t>
<t>Call-flow diagrams that accompany the use-cases capture only the
prominent aspects of the system behavior and intentionally is not
detailed to improve readability.</t>
<t>Eventhough the call-flow diagrams shows SDP being exchanged
between the parties, it doesn't represent the only way an
WebRTC setup is expected to work. Other approaches may involve WebRTC
applications to exchange the media setup information via non-SDP
mechanisms as long as they confirm to the
<xref target="I-D.ietf-rtcweb-jsep"></xref> API specification.</t>
<t>The SDP examples deviate from actual on-the-wire SDP notation in
several ways. This is done to facilitate readability and to conform to
the restrictions imposed by the RFC formatting rules.
<list style="symbols">
<t>
Any SDP line that is indented (compared to the initial line in the
SDP block) is a continuation of the preceding line. The line
break and indent are to be interpreted as a single space
character.
</t>
<t>
Empty lines in any SDP example are inserted to make functional
divisions in the SDP clearer, and are not actually part of the
SDP syntax.
</t>
<t>
Excepting the above two conventions, line endings are to be
interpreted as <CR><LF> pairs (that is, an ASCII 13 followed
by an ASCII 10).
</t>
</list>
</t>
<t>Against each SDP line, pointers to the appropriate RFCs are provided
for further informational reference. Also an attempt has been made to
provide explanatory notes to enable better understanding of the SDP
usage, wherever appropriate.</t>
<t>Following SDP details are common across all the use-cases defined in
this document unless mentioned otherwise.
<list>
<t> DTLS fingerprint for SRTP (a=fingerprint) </t>
<t> RTP/RTCP Multiplexing (a=rtcp-mux) </t>
<t> RTCP Feedback support (a=rtcp-fb) </t>
<t> Host and server-reflexive candidate lines (a=candidate) </t>
<t> SRTP Setup framework parameters (a=setup) </t>
<t> RTCP attribute (a=rtcp) </t>
<t> RTP header extension indicating audio-levels from client to the
mixer</t>
</list>
For more details, readers are recommended to refer to <xref target="I-D.ietf-rtcweb-jsep"></xref>
specification.</t>
<t>The term "Session" is used rather loosely in this document to refer to
either a "Communication Session" or a "RTP Session" or a "RTP Stream"
depending on the context.</t>
<t>Payload type 109 is usually used for OPUS, 0 for PCMU, 8 for PCMA,
99 for H.264 and 120 for VP8 in most of the examples to maintain
uniformity.</t>
<t>In the actual use the values that represent SSRCs, ICE candidate
foundations, WebRTC Mediastream and MediaStreamTrack Ids shall be much
larger and random than the ones shown in the examples.</t>
</list>
<list style="hanging">
<t>[OPEN ISSUE-1]: SDP Examples for Data Channel, Simulcast, SVC are
still being discussed and doesn't represent the final solution.</t>
</list>
</t>
</section>
<section title="Basic Examples">
<section anchor="sec.2way.audio" title="Audio Only Session">
<t>This common scenario shows SDP for secure two-way audio session
with Alice offering Opus, PCMU, PCMA and Bob accepting all the
offered audio codecs.</t>
<figure>
<artwork alt="Successful-Session 2 Way Audio SAVPF"
type="call-flow" align="left"><![CDATA[
2-Way Audio Only Session
Alice Bob
| |
| |
| Offer(Audio:Opus,PCMU,PCMA) |
|------------------------------------>|
| |
| |
| Answer(Audio:Opus,PCMU,PCMA) |
|<------------------------------------|
| |
| |
|Two-way Opus Audio (preferred-codec) |
|.....................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="t_2way-audio_1" title="5.2.1 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Alice can perform RTP/RTCP Muxing </c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref>
- Opus Codec 48khz, 2 channels</c>
<c>a=ptime:60</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref>
- Opus packetization of 60ms</c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref> PCMU Audio Codec</c>
<c>a=rtpmap:8 PCMA/8000</c>
<c><xref target="RFC3551"></xref> PCMA Audio Codec</c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref> Alice supports RTP header
extension to indicate audio levels</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Alice can send and recv audio</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> - ICE user fragment</c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref> - ICE password</c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> - RTP Host Candidate</c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> - RTCP Host Candidate</c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> - RTP Server Reflexive
ICE Candidate</c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> - RTCP Server Reflexive
Candidate</c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> - Indicates NACK RTCP feedback
support</c>
<c>a=ssrc:12345 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref> - Alice intends to use reduced
size RTCP for this session</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="t_2way-audio_2" title="5.2.1 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109 0 8</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref> Opus Codec</c>
<c>a=ptime:60</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref> Packetization
of 60ms</c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref> PCMU Audio Codec</c>
<c>a=rtpmap:8 PCMA/8000</c>
<c><xref target="RFC3551"></xref> PCMA Audio Codec</c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref> Bob supports audio level RTP
header extension as well</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Bob can send and recv audio</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Bob can perform RTP/RTCP Muxing
on port 49203</c>
<c>a=fingerprint:sha-1 c9:c7:70:9d:1f:66:79:a8:07:99:41:49:83:4a:
97:0e:1f:ef:6d:f7</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=ice-ufrag:05067423</c>
<c><xref target="RFC5245"></xref> - ICE user fragment</c>
<c>a=ice-pwd:1747d1ee3474a28a397a4c3f3af08a068</c>
<c><xref target="RFC5245"></xref> - ICE password parameter</c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> - RTP/RTCP Host ICE Candidate</c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 60654 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> - RTP/RTCP Server Reflexive ICE
Candidate</c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> - Indicates NACK RTCP feedback
support</c>
<c>a=ssrc:54321 cname:NWs1ao1HmN4Xa5/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref> - Bob intends to use reduced
size RTCP for this session</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
</section>
<section anchor="sec.2way.av"
title="Audio/Video Session">
<t>Alice and Bob establish a two-way audio and video session with
Opus as the audio codec and H.264 as the video codec.</t>
<figure>
<artwork alt="Successful-Session 2 Way SAVPF">
<![CDATA[
2-Way Audio,Video Session
Alice Bob
| |
| |
|Offer(Audio:Opus,PCMU,PCMA Video:H.264,VP8) |
|------------------------------------------->|
| |
| |
| Answer(Audio:Opus,Video:H.264) |
|<-------------------------------------------|
| |
| |
| Two-way Opus Audio, H.264 Video |
|............................................|
| |
]]></artwork>
</figure>
<texttable anchor="t_2way-av_1" title="5.2.2 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID
(ta) </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Alice can perform RTP/RTCP Muxing
</c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref>
- Opus Codec 48khz, 2 channels</c>
<c>a=ptime:60</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref>
- Opus packetization of 60ms</c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref> PCMU Audio Codec</c>
<c>a=rtpmap:8 PCMA/8000</c>
<c><xref target="RFC3551"></xref> PCMA Audio Codec</c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Alice can send and recv audio</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> - ICE user fragment</c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref> - ICE password parameter</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> - RTP Host Candidate</c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> - RTCP Host Candidate </c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> - RTP Server Reflexive ICE Candidate</c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> - RTCP Server Reflexive Candidate.</c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> - Indicates NACK RTCP
feedback support</c>
<c>a=ssrc:12345 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref> - Alice intends to use reduced
size RTCP for this session</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=video 54609 UDP/TLS/RTP/SAVPF 99 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID
(tb) </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Alice can perform RTP/RTCP
Muxing</c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtpmap:99 H264/90000</c>
<c><xref target="RFC3984"></xref> - H.264 Video Codec</c>
<c>a=fmtp:99 profile-level-id=4d0028;packetization-mode=1</c>
<c><xref target="RFC3984"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref> - VP8 video codec</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Alice can send and recv video</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> - ICE user fragment</c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref> - ICE password parameter</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> - RTP Host ICE Candidate</c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> - RTCP Host Candidate </c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> - RTP Server Reflexive ICE Candidate</c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> - RTCP Server Reflexive
Candidate</c>
<c>a=rtcp-fb:99 nack</c>
<c><xref target="RFC5104"></xref> - Indicates NACK RTCP feedback
support</c>
<c>a=rtcp-fb:99 nack pli</c>
<c><xref target="RFC5104"></xref> - Indicates support for Picture
loss Indication and NACK</c>
<c>a=rtcp-fb:99 ccm fir</c>
<c><xref target="RFC5104"></xref> - Full Intra Frame Request-Codec
Control Message support</c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> - Indicates NACK RTCP feedback
support</c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> - Indicates support for Picture
loss Indication and NACK</c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref> - Full Intra Frame Request-Codec
Control Message support</c>
<c>a=ssrc:1366781083 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref> - Alice intends to use
reduced size RTCP for this session</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="t2way-av_2" title="5.2.2 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Bob can perform RTP/RTCP Muxing</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref> - Bob accepts
only Opus Codec</c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:60</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Bob can send and recv audio</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake in
parallel</c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> - ICE username frag</c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> - ICE password</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 3618095783 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> - RTP/RTCP Host ICE Candidate</c>
<c>a=candidate:1 1 UDP 565689203 98.248.92.77 60065 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> - RTP/RTCP Server Reflexive ICE
Candidate</c>
<c>a=ssrc:1366788312 cname:1f0fcgEocUG/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref> - Bob intends to use reduced
size RTCP for this session</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 99</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID
(tb) </c>
<c>a=rtpmap:99 H264/90000</c>
<c><xref target="RFC3984"></xref> - Bob accepts H.264 Video Codec.</c>
<c>a=fmtp:99 profile-level-id=4d0028;packetization-mode=1</c>
<c><xref target="RFC3984"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Bob can perform RTP/RTCP
Muxing</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Bob can send and recv video</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> - ICE username frag</c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> - ICE password</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> - Host ICE Candidate for
Opus Stream</c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 60065 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> - Server Reflexive ICE Candidate
for the above host candidate</c>
<c><xref target="RFC5245"></xref> - Server Reflexive Candidate for
the Second Host Candidate</c>
<c>a=rtcp-fb:99 nack </c>
<c><xref target="RFC5104"></xref> - Indicates support for NACK
based RTCP feedback</c>
<c>a=rtcp-fb:99 nack pli</c>
<c><xref target="RFC5104"></xref> - Indicates support for
Picture loss Indication and NACK</c>
<c>a=rtcp-fb:99 ccm fir</c>
<c><xref target="RFC5104"></xref> - Full Intra Frame Request-
Codec Control Message support</c>
<c>a=ssrc:3229706345 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref> - Bob intends to use reduced
size RTCP for this session</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
</section>
<section
title="Data Only Session">
<t>This scenario illustrates SDP negotiated to setup a data-only
session based on SCTP Data Channel, thus enabling use-cases such
as file-transfer for example.</t>
<figure>
<artwork alt="Successful-Data Only Session">
<![CDATA[
2-Way DataChannel Session
Alice Bob
| |
| |
| |
| Offer(DataChannel) |
|-------------------------------->|
| |
| |
| Answer(DataChannel) |
|<--------------------------------|
| |
| |
| Two-way SCTP based DataChannel |
|.................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="t2way-dc_1" title="5.2.3 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=group:BUNDLE data</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> - Session Level ICE parameter</c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref> - Session Level ICE parameter</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - Session DTLS Fingerprint for
SRTP</c>
<c>m=application 56966 DTLS/SCTP 5000</c>
<c><xref target="I-D.ietf-rtcweb-data-channel"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:data</c>
<c><xref target="RFC5888"></xref></c>
<c>a=sctpmap:5000 webrtc-DataChannel streams=16;label="channel 1";
subprotocol="chat";</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Alice can send and recv non-media
data</c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 56966 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 24.23.204.141 56966 typ srflx
raddr 192.168.1.7 rport 56966</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="t_2way-dc_2" title="5.2.3 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=group:BUNDLE data</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=application 55700 DTLS/SCTP 5000</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref> </c>
<c>c=IN IP4 98.248.92.771</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:data</c>
<c><xref target="RFC5888"></xref></c>
<c>a=sctpmap:5000 webrtc-DataChannel:5000 streams=1;label="channel 1"
;subprotocol="chat";</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Bob can send and recv
non-media data</c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> - Session Level ICE username frag</c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> - Session Level ICE password</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - Session DTLS Fingerprint for
SRTP</c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 55700 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 55700 typ srflx raddr
192.168.1.7 rport 55700</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
</section>
<section anchor="audio_on_hold"
title="Audio Call On Hold">
<t>Alice calls Bob, but when Bob answers he places Alice on
hold by setting the SDP direction attribute to a=sendonly in the
Answer.</t>
<figure>
<artwork alt="Audio On Hold">
<![CDATA[
Audio On Hold
Alice Bob
| |
| |
| Offer(Audio:Opus) |
|-------------------------------->|
| |
| |
| Answer(Audio:Opus,a=sendonly) |
|<--------------------------------|
| |
| |
| One-way Opus Audio |
|.................................|
| |
|
]]></artwork>
</figure>
<texttable anchor="t_audio_on_hold_1" title="5.2.4 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Alice can perform RTP/RTCP
Muxing</c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref>
- Opus Codec 48khz, 2 channels</c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref>
- Opus packetization of 20ms</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Alice can send and recv audio</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> - ICE user fragment </c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref> - ICE password</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> - Indicates NACK RTCP feedback
support</c>
<c>a=ssrc:3229706345 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="t_audio_on_hold_2" title="5.2.4 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref> - Bob accepts
Opus Codec</c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref> - Bob puts call On Hold</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Bob can perform RTP/RTCP Muxing</c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> - ICE username frag</c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> - ICE password</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:1366781083 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
</section>
<section anchor="sec.audio.dtmf"
title="Audio with DTMF Session">
<t>In this example, Alice wishes to establish two separate
audio streams, one for normal audio and the other for
telephone-events. Alice offers first audio stream with three
codecs and the other with <xref target="RFC2833"/> tones (for DTMF).
Bob accepts both the audio streams by choosing Opus as the
audio codec and telephone-event for the other stream.</t>
<figure>
<artwork alt="Audio With DTMF">
<![CDATA[
Audio Session with DTMF
Alice Bob
| |
| |
| |
| Offer(Audio:Opus,PCMU,PCMA Audio:telephone-event)|
|-------------------------------------------------->|
| |
| |
| Answer(Audio:Opus, Audio:telephone-event) |
|<--------------------------------------------------|
| |
| |
| Opus audio stream and telephone-event stream |
|...................................................|
| |
]]></artwork>
</figure>
<texttable anchor="t_audio_dtmf_1" title="5.2.5 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio dtmf</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Alice can perform RTP/RTCP
Muxing</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref>
- Opus Codec 48khz, 2 channels</c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref>
- Opus packetization of 20ms</c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref> PCMU Audio Codec</c>
<c>a=rtpmap:8 PCMA/8000</c>
<c><xref target="RFC3551"></xref> PCMA Audio Codec</c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Alice can send and recv audio</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> - ICE user fragment</c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref> - ICE password parameter</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> - Indicates NACK RTCP feedback
support</c>
<c>a=ssrc:3229706345 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 126</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:dtmf</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtpmap:126 telephone-event/8000</c>
<c><xref target="RFC2833"></xref></c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref> - Alice can send DTMF Events</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> - ICE user fragment</c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref> - ICE password parameter</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - DTLS Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> - Indicates NACK RTCP feedback
support</c>
<c>a=ssrc:9032206345 cname:L/N9lk1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="t_audio_dtmf_2" title="5.2.5 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio dtmf</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID
(ta) </c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref> - Bob accepts
Opus Codec</c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Bob can send and receive Opus
audio</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake in
parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Bob can perform RTP/RTCP Muxing
on port 49203</c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> - ICE username frag</c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> - ICE password</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ssrc:0634322975 cname:Q/o1HmN4XNWs1aa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref> - Alice intends to use reduced size
RTCP for this session</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 126</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:dtmf</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack
ID (tb) </c>
<c>a=rtpmap:126 telephone-event/8000</c>
<c><xref target="RFC2833"></xref></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref> - Alice can receive DTMF events</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Alice can perform RTP/RTCP Muxing
on port 54690</c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> - ICE username frag</c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> - ICE password</c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> - Fingerprint for SRTP</c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:6345903220 cname:L/k1aN9lo1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref> - Alice intends to use reduced
size RTCP for this session</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
</section>
<section anchor="sec.av.oneway"
title="One Way Audio/Video Session - Document Camera">
<t>In this scenario Alice and Bob engage in a 1 way audio and video
session with Bob receiving Alice's audio and her presentation
slides as video stream.</t>
<figure>
<artwork alt="One Way Audio Video Session">
<![CDATA[
One Way Audio & Video Session - Document Camera
Alice Bob
| |
| |
| |
| Alice Offers sendonly audio and video streams. |
| The video stream corresponds to her presentation |
| |
| Offer(Audio:Opus, Video: VP8) |
|----------------------------------------------------->|
| |
| |
| (Audio:Opus, Video: VP8) |
|<-----------------------------------------------------|
| |
| |
| One-way Opus Audio, VP8 Video |
|......................................................|
| Bob can hear Alice and see her presentation slides.|
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_av_oneway_1" title="5.2.6 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref> - Send only audio stream</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 24.23.204.141 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2122194687 24.23.204.141 54609 typ host</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:6345903220 cname:L/k1aN9lo1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=video 54609 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=content:slides</c>
<c><xref target="RFC4796"></xref> -Alice's presentation video stream</c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref> - Send only video stream</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 24.23.204.141 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 24.23.204.141 54609 typ host</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:3429951804 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="table_av_oneway_2" title="5.2.6 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref> - Receive only audio stream</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 98.248.92.77 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ssrc:9513429804 cname:Q/o1HmNWs1aN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=content:slides</c>
<c><xref target="RFC4796"></xref></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref> - Receive Only Alice's
presentation stream</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 98.248.92.77 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ssrc:1366781083 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
</section>
<section anchor="sec.successful.2way.bundle"
title="Audio, Video Session with BUNDLE Support Unknown">
<t>In this example, since Alice is unsure of the Bob's support of
the BUNDLE framework, following 3 step procedures are performed in
order to negotiate and setup a BUNDLE Address for the session
<list style="symbols">
<t>An SDP Offer, in which the Alice assigns unique addresses to
each "m=" line in the BUNDLE group, and requests the Answerer to
select the Offerer's BUNDLE address. </t>
<t>An SDP Answer, in which the Bob indicates its support for BUNDLE,
and assigns its own BUNDLE address for the BUNDLED m= lines. </t>
<t> A subsequent SDP Offer from Alice, which is used to perform
BUNDLE Address Synchronization (BAS).</t>
</list>
Once the Offer/Answer exchange completes, both Alice and Bob
each end up using single RTP Session for both the Media Streams.</t>
<figure>
<artwork alt="Successful-Session 2 Way BUNDLE">
<![CDATA[
Two-Way Secure Audio,Video with BUNDLE support unknown
Alice Bob
| |
| |
| Alice offers BUNDLE support with unique address |
| for the audio and video m-line |
| |
| |
| Offer(Audio:Opus Video:VP8) |
|----------------------------------------------------->|
| |Bob
| |supports
| |BUNDLE
| Answer(Audio:Opus Video:VP8) |
|<-----------------------------------------------------|
| |
| |Bob uses
| |identical
| |addresses
| |
| Updated Offer for Bundle Address Synchronization. |
|----------------------------------------------------->|
| |
| |
| Answer (Bob accepts the updated offer) |
|<-----------------------------------------------------|
| |
| |
| 2 Way Call with Audio and Video Multiplexed |
|......................................................|
| |
]]></artwork>
</figure>
<texttable anchor="table_2waybundle_1" title="5.2.7 SDP Offer w/BUNDLE">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref> Audio m=line part of BUNDLE group
with a unique port number</c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ssrc:11111 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=video 62537 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref> Video m=line part of the
Bundle group with a unique port number</c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=rtcp:62537 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref> - Port for RTCP data</c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=ssrc:22222 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:6550074c</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:74af08a068a28a397a4c3f31747d1ee34</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 1f:ef:6d:f7:c9:c7:70:9d:1f:66:99:41:49:83:
4a:97:0e79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 62537 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 2122194687 192.168.1.4 62537 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 62537 typ srflx
raddr 192.168.1.4 rport 62537</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 62537 typ srflx
raddr 192.168.1.4 rport 62537</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="table_2waybundle_2"
title="5.2.7 SDP Answer w/BUNDLE">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Bob supports BUNDLE semantics.</c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta)
</c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref> Audio m=line part of the
BUNDLE group</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:33333 cname:Q/1HmN4Xa5NWs1ao</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref> Video m=line part of the
BUNDLE group with the port from audio line repeated </c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb)
</c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:44444 cname:Q/2AqlmN4Xa5NWs</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:85bc300d</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:bd2de4e9991c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 41:49:83:4a:99:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="table_2waybundle_3" title="5.2.7 SDP Offer for BAS">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref> - Port number finalized as
Bundle Address.</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=ssrc:11111 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=video 54609 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref > </c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:22222 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
</section>
<!-- COMMENTING THIS EXAMPLE since we made BUNDLE uniform across all the examples.
<section anchor="sec.successful-2way-bundle-one-exchange"
title="Audio, Video w/BUNDLE Support Known">
<t>
This use-case is a successful audio and video stream multiplexing scenario,
with Alice and Bob aware of each others support for SDP BUNDLE framework
<xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"/>.
</t>
<figure>
<artwork alt="Successful-Session 2 Way BUNDLE Support Known"
src="2waybundleknown.svg"><![CDATA[
title 2-Way Secure Audio, Video with BUNDLE support Known
Alice->Bob: Offer(Audio:Opus Video:VP8)
note right of Alice
Alice offers BUNDLE support with identical address across m-lines.
end note
Bob->Alice: Answer(Audio:Opus Video:VP8) indicating its support for BUNDLE
note left of Bob
Bob uses identical addresses across the m=lines
end note
Alice <-> Bob: 2Way Call with Audio and Video Multiplexed
]]></artwork>
</figure>
<texttable anchor="table_2waybundleknown_1" title="5.3.2 SDP Offer w/BUNDLE">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics.</c>
<c>m=audio 10000 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref> - Audio m=line part of BUNDLE group</c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before Answer arrives</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:11111 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 10000 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 10000 typ srflx raddr 192.168.1.4 rport 10000</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 10000 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref> - Video m=line with Bundle address same as the audio m=line</c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before Answer arrives</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:22222 cname:Q/1HmN4Xa5NWs1ao</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 10000 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 10000 typ srflx raddr 192.168.1.4 rport 10000</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_2waybundleknown_2" title="5.3.2 SDP Answer w/BUNDLE">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref> - Bob supports
BUNDLE semantics.</c>
<c>m=audio 20000 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref> - Audio m=line part of the BUNDLE group</c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake in parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:33333 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 20000 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 20000 typ srflx raddr 192.168.1.7 rport 20000</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 20000 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref> - Video m=line with Bundle address
same as the audio m=line </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref> </c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake in parallel</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:44444 cname:1f0fcgEocUG/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 20000 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 20000 typ srflx raddr 192.168.1.7 rport 20000</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
-->
<section anchor="avd-2way"
title="Audio, Video and Data Session">
<t>This example shows SDP for negotiating a session with Audio,
Video and data streams between Alice and Bob with BUNDLE support
known.</t>
<figure>
<artwork alt="Successful-Session 2 Way SAVPF">
<![CDATA[
Audio,Video,Data with BUNDLE support known
Alice Bob
| |
| |
|Alice indicates BUNDLE support with |
|identical address across all the m=lines |
| |
| |
| Offer(Audio:Opus Video:VP8 Data) |
|------------------------------------------->|
| |Bob does
| |the same
| Answer(Audio:Opus,Video:VP8 Data) |
|<-------------------------------------------|
| |
| |
| |
| Two-way Audio,Video, Data multiplexed |
|............................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_avd-2way_1" title="5.2.8 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> </c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video data</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref> </c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ssrc:11111 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=video 54609 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> </c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:22222 cname:Q/aoNWs11HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=application 54609 DTLS/SCTP 5000</c>
<c><xref target="I-D.ietf-rtcweb-data-channel"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:data</c>
<c><xref target="RFC5888"></xref></c>
<c>a=sctpmap:5000 webrtc-DataChannel streams=1;label="channel 1";
subprotocol="chat";</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
</texttable>
<texttable anchor="table_avd-2way_2" title="5.2.8 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video data</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref> </c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref>
Bob's trickle support support is indicated at the session level</c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> </c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> </c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:33333 cname:L/aoNWs11HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:44444 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=application 49203 DTLS/SCTP 5000</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref> </c>
<c>c=IN IP4 98.248.92.771</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:data</c>
<c><xref target="RFC5888"></xref></c>
<c>a=sctpmap:5000 webrtc-DataChannel streams=16;label="channel 1";
subprotocol="chat";</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
</texttable>
</section>
<!--
<section anchor="sec.successful-session-remove-datachannel"
title="Secure Two-way Audio,Video,Data and remove data stream">
<t>
This scenario builds upon from the usecase in the section 5.1.7
It extends by Alice removing data-stream once the session is in progress.
</t>
<t hangText="Note">
There is an ongoing discussion with in the working group to allow addition
and deletion of streams using partial Offer/Answer exchanges based on
m=lines. Once a final decision is reached, the following example shall be
updated to reflect the same.
</t>
<figure>
<artwork alt="Successful-Session Remove Data"
src="avd-d.svg"><![CDATA[
title WebRTC Session (Audio,Video,Datachannel) - Drop Datachannel
note right of Alice
Alice & Bob are in a two-way audio,video and datachannel session.
Alice decides to stop the datachannel stream
end note
Alice->Bob: Offer(Audio:Opus Video:VP8, Application: Drop)
Bob->Alice: Answer(Audio:Opus Video:VP8, Application:Drop)
Alice->Bob: Two-way Opus Audio and VP8 Video
]]></artwork>
</figure>
<t>
As a precondition, A Two-Way Audio,Video and Data Session is already setup.
</t>
<texttable anchor="table_avd-d_1" title="5.1.8 SDP Updated Offer w/DataChannel Drop">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=1</c>
<c><xref target="RFC4566"></xref> Incremented version to indicate the update</c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 0 109 98</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtpmap:98 iLBC/8000
a=fmtp:98 mode=20</c>
<c><xref target="RFC3952"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>m=video 62537 UDP/TLS/RTP/SAVPF 99 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:99 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:99 profile-level-id=4d0028;packetization-mode=1</c>
<c><xref target="RFC3984"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 62537 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 24.23.204.141 62537 typ srflx raddr 192.168.1.4 rport 62537</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 2113667326 192.168.1.4 54721 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 54721 typ srflx raddr 192.168.1.4 rport 54721</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:99 nack pli</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:99 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>m=application 0 DTLS/SCTP 5000</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref> - Port 0 indicates dropping data stream </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=sctmap:5000 webrtc-DataChannel 1</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=webrtc-DataChannel:5000 stream=1;label="channel 1";subprotocol="chat";</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
</texttable>
<texttable anchor="table_avd-d_2" title="5.1.8 SDP Updated Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=1</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 49203 typ srflx raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>m=video 63130 UDP/TLS/RTP/SAVPF 99</c>
<c><xref target="RFC4566"></xref> </c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>c=IN IP4 98.248.92.771</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:99 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:99 profile-level-id=4d0028;packetization-mode=1</c>
<c><xref target="RFC3984"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 63130 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 63130 typ srflx raddr 192.168.1.7 rport 63130</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 56607 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 56607 typ srflx raddr 192.168.1.7 rport 56607</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:99 nack pli</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:99 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>m=application 0 DTLS/SCTP 5000</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref> Bob accepts dropping the data stream </c>
<c>c=IN IP4 98.248.92.771</c>
<c><xref target="RFC4566"></xref></c>
<c>a=sctpmap:5000 webrtc-DataChannel 1</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=webrtc-DataChannel:5000 stream=1;label="channel 1";subprotocol="chat";</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
</texttable>
</section>
-->
<section anchor="successful-2way-bundle-unsupported"
title="Audio, Video Session with BUNDLE Unsupported">
<t>This use-case illustrates SDP Offer/Answer exchange where the
far-end (Bob) either doesn't support media bundling or doesn't want
to group m=lines over a single 5-tuple.</t>
<t> On successful Offer/Answer exchange, Alice and Bob each end up
using unique 5-tuple for audio and video media streams respectively.</t>
<figure>
<artwork alt="Successful-Session 2 Way BUNDLE Unsupported">
<![CDATA[
Two-Way Secure Audio,Video with BUNDLE Unsupported
Alice Bob
| |
| |
| Alice offers BUNDLE support with unique address |
| for the audio and video m-line |
| |
| |
| Offer(Audio:Opus Video:VP8) |
|----------------------------------------------------->|
| |Bob
| |doesn't
| |support
| |BUNDLE
| Answer(Audio:Opus Video:VP8) |
|<-----------------------------------------------------|
| |Bob uses
| |unique
| |addresses
| |across the
| |m=lines
| |
|2Way Call with Audio and Video on different 5-tuples |
|......................................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_2waybundlerej_1"
title="5.2.9 SDP Offer w/BUNDLE">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 55232 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref> Audio m=line part of BUNDLE group
with a unique port number</c>
<c>a=rtcp:55232 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ssrc:11111 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 55232 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.4 55232 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 55232 typ srflx
raddr 192.168.1.4 rport 55232</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 55232 typ srflx
raddr 192.168.1.4 rport 55232</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 54332 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref> Video m=line part of the
BUNDLE group with a unique port number</c>
<c>a=rtcp:54332 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> - Alice can perform DTLS before
Answer arrives</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:22222 cname:yvY7/EocUG1f0fcg</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:7872093</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:ee3474af08a068a28a397a4c3f31747d1</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 6d:f7:c9:c7:70:9d:1f:66:79:a8:07:99:41:
49:83:4a:97:0e:1f:ef</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.4 54332 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 2122194687 192.168.1.4 54332 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 24.23.204.141 54332 typ srflx
raddr 192.168.1.4 rport 54332</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 24.23.204.141 54332 typ srflx
raddr 192.168.1.4 rport 54332</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_2waybundlerej_2"
title="5.2.9 SDP Answer without BUNDLE">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 53214 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 53214 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 53214 typ srflx
raddr 192.168.1.7 rport 53214</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2122194687 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1685987071 98.248.92.77 60065 typ srflx
raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 58679 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref> </c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:56507 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> - Bob carries out DTLS Handshake
in parallel</c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> </c>
<c>a=ice-ufrag:85bC300</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:325921d5d47efbabd9a2de4e99bd291c</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 9d:1f:66:79:a8:07:99:41:49:83:4a:97:0e:1f:
ef:6d:f7:c9:c7:70</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 58679 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 58679 typ srflx
raddr 192.168.1.7 rport 58679</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2122194687 192.168.1.7 56507 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1685987071 98.248.92.77 56507 typ srflx
raddr 192.168.1.7 rport 58679</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
<section anchor="av-d-not-bundle"
title="Audio, Video BUNDLED, but Data (Not BUNDLED)">
<t>This example show-cases SDP for negotiating a session with Audio, Video
and data streams between Alice and Bob with data stream not being part of
the BUNDLE group. This is shown by assigning unique port for data media
sections.
</t>
<figure>
<artwork alt="Successful-Session 2 Way SAVPF">
<![CDATA[
Audio, Video, with Data (Not in BUNDLE)
Alice Bob
| |
| |
|Alice wants to multiplex audio, video but not data |
| |
| |
| Offer(Audio:Opus Video:VP8, Data(not in BUNDLE)) |
|----------------------------------------------------->|
| |
| |
| Answer(Audio:Opus Video:VP8, Data) |
|<-----------------------------------------------------|
| |
| |
|2 Way Call with Audio, Video Multiplexed except data |
|......................................................|
| |
]]></artwork>
</figure>
<texttable anchor="table_av-nob-d-2way_1" title="5.2.10 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> </c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice wants to BUNDLE only audio and video media.</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ssrc:11111 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 54609 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:54609 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> </c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:22222 cname:Q/aoNWs11HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=application 10000 DTLS/SCTP 5000</c>
<c><xref target="I-D.ietf-rtcweb-data-channel"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:data</c>
<c><xref target="RFC5888"></xref></c>
<c>a=sctpmap:5000 webrtc-DataChannel streams=16;label="channel 1";
subprotocol="chat";</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=ice-ufrag:89819013</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:1747d1ee3474af08a068a28a397a4c3f3</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 0e:1f:ef:6d:f7:c9:c7:70:99:41:49:83:4a:97:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 10000 typ host</c>
<c><xref target="RFC5245"></xref></c>
</texttable>
<texttable anchor="table_av-nob-d-2way_2" title="5.2.10 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref> </c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> </c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> </c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:
70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:33333 cname:L/aoNWs11HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 98.248.92.771</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:44444 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=application 20000 DTLS/SCTP 5000</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref> </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:data</c>
<c><xref target="RFC5888"></xref></c>
<c>a=sctpmap:5000 webrtc-DataChannel streams=1;label="channel 1";
subprotocol="chat";</c>
<c><xref target="I-D.ietf-mmusic-sctp-sdp"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=ice-ufrag:991Ca2a5e</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:921d5d47efbabd9a2de4e99bd291c325</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=fingerprint:sha-1 6d:f7:c9:c7:70:9d:1f:66:79:a8:07:99:41:49:
83:4a:97:0e:1f:ef</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 20000 typ host</c>
<c><xref target="RFC5245"></xref></c>
</texttable>
</section>
<section anchor="a-video-add"
title="Audio Only, Add Video to BUNDLE">
<t>This example involves 2 Offer/Answer exchanges. First one setting up
Audio-only session followed by an updated Offer/Answer exchange to add
video stream to the ongoing session. Also the newly added video stream
is BUNDLED with the audio stream.</t>
<figure>
<artwork alt="AudioOnly-AddVideo">
<![CDATA[
Audio Only , Add Video and BUNDLE
Alice Bob
| |
| |
| Alice indicates support for BUNDLE |
| |
| Offer(Audio:Opus) |
|----------------------------------------------------->|
| |Bob
| |supports
| |BUNDLE
| Answer(Audio:Opus) |
|<-----------------------------------------------------|
| |Alice adds
| |video stream
| Updated Offer(Audio:Opus, Video:VP8) |to BUNDLE
|----------------------------------------------------->|
| |
| |Bob accepts
| Updated Answer(Audio:Opus, Video:VP8) |
|<-----------------------------------------------------|
| |
| 2Way Call with Audio and Video Multiplexed |
|......................................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_a_only_1" title="5.2.11 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> </c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice wants to BUNDLE only audio and video media.</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ssrc:11111 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_a_only_2" title="5.2.10 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref> </c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> </c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> </c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:
70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:33333 cname:L/aoNWs11HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_a_only_3" title="5.2.11 SDP Updated Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=1</c>
<c><xref target="RFC4566"> Version number incremented</xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> </c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice wants to BUNDLE only audio and video media.</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ssrc:11111 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 54609 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> </c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:22222 cname:Q/aoNWs11HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_a_only_4" title="5.2.11 SDP Updated Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=1</c>
<c><xref target="RFC4566"></xref> Version number incremented</c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio video</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref> </c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> </c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> </c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:33333 cname:L/aoNWs11HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:video</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:44444 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
</section>
<section title="MultiResolution, RTX, FEC Examples">
<t>This section deals with scenarios related to multi-source,
multi-stream negotiation such as layered coding, simulcast, along
with techniques that deal with providing robustness against transmission
errors such as FEC and RTX. Also to note, mechanisms such as FEC and RTX
could be envisioned in the above basic scenarios as well.</t>
<section anchor="sec.successful-session-simulcast"
title="Sendonly Simulcast Session with 2 cameras and 2 encodings
per camera">
<t>The SDP below shows Offer/Answer exchange with one audio and two
video sources. Each of the video source can be sent at two different
resolutions.</t>
<t>One video source corresponds to VP8 encoding, while the other
corresponds to H.264 encoding. </t>
<t>bundle-only framework is used along with BUNDLE grouping framework
to enable multiplexing of all the 5 streams
(1 audio stream + 4 video streams) over a single RTP Session.</t>
<figure>
<artwork alt="Successful-Session Simulcast">
<![CDATA[
1 Way Successful Simulcast w/BUNDLE
Alice Bob
| |
| |
| Alice offers 2 sendonly video sources |
| with 2 simulcast encodings per source |
| and bundle-only for video |
| |
| |
| Offer(Audio:Opus,Video1:VP8,Video2:H.264) |
|------------------------------------------------>|
| |
| |
| Answer(Audio:Opus Video1:VP8,Video2:H.264) |
|<------------------------------------------------|
| |
|One-Way 1 Opus, 2 H.264 and 2 VP8 video streams, |
| all multiplexed |
|.................................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_1waysimulcast_1" title="5.3.1 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 m2</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ssrc:11111 C90alEocUG1f0fcg</c>
<c><xref target="RFC5576"/></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 98 100</c>
<c>bundle-only video line with port number set to zero</c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:100 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=imageattr:98 [x=1280,y=720]</c>
<c><xref target="RFC6236"></xref>Camera-1,Encoding-1 Resolution</c>
<c>a=fmtp:98 max-fr=30</c>
<c><xref target="RFC4566"></xref></c>
<c>a=imageattr:100 [x=640,y=480]</c>
<c><xref target="RFC6236"></xref> Camera-1,Encoding-2 Resolution</c>
<c>a=fmtp:100 max-fr=15</c>
<c><xref target="RFC4566"></xref></c>
<c>a=simulcast: send 98;100</c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"></xref>
Alice can send 2 resolutions</c>
<c>a=ssrc:12345 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref>
<xref target="RFC7022"></xref>
Camera-1,Encoding-1 SSRC with Session CNAME</c>
<c>a=ssrc:45678 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref>
<xref target="RFC7022"></xref>
Camera-1,Encoding-2 SSRC with Session CNAME</c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref> - Send only video stream</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-fb:98 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:98 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:98 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:100 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:100 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:100 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 101 102</c>
<c> bundle-only video line with port number set to zero </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tc </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tc) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m2</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=rtpmap:101 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=rtpmap:102 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:101 profile-level-id=4d0028;packetization-mode=1;max-fr=30 </c>
<c><xref target="RFC3984"></xref>Camera-2,Encoding-1 Resolution</c>
<c>a=fmtp:102 profile-level-id=4d0028;packetization-mode=1;max-fr=15</c>
<c><xref target="RFC3984"></xref>Camera-2,Encoding-2 Resolution</c>
<c>a=simulcast: send 101;102</c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"></xref></c>
<c>a=ssrc:67890 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref>
<xref target="RFC7022"></xref>
Camera-2,Encoding-1 SSRC with Session CNAME</c>
<c>a=ssrc:56789 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref>
<xref target="RFC7022"></xref>
Camera-2,Encoding-2 SSRC with Session CNAME</c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref> - Send only video stream</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-fb:101 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:101 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:101 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:102 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:102 nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:102 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_1waysimulcast_2" title="5.3.1 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 m2</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:22222 cname:y8/C90alEocUG1f0fcg</c>
<c><xref target="RFC5576"/></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 694302207 98.248.92.77 49203 typ srflx
raddr 192.168.1.4 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 98 100</c>
<c>BUNDLE accepted with port repeated from the audio port </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:100 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=imageattr:98 [x=1280,y=720]</c>
<c><xref target="RFC6236"></xref>Camera-1,Encoding-1 Resolution</c>
<c>a=fmtp:98 max-fr=30</c>
<c><xref target="RFC4566"></xref></c>
<c>a=imageattr:100 [x=640,y=480]</c>
<c><xref target="RFC6236"></xref> Camera-1,Encoding-2 Resolution</c>
<c>a=fmtp:100 max-fr=15</c>
<c><xref target="RFC4566"></xref></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref> - receive only video stream</c>
<c>a=simulcast: recv 98;100</c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"></xref></c>
<c>a=ssrc:54321 cname:y8/C90alEocUG1f0fcg</c>
<c><xref target="RFC5576"/> </c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx
raddr 192.168.1.4 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux </c>
<c><xref target="RFC5576"/> </c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 54609 UDP/TLS/RTP/SAVPF 101 102</c>
<c> BUNDLE accepted with port repeated from the audio port </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtcp:56503 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=msid:ma tc </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tc) </c>
<c>a=mid:m2</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=rtpmap:101 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=rtpmap:102 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=fmtp:101 profile-level-id=4d0028;packetization-mode=1;max-fr=30 </c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:102 profile-level-id=4d0028;packetization-mode=1;max-fr=15</c>
<c><xref target="RFC3984"></xref></c>
<c>a=simulcast: recv 101;102</c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"></xref>
Bob accepts to receieve the offered simulcast streams</c>
<c>a=ssrc:90876 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx
raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux </c>
<c><xref target="RFC5576"/></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
<section anchor="sec.successful-session-svc"
title="Successful SVC Video Session">
<t>This section shows an SDP Offer/Answer for a session with an audio
and a single video source. The video source is encoded as
layered coding at 3 different resolutions based on
<xref target="RFC5583"/>. The video m=line shows 3 streams with
last stream (payload 100) dependent on streams with payload 96
and 97 for decoding.</t>
<figure>
<artwork alt="Successful-Session SVC">
<![CDATA[
SVC Session - 3 Layers w/BUNDLE
Alice Bob
| |
| |
| Alice offers 3 sendonly video streams |
| as 3 layers of SVC and bundle-only |
| for video streams. |
| |
| Offer(Video:H.264 SVC) |
|------------------------------------------------>|
| |
| |Bob accepts Alice's
| |offered Codec
| |operation points
| |
| Answer(Video:H.264) |
|<------------------------------------------------|
| |
|One-Way H.264 SVC video streams |
|.................................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_svc_1" title="5.3.2 SDP Offer with SVC">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 </c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref> Audio m=line part of BUNDLE group
with a unique port number</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ssrc:67890 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"/></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 96 97 100</c>
<c>bundle-only video line with port number set to zero</c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tc) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref> Audio m=line part of BUNDLE group</c>
<c>a=msid:ma tb</c>
<c></c>
<c>a=rtpmap:96 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:96 profile-level-id=4d0028;
packetization-mode=1;max-fr=30;max-fs=8040</c>
<c><xref target="RFC3984"></xref>H.264 Layer 1</c>
<c>a=rtpmap:97 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:97 profile-level-id=4d0028;packetization-mode=1;
max-fr=15;max-fs=1200</c>
<c><xref target="RFC3984"></xref> H.264 Layer 2</c>
<c>a=rtpmap:100 H264-SVC/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:100 profile-level-id=4d0028;packetization-mode=1;
max-fr=30;max-fs=8040</c>
<c><xref target="RFC3984"></xref></c>
<c>a=depend:100 lay m1:96,97;</c>
<c><xref target="RFC5583"></xref>Layer 3 dependent on layers 1 and 2</c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref> - Send only video stream</c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=ssrc:1732846380 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ssrc:1732846381 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ssrc:1732846382 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_svc_2" title="5.3.2 SDP Answer with SVC">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 </c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx
raddr 192.168.1.5 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 54609 UDP/TLS/RTP/SAVPF 96 100</c>
<c> BUNDLE accepted Bundle address same as audio m=line.</c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:56503 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=rtpmap:96 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:96 profile-level-id=4d0028;packetization-mode=1;
max-fr=30;max-fs=8040</c>
<c><xref target="RFC3984"></xref>H.264 Layer 1</c>
<c>a=rtpmap:100 H264-SVC/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:100 profile-level-id=4d0028;packetization-mode=1;
max-fr=30;max-fs=8040</c>
<c><xref target="RFC3984"></xref></c>
<c>a=depend:100 lay m1:96;</c>
<c><xref target="RFC5583"></xref> Bob chooses 2 Codec Operation points</c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.5 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.142 64678 typ srflx
raddr 192.168.1.5 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref> - Receive only video stream</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=ssrc:4638117328 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
<section anchor="sec.successful-simulcast-rtx"
title="Successful Simulcast Video Session with Retransmission">
<t>This section shows an SDP Offer/Answer exchange for a
simulcast scenario with 2 two resolutions and has
<xref target="RFC4588"></xref> style re-transmission flows.</t>
<figure>
<artwork alt="Successful-Session Simulcast RTX">
<![CDATA[
Simulcast Streams with Retransmission
Alice Bob
| |
| |
|Alice offers single audio and simulcasted video streams |
| |
| |
| Offer(Audio:Opus Video:VP8 with 2 resolutions) |
| & RTX stream |
|-------------------------------------------------------->|
| |
| |
| Answer (Bob accepts Alice's offer) |
|<--------------------------------------------------------|
| |
| |
|One-Way 1 Opus, 2 VP8 and RTX video streams,all muxed |
|.........................................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_simulcastrtx_1"
title="5.3.3 SDP Offer w/Simulcast, RTX">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 </c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref> Audio m=line part of BUNDLE group
with a unique port number</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:11111 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"/></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:
70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 98 100 101 103</c>
<c>bundle-only video line with port number set to zero</c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:100 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:101 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:103 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=fmtp:98 max-fr=30;max-fs=8040</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:100 max-fr=15;max-fs=1200</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:101 apt=98;rtx-time=3000</c>
<c><xref target="RFC4588"></xref></c>
<c>a=fmtp:103 apt=100;rtx-time=3000</c>
<c><xref target="RFC4588"></xref></c>
<c>a=simulast: send 98;100 </c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"></xref></c>
<c>a=ssrc-group:FID 12345 34567 </c>
<c><xref target="RFC5888"/> </c>
<c>a=ssrc-group:FID 78990 90887 </c>
<c><xref target="RFC5888"/></c>
<c>a=ssrc:12345 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ssrc:78990 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ssrc:34567 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ssrc:90887 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=sendonly</c>
<c><xref target="RFC3264"/></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"/></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_simulcastrtx_2"
title="5.3.3 SDP Answer w/Simulcast, RTX">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 </c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:33333 cname:L/HmN4Xa5NWs1ao1</c>
<c><xref target="RFC5576"/></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 64678 typ
srflx raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 98 100 101 103</c>
<c>BUNDLE accepted with Bundle address identical to audio m-line</c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:100 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:101 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:103 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=fmtp:98 max-fr=30;max-fs=8040</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:100 max-fr=15;max-fs=1200</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:101 apt=98;rtx-time=3000</c>
<c><xref target="RFC4588"></xref></c>
<c>a=fmtp:103 apt=100;rtx-time=3000</c>
<c><xref target="RFC4588"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:
70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.772 60065 typ srflx
raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=simulcast: recv 98;100 </c>
<c> <xref target="I-D.ietf-mmusic-sdp-simulcast"/> </c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
<section anchor="sec.successful-simulcast-rtxreject"
title="Successful 1-way Simulcast Session with 2 resolutions and
RTX - One resolution rejected">
<t>This section shows an SDP Offer/Answer exchange for a simulcast
scenario with 2 two resolutions.</t>
<t>It also showcases when Bob rejects one of the Simulcast Video
Stream which results in the rejection of the associated repair
stream implicitly.</t>
<figure>
<artwork alt="Successful-Session Simulcast RTX">
<![CDATA[
Simulcast Streams with Retransmission Rejected
Alice Bob
| |
| |
|Alice offers single audio and simulcasted video streams |
| with bundle-only for video |
| |
| |
|Offer(Audio:Opus Video:VP8 with 2 resolutions,RTX Stream)|
|-------------------------------------------------------->|
| |
| |Bob accepts 1
| |simulcast,rtx
| |rejects the
| |other
| Answer(Audio:Opus Video:VP8 with 1 res & RTX Stream) |
|<--------------------------------------------------------|
| |
| |
|1-way audio,video session and its associated RTX stream, |
| all multiplexed |
|.........................................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_simulcastrtxreg_1"
title="5.3.4 SDP Offer w/Simulcast, RTX">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 </c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:11111 cname:LP/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 98 100 101 103</c>
<c>bundle-only video line with port number set to zero</c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:100 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:101 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:103 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=fmtp:98 max-fr=30;max-fs=8040</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:100 max-fr=15;max-fs=1200</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:101 apt=98;rtx-time=3000</c>
<c><xref target="RFC4588"></xref></c>
<c>a=fmtp:103 apt=100;rtx-time=3000</c>
<c><xref target="RFC4588"></xref></c>
<c>a=simulcast: send 98;100 </c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"/></c>
<c>a=ssrc-group:FID 12345 34567 </c>
<c><xref target="RFC5888"/> </c>
<c>a=ssrc-group:FID 78990 90887 </c>
<c><xref target="RFC5888"/></c>
<c>a=ssrc:12345 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ssrc:78990 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ssrc:34567 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ssrc:90887 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_simulcastrtxreg_2"
title="5.3.4 SDP Answer no Simulcast">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 </c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:49203 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx
raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 98 101 </c>
<c>BUNDLE accepted with Bundle address identical to audio m-line</c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:101 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=fmtp:98 max-fr=30;max-fs=8040</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:101 apt=98;rtx-time=3000</c>
<c><xref target="RFC4588"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx
raddr 192.168.1.5 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=simulcast: recv 98 </c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"/>
Bob accepts only one simulcast resolution</c>
<c>a=ssrc:54321 cname:NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
<section anchor="sec.successful-simulcast-fec"
title="Simulcast Video Session with Forward Error Correction">
<t>This section shows an SDP Offer/Answer exchange for Simulcast
video stream at two resolutions and and has
<xref target="RFC5956"></xref> style FEC flows.</t>
<t> On completion of the Offer/Answer exchange mechanism we end up
one audio stream, 2 simulcast video streams and 2 associated
FEC streams are sent over a single 5-tuple.</t>
<figure>
<artwork alt="Successful-Session Simulcast FEC">
<![CDATA[
Simulcast Streams with Forward Error Correction
Alice Bob
| |
| |
| |
|Alice offers single audio and simulcasted video streams |
|with bundle-only |
| |
| |
|Offer(Audio:Opus Video:VP8 with 2 resolutions with FEC Streams)|
|-------------------------------------------------------------->|
| |
| |Bob
| |accepts
| |Alice's
| |offer
|Answer(Audio:Opus Video:VP8 with 2 resolutions w/FEC Streams) |
|<--------------------------------------------------------------|
| |
|One-Way Audio,Video session with 4 video streams(Simulcast |
| and FEC) all multiplexed |
|...............................................................|
| |
| |
| |
]]></artwork>
</figure>
<texttable anchor="table_12_1" title="5.3.5 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 </c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:11111 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ
srflx raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 98 100 101 103</c>
<c>bundle-only video line with port number set to zero</c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:100 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:101 1d-interleaved-parityfec/90000</c>
<c><xref target="RFC5956"></xref></c>
<c>a=rtpmap:103 1d-interleaved-parityfec/90000</c>
<c><xref target="RFC5956"></xref></c>
<c>a=fmtp:98 max-fr=30;max-fs=8040</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:100 max-fr=15;max-fs=1200</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:101 L=5; D=10; repair-window=200000</c>
<c><xref target="RFC5956"></xref></c>
<c>a=fmtp:103 L=5; D=10; repair-window=200000</c>
<c><xref target="RFC5956"></xref></c>
<c>a=simulcast: send 98;100 </c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"/></c>
<c>a=depend:98 fec m1:101</c>
<c>TBD</c>
<c>a=depend:100 fec m1:103</c>
<c>TBD</c>
<c>a=ssrc-group:FEC-FR 12345 34567 </c>
<c><xref target="RFC5888"/> </c>
<c>a=ssrc-group:FEC-FR 78990 90887 </c>
<c><xref target="RFC5888"/></c>
<c>a=ssrc:12345 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ssrc:78990 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ssrc:34567 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=ssrc:90887 cname:Q/NWs1ao1HmN4Xa5</c>
<c><xref target="RFC5576"/></c>
<c>a=sendonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="table_12_2" title="5.3.5 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS m0</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 </c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"/></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109 </c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref> Audio m=line part of BUNDLE group
with a unique port number</c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=recvonly </c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ssrc:33333 cname:Y9/cZke09JAtpl98</c>
<c><xref target="RFC5576"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:
1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx
raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 49203 UDP/TLS/RTP/SAVPF 98 100 101 103</c>
<c>BUNDLE accepted with Bundle Address identical to audio m=line.</c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid:ma tb </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:100 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:101 1d-interleaved-parityfec/90000</c>
<c><xref target="RFC5956"></xref></c>
<c>a=rtpmap:103 1d-interleaved-parityfec/90000</c>
<c><xref target="RFC5956"></xref></c>
<c>a=fmtp:98 max-fr=30;max-fs=8040</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:100 max-fr=15;max-fs=1200</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fmtp:101 L=5; D=10; repair-window=200000</c>
<c><xref target="RFC5956"></xref></c>
<c>a=fmtp:103 L=5; D=10; repair-window=200000</c>
<c><xref target="RFC5956"></xref></c>
<c>a=simulcast: recv 98;100 </c>
<c><xref target="I-D.ietf-mmusic-sdp-simulcast"/></c>
<c>a=depend:98 fec m1:101</c>
<c>TBD</c>
<c>a=depend:100 fec m1:103</c>
<c>TBD</c>
<c>a=recvonly</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx
raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* nack pli</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=rtcp-fb:* ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
</section>
<section title="Others">
<t>
The examples in the section provide SDP for a variety of scenarios
related to RTP Header extension, Legacy Interop scenarios and more.
</t>
<section anchor="sec.av.rtp_ext_vad"
title="Audio Session - Voice Activity Detection">
<t>This example shows Alice indicating the support of the
RTP header extension to include the audio-level of the audio
sample carried in the RTP packet.</t>
<figure>
<artwork alt="Session 2 Way Audio with VAD"><![CDATA[
2-Way Audio with VAD
Alice Bob
| |
| |
|Alice indicates support for including |
|audio level in RTP header |
| |
| Offer(Audio:Opus,PCMU,PCMA) |
|---------------------------------------->|
| |
| |
| Answer(Audio:Opus,PCMU,PCMA) |
|<----------------------------------------|
| |
| |Bob accepts and
| |indicates his
| |support as well
| |
| Two way Opus Audio |
|.........................................|
| |
|Per packet audio-level is included in the|
|RTP header |
| |
]]></artwork>
</figure>
<texttable anchor="t_2way-audio-vad_1" title="5.4.1 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> </c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref></c>
<c>a=rtpmap:0 PCMA/8000</c>
<c><xref target="RFC3551"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:
70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref></c>
<c>a=ssrc:11111 cname:QCL/1HmN4Xa5CClapa</c>
<c><xref target="RFC5576"/></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="t_2way-audio-vad_2" title="5.4.1 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109 0 98</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref> - Bob accepts
only Opus Codec</c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref> PCMU Audio Codec</c>
<c>a=rtpmap:0 PCMA/8000</c>
<c><xref target="RFC3551"></xref> PCMA Audio Codec</c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Bob can send and recv audio</c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> - Bob can perform RTP/RTCP Muxing on port 49203</c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:1732846380 cname:EocUG1f0fcg/yvY7</c>
<c><xref target="RFC5576"/></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
<section anchor="sec.aconf.rtp_ext_vad"
title="Audio Conference - Voice Activity Detection">
<t>This example shows SDP for RTP header extension that
allows RTP-level mixers in audio conferences to deliver information
about the audio level of individual participants.</t>
<figure>
<artwork alt="Session 2 Way Audio with VAD">
<![CDATA[
Audio Conference with VAD Support
Alice Mixer
| |
|Alice indicates her interest to audio |
|levels for the contributing sources |
| |
|Offer(Audio:Opus,PCMU,PCMA) |
|---------------------------------------->|
| |
| |
|Answer(Audio:Opus,PCMU,PCMA) |
|<----------------------------------------|
| |
| |Mixer indicates
| |it can provide
| |audio-levels
|Two way Opus Audio |
|.........................................|
| |
|Audio-levels per CSRCS is included in the|
|RTP header |
| |
]]></artwork>
</figure>
<texttable anchor="t_2way-aconf-vad_1" title="5.4.2 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109 0 8</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=extmap:1/recvonly urn:ietf:params:rtp-hdrext:csrc-audio-level</c>
<c><xref target="RFC6465"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref> PCMU Audio Codec</c>
<c>a=rtpmap:0 PCMA/8000</c>
<c><xref target="RFC3551"></xref> PCMA Audio Codec</c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref> - Alice can send and recv audio</c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref> </c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:11111 cname:QCL/1HmN4Xa5CClapa</c>
<c><xref target="RFC5576"/></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="t_2way-aconf-vad_2" title="5.4.2 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref> - Session Origin Information</c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE audio</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref></c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109 0 98</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=mid:audio</c>
<c><xref target="RFC5888"></xref></c>
<c>a=msid:ma ta </c>
<c> Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtcp:60065 IN IP4 98.248.92.77</c>
<c><xref target="RFC3605"></xref></c>
<c>a=extmap:1/sendonly urn:ietf:params:rtp-hdrext:csrc-audio-level</c>
<c><xref target="RFC6465"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtpmap:0 PCMU/8000</c>
<c><xref target="RFC3551"></xref> PCMU Audio Codec</c>
<c>a=rtpmap:0 PCMA/8000</c>
<c><xref target="RFC3551"></xref> PCMA Audio Codec</c>
<c>a=rtcp-fb:* nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:
70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref> </c>
<c>a=ssrc:2222 cname:HmN4Xa5CC/lapa</c>
<c><xref target="RFC5576"/></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
</section>
<section anchor="successful-2way-webrtc-voip"
title="Successful legacy Interop Fallback with bundle-only">
<t>In the scenario described below, Alice is a multi-stream capable
WebRTC endpoint while Bob is a legacy VOIP end-point. The SDP
Offer/Answer exchange demonstrates successful session setup with
fallback to audio only stream negotiated via bundle-only framework
between the end-points. Specifically,
<list style="symbols">
<t>Offer from Alice describes 2 cameras via 2 video m=lines with
both marked as bundle-only.</t>
<t> Since Bob doesnot recognize either the BUNDLE mechanism or
the bundle-only attribute, he accepts only the audio stream
from Alice.</t>
</list>
</t>
<figure>
<artwork alt="2-Way Legacy Interop">
<![CDATA[
Successful 2-Way WebRTC <-> VOIP Interop
Alice Bob
| |
| |
| Alice is a multistream capable WebRTC end-point |
| & Bob is behind a legacy VOIP system |
| |
|Offer(Audio:Opus Video:2 VP8,2 H2.64 Streams) with |
| bundle-only |
|---------------------------------------------------------->|
| Alice marks both the video streams as bundle-only |
| |
| |
| Answer(Audio:Opus) |
|<----------------------------------------------------------|
| |Bob
| |accepts
| |audio
| |stream,
| |since he
| |doesn't
| |recognize
| |bundle-only
| |
| Two way Opus Audio |
|...........................................................|
| |
| |
]]></artwork>
</figure>
<texttable anchor="t_legacy_interop_1_1"
title="5.4.3 SDP Simulcast bundle-only">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=msid-semantic:WMS ma</c>
<c><xref target="I-D.ietf-mmusic-msid"></xref></c>
<c>a=group:BUNDLE m0 m1 m2</c>
<c><xref target="I-D.ietf-mmusic-sdp-bundle-negotiation"></xref>
Alice supports grouping of m=lines under BUNDLE semantics</c>
<c>a=ice-options:trickle</c>
<c><xref target="I-D.ietf-mmusic-trickle-ice"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m0</c>
<c><xref target="RFC5888"></xref> Audio m=line part of BUNDLE group
with a unique port number</c>
<c>a=msid:ma ta </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (ta) </c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:actpass</c>
<c><xref target="RFC4145"></xref> </c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:
9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx
raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx
raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ssrc:11111 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref>E</c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 98 100</c>
<c>bundle-only video line with port number set to zero </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m1</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=msid:ma tb </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tb) </c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=imageattr:98 [x=1280,y=720]</c>
<c><xref target="RFC6236"></xref></c>
<c>a=fmtp:98 max-fr=30</c>
<c><xref target="RFC4566"></xref></c>
<c>a=ssrc:12345 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"></xref></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 101 103</c>
<c>bundle-only video line with port number set to zero </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtcp:64678 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=mid:m2</c>
<c><xref target="RFC5888"></xref> Video m=line part of BUNDLE group</c>
<c>a=msid:ma tc </c>
<c>Identifies RTCMediaStream ID (ma) and RTCMediaStreamTrack ID (tc) </c>
<c>a=rtpmap:101 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=rtpmap:103 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:101 profile-level-id=4d0028;packetization-mode=1;max-fr=30 </c>
<c><xref target="RFC3984"></xref>Camera-2,Encoding-1 Resolution</c>
<c>a=ssrc:67890 cname:axzo1278npDlAzM73</c>
<c><xref target="RFC5576"/></c>
<c>a=bundle-only</c>
<c><xref target="UNIFIED-PLAN"/> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
</texttable>
<texttable anchor="t_legacy_interop_1_2" title="5.4.3 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20519 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>m=audio 49203 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtcp:60065 IN IP4 24.23.204.141</c>
<c><xref target="RFC3605"></xref></c>
<c>a=rtpmap:109 opus/48000/2</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level</c>
<c><xref target="RFC6464"></xref></c>
<c>a=ptime:20</c>
<c><xref target="I-D.ietf-payload-rtp-opus"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref> </c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=setup:active</c>
<c><xref target="RFC4145"></xref></c>
<c>a=ice-ufrag:ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:
70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 98.248.92.77 49203 typ srflx
raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx
raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 98 100</c>
<c> Bob doesn't recognize bundle-only and hence rejects
the video stream </c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:98 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=rtpmap:100 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=imageattr:98 [x=1280,y=720]</c>
<c><xref target="RFC6236"/></c>
<c>a=fmtp:98 max-fr=30</c>
<c><xref target="RFC4566"></xref></c>
<c>m=video 0 UDP/TLS/RTP/SAVPF 98 100</c>
<c> Bob doesn't recognize bundle-only and hence
rejects the video stream</c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:101 H264/90000</c>
<c><xref target="RFC3984"></xref></c>
<c>a=fmtp:101 profile-level-id=4d0028;packetization-mode=1;max-fr=30 </c>
<c><xref target="RFC3984"></xref>Camera-2,Encoding-1 Resolution</c>
</texttable>
</section>
<section anchor="sec-2way-webrtc-voip"
title="Legacy Interop with RTP/AVP profile">
<t>
In this section, we attempt to provide session descriptions showcasing inter-operability
between a WebRTC end-point and a Legacy VOIP end-point. The ideas included in here
are not fully baked into the standards and might be controversial in nature. The hope here is
to demonstrate a plausible SDP composition to enchance seamless inter-operability between the
aforementioned communication systems.
</t>
<t>
In the scenario desribed below, Alice is a legacy end-point which sends
<xref target="RFC3264"></xref> Offer with two sets of media descriptions
per media type.
<list>
<t> One set that correponds to <xref target="WebRTC"></xref> compliant
UDP/TLS/RTP/SAVPF based audio and video descriptions.
</t>
<t> Another set with RTP/AVP based audio and video descriptions for the
legacy Interop purposes. </t>
<t>
Also to note, Alice includes session level DTLS information and media level
RTCP feedback information as applicable to both the sets of
media descriptions</t>
</list>
</t>
<t>
On the other hand, Bob being a WebRTC end-point, recognizes accepts
the media descriptions with RTP/AVP profile.
The security and feedback requirements for the session are either handled by a
intermediate gateway or with some combination of Alice's capabilities and
the intermediate gateway.
</t>
<figure>
<artwork alt="Successful-Session 2 Way SAVP VOIP">
<![CDATA[
Successful 2-Way WebRTC <-> VOIP Interop
Alice Bob
| |
| |
| Alice is a legacy VOIP End-point & Bob is a WebRTC End-Point |
| |
| |
| |
| Offer(Audio:Opus Video:H.264) |
|-------------------------------------------------------------->|
| |
| |
|Alice includes 2 copies of media descriptions |
|1. WebRTC compliant media description (UDP/TLS/RTP/SAVPF) |
|2. Legacy compliant media description (RTP/AVP) |
| |
| |
| Answer(Audio:Opus, Video:H.264) |
|<--------------------------------------------------------------|
| |Bob
| |accepts
| |"legacy
| |compliant"
| |m=line
| |
| |
| Two way Opus Audio, H.264 Video |
|...............................................................|
| Session also suports RTP/RTCP Mux, RTCP Feedback |
| |
]]></artwork>
</figure>
<texttable anchor="t_legacy2_1" title="5.4.5 SDP Offer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 20518 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=ice-ufrag:074c6550</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:a28a397a4c3f31747d1ee3474af08a068</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-rsize</c>
<c><xref target="RFC5506"></xref></c>
<c>m=audio 54609 UDP/TLS/RTP/SAVPF 109</c>
<c><xref target="RFC4566"></xref></c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:109 opus/48000</c>
<c><!--<xref target="draft-spittka-payload-rtp-opus"></xref>--></c>
<c>a=ptime:20</c>
<c><!--<xref target="draft-spittka-payload-rtp-opus"></xref>--></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54609 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54609 typ srflx raddr 192.168.1.4 rport 54609</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref></c>
<c>m=video 62537 UDP/TLS/RTP/SAVPF 120</c>
<c><xref target="RFC4566"></xref> </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 62537 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 24.23.204.141 62537 typ srflx raddr 192.168.1.4 rport 62537</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 2113667326 192.168.1.4 54721 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 54721 typ srflx raddr 192.168.1.4 rport 54721</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref></c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
<c>---------------</c>
<c>These set of media descriptions are for Legacy Inter-op purposes</c>
<c>m=audio 54732 RTP/AVP 109</c>
<c><xref target="RFC4566"></xref>Alice includes RTP/AVP audio stream description</c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:7f:7d:f9:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtpmap:109 opus/48000</c>
<c><!--<xref target="draft-spittka-payload-rtp-opus"></xref>--></c>
<c>a=ptime:20</c>
<c><!--<xref target="draft-spittka-payload-rtp-opus"></xref>--></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref>Alice still includes RTP/RTCP Mux support</c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 54732 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 694302207 24.23.204.141 54732 typ srflx raddr 192.168.1.4 rport 54732</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.4 64678 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 64678 typ srflx raddr 192.168.1.4 rport 64678</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:109 nack</c>
<c><xref target="RFC5104"></xref>She adds her intent for NACK RTCP feedback support</c>
<c>m=video 62445 RTP/AVP 120</c>
<c><xref target="RFC4566"></xref>Alice includes RTP/AVP video stream description </c>
<c>c=IN IP4 24.23.204.141</c>
<c><xref target="RFC4566"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:7d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=rtcp-mux</c>
<c><xref target="RFC5761"></xref>Alice intends to perform RTP/RTCP Mux</c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.4 62445 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 24.23.204.141 62537 typ srflx raddr 192.168.1.4 rport 62445</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 2113667326 192.168.1.4 54721 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 24.23.204.141 54721 typ srflx raddr 192.168.1.4 rport 54721</c>
<c><xref target="RFC5245"></xref></c>
<c>a=rtcp-fb:120 nack pli</c>
<c><xref target="RFC5104"></xref> Alice indicates support for Picture loss Indication and NACK RTCP feedback</c>
<c>a=rtcp-fb:120 ccm fir</c>
<c><xref target="RFC5104"></xref></c>
</texttable>
<texttable anchor="t_legacy2_2" title="5.4.5 SDP Answer">
<ttcol align='left'>SDP Contents </ttcol>
<ttcol align='left'>RFC#/Notes</ttcol>
<c>v=0</c>
<c><xref target="RFC4566"></xref></c>
<c>o=- 16833 0 IN IP4 0.0.0.0</c>
<c><xref target="RFC4566"></xref></c>
<c>s=-</c>
<c><xref target="RFC4566"></xref></c>
<c>t=0 0</c>
<c><xref target="RFC4566"></xref></c>
<c>a=ice-ufrag:c300d85b</c>
<c><xref target="RFC5245"></xref></c>
<c>a=ice-pwd:de4e99bd291c325921d5d47efbabd9a2</c>
<c><xref target="RFC5245"></xref></c>
<c>a=fingerprint:sha-1 99:41:49:83:4a:97:0e:1f:ef:6d:f7:c9:c7:70:9d:1f:66:79:a8:07</c>
<c><xref target="RFC5245"></xref></c>
<c>m=audio 49203 RTP/AVP 109</c>
<c><xref target="RFC4566"></xref> Bob accepts RTP/AVP based audio stream</c>
<c>c=IN IP4 98.248.92.77</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:109 opus/48000</c>
<c><!--<xref target="draft-spittka-payload-rtp-opus"></xref>--></c>
<c>a=ptime:20</c>
<c><!--<xref target="draft-spittka-payload-rtp-opus"></xref>--></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 49203 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 49203 typ srflx raddr 192.168.1.7 rport 49203</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 60065 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 60065 typ srflx raddr 192.168.1.7 rport 60065</c>
<c><xref target="RFC5245"></xref></c>
<c>m=video 63130 RTP/SAVP 120</c>
<c><xref target="RFC4566"></xref> Bob accepts RTP/AVP based video stram </c>
<c>c=IN IP4 98.248.92.771</c>
<c><xref target="RFC4566"></xref></c>
<c>a=rtpmap:120 VP8/90000</c>
<c><xref target="I-D.ietf-payload-vp8"></xref></c>
<c>a=sendrecv</c>
<c><xref target="RFC3264"></xref></c>
<c>a=candidate:0 1 UDP 2113667327 192.168.1.7 63130 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 1 UDP 1694302207 98.248.92.77 63130 typ srflx raddr 192.168.1.7 rport 63130</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:0 2 UDP 2113667326 192.168.1.7 56607 typ host</c>
<c><xref target="RFC5245"></xref></c>
<c>a=candidate:1 2 UDP 1694302206 98.248.92.77 56607 typ srflx raddr 192.168.1.7 rport 56607</c>
<c><xref target="RFC5245"></xref></c>
</texttable>
</section>
</section>
</section>
<section title="IANA Considerations">
<t>This document requires no actions from IANA.</t>
</section>
<section title="Acknowledgments">
<t>
We would like to thank Justin Uberti, Chris Flo for their detailed
review and inputs.
</t>
</section>
<section title="Change Log">
<t>[RFC EDITOR NOTE: Please remove this section when publishing]</t>
<t>Changes from draft-nandakumar-rtcweb-sdp-08
<list style="symbols">
<t> Fixed typos </t>
<t> Moved to a WG version </t>
</list>
</t>
<t>Changes from draft-nandakumar-rtcweb-sdp-06 and draft-nandakumar-rtcweb-sdp-07
<list style="symbols">
<t> Added clarification on Call-Flow diagram usage</t>
<t> More cleanups </t>
</list>
</t>
<t>Changes from draft-nandakumar-rtcweb-sdp-05
<list style="symbols">
<t> Added Ascii chart for all the SDP Eaxamples </t>
<t> Improved text and updated SDP Examples for Simulcast and
FEC</t>
<t> Fixed MediaStream ID Semantics SDP Errors </t>
</list>
</t>
<t>Changes from draft-nandakumar-rtcweb-sdp-04
<list style="symbols">
<t> Interim version of the draft to avert expiry </t>
<t> Corrected placement of c= line as per RFC4566 </t>
<t> Updated simulcast SDP to reflect
draft-westerlund-avtcore-rtp-simulcast-04</t>
</list>
</t>
<t>Changes from draft-nandakumar-rtcweb-sdp-03
<list style="symbols">
<t> Aligned more closely with JSEP version -05 </t>
<t> Added Conventions to help readability </t>
<t> Add more examples to clarify BUNDLE use-cases </t>
</list>
</t>
<t>Changes from draft-nandakumar-rtcweb-sdp-02
<list style="symbols">
<t> Major refactoring was done to group the examples in to
categories </t>
<t> SDP was updated through out to reflect JSEP-04 style of defining
attributes per m=line than at the session level. </t>
<t> Added 8 new examples. </t>
<t> Updated references for Trickle, Unified Plan </t>
<t> Add section to explain the syntax conventions followed in the
examples. </t>
</list>
</t>
<t>Changes from draft-nandakumar-rtcweb-sdp-01
<list style="symbols">
<t>Updated references to OPUS RTP Payload Specification.</t>
<t>Updated BUNDLE examples based on the latest
draft-ietf-mmusic-sdp-bundle-negotiation.</t>
<t>Added examples for multiple audio and video flows based on
Unified Plan.</t>
<t>Added new examples for RTX and FEC streams </t>
<t>Updated Simulcast and SVC examples</t>
</list>
</t>
<t>Changes from draft-nandakumar-rtcweb-sdp-00
<list style="symbols">
<t>Fixed editorial comments on the mailing list.</t>
<t>Updated Data-channel SDP information based on
draft-ietf-mmusic-sctp-sdp.</t>
<t>Updated BUNDLE examples based on
draft-ietf-mmusic-sdp-bundle-negotiation.</t>
<t>Added examples for few more BUNDLE variants</t>
<t>Added new examples for Simulcast and SVC</t>
</list>
</t>
</section>
</middle>
<back>
<references title="Informative References">
&RFC3264;
&RFC4145;
&RFC4566;
&RFC2119;
&RFC5245;
&RFC5506;
&RFC3551;
&RFC3952;
&RFC4796;
&RFC5761;
&RFC3556;
&RFC5104;
&RFC4588;
&RFC5956;
&RFC5888;
&RFC6236;
&RFC3984;
&RFC5583;
&RFC5576;
&RFC3550;
&RFC3261;
&RFC2326;
&RFC3605;
&RFC2833;
&RFC6464;
&RFC6465;
&RFC7022;
&I-D.ietf-mmusic-sdp-bundle-negotiation;
&I-D.ietf-mmusic-sdp-simulcast;
&I-D.ietf-payload-rtp-opus;
&I-D.ietf-payload-vp8;
&I-D.ietf-rtcweb-jsep;
&I-D.ietf-mmusic-trickle-ice;
&I-D.ietf-mmusic-msid;
&I-D.ietf-mmusic-sctp-sdp;
&I-D.ietf-rtcweb-data-channel;
<reference anchor="WebRTC">
<front>
<title>
WebRTC 1.0: Real-time Communication Between Browsers
</title>
<author fullname="" initials="" surname="">
<organization>
W3C
</organization>
</author>
<date year="" month=""/>
</front>
<seriesInfo name="<http://dev.w3.org/2011/webrtc/editor/webrtc.html>" value=""/>
</reference>
<reference anchor="UNIFIED-PLAN">
<front>
<title> A Unified Plan for Using SDP with Large Numbers of Media Flows</title>
<author fullname="Adam B Roach" initials="A.B." surname="Roach">
<organization></organization>
</author>
<author fullname="Justin Uberti" initials="J." surname="Uberti">
<organization></organization>
</author>
<author fullname="Martin Thomson" initials="M." surname="Thomson">
<organization></organization>
</author>
<date month="July" year="2013" />
</front>
<seriesInfo name="Internet-Draft"
value="draft-roach-mmusic-unified-plan" />
<format target="http://tools.ietf.org/html/draft-roach-mmusic-unified-plan-00"
type="TXT" />
</reference>
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-23 19:32:39 |