MMUSIC                                                         R. Gilman
Internet-Draft                                               Avaya, Inc.                                                      NDCI
Intended status: Standards Track                            R. Even, Ed.
Expires: May 18, August 28, 2008                                         Polycom
                                                            F. Andreasen
                                                           Cisco Systems
                                                       November 15, 2007
                                                       February 25, 2008

                   SDP media capabilities Negotiation
            draft-ietf-mmusic-sdp-media-capabilities-02.txt
            draft-ietf-mmusic-sdp-media-capabilities-03.txt

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

   This Internet-Draft will expire on May 18, August 28, 2008.

Copyright Notice

   Copyright (C) The IETF Trust (2007). (2008).

Abstract

   Session Description Protocol (SDP) capability negotiation provides a
   general framework for indicating and negotiating capabilities in SDP.
   The base framework defines only capabilities for negotiating
   transport protocols and attributes.  In this document, we extend the
   framework by defining media capabilities that can be used to
   negotiate media types and their associated parameters.  This
   extension is designed to map easily to existing and future SDP media
   attributes.

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  5
   3.  SDP Media capabilities Capabilities . . . . . . . . . . . . . . . . . . . .  6
     3.1.  Solution Overview  . . . . . . . . . . . . . . . . . . . .  6
     3.2.  Capability Attributes  Design Goals . . . . . . . . . . . . . . . . . .  9
       3.2.1.  Media Type and Subtype Capability Attribute . . . . . 10
       3.2.2.
     3.3.  New Capability Attributes  . . . . . . . . . . . . . . . . 11
       3.3.1.  The Media Encoding Parameter Capability Attribute  . . . . . . . 11
       3.2.3.
       3.3.2.  The Media Format Parameter Capability Attribute  . . . 12
       3.2.4.
       3.3.3.  The Media-Specific Capability Attribute  . . . . . . . 15
       3.3.4.  The Bandwidth Capability Attribute . . . . . . . . . . 13
     3.3. 16
     3.4.  Extensions to the Potential Configuration Attribute  . . . 15
       3.3.1. 17
       3.4.1.  The Media Capability Extension to the Potential
               Configuration Attribute  . . . Parameter . . . . . . . . . . . . 15
       3.3.2. 17
       3.4.2.  The Payload Type Mapping Extension to the
               Potential Configuration Attribute Parameter . . . . . . . . . . 16
       3.3.3. 19
       3.4.3.  The Bandwidth Extension to the Potential
               Configuration Attribute Parameter  . . . . . . . . . . . . . . . 17
     3.4. 20
     3.5.  Extensions to the Actual Configuration Attribute . . . . . 17
     3.5. 20
     3.6.  The Latent Configuration Attribute . . . . . . . . . . . . 18
       3.5.1.  The crypto: Attribute 21
       3.6.1.  Cryptographic Attributes in Latent Configurations  . . . . 18
     3.6. 23
     3.7.  Offer/Answer Model Extensions  . . . . . . . . . . . . . . 19
       3.6.1. 23
       3.7.1.  Generating the Initial Offer . . . . . . . . . . . . . 19
       3.6.2. 23
       3.7.2.  Generating the Answer  . . . . . . . . . . . . . . . . 19
       3.6.3. 24
       3.7.3.  Offerer Processing of the Answer . . . . . . . . . . . 19
       3.6.4. 24
       3.7.4.  Modifying the Session  . . . . . . . . . . . . . . . . 20 24
   4.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 26
     4.1.  Alternative Codecs . . . . . . . . . . . . . . . . . . . . 21 26
     4.2.  Latent Media Streams . . . . . . . . . . . . . . . . . . . 21 29
   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 22 31
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 23 32
   7.  Changes from previous versions . . . . . . . . . . . . . . . . 24 33
     7.1.  Changes from version 01 02  . . . . . . . . . . . . . . . . . 24 33
     7.2.  Changes from version 01  . . . . . . . . . . . . . . . . . 33
     7.3.  Changes from version 00  . . . . . . . . . . . . . . . . . 24 33
   8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 25 34
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 26 35
     9.1.  Normative References . . . . . . . . . . . . . . . . . . . 26 35
     9.2.  Informative References . . . . . . . . . . . . . . . . . . 26 35
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 27 36
   Intellectual Property and Copyright Statements . . . . . . . . . . 28 37

1.  Introduction

   Session Description Protocol (SDP) capability negotiation [SDPCapNeg]
   provides a general framework for indicating and negotiating
   capabilities in SDP[RFC4566].  The base framework defines only
   capabilities for negotiating transport protocols and attributes.

   SDP Simple Capability Declaration (simcap) is defined in RFC 3407
   [RFC3407].  It defines a set of SDP attributes that enables a limited
   set of capabilities to be described at a session level or on a per
   media stream basis.  The capabilities include a simple form of media
   capabilities.  RFC 3407 defines capability declaration only.  Actual
   negotiation procedures taking advantage of such capabilities have not
   been defined.  The SDP capability negotiation framework defined in
   [SDPCapNeg] adds this required functionality. functionality, but does not define
   media capabilities.  This document updates RFC3407 and [SDPCapNeg]
   and new
   implementation implementations SHOULD use the functionality defined in the
   current
   draft document to negotiate media capabilities.

   The [SDPCapNeg] document lists some of the issues with the current
   SDP capability negotiation process.  An additional real life case is
   to be able to offer one media stream (e.g. audio) but list the
   capability to support another media stream (e.g. video) without
   actually offering it currently.

   In this document, we extend the framework by defining media
   capabilities that can be used to indicate and negotiate media types
   and their associated parameters like bandwidth.  This document also
   adds the
   capability ability to declare support for media streams that streams, the use of
   which can be offered
   later rather than as a potential configuration for current use.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document negotiated later.  The definitions of new
   attributes for media capability negotiation are chosen to be interpreted make the
   translation from these attributes to "conventional" SDP [RFC4566]
   media attributes as described straightforward as possible in RFC2119 order to simplify
   implementation.  This goal is intended to reduce processing in two
   ways: each proposed configuration in an offer may be easily
   translated into a conventional SDP media stream record for processing
   by the receiver; and the construction of an answer based on a
   selected proposed configuration is straightforward.

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC2119 [RFC2119] and
   indicate requirement levels for compliant RTP implementations.

   "Base Configuration": the media configuration represented by a media
   block exclusive of all the capability negotiation attributes defined
   in this document and [SDPCapNeg]

   "Conventional SDP": all SDP lines exclusive of the capability
   negotiation attributes

3.   SDP Media capabilities Capabilities

   The SDP media capability negotiation [SDPCapNeg] discusses the use of any
   SDP [RFC4566] attribute (a=) under the acap attribute. attribute capability "acap".
   The limitations of using acap for fmtp and rtpmap as in a potential
   configuration are listed, described in [SDPCapNeg]; for example they can be
   used only at the media level since they are media level attributes.
   The [SDPCapNeg] partially addresses the issue of bandwidth usage for
   different configurations but does not offer a way to negotiate
   different bandwidth for different codecs and profiles.  This section
   provides an overview of extensions providing SDP media Media Capability and
   Bandwidth negotiation solution offering more robust capabilities
   negotiation.  This is followed by definitions of new SDP attributes
   for the solution and its associated updated offer/answer procedures
   [RFC3264]

