< draft-ietf-mmusic-sdp-media-capabilities-13.txt | draft-ietf-mmusic-sdp-media-capabilities-14.txt > | |||
---|---|---|---|---|
MMUSIC R. Gilman | MMUSIC R. Gilman | |||
Internet-Draft Independent | Internet-Draft Independent | |||
Intended status: Standards Track R. Even | Intended status: Standards Track R. Even | |||
Expires: September 13, 2012 Gesher Erove Ltd | Expires: January 10, 2013 Gesher Erove Ltd | |||
F. Andreasen | F. Andreasen | |||
Cisco Systems | Cisco Systems | |||
March 12, 2012 | July 9, 2012 | |||
SDP Media Capabilities Negotiation | SDP Media Capabilities Negotiation | |||
draft-ietf-mmusic-sdp-media-capabilities-13 | draft-ietf-mmusic-sdp-media-capabilities-14 | |||
Abstract | Abstract | |||
Session Description Protocol (SDP) capability negotiation provides a | Session Description Protocol (SDP) capability negotiation provides a | |||
general framework for indicating and negotiating capabilities in SDP. | general framework for indicating and negotiating capabilities in SDP. | |||
The base framework defines only capabilities for negotiating | The base framework defines only capabilities for negotiating | |||
transport protocols and attributes. In this document, we extend the | transport protocols and attributes. In this document, we extend the | |||
framework by defining media capabilities that can be used to | framework by defining media capabilities that can be used to | |||
negotiate media types and their associated parameters. | negotiate media types and their associated parameters. | |||
skipping to change at page 1, line 38 | skipping to change at page 1, line 38 | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at http://datatracker.ietf.org/drafts/current/. | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on September 13, 2012. | This Internet-Draft will expire on January 10, 2013. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2012 IETF Trust and the persons identified as the | Copyright (c) 2012 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (http://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
skipping to change at page 3, line 7 | skipping to change at page 3, line 7 | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
3. SDP Media Capabilities . . . . . . . . . . . . . . . . . . . . 6 | 3. SDP Media Capabilities . . . . . . . . . . . . . . . . . . . . 8 | |||
3.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Requirements . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.2. Solution Overview . . . . . . . . . . . . . . . . . . . . 7 | 3.2. Solution Overview . . . . . . . . . . . . . . . . . . . . 9 | |||
3.3. New Capability Attributes . . . . . . . . . . . . . . . . 13 | 3.3. New Capability Attributes . . . . . . . . . . . . . . . . 15 | |||
3.3.1. The Media Format Capability Attributes . . . . . . . . 13 | 3.3.1. The Media Format Capability Attributes . . . . . . . . 15 | |||
3.3.2. The Media Format Parameter Capability Attribute . . . 15 | 3.3.2. The Media Format Parameter Capability Attribute . . . 17 | |||
3.3.3. The Media-Specific Capability Attribute . . . . . . . 18 | 3.3.3. The Media-Specific Capability Attribute . . . . . . . 20 | |||
3.3.4. New Configuration Parameters . . . . . . . . . . . . . 20 | 3.3.4. New Configuration Parameters . . . . . . . . . . . . . 22 | |||
3.3.5. The Latent Configuration Attribute . . . . . . . . . . 21 | 3.3.5. The Latent Configuration Attribute . . . . . . . . . . 24 | |||
3.3.6. Enhanced Potential Configuration Attribute . . . . . . 24 | 3.3.6. Enhanced Potential Configuration Attribute . . . . . . 26 | |||
3.3.7. Substitution of Media Payload Type Numbers in | 3.3.7. Substitution of Media Payload Type Numbers in | |||
Capability Attribute Parameters . . . . . . . . . . . 27 | Capability Attribute Parameters . . . . . . . . . . . 29 | |||
3.3.8. The Session Capability Attribute . . . . . . . . . . . 28 | 3.3.8. The Session Capability Attribute . . . . . . . . . . . 30 | |||
3.4. Offer/Answer Model Extensions . . . . . . . . . . . . . . 32 | 3.4. Offer/Answer Model Extensions . . . . . . . . . . . . . . 35 | |||
3.4.1. Generating the Initial Offer . . . . . . . . . . . . . 33 | 3.4.1. Generating the Initial Offer . . . . . . . . . . . . . 35 | |||
3.4.2. Generating the Answer . . . . . . . . . . . . . . . . 36 | 3.4.2. Generating the Answer . . . . . . . . . . . . . . . . 39 | |||
3.4.3. Offerer Processing of the Answer . . . . . . . . . . . 40 | 3.4.3. Offerer Processing of the Answer . . . . . . . . . . . 43 | |||
3.4.4. Modifying the Session . . . . . . . . . . . . . . . . 41 | 3.4.4. Modifying the Session . . . . . . . . . . . . . . . . 43 | |||
4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 | 4. Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 | |||
4.1. Alternative Codecs . . . . . . . . . . . . . . . . . . . . 42 | 4.1. Alternative Codecs . . . . . . . . . . . . . . . . . . . . 45 | |||
4.2. Alternative Combinations of Codecs (Session | 4.2. Alternative Combinations of Codecs (Session | |||
Configurations) . . . . . . . . . . . . . . . . . . . . . 45 | Configurations) . . . . . . . . . . . . . . . . . . . . . 48 | |||
4.3. Latent Media Streams . . . . . . . . . . . . . . . . . . . 45 | 4.3. Latent Media Streams . . . . . . . . . . . . . . . . . . . 48 | |||
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 | 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 51 | |||
5.1. New SDP Attributes . . . . . . . . . . . . . . . . . . . . 48 | 5.1. New SDP Attributes . . . . . . . . . . . . . . . . . . . . 51 | |||
5.2. New SDP Option Tag . . . . . . . . . . . . . . . . . . . . 49 | 5.2. New SDP Option Tag . . . . . . . . . . . . . . . . . . . . 52 | |||
5.3. New SDP Capability Negotiation Parameters . . . . . . . . 49 | 5.3. New SDP Capability Negotiation Parameters . . . . . . . . 52 | |||
6. Security Considerations . . . . . . . . . . . . . . . . . . . 50 | 6. Security Considerations . . . . . . . . . . . . . . . . . . . 53 | |||
7. Changes from previous versions . . . . . . . . . . . . . . . . 51 | 7. Changes from previous versions . . . . . . . . . . . . . . . . 54 | |||
7.1. Changes from version 12 . . . . . . . . . . . . . . . . . 51 | 7.1. Changes from version 13 . . . . . . . . . . . . . . . . . 54 | |||
7.2. Changes from version 11 . . . . . . . . . . . . . . . . . 51 | 7.2. Changes from version 12 . . . . . . . . . . . . . . . . . 54 | |||
7.3. Changes from version 10 . . . . . . . . . . . . . . . . . 51 | 7.3. Changes from version 11 . . . . . . . . . . . . . . . . . 54 | |||
7.4. Changes from version 09 . . . . . . . . . . . . . . . . . 52 | 7.4. Changes from version 10 . . . . . . . . . . . . . . . . . 54 | |||
7.5. Changes from version 08 . . . . . . . . . . . . . . . . . 52 | 7.5. Changes from version 09 . . . . . . . . . . . . . . . . . 55 | |||
7.6. Changes from version 04 . . . . . . . . . . . . . . . . . 52 | 7.6. Changes from version 08 . . . . . . . . . . . . . . . . . 55 | |||
7.7. Changes from version 03 . . . . . . . . . . . . . . . . . 52 | 7.7. Changes from version 04 . . . . . . . . . . . . . . . . . 55 | |||
7.8. Changes from version 02 . . . . . . . . . . . . . . . . . 53 | 7.8. Changes from version 03 . . . . . . . . . . . . . . . . . 56 | |||
7.9. Changes from version 01 . . . . . . . . . . . . . . . . . 54 | 7.9. Changes from version 02 . . . . . . . . . . . . . . . . . 56 | |||
7.10. Changes from version 00 . . . . . . . . . . . . . . . . . 54 | 7.10. Changes from version 01 . . . . . . . . . . . . . . . . . 57 | |||
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 55 | 7.11. Changes from version 00 . . . . . . . . . . . . . . . . . 57 | |||
9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 56 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 58 | |||
9.1. Normative References . . . . . . . . . . . . . . . . . . . 56 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . . 59 | |||
9.2. Informative References . . . . . . . . . . . . . . . . . . 56 | 9.1. Normative References . . . . . . . . . . . . . . . . . . . 59 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 57 | 9.2. Informative References . . . . . . . . . . . . . . . . . . 59 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 60 | ||||
1. Introduction | 1. Introduction | |||
Session Description Protocol (SDP) capability negotiation [RFC5939] | Session Description Protocol (SDP) capability negotiation [RFC5939] | |||
provides a general framework for indicating and negotiating | provides a general framework for indicating and negotiating | |||
capabilities in SDP[RFC4566]. The base framework defines only | capabilities in SDP[RFC4566]. The base framework defines only | |||
capabilities for negotiating transport protocols and attributes. | capabilities for negotiating transport protocols and attributes. | |||
The [RFC5939] document lists some of the issues with the current SDP | The [RFC5939] document lists some of the issues with the current SDP | |||
capability negotiation process. An additional real life case is to | capability negotiation process. An additional real life case is to | |||
skipping to change at page 5, line 12 | skipping to change at page 6, line 12 | |||
record for processing by the receiver; and the construction of an | record for processing by the receiver; and the construction of an | |||
answer based on a selected proposed configuration is straightforward. | answer based on a selected proposed configuration is straightforward. | |||
2. Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC2119 [RFC2119] and | document are to be interpreted as described in RFC2119 [RFC2119] and | |||
indicate requirement levels for compliant RTP implementations. | indicate requirement levels for compliant RTP implementations. | |||
"Actual Configuration": An actual configuration specifies which | ||||
combinations of SDP session parameters and media stream components | ||||
can be used in the current offer/answer exchange and with what | ||||
parameters. Use of an actual configuration does not require any | ||||
further negotiation in the offer/answer exchange. See [RFC5939] for | ||||
further details. | ||||
"Base Attributes": Conventional SDP attributes appearing in the base | "Base Attributes": Conventional SDP attributes appearing in the base | |||
configuration of a media block. | configuration of a media block. | |||
"Base Configuration": The media configuration represented by a media | "Base Configuration": The media configuration represented by a media | |||
block exclusive of all the capability negotiation attributes defined | block exclusive of all the capability negotiation attributes defined | |||
in this document, the base capability negotiation document[RFC5939], | in this document, the base capability negotiation document[RFC5939], | |||
or any other capability negotiation document. In an offer SDP, the | or any other capability negotiation document. In an offer SDP, the | |||
base configuration corresponds to the actual configuration as defined | base configuration corresponds to the actual configuration as defined | |||
in [RFC5939]. | in [RFC5939]. | |||
"Conventional Attribute": Any SDP attribute other than those defined | "Conventional Attribute": Any SDP attribute other than those defined | |||
by the series of capability negotiation specifications. | by the series of capability negotiation specifications. | |||
"Conventional SDP": An SDP record devoid of capability negotiation | "Conventional SDP": An SDP record devoid of capability negotiation | |||
attributes. | attributes. | |||
"Media Capability": A media encoding, typically a media subtype such | "Media Capability": A media format, typically a media subtype such as | |||
as PCMU, H263-1998, or T38. | PCMU, H263-1998, or T38. The media capability may also include media | |||
format parameters and associated attributes. | ||||
"Potential Configuration": A potential configuration indicates which | ||||
combinations of capabilities can be used for the session and its | ||||
associated media stream components. Potential configurations are not | ||||
ready for use, however they are offered for potential use in the | ||||
current offer/answer exchange. They provide an alternative that may | ||||
be used instead of the actual configuration, subject to negotiation | ||||
in the current offer/answer exchange. See [RFC5939] for further | ||||
details. | ||||
"Latent Configuration": A latent configuration indicates which | ||||
combinations of capabilities could be used in a future negotiation | ||||
for the session and its associated media stream components. Latent | ||||
configurations are neither ready for use, nor are they offered for | ||||
actual or potential use in the current offer/answer exchange. Latent | ||||
configurations merely inform the other side of possible | ||||
configurations supported by the entity. Those latent configurations | ||||
may be used to guide subsequent offer/answer exchanges, but they are | ||||
not offered for use as part of the current offer/answer exchange. | ||||
3. SDP Media Capabilities | 3. SDP Media Capabilities | |||
The SDP capability negotiation [RFC5939] discusses the use of any SDP | The SDP capability negotiation [RFC5939] discusses the use of any SDP | |||
[RFC4566] attribute (a=) under the attribute capability "acap". The | [RFC4566] attribute (a=) under the attribute capability "acap". The | |||
limitations of using acap for fmtp and rtpmap in a potential | limitations of using acap for fmtp and rtpmap in a potential | |||
configuration are described in [RFC5939]; for example they can be | configuration are described in [RFC5939]; for example they can be | |||
used only at the media level since they are media level attributes. | used only at the media level since they are media level attributes. | |||
The [RFC5939] does not provide a way to exchange media-level | The [RFC5939] does not provide a way to exchange media-level | |||
capabilities prior to the actual offer of the associated media | capabilities prior to the actual offer of the associated media | |||
skipping to change at page 10, line 31 | skipping to change at page 12, line 31 | |||
o=- 25678 753849 IN IP4 192.0.2.1 | o=- 25678 753849 IN IP4 192.0.2.1 | |||
s= | s= | |||
c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
t=0 0 | t=0 0 | |||
a=creq:med-v0 | a=creq:med-v0 | |||
m=audio 3456 RTP/AVP 0 18 | m=audio 3456 RTP/AVP 0 18 | |||
a=tcap:1 RTP/SAVP RTP/AVP | a=tcap:1 RTP/SAVP RTP/AVP | |||
a=rtpmap:0 PCMU/8000/1 | a=rtpmap:0 PCMU/8000/1 | |||
a=rtpmap:18 G729/8000/1 | a=rtpmap:18 G729/8000/1 | |||
a=fmtp:18 annexb=yes | a=fmtp:18 annexb=yes | |||
a=rmcap:1,4 g729/8000/1 | a=rmcap:1,4 G729/8000/1 | |||
a=rmcap:2 PCMU/8000/1 | a=rmcap:2 PCMU/8000/1 | |||
a=rmcap:5 telephone-event/8000 | a=rmcap:5 telephone-event/8000 | |||
a=mfcap:1 annexb=no | a=mfcap:1 annexb=no | |||
a=mfcap:4 annexb=yes | a=mfcap:4 annexb=yes | |||
a=mfcap:5 0-11 | a=mfcap:5 0-11 | |||
a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_32 \ | a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_32 \ | |||
inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 | inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 | |||
a=pcfg:1 m=4,5|1,5 t=1 a=1 pt=1:100,4:101,5:102 | a=pcfg:1 m=4,5|1,5 t=1 a=1 pt=1:100,4:101,5:102 | |||
a=pcfg:2 m=2 t=1 a=1 pt=2:103 | a=pcfg:2 m=2 t=1 a=1 pt=2:103 | |||
a=pcfg:3 m=4 t=2 pt=4:18 | a=pcfg:3 m=4 t=2 pt=4:18 | |||
The required base and extensions are provided by the "a=creq" | The required base and extensions are provided by the "a=creq" | |||
attribute defined in [RFC5939], with the option tag "med-v0", which | attribute defined in [RFC5939], with the option tag "med-v0", which | |||
indicates that the extension framework defined here, must be | indicates that the extension framework defined here, must be | |||
supported. The Base level support is implied since it is required | supported. The base level capability negotiation support ("cap-v0" | |||
for the extensions. | [RFC5939]) is implied since it is required for the extensions. | |||
The "m=" line indicates that Alice is offering to use plain RTP with | The "m=" line indicates that Alice is offering to use plain RTP with | |||
PCMU or G.729B. The media line implicitly defines the default | PCMU or G.729B. The media line implicitly defines the default | |||
transport protocol (RTP/AVP in this case) and the default actual | transport protocol (RTP/AVP in this case) and the default actual | |||
configuration. | configuration. | |||
The "a=tcap:1" line, specified in the base protocol, defines | The "a=tcap:1" line, specified in the capability negotiation base | |||
transport protocol capabilities, in this case Secure RTP (SAVP | protocol [RFC5939], defines transport protocol capabilities, in this | |||
profile) as the first option and RTP (AVP profile) as the second | case Secure RTP (SAVP profile) as the first option and RTP (AVP | |||
option. | profile) as the second option. | |||
The "a=rmcap:1,4" line defines two G.729 RTP-based media format | The "a=rmcap:1,4" line defines two G.729 RTP-based media format | |||
capabilities, numbered 1 and 4, and their encoding rate. The | capabilities, numbered 1 and 4, and their encoding rate. The | |||
capabilities are of media type "audio" and subtype G729. Note that | capabilities are of media type "audio" and subtype G729. Note that | |||
the media subtype is explicitly specified here, rather than RTP | the media subtype is explicitly specified here, rather than RTP | |||
payload type numbers. This permits the assignment of payload type | payload type numbers. This permits the assignment of payload type | |||
numbers in the media stream configuration specification. In this | numbers in the media stream configuration specification. In this | |||
example, two G.729 subtype capabilities are defined. This permits | example, two G.729 subtype capabilities are defined. This permits | |||
the declaration of two sets of formatting parameters for G.729. | the declaration of two sets of formatting parameters for G.729. | |||
skipping to change at page 12, line 23 | skipping to change at page 14, line 23 | |||
stream. | stream. | |||
The second alternative ("a=pcfg:2 ...") specifies media capability 2, | The second alternative ("a=pcfg:2 ...") specifies media capability 2, | |||
i.e., PCMU, under the RTP/SAVP profile, with the same SRTP key | i.e., PCMU, under the RTP/SAVP profile, with the same SRTP key | |||
material. | material. | |||
The third alternative ("a=pcfg:3 ...") offers G.729B unsecured; its | The third alternative ("a=pcfg:3 ...") offers G.729B unsecured; its | |||
only purpose in this example is to show a preference for G.729B over | only purpose in this example is to show a preference for G.729B over | |||
PCMU. | PCMU. | |||
The media line, with any qualifying attributes such as fmtp or | Per [RFC5939], the media line, with any qualifying attributes such as | |||
rtpmap, is itself considered a valid configuration; it is assumed to | fmtp or rtpmap, is itself considered a valid configuration (the | |||
be the lowest preference. | current actual configuration); it has the lowest preference (per | |||
[RFC5939]). | ||||
Bob receives the SDP offer from Alice. Bob supports G.729B, PCMU, | Bob receives the SDP offer from Alice. Bob supports G.729B, PCMU, | |||
and telephone events over RTP, but not SRTP, hence he accepts the | and telephone events over RTP, but not SRTP, hence he accepts the | |||
potential configuration 3 for RTP provided by Alice. Bob generates | potential configuration 3 for RTP provided by Alice. Bob generates | |||
the following answer: | the following answer: | |||
v=0 | v=0 | |||
o=- 24351 621814 IN IP4 192.0.2.2 | o=- 24351 621814 IN IP4 192.0.2.2 | |||
s= | s= | |||
c=IN IP4 192.0.2.2 | c=IN IP4 192.0.2.2 | |||
skipping to change at page 15, line 6 | skipping to change at page 17, line 7 | |||
cap-num (see Section 3.3.5). | cap-num (see Section 3.3.5). | |||
The format-name is a media format description for non-RTP based media | The format-name is a media format description for non-RTP based media | |||
as defined for the <fmt> part of the media description ("m=" line) in | as defined for the <fmt> part of the media description ("m=" line) in | |||
[RFC4566]. In simple terms, it is the name of the media format, e.g. | [RFC4566]. In simple terms, it is the name of the media format, e.g. | |||
"t38". This form can also be used in cases such as BFCP [RFC4585] | "t38". This form can also be used in cases such as BFCP [RFC4585] | |||
where the fmt list in the m-line is effectively ignored (BFCP uses | where the fmt list in the m-line is effectively ignored (BFCP uses | |||
"*"). | "*"). | |||
The "rmcap" and "omcap" attributes can be provided at the session- | The "rmcap" and "omcap" attributes can be provided at the session- | |||
level and/or the media-level. There can be more than one rmcap plus | level and/or the media-level. There can be more than one rmcap and | |||
one omcap attribute at the session or media level (i.e more than one | more than one omcap attribute at both the session and media level | |||
of each at the session-level and more than one of each in each media | (i.e., more than one of each at the session-level and more than one | |||
description). Each media-cap-num MUST be unique within the entire | of each in each media description). Each media-cap-num MUST be | |||
SDP record; it is used to identify that media capability in | unique within the entire SDP record; it is used to identify that | |||
potential, latent and actual configurations, and in other attribute | media capability in potential, latent and actual configurations, and | |||
lines as explained below. Note that the media-cap-num values are | in other attribute lines as explained below. Note that the media- | |||
shared between the rmcap and omcap attributes, and hence the | cap-num values are shared between the rmcap and omcap attributes, and | |||
uniqueness requirement applies to the union of them. When the media | hence the uniqueness requirement applies to the union of them. When | |||
capabilities are used in a potential, latent or actual configuration, | the media capabilities are used in a potential, latent or actual | |||
the media formats referred by those configurations apply at the media | configuration, the media formats referred by those configurations | |||
level, irrespective of whether the media capabilities themselves were | apply at the media level, irrespective of whether the media | |||
specified at the session or media level. In other words, the media | capabilities themselves were specified at the session or media level. | |||
capability applies to the specific media description associated with | In other words, the media capability applies to the specific media | |||
the configuration which invokes it. | description associated with the configuration which invokes it. | |||
For example: | For example: | |||
v=0 | v=0 | |||
o=- 24351 621814 IN IP4 192.0.2.2 | o=- 24351 621814 IN IP4 192.0.2.2 | |||
s= | s= | |||
c=IN IP4 192.0.2.2 | c=IN IP4 192.0.2.2 | |||
t=0 0 | t=0 0 | |||
a=rmcap:1 L16/8000/1 | a=rmcap:1 L16/8000/1 | |||
a=rmcap:2 L16/16000/2 | a=rmcap:2 L16/16000/2 | |||
a=rmcap:3,4 H263-1998/90000 | a=rmcap:3 H263-1998/90000 | |||
a=omcap:4 example | ||||
m=audio 54320 RTP/AVP 0 | m=audio 54320 RTP/AVP 0 | |||
a=pcfg:1 m=1|2, pt=1:99,2:98 | a=pcfg:1 m=1|2, pt=1:99,2:98 | |||
m=video 66544 RTP/AVP 100 | m=video 66544 RTP/AVP 100 | |||
a=rtpmap:100 H264/90000 | a=rtpmap:100 H264/90000 | |||
a=pcfg:10 m=3 pt=3:101 | a=pcfg:10 m=3 pt=3:101 | |||
a=tcap:1 TCP | ||||
a=pcfg:11 m=4 t=1 | ||||
3.3.2. The Media Format Parameter Capability Attribute | 3.3.2. The Media Format Parameter Capability Attribute | |||
This attribute is used to associate media format specific format | This attribute is used to associate media format specific format | |||
parameters with one or more media capabilities. The form of the | parameters with one or more media capabilities. The form of the | |||
attribute is: | attribute is: | |||
a=mfcap:<media-caps> <list of parameters> | a=mfcap:<media-caps> <list of parameters> | |||
where <media-caps> permits the list of parameters to be associated | where <media-caps> permits the list of parameters to be associated | |||
skipping to change at page 17, line 23 | skipping to change at page 19, line 26 | |||
The "mfcap" attribute can be provided at the session-level and the | The "mfcap" attribute can be provided at the session-level and the | |||
media-level. There can be more than one mfcap attribute at the | media-level. There can be more than one mfcap attribute at the | |||
session or media level. The unique media-cap-num is used to | session or media level. The unique media-cap-num is used to | |||
associate the parameters with a media capability. | associate the parameters with a media capability. | |||
As a simple example, a G.729 capability is, by default, considered to | As a simple example, a G.729 capability is, by default, considered to | |||
support comfort noise as defined by Annex B. Capabilities for G.729 | support comfort noise as defined by Annex B. Capabilities for G.729 | |||
with and without comfort noise support may thus be defined by: | with and without comfort noise support may thus be defined by: | |||
a=rmcap:1,2 audio G729/8000 | a=rmcap:1,2 G729/8000 | |||
a=mfcap:2 annexb:no | a=mfcap:2 annexb:no | |||
Media format capability 1 supports G.729 with Annex B, whereas media | Media format capability 1 supports G.729 with Annex B, whereas media | |||
format capability 2 supports G.729 without Annex B. | format capability 2 supports G.729 without Annex B. | |||
Example for H.263 video: | Example for H.263 video: | |||
a=rmcap:1 video H263-1998/90000 | a=rmcap:1 H263-1998/90000 | |||
a=rmcap:2 video H263-2000/90000 | a=rmcap:2 H263-2000/90000 | |||
a=mfcap:1 CIF=4;QCIF=2;F=1;K=1 | a=mfcap:1 CIF=4;QCIF=2;F=1;K=1 | |||
a=mfcap:2 profile=2;level=2.2 | a=mfcap:2 profile=2;level=2.2 | |||
Finally, for six format combinations of the Adaptive MultiRate codec: | Finally, for six format combinations of the Adaptive MultiRate codec: | |||
a=rmcap:1-3 AMR/8000/1 | a=rmcap:1-3 AMR/8000/1 | |||
a=rmcap:4-6 AMR-WB/16000/1 | a=rmcap:4-6 AMR-WB/16000/1 | |||
a=mfcap:1,2,3,4 mode-change-capability=1 | a=mfcap:1,2,3,4 mode-change-capability=1 | |||
a=mfcap:5,6 mode-change-capability=2 | a=mfcap:5,6 mode-change-capability=2 | |||
a=mfcap:1,2,3,5 max-red=220 | a=mfcap:1,2,3,5 max-red=220 | |||
skipping to change at page 18, line 28 | skipping to change at page 20, line 34 | |||
a=fmtp:99 mode-change-capability=1; octet-align=1; \ | a=fmtp:99 mode-change-capability=1; octet-align=1; \ | |||
mode-set=0,3,5,6 | mode-set=0,3,5,6 | |||
and so on for the other four combinations. SDP could thus convert | and so on for the other four combinations. SDP could thus convert | |||
the media capabilities specifications into one or more alternative | the media capabilities specifications into one or more alternative | |||
media stream specifications, one of which can be chosen for the | media stream specifications, one of which can be chosen for the | |||
answer. | answer. | |||
3.3.3. The Media-Specific Capability Attribute | 3.3.3. The Media-Specific Capability Attribute | |||
Media-specific attributes, beyond the rtpmap and fmtp attributes, may | Attributes and parameters associated with a media format are | |||
be associated with media capability numbers via a new media-specific | typically specified using the "rtpmap" and "fmtp" attributes in SDP, | |||
attribute, mscap, of the following form: | and the similar "rmcap" and "mfcap" attributes in SDP Media | |||
Capabilities. Some SDP extensions define other attributes that need | ||||
to be associated with media formats, for example the "rtcp-fb" | ||||
attribute defined in [RFC4585]. Such media-specific attributes, | ||||
beyond the rtpmap and fmtp attributes, may be associated with media | ||||
capability numbers via a new media-specific attribute, mscap, of the | ||||
following form: | ||||
a=mscap:<media caps star> <att field> <att value> | a=mscap:<media caps star> <att field> <att value> | |||
where <media caps star> is a (list of) media capability number(s), | where <media caps star> is a (list of) media capability number(s), | |||
<att field> is the attribute name, and <att value> is the value field | <att field> is the attribute name, and <att value> is the value field | |||
for the named attribute. Note that the media capability numbers | for the named attribute. Note that the media capability numbers | |||
refer to media capabilities specified elsewhere in the SDP ("rmcap" | refer to media capabilities specified elsewhere in the SDP ("rmcap" | |||
and/or "omcap"). The media capability numbers may include a wildcard | and/or "omcap"). The media capability numbers may include a wildcard | |||
("*"), which will be used instead of any payload type mappings. In | ("*"), which will be used instead of any payload type mappings in the | |||
ABNF, we have: | resulting SDP (see, e.g. [RFC4585] and the example below). In ABNF, | |||
we have: | ||||
media-specific-capability = "a=mscap:" | media-specific-capability = "a=mscap:" | |||
media-caps-star | media-caps-star | |||
1*WSP att-field ; from RFC4566 | 1*WSP att-field ; from RFC4566 | |||
1*WSP att-value ; from RFC4566 | 1*WSP att-value ; from RFC4566 | |||
media-caps-star = media-cap-star-element | media-caps-star = media-cap-star-element | |||
*["," media-cap-star-element] | *["," media-cap-star-element] | |||
media-cap-star-element = media-cap-num [wildcard] | media-cap-star-element = media-cap-num [wildcard] | |||
/ media-cap-num-range [wildcard] | / media-cap-num-range [wildcard] | |||
wildcard = "*" | wildcard = "*" | |||
Given an association between a media capability and a payload type | Given an association between a media capability and a payload type | |||
number as specified by the pt= parameters in an lcfg or pcfg | number as specified by the pt= parameters in a pcfg attribute line, a | |||
attribute line, a mscap line may be translated easily into a | mscap line may be translated easily into a conventional SDP attribute | |||
conventional SDP attribute line of the form | line of the form | |||
a=<att field>":"<fmt> <att value> ; <fmt> defined in [RFC4566] | a=<att field>":"<fmt> <att value> ; <fmt> defined in [RFC4566] | |||
A resulting attribute that is not a legal SDP attribute as specified | A resulting attribute that is not a legal SDP attribute as specified | |||
by RFC4566 MUST be ignored by the receiver. | by RFC4566 MUST be ignored by the receiver. | |||
If a media capability number (or range) contains a wildcard character | If a media capability number (or range) contains a wildcard character | |||
at the end, any payload type mapping specified for that media | at the end, any payload type mapping specified for that media | |||
specific capability (or range of capabilities) will use the wildcard | specific capability (or range of capabilities) will use the wildcard | |||
character in the resulting SDP instead of the payload type specified | character in the resulting SDP instead of the payload type specified | |||
skipping to change at page 21, line 4 | skipping to change at page 23, line 19 | |||
payload type number to be associated with each media type in a | payload type number to be associated with each media type in a | |||
potential, actual, or latent configuration. We define the payload | potential, actual, or latent configuration. We define the payload | |||
type number mapping parameter, payload-number-config-list, in | type number mapping parameter, payload-number-config-list, in | |||
accordance with the extension-config-list format defined in | accordance with the extension-config-list format defined in | |||
[RFC5939]. In ABNF: | [RFC5939]. In ABNF: | |||
payload-number-config-list = ["+"]"pt=" media-map-list | payload-number-config-list = ["+"]"pt=" media-map-list | |||
media-map-list = media-map *["," media-map] | media-map-list = media-map *["," media-map] | |||
media-map = media-cap-num ":" payload-type-number | media-map = media-cap-num ":" payload-type-number | |||
; media-cap-num is defined in 3.3.1 | ; media-cap-num is defined in 3.3.1 | |||
payload-type-number = 1*3(DIGIT) ; RTP payload type number | payload-type-number = 1*3(DIGIT) ; RTP payload type number | |||
The example in Section 3.3.7 shows how the parameters from the rmcap | The example in Section 3.3.7 shows how the parameters from the rmcap | |||
line are mapped to payload type numbers from the pcfg "pt" parameter. | line are mapped to payload type numbers from the pcfg "pt" parameter. | |||
The use of the plus sign ("+") is desribed in RFC5939. | The use of the plus sign ("+") is described in [RFC5939]. | |||
A latent configuration represents a future capability, hence the pt= | A latent configuration represents a future capability, hence the pt= | |||
parameter is not directly meaningful in the lcfg attribute because no | parameter is not directly meaningful in the lcfg attribute because no | |||
actual media session is being offered or accepted; it is permitted in | actual media session is being offered or accepted; it is permitted in | |||
order to tie any payload type number parameters within attributes to | order to tie any payload type number parameters within attributes to | |||
the proper media format. A primary example is the case of format | the proper media format. A primary example is the case of format | |||
parameters for the Redundant Audio Data (RED) payload, which are | parameters for the Redundant Audio Data (RED) payload, which are | |||
payload type numbers. Specific payload type numbers used in a latent | payload type numbers. Specific payload type numbers used in a latent | |||
configuration MAY be interpreted as suggestions to be used in any | configuration MAY be interpreted as suggestions to be used in any | |||
future offer based on the latent configuration, but they are not | future offer based on the latent configuration, but they are not | |||
skipping to change at page 22, line 28 | skipping to change at page 24, line 43 | |||
Latent configurations may be announced by use of the latent | Latent configurations may be announced by use of the latent | |||
configuration attribute, which is defined in a manner very similar to | configuration attribute, which is defined in a manner very similar to | |||
the potential configuration attribute. The latent configuration | the potential configuration attribute. The latent configuration | |||
attribute combines the properties of a media line and a potential | attribute combines the properties of a media line and a potential | |||
configuration. The media type (mt=) and the transport protocol(s) | configuration. The media type (mt=) and the transport protocol(s) | |||
(t=) MUST be specified since the latent configuration is independent | (t=) MUST be specified since the latent configuration is independent | |||
of any media line present. In most cases, the media configuration | of any media line present. In most cases, the media configuration | |||
(m=) parameter MUST be present as well (see Section 4 for examples). | (m=) parameter MUST be present as well (see Section 4 for examples). | |||
The lcfg attribute is a media level attribute. | The lcfg attribute is a media level attribute. | |||
The lcfg attribute is defined as a media level attribute since it | ||||
specifies a possible future media stream. However the lcfg | ||||
attribute is not necessarily related to the media description | ||||
within which it is provided. Session capabilities ("sescap") may | ||||
be used to indicate this. | ||||
Each media line in an SDP description represents an offered | Each media line in an SDP description represents an offered | |||
simultaneous media stream, whereas each latent configuration | simultaneous media stream, whereas each latent configuration | |||
represents an additional stream which may be negotiated in a future | represents an additional stream which may be negotiated in a future | |||
offer/answer exchange. Session capability attributes may be used to | offer/answer exchange. Session capability attributes may be used to | |||
determine whether a latent configuration may be used to form an offer | determine whether a latent configuration may be used to form an offer | |||
for an additional simultaneous stream or to reconfigure an existing | for an additional simultaneous stream or to reconfigure an existing | |||
stream in a subsequent offer/answer exchange. | stream in a subsequent offer/answer exchange. | |||
The latent configuration attribute is of the form: | The latent configuration attribute is of the form: | |||
skipping to change at page 25, line 4 | skipping to change at page 27, line 25 | |||
reply MAY also contain potential and/or latent configuration | reply MAY also contain potential and/or latent configuration | |||
attributes, with parameters, to indicate which other offered | attributes, with parameters, to indicate which other offered | |||
configurations would be acceptable. This information is useful if it | configurations would be acceptable. This information is useful if it | |||
becomes desirable to reconfigure a media stream, e.g., to reduce | becomes desirable to reconfigure a media stream, e.g., to reduce | |||
resource consumption. | resource consumption. | |||
When potential and/or latent configurations are returned in an | When potential and/or latent configurations are returned in an | |||
answer, all numbering MUST refer to the configuration and capability | answer, all numbering MUST refer to the configuration and capability | |||
attribute numbering of the offer. The offered capability attributes | attribute numbering of the offer. The offered capability attributes | |||
need not be returned in the answer. The answer MAY include | need not be returned in the answer. The answer MAY include | |||
additional capability attributes and/or configuratons (with distinct | additional capability attributes and/or configurations (with distinct | |||
numbering). The parameter values of any returned pcfg or lcfg | numbering). The parameter values of any returned pcfg or lcfg | |||
attributes MUST be a subset of those included in the offered | attributes MUST be a subset of those included in the offered | |||
configurations and/or those added by the answerer; values may be | configurations and/or those added by the answerer; values MAY be | |||
omitted only if they were indicated as alternative sets, or optional, | omitted only if they were indicated as alternative sets, or optional, | |||
in the original offer. The parameter set indicated in the returned | in the original offer. The parameter set indicated in the returned | |||
acfg attribute need not be repeated in a returned pcfg attribute. | acfg attribute need not be repeated in a returned pcfg attribute. | |||
The answerer may return more than one pcfg attribute with the same | The answerer MAY return more than one pcfg attribute with the same | |||
configuration number if it is necessary to describe selected | configuration number if it is necessary to describe selected | |||
combinations of optional or alternative parameters. | combinations of optional or alternative parameters. | |||
Similarly, one or more session capability attributes (a=sescap) may | Similarly, one or more session capability attributes (a=sescap) MAY | |||
be returned to indicate which of the offered session capabilities is/ | be returned to indicate which of the offered session capabilities is/ | |||
are supportable by the answerer (see Section 3.3.8.) | are supportable by the answerer (see Section 3.3.8.) | |||
Note that, although the answerer MAY return capabilities beyond those | Note that, although the answerer MAY return capabilities beyond those | |||
included by the offerer, these capabilities MUST NOT be used to form | included by the offerer, these capabilities MUST NOT be used to form | |||
any base level media description in the answer. For this reason, it | any base level media description in the answer. For this reason, it | |||
is advisable for the offerer to include most, if not all, potential | is advisable for the offerer to include most, if not all, potential | |||
and latent configurations it can support in the initial offer, unless | and latent configurations it can support in the initial offer, unless | |||
the size of the resulting SDP is a concern. Either party MAY later | the size of the resulting SDP is a concern. Either party MAY later | |||
announce additional capabilities by renegotiating the session in a | announce additional capabilities by renegotiating the session in a | |||
skipping to change at page 25, line 39 | skipping to change at page 28, line 11 | |||
When media capabilities defined in rmcap attributes are used in | When media capabilities defined in rmcap attributes are used in | |||
potential configuration lines, the transport protocol uses RTP and it | potential configuration lines, the transport protocol uses RTP and it | |||
is necessary to assign payload type numbers. In some cases, it is | is necessary to assign payload type numbers. In some cases, it is | |||
desirable to assign different payload type numbers to the same media | desirable to assign different payload type numbers to the same media | |||
capability when used in different potential configurations. One | capability when used in different potential configurations. One | |||
example is when configurations for AVP and SAVP are offered: the | example is when configurations for AVP and SAVP are offered: the | |||
offerer would like the answerer to use different payload type numbers | offerer would like the answerer to use different payload type numbers | |||
for encrypted and unencrypted media so that it (the offerer) can | for encrypted and unencrypted media so that it (the offerer) can | |||
decide whether or not to render early media which arrives before the | decide whether or not to render early media which arrives before the | |||
answer is received. This association of distinct payload type | answer is received. | |||
number(s) with different transport protocols requires a separate pcfg | ||||
line for each protocol. Clearly, this technique cannot be used if | For example, if use of AVP was selected by the answerer, then | |||
the number of potential configurations exceeds the number of possible | media received by the offerer is not encrypted and hence can be | |||
payload type numbers. | played out prior to receiving the answer. Conversely, if SAVP was | |||
selected, cryptographic parameters and keying material present in | ||||
the answer may be needed to decrypt received media. If the offer | ||||
configuration indicated that AVP media uses one set of payload | ||||
types and SAVP a different set, then the offerer will know whether | ||||
media received prior to the answer is encrypted or not by simply | ||||
looking at the RTP payload type number in the received packet. | ||||
This association of distinct payload type number(s) with different | ||||
transport protocols requires a separate pcfg line for each protocol. | ||||
Clearly, this technique cannot be used if the number of potential | ||||
configurations exceeds the number of possible payload type numbers. | ||||
3.3.6.3. Processing of Media-Format-Related Conventional Attributes for | 3.3.6.3. Processing of Media-Format-Related Conventional Attributes for | |||
Potential Configurations | Potential Configurations | |||
In cases in which media capabilities negotiation is employed, SDP | In cases in which media capabilities negotiation is employed, SDP | |||
records are likely to contain conventional attributes such as rtpmap, | records are likely to contain conventional attributes such as rtpmap, | |||
fmtp, and other media-format-related lines, as well as capability | fmtp, and other media-format-related lines, as well as capability | |||
attributes such as rmcap, omcap, mfcap, and mscap which map into | attributes such as rmcap, omcap, mfcap, and mscap which map into | |||
those conventional attributes when invoked by a potential | those conventional attributes when invoked by a potential | |||
configuration. In such cases, it MAY be appropriate to employ the | configuration. In such cases, it MAY be appropriate to employ the | |||
skipping to change at page 26, line 24 | skipping to change at page 29, line 7 | |||
v=0 | v=0 | |||
o=- 25678 753849 IN IP4 192.0.2.1 | o=- 25678 753849 IN IP4 192.0.2.1 | |||
s= | s= | |||
c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
t=0 0 | t=0 0 | |||
a=creq:med-v0 | a=creq:med-v0 | |||
m=audio 3456 RTP/AVP 0 18 100 | m=audio 3456 RTP/AVP 0 18 100 | |||
a=rtpmap:100 telephone-events | a=rtpmap:100 telephone-events | |||
a=fmtp:100 0-11 | a=fmtp:100 0-11 | |||
a=rmcap:1 PCMU/8000 | a=rmcap:1 PCMU/8000 | |||
a=rmcap:2 g729/8000 | a=rmcap:2 G729/8000 | |||
a=rmcap:3 telephone-events/8000 | a=rmcap:3 telephone-events/8000 | |||
a=mfcap:3 0-15 | a=mfcap:3 0-15 | |||
a=pcfg:1 m=2,3|1,3 a=-m pt=1:0,2:18,3:100 | a=pcfg:1 m=2,3|1,3 a=-m pt=1:0,2:18,3:100 | |||
a=pcfg:2 | a=pcfg:2 | |||
In this example, PCMU is media capability 1, G729 is media capability | In this example, PCMU is media capability 1, G729 is media capability | |||
2, and telephone-event is media capability 3. The a=pcfg:1 line | 2, and telephone-event is media capability 3. The a=pcfg:1 line | |||
specifies that the preferred configuration is G.729 with extended | specifies that the preferred configuration is G.729 with extended | |||
dtmf events, second is G.711 mu-law with extended dtmf events, and | dtmf events, second is G.711 mu-law with extended dtmf events, and | |||
the base media-level attributes are to be deleted. Intermixing of | the base media-level attributes are to be deleted. Intermixing of | |||
skipping to change at page 26, line 50 | skipping to change at page 29, line 33 | |||
If the preferred configuration is selected, the SDP answer will look | If the preferred configuration is selected, the SDP answer will look | |||
like | like | |||
v=0 | v=0 | |||
o=- 25678 753849 IN IP4 192.0.2.1 | o=- 25678 753849 IN IP4 192.0.2.1 | |||
s= | s= | |||
c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
t=0 0 | t=0 0 | |||
a=csup:med-v0 | a=csup:med-v0 | |||
m=audio 6543 RTP/AVP 18 100 | m=audio 3456 RTP/AVP 18 100 | |||
a=rtpmap:100 telephone-events/8000 | a=rtpmap:100 telephone-events/8000 | |||
a=fmtp:100 0-15 | a=fmtp:100 0-15 | |||
a=acfg:1 m=2,3 pt=1:0,2:18,3:100 | a=acfg:1 m=2,3 pt=1:0,2:18,3:100 | |||
3.3.7. Substitution of Media Payload Type Numbers in Capability | 3.3.7. Substitution of Media Payload Type Numbers in Capability | |||
Attribute Parameters | Attribute Parameters | |||
In some cases, for example, when an RFC 2198 redundancy audio subtype | In some cases, for example, when an RFC 2198 [RFC2198] redundancy | |||
(RED) capability is defined in an mfcap attribute, the parameters to | audio subtype (RED) capability is defined in an mfcap attribute, the | |||
an attribute may contain payload type numbers. Two options are | parameters to an attribute may contain payload type numbers. Two | |||
available for specifying such payload type numbers. They may be | options are available for specifying such payload type numbers. They | |||
expressed explicitly, in which case they are bound to actual payload | may be expressed explicitly, in which case they are bound to actual | |||
types by means of the payload type number parameter (pt=) in the | payload types by means of the payload type number parameter (pt=) in | |||
appropriate potential or latent configuration. For example, the | the appropriate potential or latent configuration. For example, the | |||
following SDP fragment defines a potential configuration with | following SDP fragment defines a potential configuration with | |||
redundant G.711 mu-law: | redundant G.711 mu-law: | |||
m=audio 45678 RTP/AVP 0 | m=audio 45678 RTP/AVP 0 | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
a=rmcap:1 PCMU/8000 | a=rmcap:1 PCMU/8000 | |||
a=rmcap:2 RED/8000 | a=rmcap:2 RED/8000 | |||
a=mfcap:2 0/0 | a=mfcap:2 0/0 | |||
a=pcfg:1 m=2,1 pt=2:98,1:0 | a=pcfg:1 m=2,1 pt=2:98,1:0 | |||
skipping to change at page 28, line 15 | skipping to change at page 30, line 46 | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
a=rmcap:1 PCMU/8000 | a=rmcap:1 PCMU/8000 | |||
a=rmcap:2 RED/8000 | a=rmcap:2 RED/8000 | |||
a=mfcap:2 %m=1%/%m=1% | a=mfcap:2 %m=1%/%m=1% | |||
a=pcfg:1 m=2,1 pt=2:98,1:0 | a=pcfg:1 m=2,1 pt=2:98,1:0 | |||
and the equivalent SDP is the same as above. | and the equivalent SDP is the same as above. | |||
3.3.8. The Session Capability Attribute | 3.3.8. The Session Capability Attribute | |||
Potential and latent configurations enable offerers and answerers to | ||||
express a wide range of alternative configurations for current and | ||||
future negotiation. However in practice, it may not be possible to | ||||
support all combinations of these configurations. | ||||
The session capability attribute provides a means for the offerer | The session capability attribute provides a means for the offerer | |||
and/or the answerer to specify combinations of specific media stream | and/or the answerer to specify combinations of specific media stream | |||
configurations which it is willing and able to support. Each session | configurations which it is willing and able to support. Each session | |||
capability in an offer or answer MAY be expressed as a list of | capability in an offer or answer MAY be expressed as a list of | |||
required potential configurations, and MAY include a list of optional | required potential configurations, and MAY include a list of optional | |||
potential and/or latent configurations. | potential and/or latent configurations. | |||
The choices of session capabilities may be based on processing load, | The choices of session capabilities may be based on processing load, | |||
total bandwidth, or any other criteria of importance to the | total bandwidth, or any other criteria of importance to the | |||
communicating parties. If the answerer supports media capabilities | communicating parties. If the answerer supports media capabilities | |||
skipping to change at page 29, line 13 | skipping to change at page 31, line 48 | |||
that the session preference order, when present, takes precedence | that the session preference order, when present, takes precedence | |||
over the individual media stream configuration preference order. | over the individual media stream configuration preference order. | |||
Use of session capability attributes requires that configuration | Use of session capability attributes requires that configuration | |||
numbers assigned to potential and latent configurations MUST be | numbers assigned to potential and latent configurations MUST be | |||
unique across the entire session; [RFC5939] requires only that pcfg | unique across the entire session; [RFC5939] requires only that pcfg | |||
configuration numbers be unique within a media description. | configuration numbers be unique within a media description. | |||
As an example, consider an endpoint that is capable of supporting an | As an example, consider an endpoint that is capable of supporting an | |||
audio stream with either one H.264 video stream or two H.263 video | audio stream with either one H.264 video stream or two H.263 video | |||
streams with a floor control stream. The SDP offer might look like | streams with a floor control stream. In the latter case, the second | |||
the following (offering audio, two H.263 video streams and BFCP)- the | video stream is optional. The SDP offer might look like the | |||
empty lines are added for readability only (not part of valid SDP): | following (offering audio, an H.263 video streams, BFCP and another | |||
optional H.263 video stream)- the empty lines are added for | ||||
readability only (not part of valid SDP): | ||||
v=0 | v=0 | |||
o=- 25678 753849 IN IP4 192.0.2.1 | o=- 25678 753849 IN IP4 192.0.2.1 | |||
s= | s= | |||
c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
t=0 0 | t=0 0 | |||
a=creq:med-v0 | a=creq:med-v0 | |||
a=sescap:2 1,2,3,5 | a=sescap:2 1,2,5,[3] | |||
a=sescap:1 1,4 | a=sescap:1 1,4 | |||
m=audio 54322 RTP/AVP 0 | m=audio 54322 RTP/AVP 0 | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
a=pcfg:1 | a=pcfg:1 | |||
m=video 22344 RTP/AVP 102 | m=video 22344 RTP/AVP 102 | |||
a=rtpmap:102 H263-1998/90000 | a=rtpmap:102 H263-1998/90000 | |||
a=fmtp:102 CIF=4;QCIF=2;F=1;K=1 | a=fmtp:102 CIF=4;QCIF=2;F=1;K=1 | |||
i=main video stream | i=main video stream | |||
skipping to change at page 30, line 26 | skipping to change at page 33, line 18 | |||
c=IN IP4 192.0.2.22 | c=IN IP4 192.0.2.22 | |||
t=0 0 | t=0 0 | |||
a=csup:med-v0 | a=csup:med-v0 | |||
a=sescap:1 1,4 | a=sescap:1 1,4 | |||
m=audio 23456 RTP/AVP 0 | m=audio 23456 RTP/AVP 0 | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
a=acfg:1 | a=acfg:1 | |||
m=video 41234 RTP/AVP 104 | m=video 41234 RTP/AVP 104 | |||
a=rtpmap:100 H264/90000 | a=rtpmap:104 H264/90000 | |||
a=fmtp:104 profile-level-id=42A01E; packetization-mode=2 | a=fmtp:104 profile-level-id=42A01E; packetization-mode=2 | |||
a=acfg:4 m=1 a=1 pt=1:104 | a=acfg:4 m=1 a=1 pt=1:104 | |||
m=video 0 RTP/AVP 103 | m=video 0 RTP/AVP 103 | |||
a=acfg:3 | a=acfg:3 | |||
m=application 0 TCP/BFCP * | m=application 0 TCP/BFCP * | |||
a=acfg:5 | a=acfg:5 | |||
An endpoint that doesn't support Media capabilities negotiation, but | An endpoint that doesn't support Media capabilities negotiation, but | |||
skipping to change at page 31, line 19 | skipping to change at page 34, line 7 | |||
t=0 0 | t=0 0 | |||
a=creq:med-v0 | a=creq:med-v0 | |||
a=sescap:1 1,3,4,5 | a=sescap:1 1,3,4,5 | |||
a=sescap:2 1,2 | a=sescap:2 1,2 | |||
a=sescap:3 1 | a=sescap:3 1 | |||
a=rmcap:1 H263-1998/90000 | a=rmcap:1 H263-1998/90000 | |||
a=mfcap:1 CIF=4;QCIF=2;F=1;K=1 | a=mfcap:1 CIF=4;QCIF=2;F=1;K=1 | |||
a=tcap:1 RTP/AVP TCP/BFCP | a=tcap:1 RTP/AVP TCP/BFCP | |||
m=audio 54322 RTP/AVP 0 | m=audio 54322 RTP/AVP 0 | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
a=label:11 | ||||
a=pcfg:1 | a=pcfg:1 | |||
m=video 22344 RTP/AVP 102 | m=video 22344 RTP/AVP 102 | |||
a=rtpmap:102 H264/90000 | a=rtpmap:102 H264/90000 | |||
a=fmtp:102 profile-level-id=42A01E; packetization-mode=2 | a=fmtp:102 profile-level-id=42A01E; packetization-mode=2 | |||
a=label:11 | a=label:11 | |||
a=content:main | a=content:main | |||
a=pcfg:2 | a=pcfg:2 | |||
a=lcfg:3 mt=video t=1 m=1 a=31,32 | a=lcfg:3 mt=video t=1 m=1 a=31,32 | |||
a=acap:31 label:12 | a=acap:31 label:12 | |||
a=acap:32 content:main | a=acap:32 content:main | |||
a=lcfg:4 mt=video t=1 m=1 a=41,42 | a=lcfg:4 mt=video t=1 m=1 a=41,42 | |||
a=acap:41 label:13 | a=acap:41 label:13 | |||
a=acap:42 content:slides | a=acap:42 content:slides | |||
a=lcfg:5 mt=application m=51 t=51 | a=lcfg:5 mt=application m=51 t=51 | |||
a=tcap:51 TCP/BFCP | a=tcap:51 TCP/BFCP | |||
a=rmcap:51 * | a=omcap:51 * | |||
a=acap:51 setup:passive | a=acap:51 setup:passive | |||
a=acap:52 connection:new | a=acap:52 connection:new | |||
a=acap:53 floorid:1 m-stream:12 13 | a=acap:53 floorid:1 m-stream:12 13 | |||
a=acap:54 floor-control:s-only | a=acap:54 floor-control:s-only | |||
a=acap:55 confid:4321 | a=acap:55 confid:4321 | |||
a=acap:56 userid:1234 | a=acap:56 userid:1234 | |||
In this example, the default offer, as seen by endpoints which do not | In this example, the default offer, as seen by endpoints which do not | |||
understand capabilities negotiation, proposes a PCMU audio stream and | understand capabilities negotiation, proposes a PCMU audio stream and | |||
an H.264 video stream. Note that the offered lcfg lines for the | an H.264 video stream. Note that the offered lcfg lines for the | |||
skipping to change at page 33, line 24 | skipping to change at page 36, line 13 | |||
associated parameters | associated parameters | |||
o Latent media streams (lcfg attribute) | o Latent media streams (lcfg attribute) | |||
o Acceptable combinations of media stream configurations (sescap | o Acceptable combinations of media stream configurations (sescap | |||
attribute). | attribute). | |||
The high-level description of the operation is as follows: | The high-level description of the operation is as follows: | |||
When an endpoint generates an initial offer and wants to use the | When an endpoint generates an initial offer and wants to use the | |||
functionality described in the current document, it should identify | functionality described in the current document, it SHOULD identify | |||
and define the media formats and associated parameters it can support | and define the media formats and associated parameters it can support | |||
via the rmcap, omcap, mfcap and mscap attributes. The SDP media | via the rmcap, omcap, mfcap and mscap attributes. The SDP media | |||
line(s) ("m=") should be made up with the actual configuration to be | line(s) ("m=") should be made up with the actual configuration to be | |||
used if the other party does not understand capability negotiations | used if the other party does not understand capability negotiations | |||
(by default, this is the least preferred configuration). Typically, | (by default, this is the least preferred configuration). Typically, | |||
the media line configuration will contain the minimum acceptable | the media line configuration will contain the minimum acceptable | |||
configuration from the offerer's point of view. | configuration from the offerer's point of view. | |||
Preferred configurations for each media stream are identified | Preferred configurations for each media stream are identified | |||
following the media line. The present offer may also include latent | following the media line. The present offer may also include latent | |||
skipping to change at page 35, line 19 | skipping to change at page 38, line 7 | |||
overlap with any config-number used by a latent configuration in the | overlap with any config-number used by a latent configuration in the | |||
SDP. As described in [RFC5939], lower config-numbers indicate a | SDP. As described in [RFC5939], lower config-numbers indicate a | |||
higher preference; the ordering still applies within a given media | higher preference; the ordering still applies within a given media | |||
description only though. | description only though. | |||
For a media capability to be included in a potential configuration, | For a media capability to be included in a potential configuration, | |||
there MUST be an "m=" parameter in the pcfg attribute referencing the | there MUST be an "m=" parameter in the pcfg attribute referencing the | |||
media capability number in question. When one or more media | media capability number in question. When one or more media | |||
capabilities are included in an offered potential configuration | capabilities are included in an offered potential configuration | |||
(pcfg), they completely replace the list of media formats offered in | (pcfg), they completely replace the list of media formats offered in | |||
the actual configuration (m= line). Any parameters included for | the actual configuration (m= line). Any attributes included for | |||
those formats remain in the SDP though (e.g., rtpmap, fmtp, etc.). | those formats remain in the SDP though (e.g., rtpmap, fmtp, etc.). | |||
For non-RTP based media formats, the format-name (from the "omcap" | For non-RTP based media formats, the format-name (from the "omcap" | |||
media capability) is simply added to the "m=" line as a media format | media capability) is simply added to the "m=" line as a media format | |||
(e.g. t38). For RTP-based media, payload type mappings MUST be | (e.g. t38). For RTP-based media, payload type mappings MUST be | |||
provided by use of the "pt" parameter in the potential configuration | provided by use of the "pt" parameter in the potential configuration | |||
(see Section 3.3.4.2); payload type escaping may be used in mfcap, | (see Section 3.3.4.2); payload type escaping may be used in mfcap, | |||
mscap, and acap attributes as defined in Section 3.3.7. | mscap, and acap attributes as defined in Section 3.3.7. | |||
Note that the "mt" parameter MUST NOT be used with the pcfg | Note that the "mt" parameter MUST NOT be used with the pcfg attribute | |||
attribute; the media type in a potential configuration cannot be | (since it is defined for the lcfg attribute only); the media type in | |||
changed from that of the encompassing media description. | a potential configuration cannot be changed from that of the | |||
encompassing media description. | ||||
3.4.1.2. Offer with Latent Configuration | 3.4.1.2. Offer with Latent Configuration | |||
If the offerer wishes to offer one or more latent configurations for | If the offerer wishes to offer one or more latent configurations for | |||
future use, the offer MUST include a latent configuration attribute | future use, the offer MUST include a latent configuration attribute | |||
(lcfg) for each as defined in Section 3.3.5. | (lcfg) for each as defined in Section 3.3.5. | |||
Each lcfg attribute | Each lcfg attribute | |||
o MUST be specified at the media level | o MUST be specified at the media level | |||
skipping to change at page 36, line 41 | skipping to change at page 39, line 30 | |||
the most preferred potential configuration. Without the sescap, | the most preferred potential configuration. Without the sescap, | |||
pcfg-1 would be the most preferred. | pcfg-1 would be the most preferred. | |||
3.4.2. Generating the Answer | 3.4.2. Generating the Answer | |||
When receiving an offer, the answerer MUST check the offer for creq | When receiving an offer, the answerer MUST check the offer for creq | |||
attributes containing the value "med-v0"; answerers compliant with | attributes containing the value "med-v0"; answerers compliant with | |||
this specification will support this value in accordance with the | this specification will support this value in accordance with the | |||
procedures specified in [RFC5939]. | procedures specified in [RFC5939]. | |||
The SDP may contain | The SDP MAY contain | |||
o Media capabilities and associated parameters (rmcap, omcap, mfcap, | o Media capabilities and associated parameters (rmcap, omcap, mfcap, | |||
and mscap attributes) | and mscap attributes) | |||
o Potential configurations using those media capabilities and | o Potential configurations using those media capabilities and | |||
associated parameters | associated parameters | |||
o Latent media streams (lcfg attribute) | o Latent media streams (lcfg attribute) | |||
o Acceptable combinations of media stream configurations (sescap | o Acceptable combinations of media stream configurations (sescap | |||
attribute) | attribute) | |||
The high-level description of the operation is as follows: | The high-level informative description of the operation is as | |||
follows: | ||||
When the answering party receives the offer and if it supports the | When the answering party receives the offer and if it supports the | |||
required capability negotiation extensions, it should select the | required capability negotiation extensions, it should select the | |||
most-preferred configuration it can support for each media stream, | most-preferred configuration it can support for each media stream, | |||
and build its answer accordingly. The configuration selected for | and build its answer accordingly. The configuration selected for | |||
each accepted media stream is placed into the answer as a media line | each accepted media stream is placed into the answer as a media line | |||
with associated parameters and attributes. If a proposed | with associated parameters and attributes. If a proposed | |||
configuration is chosen, the answer must include the supported | configuration is chosen for a given media stream, the answer must | |||
extension attribute and each media stream for which a proposed | contain an actual configuration (acfg) attribute for that media | |||
configuration was chosen must contain an actual configuration (acfg) | stream to indicate which offered pcfg attribute was used to build the | |||
attribute to indicate just which pcfg attribute was used to build the | ||||
answer. The answer should also include any potential or latent | answer. The answer should also include any potential or latent | |||
configurations the answerer can support, especially any | configurations the answerer can support, especially any | |||
configurations compatible with other potential or latent | configurations compatible with other potential or latent | |||
configurations received in the offer. The answerer should make note | configurations received in the offer. The answerer should make note | |||
of those configurations it might wish to offer in the future. | of those configurations it might wish to offer in the future. | |||
Below we provide a more detailed description of how the answerer | Below we provide a more detailed normative description of how the | |||
processes the offer SDP and generates an answer SDP. | answerer processes the offer SDP and generates an answer SDP. | |||
3.4.2.1. Processing Media Capabilities and Potential Configurations | 3.4.2.1. Processing Media Capabilities and Potential Configurations | |||
The answerer MUST first determine if it needs to perform media | The answerer MUST first determine if it needs to perform media | |||
capability negotiation by examining the SDP for valid and preferred | capability negotiation by examining the SDP for valid and preferred | |||
potential configuration attributes that include media configuration | potential configuration attributes that include media configuration | |||
parameters (i.e. an "m" parameter in the pcfg attribute). | parameters (i.e. an "m" parameter in the pcfg attribute). | |||
Such a potential configuration is valid if: | Such a potential configuration is valid if: | |||
skipping to change at page 38, line 28 | skipping to change at page 41, line 16 | |||
being preferred over a higher one. If a valid "sescap" attribute is | being preferred over a higher one. If a valid "sescap" attribute is | |||
present, the preference order provided in the "sescap" attribute MUST | present, the preference order provided in the "sescap" attribute MUST | |||
take precedence. A "sescap" attribute is considered valid if: | take precedence. A "sescap" attribute is considered valid if: | |||
1. It adheres to the rules provided in Section 3.3.8. | 1. It adheres to the rules provided in Section 3.3.8. | |||
2. All the configurations referenced by the "sescap" attribute are | 2. All the configurations referenced by the "sescap" attribute are | |||
valid themselves (note that this can include the actual, | valid themselves (note that this can include the actual, | |||
potential and latent configurations). | potential and latent configurations). | |||
The answerer MUST now process the offer each media stream based on | The answerer MUST now process the offer for each media stream based | |||
the most preferred valid potential configuration in accordance with | on the most preferred valid potential configuration in accordance | |||
the procedures specified in [RFC5939], Section 3.6.2, and further | with the procedures specified in [RFC5939], Section 3.6.2, and | |||
extended below: | further extended below: | |||
o If one or more media format capabilities are included in the | o If one or more media format capabilities are included in the | |||
potential configuration, then they replace all media formats | potential configuration, then they replace all media formats | |||
provided in the "m=" line for that media description. For non-RTP | provided in the "m=" line for that media description. For non-RTP | |||
based media formats (omcap), the format-name is added. For RTP- | based media formats (omcap), the format-name is added. For RTP- | |||
based media formats (rmcap), the payload-type specified in the | based media formats (rmcap), the payload-type specified in the | |||
payload-type mapping ("pt") is added and a corresponding "rtpmap" | payload-type mapping ("pt") is added and a corresponding "rtpmap" | |||
attribute is added to the media description. | attribute is added to the media description. | |||
o If one or more media format parameter capabilities are included in | o If one or more media format parameter capabilities are included in | |||
skipping to change at page 41, line 10 | skipping to change at page 43, line 44 | |||
When the offerer receives the answer, it SHOULD furthermore make note | When the offerer receives the answer, it SHOULD furthermore make note | |||
of any capabilities and/or latent configurations included for future | of any capabilities and/or latent configurations included for future | |||
use, and any constraints on how those may be combined. | use, and any constraints on how those may be combined. | |||
3.4.4. Modifying the Session | 3.4.4. Modifying the Session | |||
If, at a later time, one of the parties wishes to modify the | If, at a later time, one of the parties wishes to modify the | |||
operating parameters of a session, e.g., by adding a new media | operating parameters of a session, e.g., by adding a new media | |||
stream, or by changing the properties used on an existing stream, it | stream, or by changing the properties used on an existing stream, it | |||
may do so via the mechanisms defined for offer/answer [RFC3264]. If | can do so via the mechanisms defined for offer/answer [RFC3264]. If | |||
the initiating party has remembered the codecs, potential | the initiating party has remembered the codecs, potential | |||
configurations, latent configurations and session capabilities | configurations, latent configurations and session capabilities | |||
provided by the other party in the earlier negotiation, it may use | provided by the other party in the earlier negotiation, it MAY use | |||
this knowledge to maximize the likelihood of a successful | this knowledge to maximize the likelihood of a successful | |||
modification of the session. Alternatively, the initiator may | modification of the session. Alternatively, the initiator MAY | |||
perform a new capabilities exchange as part of the reconfiguration. | perform a new capabilities exchange as part of the reconfiguration. | |||
In such a case, the new capabilities will replace the previously- | In such a case, the new capabilities will replace the previously- | |||
negotiated capabilities. This may be useful if conditions change on | negotiated capabilities. This may be useful if conditions change on | |||
the endpoint. | the endpoint. | |||
4. Examples | 4. Examples | |||
In this section, we provide examples showing how to use the Media | In this section, we provide examples showing how to use the Media | |||
Capabilities with the SDP Capability Negotiation. | Capabilities with the SDP Capability Negotiation. | |||
4.1. Alternative Codecs | 4.1. Alternative Codecs | |||
This example provide a choice of one of six variations of the | This example provides a choice of one of six variations of the | |||
adaptive multirate codec. In this example, the default configuration | adaptive multirate codec. In this example, the default configuration | |||
as specified by the media line is the same as the most preferred | as specified by the media line is the same as the most preferred | |||
configuration. Each configuration uses a different payload type | configuration. Each configuration uses a different payload type | |||
number so the offerer can interpret early media. | number so the offerer can interpret early media. | |||
v=0 | v=0 | |||
o=- 25678 753849 IN IP4 192.0.2.1 | o=- 25678 753849 IN IP4 192.0.2.1 | |||
s= | s= | |||
c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
t=0 0 | t=0 0 | |||
skipping to change at page 45, line 47 | skipping to change at page 48, line 47 | |||
well) is G.729B with H.263. This overrides the individual media | well) is G.729B with H.263. This overrides the individual media | |||
stream preferences which are PCMU and H.264 by the potential | stream preferences which are PCMU and H.264 by the potential | |||
configuration numbering rule. | configuration numbering rule. | |||
4.3. Latent Media Streams | 4.3. Latent Media Streams | |||
Consider a case in which the offerer can support either G.711 mu-law, | Consider a case in which the offerer can support either G.711 mu-law, | |||
or G.729B, along with DTMF telephony events for the 12 common | or G.729B, along with DTMF telephony events for the 12 common | |||
touchtone signals, but is willing to support simple G.711 mu-law | touchtone signals, but is willing to support simple G.711 mu-law | |||
audio as a last resort. In addition, the offerer wishes to announce | audio as a last resort. In addition, the offerer wishes to announce | |||
its ability to support video in the future, but does not wish to | its ability to support video and MSRP in the future, but does not | |||
offer a video stream at present. The offer might look like the | wish to offer a video stream or an MSRP stream at present. The offer | |||
following: | might look like the following: | |||
v=0 | v=0 | |||
o=- 25678 753849 IN IP4 192.0.2.1 | o=- 25678 753849 IN IP4 192.0.2.1 | |||
s= | s= | |||
c=IN IP4 192.0.2.1 | c=IN IP4 192.0.2.1 | |||
t=0 0 | t=0 0 | |||
a=creq:med-v0 | a=creq:med-v0 | |||
m=audio 23456 RTP/AVP 0 | m=audio 23456 RTP/AVP 0 | |||
a=rtpmap:0 PCMU/8000 | a=rtpmap:0 PCMU/8000 | |||
a=rmcap:1 PCMU/8000 | a=rmcap:1 PCMU/8000 | |||
a=rmcap:2 g729/8000 | a=rmcap:2 G729/8000 | |||
a=rmcap:3 telephone-event/8000 | a=rmcap:3 telephone-event/8000 | |||
a=mfcap:3 0-11 | a=mfcap:3 0-11 | |||
a=pcfg:1 m=1,3|2,3 pt=1:0,2:18,3:100 | a=pcfg:1 m=1,3|2,3 pt=1:0,2:18,3:100 | |||
a=lcfg:2 mt=video t=1 m=10|11 | a=lcfg:2 mt=video t=1 m=10|11 | |||
a=rmcap:10 H263-1998/90000 | a=rmcap:10 H263-1998/90000 | |||
a=rmcap:11 H264/90000 | a=rmcap:11 H264/90000 | |||
a=tcap:1 RTP/AVP | a=tcap:1 RTP/AVP | |||
a=lcfg:3 mt=message t=2 m=20 | ||||
a=tcap:2 TCP/MSRP | ||||
a=omcap:20 * | ||||
The lcfg attribute line announces support for H.263 and H.264 video | The first lcfg attribute line ("lcfg:2") announces support for H.263 | |||
(H.263 preferred) for future reference. The m-line and the rtpmap | and H.264 video (H.263 preferred) for future negotiation. The second | |||
attribute offer an audio stream and provide the lowest precedence | lcfg attribute line ("lcfg:3") announces support for MSRP for future | |||
configuration (PCMU without any DTMF encoding). The rmcap lines | negotiation. The m-line and the rtpmap attribute offer an audio | |||
define the media capabilities (PCMU, G729, and telephone-event) to be | stream and provide the lowest precedence configuration (PCMU without | |||
offered in potential configurations. The mfcap attribute provides | any DTMF encoding). The rmcap lines define the RTP-based media | |||
the format parameters for telephone-events, specifying the 12 | capabilities (PCMU, G729, telephone-event, H263-1998 and H264) and | |||
commercial DTMF 'digits'. The pcfg attribute line defines the most- | the omcap line defines the non-RTP based media capability (wildcard). | |||
preferred media configuration as PCMU plus DTMF events and the next- | The mfcap attribute provides the format parameters for telephone- | |||
most-preferred configuration as G.729B plus DTMF events. | events, specifying the 12 commercial DTMF 'digits'. The pcfg | |||
attribute line defines the most-preferred media configuration as PCMU | ||||
plus DTMF events and the next-most-preferred configuration as G.729B | ||||
plus DTMF events. | ||||
If the answerer is able to support all the potential configurations, | If the answerer is able to support all the potential configurations, | |||
and also support H.263 video (but not H.264), it would reply with an | and also support H.263 video (but not H.264), it would reply with an | |||
answer like: | answer like: | |||
v=0 | v=0 | |||
o=- 24351 621814 IN IP4 192.0.2.2 | o=- 24351 621814 IN IP4 192.0.2.2 | |||
s= | s= | |||
c=IN IP4 192.0.2.2 | c=IN IP4 192.0.2.2 | |||
t=0 0 | t=0 0 | |||
skipping to change at page 50, line 23 | skipping to change at page 53, line 23 | |||
the other side about capabilities supported for further offer/answer | the other side about capabilities supported for further offer/answer | |||
exchanges, including transport protocols and attribute capabilities, | exchanges, including transport protocols and attribute capabilities, | |||
e.g. for keying methods. If an attacker can remove or alter latent | e.g. for keying methods. If an attacker can remove or alter latent | |||
configuration information to suggest that only insecure or less | configuration information to suggest that only insecure or less | |||
secure alternatives are supported, then he may be able to force | secure alternatives are supported, then he may be able to force | |||
negotiation of a less secure session than would otherwise have | negotiation of a less secure session than would otherwise have | |||
occurred. While the specific attack as described here differs from | occurred. While the specific attack as described here differs from | |||
those described in [RFC5939], the considerations and mitigation | those described in [RFC5939], the considerations and mitigation | |||
strategies are similar to those described in [RFC5939]. | strategies are similar to those described in [RFC5939]. | |||
Another variation on the above attack involves the the Session | Another variation on the above attack involves the Session Capability | |||
Capability ("sescap") attribute defined in this document. The | ("sescap") attribute defined in this document. The "sescap" enables | |||
"sescap" enables a preference order to be specified for all the | a preference order to be specified for all the potential | |||
potential configurations, and that preference will take precedence | configurations, and that preference will take precedence over any | |||
over any preference indication provided in individual potential | preference indication provided in individual potential configuration | |||
configuration attributes. Consequently, an attacker that can insert | attributes. Consequently, an attacker that can insert or modify a | |||
or modify a "sescap" attribute may be able to force negotiation of an | "sescap" attribute may be able to force negotiation of an insecure or | |||
insecure or less secure alternative than would otherwise have | less secure alternative than would otherwise have occurred. Again, | |||
occurred. Again, the considerations and mitigation strategies are | the considerations and mitigation strategies are similar to those | |||
similar to those described in [RFC5939]. | described in [RFC5939]. | |||
The addition of negotiable media formats and their associated | The addition of negotiable media formats and their associated | |||
parameters, defined in this specification can cause problems for | parameters, defined in this specification can cause problems for | |||
middleboxes which attempt to control bandwidth utilization, media | middleboxes which attempt to control bandwidth utilization, media | |||
flows, and/or processing resource consumption as part of network | flows, and/or processing resource consumption as part of network | |||
policy, but which do not understand the media capability negotiation | policy, but which do not understand the media capability negotiation | |||
feature. As for the initial CapNeg work [RFC5939], the SDP answer is | feature. As for the initial CapNeg work [RFC5939], the SDP answer is | |||
formulated in such a way that it always carries the selected media | formulated in such a way that it always carries the selected media | |||
encoding for every media stream selected. Pending an understanding | encoding for every media stream selected. Pending an understanding | |||
of capabilities negotiation, the middlebox should examine the answer | of capabilities negotiation, the middlebox should examine the answer | |||
SDP to obtain the best picture of the media streams being | SDP to obtain the best picture of the media streams being | |||
established. As always, middleboxes can best do their job if they | established. As always, middleboxes can best do their job if they | |||
fully understand media capabilities negotiation. | fully understand media capabilities negotiation. | |||
7. Changes from previous versions | 7. Changes from previous versions | |||
7.1. Changes from version 12 | 7.1. Changes from version 13 | |||
o Various editorial clarifications and updates to address review | ||||
comments. | ||||
7.2. Changes from version 12 | ||||
o Removed "dummy" form in the pcfg payload-type-number, since the | o Removed "dummy" form in the pcfg payload-type-number, since the | |||
functionality is redundant with the non-RTP media capability | functionality is redundant with the non-RTP media capability | |||
(omcap) and it was inconsistent with other RTP payload type | (omcap) and it was inconsistent with other RTP payload type | |||
operation. | operation. | |||
o Clarified that latent configuration attribute (lcfg) can only be | o Clarified that latent configuration attribute (lcfg) can only be | |||
used at the media level and hence (technically) as part of a media | used at the media level and hence (technically) as part of a media | |||
description | description | |||
o Rewrote offer/answer sections and expanded significantly on offer/ | o Rewrote offer/answer sections and expanded significantly on offer/ | |||
answer operation. | answer operation. | |||
o Updated security considerations | o Updated security considerations | |||
o Various minor editorial clarifications and changes. | o Various minor editorial clarifications and changes. | |||
7.2. Changes from version 11 | 7.3. Changes from version 11 | |||
o Corrected several statements implying lcfg was a session-level | o Corrected several statements implying lcfg was a session-level | |||
attribute. | attribute. | |||
o Added non-RTP based media format capabilities ("a=omcap") and | o Added non-RTP based media format capabilities ("a=omcap") and | |||
renamed "mcap" to "rmcap" | renamed "mcap" to "rmcap" | |||
7.3. Changes from version 10 | 7.4. Changes from version 10 | |||
o Defined the latent configuration attribute as a media-level | o Defined the latent configuration attribute as a media-level | |||
attribute because it specifies a possible future media stream. | attribute because it specifies a possible future media stream. | |||
Added text to clarify how to specify alternative configurations of | Added text to clarify how to specify alternative configurations of | |||
a single latent stream and/or multiple streams. | a single latent stream and/or multiple streams. | |||
o Improved the definition of the session capability attribute to | o Improved the definition of the session capability attribute to | |||
permit both required configurations and optional configurations - | permit both required configurations and optional configurations - | |||
latent configurations cannot be required because they have not yet | latent configurations cannot be required because they have not yet | |||
been offered. | been offered. | |||
skipping to change at page 52, line 12 | skipping to change at page 55, line 17 | |||
o Changed various "must", etc., terms to normative terms ("MUST", | o Changed various "must", etc., terms to normative terms ("MUST", | |||
etc.) as appropriate, in Section 3.3.5Section 3.3.6.1 | etc.) as appropriate, in Section 3.3.5Section 3.3.6.1 | |||
Section 3.3.6.3 and Section 3.3.8 | Section 3.3.6.3 and Section 3.3.8 | |||
o Attempted to clarify the substitution mechanism in Section 3.3.7 | o Attempted to clarify the substitution mechanism in Section 3.3.7 | |||
and improve its uniqueness. | and improve its uniqueness. | |||
o Made various editorial changes, including changing the title in | o Made various editorial changes, including changing the title in | |||
the header, and removing numbering from some SDP examples. | the header, and removing numbering from some SDP examples. | |||
7.4. Changes from version 09 | 7.5. Changes from version 09 | |||
o Additional corrections to latent media stream example in | o Additional corrections to latent media stream example in | |||
Section 4.3 | Section 4.3 | |||
o Fixed up attribute formatting examples and corresponding ABNF. | o Fixed up attribute formatting examples and corresponding ABNF. | |||
o Removed preference rule for latent configurations. | o Removed preference rule for latent configurations. | |||
o Various spelling and other editorial changes were made. | o Various spelling and other editorial changes were made. | |||
o updated crossreferences. | o updated cross-references. | |||
7.5. Changes from version 08 | 7.6. Changes from version 08 | |||
The major change is in Section 4.3, Latent Media Streams, fixing the | The major change is in Section 4.3, Latent Media Streams, fixing the | |||
syntax of the answer. All the other changes are editorial. | syntax of the answer. All the other changes are editorial. | |||
7.6. Changes from version 04 | 7.7. Changes from version 04 | |||
o The definitions for bcap, ccap, icap, and kcap attributes have | o The definitions for bcap, ccap, icap, and kcap attributes have | |||
been removed, and are to be defined in another document. | been removed, and are to be defined in another document. | |||
o Corrected formatting of m= and p= configuration parameters to | o Corrected formatting of m= and p= configuration parameters to | |||
conform to extension-config-list form defined in [RFC5939] | conform to extension-config-list form defined in [RFC5939] | |||
o Reorganized definitions of new parameters to make them easier to | o Reorganized definitions of new parameters to make them easier to | |||
find in document. | find in document. | |||
o Added ability to renegotiate capabilities when modifying the | o Added ability to renegotiate capabilities when modifying the | |||
session (Section 3.4.4). | session (Section 3.4.4). | |||
o Made various editorial changes, clarifications, and typo | o Made various editorial changes, clarifications, and typo | |||
corrections. | corrections. | |||
7.7. Changes from version 03 | 7.8. Changes from version 03 | |||
o A new session capability attribute (sescap) has been added to | o A new session capability attribute (sescap) has been added to | |||
permit specification of acceptable media stream combinations. | permit specification of acceptable media stream combinations. | |||
o Capability attribute definitions corresponding to the i, c, b, and | o Capability attribute definitions corresponding to the i, c, b, and | |||
k SDP line types have been added for completeness. | k SDP line types have been added for completeness. | |||
o Use of the pcfg: attribute in SDP answers has been included in | o Use of the pcfg: attribute in SDP answers has been included in | |||
order to conveniently return information in the answer about | order to conveniently return information in the answer about | |||
acceptable configurations in the media stream offer. | acceptable configurations in the media stream offer. | |||
skipping to change at page 53, line 33 | skipping to change at page 56, line 38 | |||
o The description of the mscap attribute has been modified to make | o The description of the mscap attribute has been modified to make | |||
it clear that it should not be used to generate undefined SDP | it clear that it should not be used to generate undefined SDP | |||
attributes, or to "extend" existing attributes. | attributes, or to "extend" existing attributes. | |||
o <ms-parameters> are made optional in the mscap attribute | o <ms-parameters> are made optional in the mscap attribute | |||
definition. | definition. | |||
o "AMR" changed to "AMR-WB" in cases in which the sample rate is | o "AMR" changed to "AMR-WB" in cases in which the sample rate is | |||
16000. | 16000. | |||
7.8. Changes from version 02 | 7.9. Changes from version 02 | |||
This version contains several detail changes intended to simplify | This version contains several detail changes intended to simplify | |||
capability processing and mapping into conventional SDP media blocks. | capability processing and mapping into conventional SDP media blocks. | |||
o The "mcap" attribute is enhanced to include the role of the "ecap" | o The "mcap" attribute is enhanced to include the role of the "ecap" | |||
attribute; the latter is eliminated. | attribute; the latter is eliminated. | |||
o The "fcap" attribute has been renamed "mfcap". New replacement | o The "fcap" attribute has been renamed "mfcap". New replacement | |||
rules vis-a-vis fmtp attributes in the base media specification | rules vis-a-vis fmtp attributes in the base media specification | |||
have been added. | have been added. | |||
skipping to change at page 54, line 14 | skipping to change at page 57, line 19 | |||
attribute. | attribute. | |||
o A new parameter, "mt=" is added to the latent configuration | o A new parameter, "mt=" is added to the latent configuration | |||
attribute (lcfg) to specify the media stream type (audio, video, | attribute (lcfg) to specify the media stream type (audio, video, | |||
etc.) when the lcfg is declared at the session level. | etc.) when the lcfg is declared at the session level. | |||
o The examples are expanded. | o The examples are expanded. | |||
o Numerous typos and misspellings have been corrected. | o Numerous typos and misspellings have been corrected. | |||
7.9. Changes from version 01 | 7.10. Changes from version 01 | |||
The documents adds a new attribute for specifying bandwidth | The documents adds a new attribute for specifying bandwidth | |||
capability and a parametr to list in the potential configuration. | capability and a parameter to list in the potential configuration. | |||
Other changes are to align the document with the terminolgy and | Other changes are to align the document with the terminology and | |||
attribute names from draft-ietf-mmusic-sdp-capability-negotiation-07. | attribute names from draft-ietf-mmusic-sdp-capability-negotiation-07. | |||
The document also clarifies some previous open issues. | The document also clarifies some previous open issues. | |||
7.10. Changes from version 00 | 7.11. Changes from version 00 | |||
The major changes include taking out the "mcap" and "cptmap" | The major changes include taking out the "mcap" and "cptmap" | |||
parameter. The mapping of payload type is now in the "pt" parameter | parameter. The mapping of payload type is now in the "pt" parameter | |||
of "pcfg". Media subtype need to explictly definesd in the "cmed" | of "pcfg". Media subtype need to explicitly defined in the "cmed" | |||
attribute if referenced in the "pcfg" | attribute if referenced in the "pcfg" | |||
8. Acknowledgements | 8. Acknowledgements | |||
This document is heavily influenced by the discussions and work done | This document is heavily influenced by the discussions and work done | |||
by the SDP Capability Negotiation Design team. The following people | by the SDP Capability Negotiation Design team. The following people | |||
in particular provided useful comments and suggestions to either the | in particular provided useful comments and suggestions to either the | |||
document itself or the overall direction of the solution defined | document itself or the overall direction of the solution defined | |||
herein: Cullen Jennings, Matt Lepinski, Joerg Ott, Colin Perkins, and | herein: Cullen Jennings, Matt Lepinski, Joerg Ott, Colin Perkins, and | |||
Thomas Stach. | Thomas Stach. | |||
We thank Ingemar Johansson and Magnus Westerlund for examples that | We thank Ingemar Johansson and Magnus Westerlund for examples that | |||
stimulated this work, and for critical reading of the document. | stimulated this work, and for critical reading of the document. We | |||
also thank Cullen Jennings, Christer Holmberg, and Miguel Garcia for | ||||
their review of the document. | ||||
9. References | 9. References | |||
9.1. Normative References | 9.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model | |||
with Session Description Protocol (SDP)", RFC 3264, | with Session Description Protocol (SDP)", RFC 3264, | |||
skipping to change at page 56, line 27 | skipping to change at page 59, line 27 | |||
Description Protocol", RFC 4566, July 2006. | Description Protocol", RFC 4566, July 2006. | |||
[RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF", STD 68, RFC 5234, January 2008. | Specifications: ABNF", STD 68, RFC 5234, January 2008. | |||
[RFC5939] Andreasen, F., "SDP Capability Negotiation", RFC 5939, | [RFC5939] Andreasen, F., "SDP Capability Negotiation", RFC 5939, | |||
September 2010. | September 2010. | |||
9.2. Informative References | 9.2. Informative References | |||
[RFC2198] "RTP Payload for Redundant Audio Data", September 1997. | ||||
[RFC4568] Andreasen, F., Baugher, M., and D. Wing, "Session | [RFC4568] Andreasen, F., Baugher, M., and D. Wing, "Session | |||
Description Protocol (SDP) Security Descriptions for Media | Description Protocol (SDP) Security Descriptions for Media | |||
Streams", RFC 4568, July 2006. | Streams", RFC 4568, July 2006. | |||
[RFC4583] Camarillo, G., "Session Description Protocol (SDP) Format | ||||
for Binary Floor Control Protocol (BFCP) Streams", | ||||
RFC 4583, November 2006. | ||||
[RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, | |||
"Extended RTP Profile for Real-time Transport Control | "Extended RTP Profile for Real-time Transport Control | |||
Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, | Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, | |||
July 2006. | July 2006. | |||
[RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF | [RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF | |||
Digits, Telephony Tones, and Telephony Signals", RFC 4733, | Digits, Telephony Tones, and Telephony Signals", RFC 4733, | |||
December 2006. | December 2006. | |||
[RFC4867] Sjoberg, J., Westerlund, M., Lakaniemi, A., and Q. Xie, | [RFC4867] Sjoberg, J., Westerlund, M., Lakaniemi, A., and Q. Xie, | |||
End of changes. 72 change blocks. | ||||
178 lines changed or deleted | 253 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |