<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3261 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3261.xml">
<!ENTITY RFC4566 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4566.xml">
<!ENTITY RFC4867 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4867.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="info" docName="draft-somogyi-sdp-amr-bicc-like-00" updates="4867" ipr="full3978" category="std">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <title abbrev="SDP format for AMR and AMR-WB"></title>

    <!-- add 'role="editor"' below for the editors if appropriate -->

    <!-- Another author who claims to be an editor -->

    <author fullname="Gabor Somogyi" initials="G." surname="Somogyi">
      <organization>Nokia Siemens Networks</organization>

      <address>
        <postal>
          <street>Koztelek u. 6.</street>
          <city>Budapest</city>
          <code>1092</code>
          <country>Hungary</country>
        </postal>
        <email>gabor.somogyi@nsn.com</email>

        <!-- phone, uri and facsimile elements may also be added -->
      </address>
    </author>

    <date month="November" year="2008" />

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>General</area>

    <workgroup></workgroup>

    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>SDP</keyword>
    <keyword>AMR</keyword>
    <keyword>AMR-WB</keyword>
    <keyword>4867</keyword>
    <keyword>3267</keyword>
    <keyword>Update</keyword>
    <keyword>3GPP</keyword>
    <keyword>mode-set</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
      <t>This document describes and update to File Storage Format for the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband (AMR-WB) Audio Codecs.
      The new format allows better interworking with widely deployed mobile telecommunication switching systems.
      This document updates RFC&nbsp;4867 [RFC4867].
      </t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>The SDP [RFC4566] format description of AMR and AMR-WB codecs are described in RFC&nbsp;4867 [RFC4867].
      That format causes trouble for SIP [RFC3261] based mobile switching systems, as the described SDP format did not contain all the necessary information for proper codec negotiation. And that format caused significant signaling overhead.
      </t>
      <t>
      The aim of this document to address these issues, while remaining backward compatible.
      This document introduces new parameters, allowing describing codecs of mobile world in full detail.
      The new parameters make the SDP even larger. But it makes several payload types of the same codec redundant, thus those could be omitted.
      Omitting those payload types limits backward compatibility, and therefore optional.
      </t>
      <t>
      The new syntax elements were designed to fully support 3GPP Transcoder Free Operation (TrFO; 3GPP&nbsp;TS&nbsp;23.153 [3GPP23153]) and Tandem Free Operation (TFO; 3GPP&nbsp;TS&nbsp;28.062 [3GPP28062]).
      Compliance with 3GPP IP Multimedia Subsystem (IMS; TS&nbsp;26.114[3GPP26114]) was taken care of.
      Although 3GPP Release 8 standards were used as reference, the descriptions apply to earlier and possibly later releases, as well.
      Besides mobile switching systems this document was created with the intention to be able to be used within any kind of SIP systems.
      </t>

      <section title="Requirements Language">
        <t>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<xref target="RFC2119">RFC 2119</xref>.</t>
      </section>
    </section>

    <section title="Shortcomings of the original format">
      <section title="Information loss">
        <t>The old syntax did not provide a way to represent all the AMR codec information defined for mobile switches at 3GPP&nbsp;TS&nbsp;23.153 [3GPP23153].
        The information loss could result extra transcoding and speech quality degradation.</t>

        <t>
          Using the syntax defined in RFC&nbsp;4867 only the following 3GPP single codec format parameter is presented in SDP in full detail:
          <list hangIndent="16" style="hanging">
            <t hangText="ACS:">Active Codec mode Set is presented by "mode-set" parameter.</t>
          </list>
        </t>

        <t>
          Using the syntax defined in RFC&nbsp;4867 the following 3GPP single codec format parameters are NOT presented in full detail:
          <list hangIndent="16" style="hanging">
            <t hangText="SCS:">Supported Codec mode Set is the list of all supported modes. It is a superset of ACS. Using codec negotiation methods ACS can be modified to use any of the supported modes.
              <vspace blankLines="1" />
              As the syntax defined in RFC&nbsp;4867 does not have parameter representing SCS, several distinct payload types present the most preferred mode sets, in accordance with 3GPP&nbsp;TS&nbsp;29.163 [3GPP29163]. Therefore only a fraction of the mode combinations are presented, compared to what is intended.</t>
            <t hangText="MACS:">Maximal number of codec modes in the ACS shows the maximum number of codec modes that may be selected for the ACS at a time during speech codec negotiation.</t>
            <t hangText="OM:">Optimization Mode flag shows whether optimization (modification) of Active Codec mode Set is supported or not. If optimization is not supported, SCS and MACS have no meaning for the relevant codec.</t>
            <t hangText="Codec type:">There are numerous AMR codec types, described at 3GPP&nbsp;TS&nbsp;26.103 [3GPP26103]. Those form two groups, narrow-band (NB) and wide-band (WB) AMR codecs. In SDP representation there is one NB and one WB codec type. As codecs within one group have different properties, those properties are described by additional codec parameters in SDP.
              According to 3GPP&nbsp;TS&nbsp;29.163 [3GPP29163] when only one mode is defined in &quot;mode-set&quot; parameter, &quot;mode-change-period&quot; and &quot;mode-change-neighbor&quot; parameters should not be present.
              That causes trouble, as in single mode configuration "UMTS AMR" and "FR AMR" codecs become indistinguishable, even though they are not compatible, according to 3GPP&nbsp;TS&nbsp;23.153 [3GPP23153].</t>
          </list>
        </t>
      </section>
      <section title="Significant signaling overhead">
      <t>As described beforehand, RFC&nbsp;4867 [RFC4867] does not provide a mechanism to signal the SCS, MACS or OM parameters in SDP. Therefore codecs with OM allowed should have been translated into a list of SDP payload formats, where each includes a &quot;mode-set&quot; parameter with a unique value derived from the ACS, SCS and MACS. That resulted in quite huge SDPs. Regarding signaling that significantly increased the traffic, required significantly mode processing resources to parse and significant extra memory to store the information elements of SDP.</t>
      </section>
    </section>

    <section title="SDP format extension">
      <section title="New parameters">
        <t>
          The following new codec format parameters are introduced:
          <list hangIndent="16" style="hanging">
            <t hangText="extra-mode-set:">Lists supported modes that are not listed in mode-set (ACS). Value syntax is the same as for parameter "mode-set", defined at RFC&nbsp;4867 [RFC4867]. If optimization of ACS is supported and SCS differs from ACS, then the parameter MUST be present, otherwise it SHOULD NOT be present.</t>
            <t hangText="macs:">Defines MACS. Valid values between 1 and 8. (Note, that 3GPP&nbsp;TS&nbsp;26.103 [3GPP26103] defines range between 0 and 7, value zero meaning eight. Here "8" represents value eight.) If optimization of ACS is supported, then the parameter MUST be present, otherwise it MUST NOT be present. Consequently, the presence of &quot;macs&quot; parameter indicates the status of OM.</t>
            <t hangText="codec-type:">Codec type. Valid values are capitalized names of AMR codecs defined in 3GPP&nbsp;TS&nbsp;26.103 [3GPP26103], spaces replaced by underscores. Namely FR_AMR, HR_AMR, UMTS_AMR, UMTS_AMR_2, OHR_AMR, FR_AMR-WB, UMTS_AMR-WB, OFR_AMR-WB and OHR_AMR-WB.
            This parameter MAY be omitted if the codec type is obvious from mode change parameters defined at RFC&nbsp;4867 [RFC4867]. In such case omitting codec type is RECOMMENDED. Codec type MUST NOT conflict with mode change parameters.</t>
          </list>
          </t>
      </section>
      <section title="Example">
        <t>The example shows a possible SDP representation of FR AMR codec with ACS=4,5,6,7; SCS=2,3,4,5,6,7; OM=supported; MACS=4.<vspace blankLines="0" /></t>
        <t>Note: There is an extra line-break in the SDP example at extra-mode-set attribute. That was added so that to match traditional RFC formatting. Real SDP does not contain such line break.</t>
        <?rfc needLines="18" ?>
        <figure><artwork>
        v=0
        o=- 0 1 IN IP4 1.2.3.4
        s=-
        c=IN IP4 5.6.7.8
        t=0 0
        m=audio 6000 RTP/AVP 96 97 98 99 100
        b=AS:16
        a=rtpmap:96 AMR/8000
        a=fmtp:96 mode-set=4,5,6,7; mode-change-period=2;
         extra-mode-set=2,3; macs=4
        a=rtpmap:97 AMR/8000
        a=fmtp:97 mode-set=2,4,5,6; mode-change-period=2
        a=rtpmap:98 AMR/8000
        a=fmtp:98 mode-set=2,4,6; mode-change-period=2
        a=rtpmap:99 AMR/8000
        a=fmtp:99 mode-set=3,6; mode-change-period=2
        a=rtpmap:100 AMR/8000
        a=fmtp:100 mode-set=3; codec-type=FR_AMR
        </artwork></figure>
        <t>
          Explanation on RTP payload type descriptions:
          <list hangIndent="8" style="hanging">
            <t hangText="96:">All codec data present. Codec type is obvious, so not explicitly stated.</t>
            <t hangText="97-99:">These lines are not necessary to be present, if full backward compatibility is not needed. Codec type is obvious, so not explicitly stated. These lines do not contain any new parameter defined in this document, as the extra information is available at the definition of payload 96.</t>
            <t hangText="100:">This line is not necessary to be present, if full backward compatibility is not needed. As codec type is not obvious, it is explicitly stated here.</t>
          </list>
        </t>
      </section>
    </section>

    <section title="Backward compatibility">
      <section title="Full backward compatibility">
        <t>Full backward compatibility with RFC&nbsp;4867 [RFC4867] can be achieved by enumerating possible mode sets, as before. Extra parameters must not cause any problem for older implementations.</t>
      </section>
      <section title="Partial backward compatibility">
        <t>The aim of providing only partial compatibility is to reduce signaling bandwidth, CPU and RAM usage. Partial compatibility is achieved by not presenting redundant information (payload type description 97-100 in the example). Older implementations interpret the received payload type description as usual, but they are provided with less rich set of choices.</t>
      </section>
      <section title="Deciding backward compatibility mode">
        <t>It is up to the implementation which approach to take. For example the compatibility mode can be fixed, configurable, or even route specific decisions could be made.</t>
      </section>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>Andras Stefan (Nokia Siemens Networks) provided great support in writing this document by explaining his viewes on issues of AMR codecs.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This memo includes no request to IANA. Two media types (audio/AMR and audio/AMR-WB) have already been registered.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>There are no specific security issues regarding AMR codec syntax extension.</t>
    </section>
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <reference anchor="3GPP23153">
        <front>
          <title>3GPP TS 23.153 Out of band transcoder control; Stage 2, version 8.0.0</title>
          <author initials="3GPP" surname="3rd Generation Partnership Project">
            <organization></organization>
          </author>
          <date year="2007-12" />
        </front>
      </reference>
      <reference anchor="3GPP26103">
        <front>
          <title>3GPP TS 26.103 Speech codec list for GSM and UMTS, version 8.0.0</title>
          <author initials="3GPP" surname="3rd Generation Partnership Project">
            <organization></organization>
          </author>
          <date year="2008-09" />
        </front>
      </reference>
      <reference anchor="3GPP29163">
        <front>
          <title>3GPP TS 29.163 Interworking between the IP Multimedia (IM) Core Network (CN) subsystem and Circuit Switched (CS) networks, version 8.1.0</title>
          <author initials="3GPP" surname="3rd Generation Partnership Project">
            <organization></organization>
          </author>
          <date year="2007-12" />
        </front>
      </reference>
      &RFC2119;
      &RFC4867;
    </references>

    <references title="Informative References">
      <reference anchor="3GPP26114">
        <front>
          <title>3GPP TS 26.114 IP Multimedia Subsystem (IMS); Multimedia Telephony; Media handling and interaction, version 8.0.0</title>
          <author initials="3GPP" surname="3rd Generation Partnership Project">
            <organization></organization>
          </author>
          <date year="2008-09" />
        </front>
      </reference>
      <reference anchor="3GPP28062">
        <front>
          <title>3GPP TS 28.062 Inband Tandem Free Operation (TFO) of speech codecs; Service description; Stage 3, version 7.0.0</title>
          <author initials="3GPP" surname="3rd Generation Partnership Project">
            <organization></organization>
          </author>
          <date year="2007-06" />
        </front>
      </reference>
      &RFC3261;
      &RFC4566;
    </references>

  </back>
</rfc>