3.1.  Solution Overview

   The solution consist consists of the following five new attributes and four new parameters
   for the pcfg attribute extending the base attributes from
   [SDPCapNeg].

   Four new attributes are used to make up media capabilities in a
   manner that can be related to the capabilities specified in a media
   line, its attributes attributes, and the bandwidth parameter lines.

   o  A new media attribute ("a=mcap") that lists media formats as
      capabilities in the form of a media type (e.g. "audio") and one or
      more subtypes subtype (e.g.  "PCMU"), and associates a handle with each its
      encoding parameters (e.g. "/8000/2").  Each resulting media format
      type / subtype capability has an associated handle.  The encoding
      parameters are as specified for the rtpmap attribute defined in
      [RFC4566]

   o  A new attribute ("a=ecap") ("a=mfcap") that lists encoding parameter
      capabilities specifies media format parameters
      associated with a one or more media format capabilities.  The mfcap
      attribute is used to associate the formatting capabilities
      normally carried in the fmtp attribute.

   o  A new attribute ("a=fcap") ("a=mscap") that lists specifies media format parameter
      capabilities parameters
      associated with a one or more media format capabilities.  The mscap
      attribute is used to associate capabilities other than fmtp or
      rtpmap attributes, for example the rtcp-fb attribute.

   o  A new attribute ("a=bcap") that is used to specify the bandwidth
      parameter(s) for media capabilities.
      parameter capability.

   o  A new attribute ("a=lcfg") that specifies latent media stream
      configurations when no corresponding media line stream is offered.  An
      example is a latent configuration for video even though no video
      is currently offered.

   New parameters are defined for the potential configuration (pcfg),
   latent configuration (lcfg), and accepted configuration (acfg)
   attributes to associate the new attributes with particular
   configurations.

   o  A new parameter type ("m=") ("m=")is added to the potential configuration
      ("a=pcfg:") attribute and the actual configuration ("a=acfg:")
      attribute defined in [SDPCapNeg], and to the new latent
      configuration ("a=lcfg:") attribute which permits specification of
      media capabilities (including their associated parameters) and
      combinations thereof for the configuration.  For example, the
      "a=pcfg:" line might specify PCMU and telephone events or G.729B
      and telephone events as acceptable configurations.  The "a=acfg:"
      line in the answer would specify the accepted choice.

   o  A new parameter type ("pt=") is added to the potential
      configuration, actual configuration, and latent configuration
      ("a=pcfg:") attribute which
      attributes.  This parameter associates RTP payload types with the
      referenced media capabilities. capabilities, and is appropriate only when the
      transport protocol uses RTP.

   o  A new parameter type ("b=") is used to specify bandwidth
      parameters in a potential configuration.

   o  A new parameter type ("mt=") is used to specify the MIME type for
      latent configurations that are declared at the session level.

   The document extends the base protocol extensions to the offer/answer
   model that allow for capabilities and potential configurations to be
   included in an offer.  Media capabilities constitute capabilities
   that can be used in potential and latent configurations.  Whereas
   potential configurations constitute alternative offers that may be
   accepted by the answerer instead of the actual configuration(s)
   included in the "m=" line(s), line(s) and associated parameters, 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. exchanges, but they are
   not part of the current offer/answer exchange.

   The mechanism is illustrated by the offer/answer exchange below,
   where Alice sends an offer to Bob:

                   Alice                               Bob
                  | (1) Offer (SRTP and RTP)         |
                  |--------------------------------->|
                  |                                  |
                  | (2) Answer (RTP)                 |
                  |<---------------------------------|
                  |                                  |

   Alice's offer includes RTP and SRTP as alternatives.  RTP is the
   default, but SRTP is the preferred one:

             v=0
             o=- 25678 753849 IN IP4 192.0.2.1
             s=
             c=IN IP4 192.0.2.1
             t=0 0
             a=creq:med-v0
             a=mcap:1 audio g729 iLBC PCMU g729
             a=ecap:2 8000
             a=fcap:1 annexb:no
             a=fcap:2 mode=20
             a=tcap:1 RTP/SAVP
             m=audio 3456 RTP/AVP 0 18
             a=tcap:1 RTP/SAVP
             a=rtpmap:0 PCMU/8000/1
             a=rtpmap:18 G729/8000/1
             a=fmtp:18 annexb=yes
             a=mcap:1,4 g729/8000/1
             a=mcap:2 PCMU/8000/1
             a=mcap:5 telephone-event/8000
             a=mfcap:1 annexb=no
             a=mfcap:4 annexb=yes
             a=mfcap:5 0-11
             a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_32
             inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32
             a=pcfg:1 m=1,3|4,3 m=4,5|1,5 t=1 a=1 pt=1:100,4:101,3:102 pt=1:100,4:101,5:102
             a=pcfg:2 m=2 t=1 a=1 pt=2:103
             a=pcfg:3 m=4 t=2 pt=4:18

   The required base and extensions are provided by the "a=creq"
   attribute defined in [SDPCapNeg], with the option tag "med-v0", which
   indicates that the extension framework defined here, must be
   supported.  The Base level support is implied since it is required
   for the extensions.

   The "a=mcap:1" line defines four audio media subtype capabilities ,
   to be numbered consecutively starting with 1.  Note that the media
   subtypes specified in the m-line (PCMU and G729) are explicitly
   specified here.

   The "a=ecap:2" line specifies the clock rate and encoding parmeters
   (see [RFC4566]) for capability 2, iLBC.

   The "a=fcap:1" line specifies media format parameter capabilities for
   codec 1 ( no Annex B for G.729).

   The "a=fcap:2" line specifies a media format parameter for codec 2
   (20ms packets for iLBC.  [RFC3952]

   The "a=tcap:1" line, specified in the base protocol, defines a
   transport protocol capability, in this case Secure RTP.

   The "m=" line indicates that Alice is offering to use plain RTP with
   PCMU or G.729. G.729B. The media line implicitly defines the default
   transport protocol (RTP/AVP in this case) and the default actual
   configuration.

   The "a=acap:1" line ,specified "a=tcap:1" line, specified in the base protocol, defines a
   transport protocol provides the
   "crypto" attribute which provides the keying material for SRTP using
   SDP security descriptions.

   The "a=pcfg:" attributes provide the potential configurations
   included capabilities, in this case Secure RTP (SAVP
   profile) as the offer by reference to first option and RTP (AVP profile) as the second
   option.

   The "a=mcap:1,4" line defines two G.729 media format capabilities,
   transport capabilities,
   numbered 1 and associated 4, and their encoding rate.  The capabilities are of
   subtype G729.  Note that the media subtype is explicitly specified
   here, rather than RTP payload type mappings.  Two
   explicit alternatives number.  In this example, two
   G.729 subtype capabilities are provided; defined.  This permits the first one, declaration
   of two sets of formatting parameters for G.729.

   The "a=mcap:2" line defines a G.711 mu-law capability, numbered 1 is the
   preferred 2.

   The "a=mcap:5" line defines an audio telephone-event capability,
   numbered 5.

   The "a=mfcap:1" line specifies the fmtp formatting parameters for
   capability 1 (no comfort noise packets).

   The "a=mfcap:4" line specifies the fmtp formatting parameters for
   capability 4 (G.729B).

   The "a=mfcap:5" line specifies the fmtp formatting parameters for
   capability 5 (the DTMF touchtones 0-9,*,#).

   The "a=acap:1" line specified in the base protocol provides the
   "crypto" attribute which provides the keying material for SRTP using
   SDP security descriptions.

   The "a=pcfg:" attributes provide the potential configurations
   included in the offer by reference to the media capabilities,
   transport capabilities, and associated payload type mappings.  Three
   explicit alternatives are provided; the first one, numbered 1 is the
   preferred one.  It specifies media capabilities 1 4 and 3, i.e.  G.729 5, i.e., G.729B
   and PCMU, DTMF, or media capability 4 1 and 3, 5, i.e., G.729B G.729 and PCMU. DTMF.
   Furthermore, it specifies transport protocol capability 1 (i.e. the
   RTP/SAVP profile - secure RTP), and the attribute capability 1, i.e.
   the crypto attribute provided.  Lastly, it specifies, a payload type
   mapping for codecs media capabilities 1, 3, 4, and 4 5, thereby permitting the offerer
   offeror to distinguish between encrypted media and unencrypted media
   received prior to receipt of the answer.  Use of unique payload types
   is not required; codecs such as AMR-WB [RFC4867] have the potential
   for so many combinations of options that it may be impractical to
   define unique payload types for all supported combinations.  For SRTP
   using SDES inline keying [RFC4568], the offerer offeror will still need to
   receive the answer before being able to decrypt the stream.

   The second alternative specifies media capability 2, i.e. iLBC,  PCMU,
   under the default RTP/AVP profile. RTP/SAVP profile, with the same SRTP key material.

   The third alternative offers G.729B unsecured; it's only purpose in
   this example is to show a preference for G.729B over PCMU.

   The media line, with any qualifying attributes such as fmtp or
   rtpmap, is itself considered a valid configuration; it is assumed to
   be the lowest preference.

   Bob receives the SDP offer from Alice.  Bob supports G.729B, PCMU,
   and telephone events over RTP, but not SRTP, and hence he accepts the actual
   potential configuration 3 for RTP provided by Alice.  Furthermore,  Hence, Bob wants to use the iLBC codec and hence
   generates the following answer:

             v=0
             o=- 24351 621814 IN IP4 192.0.2.2
             s=
             c=IN IP4 192.0.2.2
             t=0 0
             a=csup:med-v0
             m=audio 4567 RTP/AVP 103
             a=rtpmap:103 iLBC/8000
             a=fmtp:103 mode=20
             a=acfg:2 18
             a=rtpmap:18 G729/8000
             a=fmtp:18 annexb=yes
             a=acfg:3 m=4 pt=4:18

   Bob includes the "a=csup" and "a=acfg" attribute attributes in the answer to
   inform Alice that he can support the med-v0 level of capability
   negotiations.  Note that in this particular example, the answerer
   supported the capability extensions defined here, however had he not,
   he would simply have processed the offer based on the offered PCMU
   and G.729 codecs under the RTP/AVP profile only.  Consequently, the
   answer would have omitted the "a=csup" attribute line and chosen one
   or both of the PCMU and G.729 codecs instead.  The answer carries the
   accepted configuration in the m line along with corresponding rtpmap: rtpmap
   and/or fmtp: fmtp parameters, as appropriate.

   Note that per the base protocol, after the above, Alice MAY generate
   a new offer with an actual configuration ("m=" line, etc.)
   corresponding to the actual configuration referenced in Bob's answer
   (not shown here).

3.2.  Capability Attributes

   In this section, we present  Design Goals

   The design of the new attributes associated with
   indicating elements added to the media capabilities for use capability negotiation
   framework by the SDP Capability
   negotiation. this document has been driven by two basic goals:

   o  The approach taken is to keep things similar to resulting SDP should be as compact as possible while
      preserving the
   existing flexibility necessary to declare multiple options
      for complex media capabilities encodings.

   o  The capability attributes defined by should be easily mapped to and
      from "conventional" SDP elements, that is, to and from one or more
      SDP records that do not contain any capability attributes.

   It is hoped that satisfaction of these goals will facilitate simple
   implementations of capability negotiation in SDP.

3.3.  New Capability Attributes

   In this section, we present the new attributes associated with
   indicating the media capabilities for use by the SDP Capability
   negotiation.  The approach taken is to keep things similar to the
   existing media capabilities defined by the existing media
   descriptions ("m=" lines) and the associated "rtpmap" and "fmtp"
   attributes.  We use media subtypes and "media capability numbers"
   instead of payload types to link the relevant media capability
   parameters.  This permits the capabilities to be defined at the
   session level and be used for multiple streams, if desired.  Payload
   types are then specified at the media level (see Section 3.2.2). 3.4.2).

   A media capability merely indicates possible support for the media
   type and media format(s) in question.  In order to actually use a
   media capability in an offer/answer exchange, it must be referenced
   in a potential configuration (see Section 2.3.1). 3.4.1).

   Media capabilities can be provided at the session-level and/or the
   media-level.  Media capabilities provided at the session level may be
   referenced in an lcfg attribute at the session level, or by any pcfg
   attribute at the media level, level (consistent with the MIME type), whereas
   media capabilities provided at the media level may be referenced by a
   pcfg attribute within that media stream only.  In either case, the
   scope of the <med-cap-num> is the entire session description.  This
   enables each media capability to be uniquely referenced across the
   entire session description (e.g. in a potential configuration)

3.2.1. configuration).

3.3.1.  The Media Type and Subtype Encoding Capability Attribute

   Media types and subtypes can be expressed as media format encoding capabilities by use
   of the "a=mcap" attribute, which is defined as follows:

   a=mcap:<med-cap-num> <subtype>*[ <subtype>]

   a=mcap:<med-cap-num-list> <subtype>[/<encoding-parms>]
          <med-cap-num-list> = <med-cap-num> *[COMMA <med-cap-num>]

   where <med-cap-num> is an integer between 1 and 2^31-1 (both
   included) used to number the a media format capabilities capability, or a range of
   such integers and the <subtype> is the media subtype e.g.  H263-1998,  H263-1998
   or PCMU.  The <med-cap-
   num> is and <encoding-parms> are the media capability number associated with encoding parameters for
   the first subtype <subtype>.  All media format capabilities in the list, the number associated with list are
   assigned to the second subtype is one
   higher, etc. same media type/subtype.  Each occurrence of the mcap
   attribute MUST use a different
   value of <med-cap-num>.  Furthermore, when an "mcap" attribute
   indicates more than one media format, unique values in its <med-cap-num-list>; the media
   capability numbers implied
   MUST NOT must be used by any other "mcap" attribute in unique across the entire session or media description (explicitly or implicitly).
   description.  In short, the mcap attribute defines media capabilities
   and associates them with a media capability number in the same manner
   as the rtpmap attribute defines them and associates them with a
   payload type.

   In ABNF, we have:

      media-capability-line = "a=mcap:" media-cap-num WSP media-type media-cap-num-list
                              1*WSP media-cap *(WSP media-cap)
                              ["/" clock-rate ["/" encoding-parms]]
      media-cap-num-list = media-cap-num *[COMMA media-cap-num]
      media-cap-num      = 1*DIGIT | media-cap-range
      media-cap-range    = 1*DIGIT "-" 1*DIGIT
      media-cap          = token ; Subtype name(PCMU, G729, etc.)
      clock-rate         = 1*DIGIT
      encoding-parms     = token

   The clock-rate and encoding-params are as defined to appear in an
   rtpmap attribute for each MIME type/subtype.  Thus, it is easy to
   convert an mcap attribute line into one or more rtpmap attribute
   lines, once a payload type is assigned to a media-cap-num (see
   section 3.4.2).

   The "mcap" attribute can be provided at the session-level and and/or the
   media-level.  There can be more than one mcap attribute at the
   session or media level.  The unique media-cap-num is used to identify
   it
   each media capability in potential and actual configurations.  When
   used in a potential configuration it is a media level attribute
   capability regardless if it is specified at the session or media
   level.

   For example:

             v=0
             a=mcap:1 iLBC
             a= mcap:2 H263-1998, H264

3.2.2.  The Media Encoding Parameter Capability Attribute

   Media format capabilities may require additional encoding parameters,
   such as sample rate, to be precisely defined.  The "a=ecap" encoding
   attribute is defined as

         a=ecap:<med-cap-num-list> <clock rate>[/<encoding parameters>]

   where

           med-cap-num-list = <med-cap-num> *[COMMA<med-cap-num>]

   The clock rate and  In other encoding parameters are as defined for the
   "a=rtpmap:" attribute defined in RFC 4566 [RFC4566].

   The "ecap" attribute can be provided at the session-level and words, the
   media-level.  There can be more than one ecap attribute at the
   session or media level.  The unique media-cap-num is used to identify
   it in potential configurations.  When used in a potential
   configuration it is a media level attribute regardless if it is
   specified at the session or media level.

   For example, a capability for low-bit-rate encoding at 8000 samples
   per second could be specified by

             a=mcap:1 iLBC
             a=ecap:1 8000

   The encoding becomes part of the media capability.  Thus, if it is
   desirable applies to specify the same subtype with, e.g., two different
   encoding rates, then specific
   media description associated with the subtype should be listed twice, and each
   should be modified appropriately. potential configuration in
   question.

   For example:

             v=0
             a=mcap:1 L16 L16
             a=ecap:1 8000
             a=ecap:2 16000/2

   defines two low-data-rate codecs, codec 1 uses 8000 samples per
   second, and codec 2 uses 16000 samples per second and 2 channels.

3.2.3. L16/8000/1
             a=mcap:2 L16/16000/2
             a=mcap:3,4 H263-1998/90000

3.3.2.  The Media Format Parameter Capability Attribute

   This attribute is used to associate media format media-specific parameters with a
   one or more media capability. capabilities.  The form of the attribute is:

           a=fcap:<med-cap-num-list>

           a=mfcap:<med-cap-num-list>  <list of format parameters>

   where <med-cap-num-list> permits the format parameter(s) to be associated
   with one or more media capabilities, capabilities and the format parameters are
   specific to the type of codec(s), as described for the
   fmtp: codec.  The mfcap lines map to a single
   traditional SDP fmtp attribute line (one per <media-cap-num>) of the
   form

           a=fmtp:<fmt> <list of parameters>

   where <fmt> is the media format description defined in RFC 4566[RFC4566].  Unlike 4566
   [RFC4566], as appropriate for the fmtp
   attribute, multiple fcap attributes may particular media stream.  The mfcap
   attribute MUST be associated used to encode attributes for media capabilities,
   which would conventionally appear in an fmtp attribute.

   The appearance of media subtypes with a
   specified med-cap-num.  This provides large number of formatting
   options (e.g., AMR-WB [RFC4867]) coupled with the ability restriction that
   only a single fmtp attribute can appear per media format, suggests
   that it is useful to create a combining rule for mfcap parameters
   which are associated with the same media capability number.
   Therefore, different mfcap lines MAY include the same <med-cap-num>
   in their <med-cap-num-list>.  When a particular media capability is
   selected for processing, the parameters from each mfcap line which
   references the particular capability number in its med-cap-num-list
   are concatenated together via ";" to form the equivalent of a single
   fmtp attribute line.  This permits one to mix define a separate mfcap
   line for a single parameter and match value that is to be applied to each
   media capability designated in the med-cap-num-list.  This provides a
   compact method to specify multiple combinations of format parameters
   when using codecs with multiple format options.

   The fcap mfcap attribute adheres to RFC 4566 attribute production rules
   with

        media-format-capability-line

           media-format-capability = "a=fcap:" <att-value>

        att-value = <med-cap-num-list> "a=mfcap:"<media-caps> WSP <format-specific-parameter-
        list>

        med-cap-num-list
                                      <fmt-specific-param-list>
           med-caps = <med-cap-num> *["," <med-cap-num>] "*" ; wildcard: all media caps
                      / <med-cap-num-list> ; med-cap-
        num is defined in Section 3.2.1 3.3.1
           format-specific-parameter-list = <format-specfic-parameter>
                                    *[";"<format-specfic-parameter>] ; format-specific-parameter-
        list
           format-specific-parameter = text

   Format parameters are not parsed by SDP; their content is specific to
   the media type/subtype.  When format parameters for a specific media
   capability are combined from multiple a=mfcap lines which reference
   that media capability, the format-specific parameters are
   concatenated together and separated by "; " for construction of the
   corresponding format attribute (a=fmtp):

        a= fmtp:<fmt> WSP <format-specfic-parameter-list>
        [1*[";"<format-specfic-parameter-list>] ;

   where <fmt> depends on the transport protocol in the manner defined per codec/capability.
   in RFC4566.  SDP cannot assess the legality of the resulting
   parameter list in the "a=fmtp" line; the user must take care to
   insure that legal parameter lists are generated.

   The "fcap" "mfcap" attribute can be provided at the session-level and the
   media-level.  There can be more than one fcap mfcap attribute at the
   session or media level.  The unique media-cap-num is used to identify
   it in potential configurations.  When used in a potential
   configuration it is a media level attribute regardless if it is
   specified at
   associate the session or parameters with a media level. capability.

   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
   with and without comfort noise support may thus be identified defined by:

             a=mcap:1

             a=mcap:1,2 audio G729 G729
             a=fcap:2 G729/8000
             a=mfcap:2 annexb:no

   Media format capability 1 supports G.729 with Annex B, whereas media
   format capability 2 supports G.729 without Annex B.

   Example for H.263 video:

             a=mcap:1 video H263-1998 H263-2000
             a=fcap:1 H263-1998/90000
             a=mcap:2 video H263-2000/90000
             a=mfcap:1 CIF=4;QCIF=2;F=1;K=1
             a=fcap:2
             a=mfcap:2 profile=2;level=2.2

   Finally, for six format combinations of the Adaptive MultiRate codec:

             a=mcap:1 audio AMR AMR AMR AMR AMR AMR
             a=ecap:1,3,5 16000/1
             a=ecap:2,4,6 8000/1
             a=fcap:1,2,3,4

             a=mcap:1-3 AMR/8000/1
             a=mcap:4-6 AMR/16000/1
             a=mfcap:1,2,3,4 mode-change-capability=1
             a=fcap:5,6
             a=mfcap:5,6 mode-change-capability=2
             a=fcap:1,2,3,5
             a=mfcap:1,2,3,5 max-red=220
             a=fcap:3,4,5,6
             a=mfcap:3,4,5,6 octet-align=1
             a=fcap:1,3,5
             a=mfcap:1,3,5 mode-set=0,2,4,7
             a=fcap:2,4,6
             a=mfcap:2,4,6 mode-set=0,3,5,6

   So that AMR codec #1, when specified in a pcfg attribute within an
   audio stream block (and assigned payload type 98) as in

             a=pcfg:1 m=1 pt=1:98

   is essentially equivalent to the following
             m=audio 49170 RTP/AVP 98
             a=rtpmap:98 AMR/16000/1 AMR/8000/1
             a=fmtp:98 mode-change-capability=1; max-red=220; mode-
             set=0,2,4,7

   and AMR codec #4 with payload type 99, is essentially equivalent to
   the following:

             m=audio 49170 RTP/AVP 99
             a=rtpmap:99 AMR/8000/1 AMR/16000/1
             a=fmtp:99 mode-change-capability=1; octet-align=1; mode-
             set=0,3,5,6

   and so on for the other four combinations.

3.2.4.  The Bandwidth  SDP could thus convert
   the media capabilities specifications into one or more alternative
   media stream specifications, one of which can be chosen for the
   answer.

   In some cases, particularly when an RFC 2198 redundancy audio subtype
   (RED) capability is defined, the parameters to the mscap attribute
   may contain payload type numbers.  These numbers are bound to actual
   payload types by means of the payload type parameter (pt=) in a
   potential, actual, or latent configuration.  See sections 3.4.2, 3.5,
   and 3.6.

3.3.3.  The Media-Specific Capability Attribute

   Media-specific attributes, beyond the rtpmap and fmtp attributes, may
   be associated with media capability numbers via a new media-specific
   attribute, mscap, as follows:

          media-specific-capability = "a=mscap:"
                                       <media-caps> ; defined in 3.3.2
                                       WSP <att-field> ; from [RFC4566]
                                       WSP <ms-parameters>

           ms-parameters = byte-string ; as defined per attribute.

   Given an association between a media capability and a payload type
   number as specified by the pt= parameters in an lcfg or pcfg
   attribute line, a mscap line may be translated easily into a
   conventional attribute line of the form

        a=<att-field>":"<fmt> <ms-parameters> ; fmt defined in [RFC4566]

   A single mscap line may refer to multiple media capabilities; this is
   equivalent to multiple mscap lines, each with the same attribute
   values, one line per media capability.  Multiple mscap lines may
   refer to the same media capability, but, unlike the mfcap attribute,
   no concatenation operation is defined.  Hence, multiple mscap lines
   applied to the same media capability is equivalent to multiple lines
   of the specified attribute in a conventional media record.

   Here is example with the rtcp-fb attribute, modified from an example
   in[I-D.ietf-avt-avpf-ccm] (with the session-level and audio media
   omitted).  If the offer contains a media block like the following,

             m=video 51372 RTP/AVP 98
             a=rtpmap:98 H263-1998/90000
             a=tcap:1 RTP/AVPF
             a=mcap:1 H263-1998/90000
             a=mscap:1 rtcp-fb ccm tstr
             a=mscap:1 rtcp-fb ccm fir
             a=mscap:* rtcp-fb ccm tmmbr smaxpr=120
             a=pcfg:1 t=1 m=1 pt=1:98

   and if the proposed configuration is chosen, then the equivalent
   media block would look like

             m=video 51372 RTP/AVP 98
             a=rtpmap:98 H263-1998/90000
             a=rtcp-fb:98 ccm tstr
             a=rtcp-fb:98 ccm fir
             a=rtcp-fb:* ccm tmmbr smaxpr=120

3.3.4.  The Bandwidth Capability Attribute

   In some cases it is desirable to specify different bandwidth limits
   for different media configurations.  This may be done by use of the
   "a=bcap" attribute, which is defined as follows:

             a=bcap:<bw-cap-num> <bwtype>:<bandwidth>

   where <bw-cap-num> is an integer between 1 and 2^31-1 (both included)
   used to identify the bandwidth capability, <bwtype> is the bandwidth
   type, and <bandwidth> is the bandwidth value, as defined for the b=
   line in RFC4566[RFC4566]

   In ABNF, we have:

             media-bandwidth-cap-line = "a=bcap:" bw-cap-num 1*WSP
                                         bwtype ":" bandwidth

   where
             bw-cap-num = 1*DIGIT; the bandwidth "handle"
             bwtype = token; as defined in RFC4566
             bandwidth = 1*DIGIT; as defined in RFC4566

   The "bcap" attribute can appear at the session level, where it can be
   referenced by lcfg or pcfg attributes, or at the media level, where
   it can be referenced by pcfg attributes.  When invoked by a pcfg or
   lcfg attribute, the resulting bandwidth line (b=) is to be
   interpreted at the media-level. media-level for that configuration.  There can be
   more then than one bcap attribute.  The unique bw-cap-num is used to
   identify it in potential configurations.

   Note: The session level bandwidth gives a maximum total values for
   all the media in the session.  Currently the authors suggest that
   enforcing a potential limit can be done at the media level and by
   using re-INVITE  No provision has been made
   for the negotiation of total session level bandwidth. bandwidth capabilities.

   Bandwidth capabilities may be included in a potential configuration
   via the "b=" parameter (see below).  Any bandwidth capability
   included replaces any media-level bandwidth of the same type declared
   in a "b=" SDP line.

   The following example offers a preferred potential configuration for
   H.263 QCIF at 360 Kbit/sec and a second potential configuration for
   H.263 CIF at the offered 500 Kbit/sec

             m=video 49170 RTP/AVP 99
             b=TIAS:500000
             a=rtpmap:99 H263-1998/90000
             a=fmtp:99 CIF=4; QCIF=2
             a=mcap:1 video H263-1998 H263-1998
             a=fcap:1 H263-1998/90000
             a=mcap:2 video H263-1998/90000
             a=mfcap:1 QCIF=2
             a=fcap:2
             a=mfcap:2 CIF=4; QCIF=2;F=1;K=1
             a=bcap:1 TIAS:360000
             a=pcfg:1 m=1 b=1 pt:100 pt=1:100
             a=pcfg:2 m=2 pt:101

3.3. pt=2:101

3.4.  Extensions to the Potential Configuration Attribute

   The extension protocol of capabilities negotiation requires three new
   extensions for the pcfg: attribute defined in the base protocol.  The
   first extension permits the specification of media capabilities, or
   combinations thereof; the second permits the assignment of payload
   types to those capabilities when used in the specified configuration;
   the third permits the specification of bandwidth limits for a media
   stream.

3.3.1.

3.4.1.  The Media Capability Extension to the Potential Configuration
        Attribute Parameter

   The potential configuration attribute ("a=pcfg") as defined in SDP
   capabilities negotiation, permits alternate attributes to be
   associated with the media types defined in a media line.  In this
   document, we define an extension parameter for the specification of
   media configurations in addition to the one specified on the media
   line.

   We define the media capability configuration parameter, pot-media-
   config, in accordance with the following format:

           m=<med-cap-list> *["|"<med-cap-list>]

   where <med-cap-list> is a comma-separated list of media capability
   numbers (media-cap-num) as defined by a=mcap: lines and media lines.

   In ABNF form (adhering to the ABNF for pot-extension-config in
   [SDPCapNeg]:

           pot-media-config = "m=" med-cap-list *(BAR med-cap-list)
                              ; BAR is defined in [SDPCapNeg]
           med-cap-list     = med-cap-num *("," med-cap-num)
           med-cap-num      = 1*DIGIT      ; defined in SDP
           BAR                    = *WSP "|" *WSP

   Each potential media configuration is a comma-separated list of media
   capability numbers where med-cap-num refers to media capability
   numbers defined explicitly by a=mcap attributes and hence MUST be
   between 1 and 2^31-1 (both included).  Alternative potential media
   configurations are separated by a vertical bar ("|").  The
   alternatives are ordered by preference.  When media capabilities are
   not included in a potential configuration at the media level, the
   media type and media format from the associated "m=" line will be
   used.

   When one or more media capabilities (a=mcap) are invoked in a
   potential configuration (via m=), and associated with a payload type
   number by default or by a payload type number parameter (pt=),
   special processing must be invoked on the attributes associated with
   that payload type.  If the media capability is associated with any
   mfcap or mscap attributes, then all corresponding conventional
   attributes (e.g., fmtp or rtcp-fb attribute lines) in the media block
   are ignored for that configuration.  If no mfcap parameters are
   specified, then an fmtp attribute line within the media block with
   the correct payload type number, if any, will apply.  Similarly, any
   other media-specific attributes (e.g., rtcp-fb) in the media block
   with the correct payload type number will apply unless there is an
   applicable mscap attribute for the same attribute type (e.g.,
   rtcp-fb), in which case all media-block attributes of the same type
   and payload type number will be ignored.  Any media-specific
   attributes in the media block which refer to payload type numbers not
   used by the potential configuration are to be ignored.  These rules
   are intended to avoid the need to duplicate attributes and use the
   a=-m: form of invoking attributes in a potential configuration just
   to replace an rtpmap or fmtp attribute.

   For example:

             v=0
             o=- 25678 753849 IN IP4 192.0.2.1
             s=
             c=IN IP4 192.0.2.1
             t=0 0
             a=creq:med-v0
             m=audio 3456 RTP/AVP 0 18 100
             a=rtpmap:100 telephone-events
             a=fmtp:100 0-15
             a=mcap:1 audio PCMU g729 telephone-event
             a=ecap:1,2,3 8000
             a=fcap:3 PCMU/8000
             a=mcap:2 g729/8000
             a=mcap:3 telephone-event/8000
             a=mfcap:3 0-15
             a=pcfg:1 m=2,3|1,3 pt=1:0, 2:18, 3:100

   In this example, G729 PCMU is media capability 2, PCMU 1, G729 is media capability
   1,
   2, and events telephone-event is media capability 3.  The a=pcfg: line
   specifies that the preferred configuration is G.729 with extended
   dtmf events, second is G.711 mu-law with extended dtmf events.
   Intermixing of G.729, G.711, and "commercial" dtmf events is least
   preferred (the actual base configuration provided by the "m=" line, which is
   always the least preferred configuration).

3.3.2.  The Payload Type Mapping Extension to the Potential
        Configuration Attribute

   When media capabilities defined in mcap: rtpmap and fmtp
   attributes of the base configuration are replaced by the mcap and
   mfcap attributes when invoked by the proposed configuration.

3.4.2.  The Payload Type Mapping Parameter

   When media capabilities defined in mcap attributes are used in
   potential configuration lines, and the transport protocol uses RTP,
   it is necessary to assign payload types to them.  In some cases, it
   is desirable to assign different payload types to media capabilities defined in the same media line.
   capability when used in different potential configurations.  One
   example of the latter is when configurations for AVP and SAVP are offered: the
   offerer would like the answerer to use different payload types for
   encrypted and unencrypted media so that it (the offerer) can decide
   whether or not to render early media which arrives before the answer
   is received.  This association of distinct payload type(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
   types.

   We define the media type mapping configuration parameter, pt-media-
   map, in accordance with the following format:

             pt-media-map = "pt=" med-map-list
             med-map-list = med-map *("," med-map); *["," med-map]
             med-map = <med-cap-num> med-cap-num ":" <'payload-type> ; 'payload-type;
             med-cap-num is defined above in section 3.4.1
             payload-type = 1*DIGIT ; RTP payload type

   The example in the previous section shows how the parameters from the
   mcap line are mapped to payload type in the pcfg "pt" parameter.

3.3.3.

   As described in section 3.4.1, the choice of payload type numbers is
   especially important since they are also used to refer to base media
   -specific attributes (e.g., fmtp or rtcp-fb) if mfcap or mscap
   attributes are not specified for a media subtype.

3.4.3.  The Bandwidth Extension to the Potential Configuration Attribute Parameter

   A bandwidth parameter is added to the pcfg attribute in order to
   provide the flexibility to specify different bandwidth limits for
   different configurations.

   The bandwidth parameter, bw-param, is defined in accordance with the
   following format:

             bw-param = "b=" bw-cap-list;
             bw-cap-list = bw-cap-num *("," bw-cap-num);
             bw-cap-num = 1*DIGIT; as defined above by the bcap attribute

   Multiple bandwidth capabilities are permitted in case it is desired
   to specify multiple bandwidth types.  Note that it is considered an
   error condition if the same bandwidth type is referenced more than
   once in the bw-cap-list.

3.4.

   If a bandwidth capability is referenced in a potentical
   configuration, and that configuration is selected, then the bandwidth
   capability will replace any bandwidth attribute of the same <bwtype>
   which appears in the base media configuration.  Bandwidth
   specifications in the base configuration will apply to any potential
   configuration for which no correspoinding bandwidth capability is
   specified.

3.5.  Extensions to the Actual Configuration Attribute

   The Actual configuration attribute is specified in [SDPCapNeg].  The
   actual configuration MUST list the potential configuration selected
   by the answerer.  This section adds extensions parameters enabling
   the answerer to specify the potential configuration attributes
   defined in this document and used in forming the answer.

   We define actual configuration extensions based on the sel-extension-
   config specified in [SDPCapNeg].  The new parameters are: parameter
   act-media-config, act-med-map and act-bw-param in accordance with the
   following ABNF:

        act-media-config = "m=" med-cap-list ; defined in section
             3.3.1 3.4.1
        act-med-map = "pt=" med-map *("," med-map) ; defined in
             section 3.3.2 3.4.2
        act-bw-param = "b=" bw-cap-list ; defined in section 3.3.3 3.4.3

   A response to the previous offer example in the above section might
   be:

             v=0
             o=- 24351 621814 IN IP4 192.0.2.2
             s=
             c=IN IP4 192.0.2.2
             t=0 0
             a=csup:med-v0
             m=audio 5432 RTP/AVP 18 100
             a=rtpmap:100 events
             a=fmtp:100 0-15
             a=acfg:1 m=2,3 pt=2:18,3:100

   Note that the capability numbers expressed in the acfg: attribute are
   based on the offered capability numbering, not on those listed in the
   answer, if any.  The acfg attribute identifies to the offrer offerer which
   potential configuration and media encoding combination (and parameter combination) was selected by
   the answerer.

3.5.  Note that payload types, if specified, refer to the
   payloads to be received by the offeror; if the answerer wishes to
   receive different payload types, those values MUST be specified in
   the m= line of the SDP answer.

3.6.   The Latent Configuration Attribute

   One of the goals of this work is to permit the exchange of
   supportable media configurations in addition to those offered or
   accepted for immediate use.  Such configurations are referred to as
   "latent configurations".  For example, a party may offer to establish
   an audio session, and, at the same time, announce its ability to
   support a video session and supply its video capabilities.

   Latent configurations may be announced capabilities by use of the offering
   one or more latent
   configuration attribute, which is defined in a manner very similar configurations; the responding party may indicate
   its ability and willingness to support such a video session by
   returning one or more latent configurations.

   Latent configurations may be announced by use of the latent
   configuration attribute, which is defined in a manner very similar to
   the potential configuration attribute:

      a=lcfg:<preference> ["mt="<media>]
                          ["m="<media-caps-list>]
                          ["t="<transport>]
                          ["a="<attributes>]
                          ["b="<bw-cap-list>]
                          ["pt="<med-map-list>]
                          [future-extensions]

   <media> is defined in [RFC4566] and future-extensions = extension-
   config-list as defined in [SDPCapNeg].

   The m=, t=, b= and a= parameters are identical in format and meaning
   to those defined for the pcfg: attribute.  Note that the media type
   (mt=) and media capabilities list MUST be present if the latent
   configuration is defined at the session level.  The mt= parameter
   provides the MIME type (audio, video, etc.) for the configuration; it
   is OPTIONAL when the latent configuration is declared at the media
   level, but if present, MUST match the type of the m= line.  The pt=
   parameter is not permitted directly meaningful in the lcfg: attribute because
   no actual media session is being offered or accepted. accepted, but it is
   included in order to tie any payload type parameters within
   attributes to the media.  A primary example is the case of format
   parameters for the RED payload, which are payload type numbers.
   Specific payload type numbers used in a latent configuration MAY be
   interpreted as suggestions to be used in any future offer based on
   the latent configuration, but they are not binding; the offeror
   and/or answerer may use any payload type numbers each deems
   appropriate.  Future extensions are also permitted.

   Latent Configurations configurations MUST be specified at the session level when
   they represent an additional media stream to those in the offer or
   answer.  If an acap: attribute is declared at the session level for
   use in a session-level lcfg line, it SHOULD NOT be used in a pcfg
   line at the media level unless it is to become a session-level
   attribute in the answer.

3.5.1.   The crypto: Attribute in

   Latent Configurations

   If configurations placed at the sdescriptions crypto: attribute is necessary as part of any
   latent configuration which announces sdescriptions capabilities, it
   presents a slight problem in media level represent
   configurations that are supportable, but are not desired for
   immediate use.  They represent potential future replacements for the rather long key/salt string is
   useless and should be ignored.  This problem is avoided if we exclude
   the a= parameters from the lcfg: attribute.  [Editor's note: Should
   we define a new crypto: key-method, e.g. "latent",
   stream description in which the key-
   salt portion of key-info is empty?  I think it may be sufficient to
   just include the RTP/SAVP transport to indicate SRTP capability since
   there will they appear.  For example, one party
   might make an offer with several potential configurations (different
   codecs, say).  The answer can be made with one particular
   configuration specified in the m= and "a=acfg" lines, and a new offer when number of
   "a=lcfg" lines, one for each "a=pcfg" line which could be supported
   by the answerer, but which was not chosen for this media stream.

   This permits the answerer to tell the offeror that, although a
   specific codec will be used in the current media session, it can also
   support one or more of the offered alternatives.  This could be
   useful, for example, in the case that PCMU audio encoding is chosen,
   but subsequent network congestion suggests that the media stream
   should be renegotiated to G729; the offeror will know in advance that
   the other party supports G729.

   The rules for replacement of base-level attributes by mcap and mscap
   attributes invoked within a latent configuration will are the same as
   specified for invocation in a potential configuration (see section
   3.4)

3.6.1.  Cryptographic Attributes in Latent Configurations

   If a cryptographic attribute, such as the SDES "a=crypto:" attribute
   [RFC4568], is referenced by a latent configuration, any key material
   REQUIRED in the attribute, such as the SDES key/salt string, MUST be
   offered.]

3.6.
   included.  The receiver of the lcfg: attribute MUST ignore any key
   material associated with the latent configuration.

3.7.  Offer/Answer Model Extensions

   In this section, we define extensions to the offer/answer model
   defined in RFC3264 [RFC3264] and [SDPCapNeg] to allow for media capabilities
   capabilities, bandwidth capabilities, and latent configurations to be
   used with the SDP Capability Negotiation framework.

3.6.1.

   The [SDPCapNeg] provides a relatively compact means to offer the
   equivalent of an ordered list of alternative media stream
   configurations (as would be described by separate m= lines and
   associated attributes).  The attributes acap, bcap, mscap, mfcap and
   mcap are designed to map somewhat straightforwardly into equivalent
   m= lines and conventional attributes when invoked by a pcfg, lcfg, or
   acfg attribute with appropriate parameters.  The "a=pcfg:" lines,
   along with the m= line itself, represent offered media
   configurations.  The "a=lcfg:" lines represent alternative
   capabilities for future use.

3.7.1.  Generating the Initial Offer

   When an endpoint generates an initial offer and want wants to use the
   functionality described in the current document, it should identify
   and define the codecs it can support via mcap , ecap , mcap, mfcap and fcap mscap
   attributes.  The SDP media line(s) should be made up with the default
   (least preferred) configuration.
   configuration to be used if the other party does not understand
   capability negotiations (by default, this is the least preferred
   configuration).  Typically, the media line configuration will contain
   the minimum acceptable capabilities.  The offer MUST include the required
   level of capability negotiation extensions needed to support this
   functionality.
   functionality in a "creq" attribute.

   Preferred configurations for each media stream are identified
   following the media line.  The present offer may also include latent
   configuration (lcfg) attributes, at the session level, describing
   media streams and/or configurations the offeror is not now offering,
   but which it is willing to support in a future offer/answer exchange.
   A simple example might be the inclusion of a latent video
   configuration in an offer for an audio stream.

3.6.2.

3.7.2.  Generating the Answer

   When the answering party receives the offer and if it supports the
   required capability negotiation extensions, it should select the
   most-preferred configuration it can support for each media stream,
   and build its answer accordingly.  Each  The configuration selected for
   each accepted media configuration stream is placed into the answer as a media line
   with associated parameters, It parameters and attributes.  If a proposed
   configuration is chosen, the answer must include the supported
   extension attribute and each media stream for which a proposed
   configuration was chosen must contain an actual configuration (acfg)
   attribute to indicate just which pcfg attribute was used to build the
   answer.  The answer should may also include any latent configurations the
   answerer can support, especially any configurations compatible with
   other proposed or latent configurations received in the offer.  The
   answerer should make note of those configurations it might wish to
   offer in the future.

3.6.3.

3.7.3.  Offerer Processing of the Answer

   When the offerer offeror receives the answer, it should make note of any
   capabilities and/or latent configurations for future use.  The media
   line(s) must be processed in the normal way to identify the media
   stream(s) accepted by the answer, if any.  The acfg attribute, if
   present, may be used to verify the proposed configuration used to
   form the answer, and to infer the lack of acceptability of higher-
   preference configurations that were not chosen.  Note that the base
   specification [SDPCapNeg] requires the answerer [SDPCapNeg] requires the answerer to choose the highest
   preference configuration it can support.

3.7.4.  Modifying the Session

   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
   stream, or changing the properties used on an existing stream, it may
   do so via the mechanisms defined for offer/answer[RFC3264].  If the
   initiating party has remembered the codecs, potential configurations,
   and latent configurations announced by the other party in the earlier
   negotiation, it may use this knowledge to maximize the likelihood of
   a successful modification of the session.  Alternatively, it may
   perform a new capabilities exchange as part of the reconfiguration.

4.  Examples

   In this section, we provide examples showing how to use the Media
   Capabilities with the SDP Capability Negotiation.

4.1.  Alternative Codecs

   This example provide a choice of one of six variations of the
   adaptive multirate codec.  In this example, the default configuration
   as specified by the media line is the same as the most preferred
   configuration.  Each configuration uses a different payload type so
   the offeror can interpret early media.

             1. v=0
             2. o=- 25678 753849 IN IP4 192.0.2.1
             3. s=
             4. c=IN IP4 192.0.2.1
             5. t=0 0
             6. a=creq:med-v0
             7. m=audio 54321 RTP/AVP 96
             8. rtpmap:96 AMR/16000/1
             9. a=fmtp:96 mode-change-capability=1; max-red=220; mode-
             set=0,2,4,7
             10. a=cmed:1,3,5 audio AMR/16000/1
             11. a=cmed:2,4,6 audio AMR/8000/1
             12. a=mfcap:1,2,3,4 mode-change-capability=1
             13. a=mfcap:5,6 mode-change-capability=2
             14. a=mfcap:1,2,3,5 max-red=220
             15. a=mfcap:3,4,5,6 octet-align=1
             16. a=mfcap:1,3,5 mode-set=0,2,4,7
             17. a=mfcap:2,4,6 mode-set=0,3,5,6
             18. pcfg:1 m=1 pt=1:96
             19. pcfg:2 m=2 pt=2:97
             20. pcfg:3 m=3 pt=3:98
             21. pcfg:4 m=4 pt=4:99
             22. pcfg:5 m=5 pt=5:100
             23. pcfg:6 m=6 pt=6:101

   In the above example, media capability 1 could have been excluded
   from the cmed declaration in line 10 and from the mfcap attributes in
   lines 12, 14, and 16.  The pcfg line 18 could then have been simply
   "pcfg:1".

   The next example offers a video stream with three options of H.264
   and 4 transports.  It also includes an audio stream with different
   audio qualities: four variations of AMR, or AC3.  The offer looks
   something like:

             v=0
             o=- 25678 753849 IN IP4 192.0.2.1
             s=SDP Media NEG example
             c=IN IP4 192.0.2.1
             t=0 0
             a=creq:med-v0
             a=ice-pwd:speEc3QGZiNWpVLFJhQX
             m=video 49170 RTP/AVP 100
             c=IN IP4 192.0.2.56
             a=maxprate:1000
             a=rtcp:51540
             a=sendonly
             a=candidate 12345 1 UDP 9 192.0.2.56 49170 host
             a=candidate 23456 2 UDP 9 192.0.2.56 51540 host
             a=candidate 34567 1 UDP 7 10.0.0.1 41345 srflx raddr
             192.0.2.56 rport 49170
             a=candidate 45678 2 UDP 7 10.0.0.1 52567 srflx raddr
             192.0.2.56 rport 51540
             a=candidate 56789 1 UDP 3 192.0.2.100 49000 relay raddr
             192.0.2.56 rport 49170
             a=candidate 67890 2 UDP 3 192.0.2.100 49001 relay raddr
             192.0.2.56 rport 51540
             b=AS:10000
             b=TIAS:10000000
             b=RR:4000
             b=RS:3000
             a=rtpmap:100 H264/90000
             a=fmtp:100 profile-level-id=42A01E; packetization-mode=2;
             sprop-parameter-sets=Z0IACpZTBYmI,aMljiA==;
             sprop-interleaving-depth=45; sprop-deint-buf-req=64000;
             sprop-init-buf-time=102478; deint-buf-cap=128000
             a=tcap:1 RTP/SAVPF RTP/SAVP RTP/AVPF
             a=mcap:1-3,7-9 H264/90000
             a=mcap:4-6 rtx/90000
             a=mfcap:1-9 profile-level-id=42A01E
             a=mfcap:1-9 aMljiA==
             a=mfcap:1,4,7 packetization-mode=0
             a=mfcap:2,5,8 packetization-mode=1
             a=mfcap:3,6,9 packetization-mode=2
             a=mfcap:1-9 sprop-parameter-sets=Z0IACpZTBYmI
             a=mfcap:1,7 sprop-interleaving-depth=45; sprop-deint-buf-
             req=64000;
             sprop-init-buf-time=102478; deint-buf-cap=128000
             a=mfcap:4 apt=100
             a=mfcap:5 apt=99
             a=mfcap:6 apt=98
             a=mfcap:4-6 rtx-time=3000
             a=mscap:1-6 rtcp-fb nack
             a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_80
             inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|220|1:32
             a=pcfg:1 t=1 m=1,4 a=1 pt=1:100,4:97
             a=pcfg:2 t=1 m=2,5 a=1 pt=2:99,4:96
             a=pcfg:3 t=1 m=3,6 a=1 pt=3:98,6:95
             a=pcfg:4 t=2 m=7 a=1 pt=7:100
             a=pcfg:5 t=2 m=8 a=1 pt=8:99
             a=pcfg:6 t=2 m=9 a=1 pt=9:98
             a=pcfg:7 t=3 m=1,3 pt=1:100,4:97
             a=pcfg:8 t=3 m=2,4 pt=2:99,4:96
             a=pcfg:9 t=3 m=3,6 pt=3:98,6:95
             m=audio 49176 RTP/AVP 101 100 99 98
             c=IN IP4 192.0.2.56
             a=ptime:60
             a=maxptime:200
             a=rtcp:51534
             a=sendonly
             a=candidate 12345 1 UDP 9 192.0.2.56 49176 host
             a=candidate 23456 2 UDP 9 192.0.2.56 51534 host
             a=candidate 34567 1 UDP 7 10.0.0.1 41348 srflx raddr
             192.0.2.56 rport 49176
             a=candidate 45678 2 UDP 7 10.0.0.1 52569 srflx raddr
             192.0.2.56 rport 51534
             a=candidate 56789 1 UDP 3 192.0.2.100 49002 relay raddr
             192.0.2.56 rport 49176
             a=candidate 67890 2 UDP 3 192.0.2.100 49003 relay raddr
             192.0.2.56 rport 51534
             b=AS:512
             b=TIAS:512000
             b=RR:4000
             b=RS:3000
             a=maxprate:120
             a=rtpmap:98 AMR-WB/16000
             a=fmtp:98 octet-align=1; mode-change-capability=2
             a=rtpmap:99 AMR-WB/16000
             a=fmtp:99 octet-align=1; crc=1; mode-change-capability=2
             a=rtpmap:100 AMR-WB/16000/2
             a=fmtp:100 octet-align=1; interleaving=30
             a=rtpmap:101 AMR-WB+/72000/2
             a=fmtp:101 interleaving=50; int-delay=160000;
             a=mcap:14 ac3/48000/6
             a=acap:23 crypto:1 AES_CM_128_HMAC_SHA1_80
             inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|220|1:32
             a=tcap:4 RTP/SAVP
             a=pcfg:10 t=4 a=23
             a=pcfg:11 t=4 m=14 a=23 pt=14:102

4.2.  Latent Media Streams

   Consider a case in which the offeror can support either G.711 mu-law,
   or G.729B, along with DTMF telephony events for the 12 common
   touchtone signals, but is willing to support simple G.711 mu-law
   audio as a last resort.  In addition, the offeror wishes to announce
   its ability to support video in the future, but does not wish to
   offer a video stream at present.  The offer might look like the
   following:

             1. v=0
             2. o=- 25678 753849 IN IP4 192.0.2.1
             3. s=
             4. c=IN IP4 192.0.2.1
             5. t=0 0
             6. a=creq:med-v0
             7. a=mcap:10 H263-1998/90000
             8. a=mcap:11 H264/90000
             9. a=lcfg:10 mt=video m=10|11
             10. m=audio 23456 RTP/AVP 0
             11. a=rtpmap:0 PCMU/8000
             12. a=mcap:1 PCMU/8000
             13. a=mcap:2 g729/8000
             14. a=mcap:3 telephone-event/8000
             15. a=mfcap:3 0-11
             16. a=pcfg:1 m=1,3|2,3 pt=1:0,2:18,3:100

   Lines 7-9 announce support for H.263 and H.264 video (H.263
   preferred) for future reference.  Lines 10 and 11 offer an audio
   stream and provide the lowest precedence configuration (PCMU without
   any DTMF encoding).  Lines 12-14 define the media capabilities to be
   offered: PCMU, G729, and telephone-event.  Line 15 provides the
   format parameters for telephone-events, specifying the 12 commercial
   DTMF 'digits'.  Line 16 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,
   and also support H.263 video (but not H.264), it would reply with an
   answer like:

             1. v=0
             2. o=- 24351 621814 IN IP4 192.0.2.2
             3. s=
             4. c=IN IP4 192.0.2.2
             5. t=0 0
             6. a=csup:med-v0
             7. a=mcap:10 H263-1998/90000
             8. a=lcfg:1 mt=video m=10
             9. m=audio 54321 RTP/AVP 0 100
             10. a=rtpmap:0 PCMU/8000
             11. a=rtpmap:100 telephone-event/8000
             12. a=fmtp:100 0-11
             13. a=acfg:1 m=1,3 pt=1:0,3:100
             14. a=mcap:1 G729/8000
             15. a=mcap:2 telephone-event/8000
             16. a=mfcap:2 0-11
             17. a=lcfg:2 m=1,2 pt=1:18,2:100

   Lines 7 and 8 announce the capability to support H.263 video at a
   later time.  Lines 9-12 of the answer present the selected
   configuration for the media stream.  Line 13 identifies the potential
   configuration from which it was taken, and lines 14-17 announce the
   latent capability to support G.711 mu-law with DTMF events as well.
   If, at some later time, congestion becomes a problem in the network,
   either party may offer a reconfiguration of the media stream to use
   G.729 in order to reduce packet sizes.  Note that line 13 uses media
   capability numbering as provided in the original offer, whereas lines
   14-17 must use their own numbering.

5.  IANA Considerations

   The IANA is hereby requested to register the following new SDP
   attributes:

             Attribute name: mcap
             Long form name: media capability
             Type of attribute: Session-level and media-level
             Subject to charset: No
             Purpose: associate media capability number(s) with
             media subtype and encoding parameters
             Appropriate Values: See Section 3.3.1

             Attribute name: mfcap
             Long form name: media format capability
             Type of attribute: Session-level and media-level
             Subject to charset: No
             Purpose: associate media format attributes and
             parameters with media format capabilities
             Appropriate Values: See Section 3.3.2

             Attribute name: mscap
             Long form name: media-specific capability
             Type of attribute: Session-level and media-level
             Subject to charset: No
             Purpose: associate media-specific attributes and
             parameters with media capabilities
             Appropriate Values: See Section 3.3.3

             Attribute name: bcap
             Long form name: Bandwidth capability attribute
             Type of attribute: Session-level or media-level
             Subject to charset: No
             Purpose: associate bandwidth limitations with potential
             potential or latent configurations.
             Appropriate Values: See Section 3.3.4

             Attribute name: lcfg
             Long form name: Latent Configuration
             Type of attribute: Session-level or media-level
             Subject to charset: No
             Purpose: To announce supportable media configurations
             without offering them for immediate use.
             Appropriate Values: See Section 3.6

6.  Security Considerations

   The security considertions of [SDPCapNeg] apply for this document.
   No additional security considerations are introduced here.

7.  Changes from previous versions

7.1.  Changes from version 02

   This version contains several detail changes intended to simplify
   capability processing and mapping into conventional SDP media blocks.

   o  The "mcap" attribute is enhanced to include the role of the "ecap"
      attribute; the latter is eliminated.

   o  The "fcap" attribute has been renamed "mfcap".  New replacement
      rules vis-a-vis fmtp attributes in the base media specification
      have been added.

   o  A new "mscap" attribute is defined to choose the highest
   preference configuration it can support.

3.6.4.  Modifying handle the Session

   If, at a later time, one problem of the parties wishes
      attributes (other than rtpmap and fmtp) that are specific to modify the
   operating parameters of a session, e.g., by adding a new media
   stream, or changing a codec used on an existing stream, it may do so
   via the mechanisms defined
      particular payload type.

   o  New rules for offer/answer[RFC3264].  If the
   initiating party has remembered processing the codecs, potential configurations, mcap, mfcap, and latent configurations announced by the mscap attributes,
      and overriding standard rtpmap, fmtp, or other party in media-specific
      attributes, are put forward to reduce the earlier
   negotiation, it may use this knowledge need to maximize use the likelihood of
   a successful modification deletion
      option in the a= parameter of the session.  Alternatively, it may
   perform a potential configuration (pcfg)
      attribute.

   o  A new capabilities exchange as part of parameter, "mt=" is added to the reconfiguration.

4.  Examples

   In this section, we provide examples showing how latent configuration
      attribute (lcfg) to use specify the Media
   Capabilities with media stream type (audio, video,
      etc.) when the SDP Capability Negotiation.

4.1.  Alternative Codecs

4.2.  Latent Media Streams

5.  IANA Considerations

6.  Security Considerations

7.  Changes from previous versions

7.1. lcfg is declared at the session level.

   o  The examples are expanded.

   o  Numerous typos and misspellings have been corrected.

7.2.  Changes from version 01

   The documents adds a new attribute for specifying bandwidth
   capability and a parametr to list in the potential configuration.
   Other changes are to align the document with the terminolgy and
   attribute names from draft-ietf-mmusic-sdp-capability-negotiation-07.
   The document also clarifies some previous open issues.

7.2.

7.3.  Changes from version 00

   The major changes include taking out the "mcap" and "cptmap"
   parameter.  The mapping of payload type is now in the "pt" parameter
   of "pcfg".  Media subtype need to explictly definesd in the "cmed"
   attribute if referenced in the "pcfg"

8.  Acknowledgements

   This document is heavily influenced by the discussions and work done
   by the SDP Capability Negotiation Design team.  The following people
   in particular provided useful comments and suggestions to either the
   document itself or the overall direction of the solution defined
   herein: Cullen Jennings, Matt Lepinski, Joerg Ott, Colin Perkins, and
   Thomas Stach.

   We thank Ingemar Johansson and Magnus Westerlund for examples that
   stimulated this work.

9.  References

9.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3264]  Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
              with Session Description Protocol (SDP)", RFC 3264,
              June 2002.

   [RFC4566]  Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
              Description Protocol", RFC 4566, July 2006.

   [SDPCapNeg]
              Andreasen, F., "SDP Capability Negotiation",
              draft-ietf-mmusic-sdp-capability-negotiation-07
              draft-ietf-mmusic-sdp-capability-negotiation-08 (work in
              progress), October December 2007.

9.2.  Informative References

   [I-D.ietf-avt-avpf-ccm]
              Wenger, S., Chandra, U., Westerlund, M., and B. Burman,
              "Codec Control Messages in the RTP Audio-Visual Profile
              with Feedback  (AVPF)", draft-ietf-avt-avpf-ccm-10 (work
              in progress), October 2007.

   [RFC3407]  Andreasen, F., "Session Description Protocol (SDP) Simple
              Capability Declaration", RFC 3407, October 2002.

   [RFC3952]  Duric, A. and S. Andersen, "Real-time Transport

   [RFC4568]  Andreasen, F., Baugher, M., and D. Wing, "Session
              Description Protocol
              (RTP) (SDP) Security Descriptions for Media
              Streams", RFC 4568, July 2006.

   [RFC4867]  Sjoberg, J., Westerlund, M., Lakaniemi, A., and Q. Xie,
              "RTP Payload Format and File Storage Format for internet Low Bit Rate Codec
              (iLBC) Speech", the
              Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband
              (AMR-WB) Audio Codecs", RFC 3952, December 2004. 4867, April 2007.

Authors' Addresses

   Robert R Gilman
   Avaya, Inc.
   1300 West 120th Avenue
   Westminster,
   NDCI
   Broomfield, CO 80234 80020
   USA

   Email: rrg@avaya.com bob_gilman@comcast.net

   Roni Even (editor)
   Polycom
   94 Derech Em Hamoshavot
   Petach Tikva  49130
   Israel

   Email: roni.even@polycom.co.il

   Flemming Andreasen
   Cisco Systems
   Edison, NJ
   USA

   Email: fandreas@cisco.com

Full Copyright Statement

   Copyright (C) The IETF Trust (2007). (2008).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an
   "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
   OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
   THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
   OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
   THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
   WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at
   http://www.ietf.org/ipr.

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at
   ietf-ipr@ietf.org.

Acknowledgment

   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).