<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc rfcedstyle="yes"?> 
<rfc number="4788" category="std" updates="3558">
    
    <front>

        <title abbrev="EVRC RTP Format Enhancements">
	Enhancements to RTP Payload Formats for EVRC Family Codecs
	</title>

	<author initials="Q." surname="Xie"
	    fullname="Qiaobing Xie">
	    <organization abbrev="Motorola">
	    Motorola, Inc.
	    </organization>
	    <address>
	      <postal>
	      <street>1501 W. Shure Drive, 2-F9</street>
	      <city>Arlington Heights</city> <region>IL</region>
	      <code>60004</code>
	      <country>US</country>
	      </postal>
	      <phone>+1-847-632-3028</phone>
	      <email>Qiaobing.Xie@Motorola.com</email>
	    </address>
	</author>
	<author initials="R." surname="Kapoor"
	    fullname="Rohit Kapoor">
	    <organization abbrev="Qualcomm">
	    Qualcomm Inc.
	    </organization>
	    <address>
	      <postal>
	      <street></street>
	      <city></city> <region></region>
	      <code></code>
	      <country>US</country>
	      </postal>
	      <phone>+1-858-845-1161</phone>
	      <email>rkapoor@qualcomm.com</email>
	    </address>
	</author>

	<date month="January" year="2007" />
	<area>General</area>
	<workgroup>Network Working Group</workgroup>
	<keyword>Internet-Draft</keyword>

        <abstract>
<t>
This document updates the Enhanced Variable Rate Codec (EVRC) RTP
payload formats defined in RFC 3558  
with several enhancements and extensions. In particular, it defines
support for the header-free and interleaved/bundled packet formats for
the EVRC-B codec, a new compact bundled format for the EVRC and EVRC-B
codecs, as well as discontinuous transmission (DTX) support for EVRC
and EVRC-B-encoded speech transported via RTP. Voice over IP (VoIP)
applications operating over low bandwidth dial-up and wireless networks require
such enhancements for efficient use of the bandwidth.
</t>

        </abstract>

    </front>

    <middle>

<section title="Introduction">

<t>
This document defines support for the header-free and
interleaved/bundled packet formats for the EVRC-B codec, a new compact
bundled format for the EVRC and EVRC-B codecs, as well as
discontinuous transmission (DTX) support for EVRC and EVRC-B-encoded
speech transported via RTP.  Voice over IP (VoIP) applications operating over low
bandwidth dial-up and wireless networks require such EVRC RTP payload
capabilities for efficient use of the bandwidth.
</t>

<section title="Support of EVRC-B Codec">
<t>
EVRC-B <xref target="3GPP2-EVRCB" /> is an extension to EVRC <xref
target="3GPP2-EVRC" /> developed in the Third Generation Partnership
Project 2 (3GPP2).  EVRC-B <xref target="3GPP2-EVRCB" /> compresses each 20
milliseconds of 8000Hz, 16-bit sampled speech input into output frames
of one of the four
different sizes: Rate 1 (171 bits), Rate 1/2 (80 bits), Rate 1/4 (40
bits), or Rate 1/8 (16 bits).  In addition, there are two zero-bit
codec frame types: null frames and erasure frames, similar to EVRC
<xref target="3GPP2-EVRC" />.  One significant enhancement in EVRC-B
is the use of 1/4-rate frames that were not used in EVRC. This
provides lower average data rates (ADRs) compared to EVRC, for a given
voice quality.
</t>

<t>
Since speech frames encoded by EVRC-B are different from those encoded
by EVRC, EVRC-B and EVRC codecs do not interoperate with each
other. At the initiation of an RTP session, the RTP sender and receiver
need to indicate (e.g., using MIME subtypes that are separate from
those of EVRC) that EVRC-B is to be used for the ensuing session.
</t>

</section> <!-- Support of EVRC-B Codec -->

<section title="Compact (Header-free) Bundled Format">
<t>
The current interleaved/bundled packet format defined in RFC 3558
allows bundling of multiple speech frames of different rates in a
single RTP packet, sending mode change requests, and interleaving. To
support these functions, a Table of Contents (ToC) is used in each RTP
packet, in addition to the standard RTP header. The size of the ToC
varies depending on the number of EVRC frames carried in the
packet <xref target="RFC3558" />.
</t>

<t>
The current header-free packet format defined in RFC 3558 is more
compact and optimized for use over wireless links. It eliminates the
need for a ToC by requiring that each RTP packet contain only one
speech frame (of any allowable rate), i.e., bundling is not
allowed. Moreover, interleaving and mode change requests are not
supported in the header-free format <xref target="RFC3558" />.
</t>
<?rfc needLines="5"?>
<t>
The compact bundled format described in this document presents the
user an alternative to the header-free format defined in RFC 3558.
This format allows bundling of multiple EVRC or EVRC-B frames without
the addition of extra headers, as would be in the case of the
interleaved/bundled format. However, in order to use this compact
bundled format, only one EVRC/EVRC-B rate (full rate or 1/2 rate) can
be used in the session. Similar to the header-free format defined in
RFC 3558, interleaving and mode change requests are not supported in
the compact bundled format.
</t>

</section> <!-- Compact (Header-free) Bundled Format -->


<section title="Discontinuous Transmission (DTX)">

<t>
Information carried in frames of EVRC and EVRC-B codecs varies little
during periods of silence.  The transmission of these frames across
the radio interface in a wireless system is expensive, in terms of
capacity; therefore, suppression of these frames is
desirable.  Such an operation is called DTX, also known as
silence suppression.
</t>

<t>
In general, when DTX/silence suppression is applied, the first few
frames of silence may be transmitted at the beginning of the period of
silence to establish background noise. Then, a portion of the stream
of subsequent silence frames is not transmitted, and is discarded at
the sender.  At the receiver, background or comfort noise may be
generated by using the previously received silence frames.
</t>

<t>
The full detail of DTX/silence suppression operation can be found in
DTX <xref target= "3GPP2-DTX" /> as well as in RFC 3551 <xref target=
"RFC3551"/>, and in RFC 3558 <xref target="RFC3558"/>. This document only
defines the additional optional MIME parameters (silencesupp, dtxmax,
dtxmin, and hangover) for setting up a DTX/silence suppression
session, where "silencesupp" is for indicating the capability and
willingness of using DTX/silence suppression; "dtxmax" and "dtxmin",
for indicating the desired range of DTX update interval; and
"hangover", for indicating the desired number of silence frames at the
beginning of each silence period to establish background noise at the
receiver (see <xref target="sec-evrc1" /> for detailed definition).
</t>

<t> 
The EVRC and EVRC-B codecs, in variable-rate operation mode, send
1/8-rate frames during periods of silence, while in single-rate operation
mode (see <xref target="c-bundle-format"/>), silence is encoded and
sent in frames of the same rate as that of speech frames.  The DTX
parameters defined in this document apply to 1/8-rate frames in the
variable-rate mode and to silence frames in the single-rate operation
mode.
</t>

<t>
For simplicity, in the rest of this document the term "silence frame"
refers either to an 1/8-rate frame in variable-rate operation or a
frame that contains only silence in the signal-rate operation.
</t>

</section> <!-- end of "DTX" -->

</section> <!-- end of "Introduction" -->


<section title="Conventions">

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

</section> <!-- end of "Conventions"-->

<section anchor="evrcb-sect" title="EVRC-B Codec">

<t> 
Three RTP packet formats are supported for the EVRC-B codec: the
interleaved/bundled packet format, the header-free packet format, and
the compact bundled packet format. For the interleaved/bundled and
header-free packet formats, the operational details and capabilities,
such as ToC, interleaving, and bundling, of EVRC-B, are exactly the
same as those of EVRC, as defined in RFC 3558 <xref target="RFC3558"
/>, except that the mode change request field in the ToC MUST be
interpreted according to the definition of the RATE_REDUC parameter in
EVRC-B <xref target="3GPP2-EVRCB" />. The compact bundled packet
format for EVRC-B is defined in <xref target="c-bundle-format"/> of
this document.
</t>

</section> <!-- Support of EVRC-B Codec -->

<section anchor="c-bundle-format" title="Compact Bundled Format">

<t>
A packet in the compact bundled format consists of an RTP header,
followed by a sequence of one or more consecutive EVRC/EVRC-B codec
data frames of the same rate, as shown below:
   <figure>
      <artwork>
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      RTP Header [4]                           |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|                                                               |
|       One or more EVRC/EVRC-B data frames of same rate        |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      </artwork>
   </figure>
</t>

<t>
The codec data frames MUST be generated from the output of the
codec following the procedure described in Section 5.2 in RFC 3558 <xref
target="RFC3558" />, and all MUST be of the same rate and size.
</t>

<section title="Single-Rate Operation">
<t>
As mentioned earlier, in order to use the compact bundled format, all
the EVRC/EVRC-B data frames in the session MUST be of the same
rate. This packet format may carry only full or half-rate frames. 
</t>

<t>
<?rfc needLines="4" ?>
For a session that uses the compact bundled format, the rate for the
session can be determined during the session setup signaling, for
example, via Session Description Protocol (SDP) exchanges.
See <xref target="mt-def-sect"/> below for more details. 
</t>

</section> <!--Single-Rate Operation"-->

</section> <!--title="Compact Bundled Format"-->


<section anchor="storage-sect" title="Storage Format for EVRC-B Codec">

<t>  
   The storage format is used for storing EVRC-B-encoded speech
   frames, e.g., as a file or e-mail attachment.
</t>

<t>   
   The file begins with a magic number to identify the vocoder that is
   used.  The magic number for EVRC-B corresponds to the ASCII character
   string:
   <figure>
      <artwork>
       "#!EVRC-B\n"
       (or 0x2321 0x4556 0x5243 0x2d42 0x0a in hexadecimal).
      </artwork>
   </figure>
</t>
 
<t>   
   Note that the "\n" is an important part of both this magic number and the 
   "#!EVRC\n" magic number defined in Section 11 of RFC 3558, and the "\n"
   MUST be included in any comparison of either magic number, since,
   otherwise, a prefix of the EVRC-B magic number could be mistaken for
   the EVRC magic number.
</t>
 
<t>   
   The codec data frames are stored in consecutive order, with a single
   ToC entry field, extended to one octet, prefixing each codec data
   frame.  The ToC field, as defined in Section 5.1 of 
   <xref target="RFC3558" />, is extended to one octet by setting the four
   most significant bits of the octet to zero.  For example, a ToC value
   of 4 (a full-rate frame) is stored as 0x04.
</t>
 
<t>   
   Speech frames lost in transmission and non-received frames MUST be
   stored as erasure frames to maintain synchronization with the
   original media.
</t>

</section> <!--title="Storage Format"-->


<section anchor="mt-def-sect" title="Media Type Definitions">


<section anchor="sec-evrc1" title="Registration of Media Type EVRC1">

<t>
<list style="hanging">
   <t hangText="Type name:"> audio </t>

   <t hangText="Subtype names:"> EVRC1</t>

   <t hangText="Required parameters:"> none </t>

<?rfc needLines="15" ?>

   <t hangText="Optional parameters:"> </t>

   <list style="hanging">

   <t hangText="ptime:"> See RFC 4566 <xref target="RFC4566" />. </t>

   <t hangText="maxptime:"> The maximum amount of media that can be
   encapsulated in each packet, expressed as time in milliseconds.
   The time MUST be calculated as the sum of the time the media
   present in the packet represents.  The time SHOULD be a multiple of
   the duration of a single codec data frame (20 msec).  If not
   signaled, the default maxptime value MUST be 200 milliseconds.
   </t>

   <t hangText="fixedrate:">Indicates the EVRC rate of the session
   while in single-rate operation.  Valid values include: 0.5 and 1,
   where a value of 0.5 indicates the 1/2 rate, while a value of 1
   indicates the full rate.  If this parameter is not present, 1/2
   rate is assumed. </t>

   <t hangText="silencesupp:"> Permissible values are 0 and 1.  A
   value of 1 indicates that the sender of this parameter: a) is
   capable of receiving silence-suppressed speech using DTX, AND b) is
   capable of and will send out silence-suppressed speech using DTX,
   unless the other end indicates that it does not want to receive
   silence-suppressed speech using DTX.
   <vspace blankLines="1" />
   A value of 0 indicates that the sender of this parameter:
   a) does NOT want to receive silence-suppressed speech using DTX, AND
   b) will NOT send out silence-suppressed speech using DTX.
   <vspace blankLines="1" />
   If this parameter is not present, the default value 1 MUST be
   assumed. If the RTP receiver
   indicates through the use of SIP signaling or other means that it
   is incapable of or unwilling to use silence suppression using DTX,
   silence suppression using DTX as specified in this document MUST
   NOT be used for the session.  </t>

   <t hangText="dtxmax:"> Permissible values are from 0 to
   255. Indicates the maximum DTX update interval in number of
   frames. During DTX, the RTP sender occasionally updates
   the RTP receiver about the change in background noise
   characteristics, etc., by sending a new silence frame to the RTP
   receiver. The RTP receiver may use 'dtxmax' to indicate to the RTP
   sender the maximum interval (in number of frames) between any two
   DTX updates it expects to receive from the RTP sender.
   <vspace blankLines="1" />
   If this parameter is not present in a session that uses DTX, the
   default value 32, as specified in <xref target= "3GPP2-DTX" />,
   MUST be assumed.  This parameter MUST be ignored if silence
   suppression using DTX is not used for the session.  
   <vspace blankLines="1" />
   Note also that if the RTP receiver elects to detect DTX using
   dtxmax, the dtxmax parameter will affect the amount of delay the
   RTP receiver sees before detecting DTX in the stream. </t>

   <t hangText="dtxmin:"> Permissible values are from 0 to
   255. Indicates the minimum DTX update interval in
   number of frames.  The RTP receiver may use 'dtxmin' to indicate to
   the RTP sender the minimal interval (in number of frames) between
   any two DTX updates it expects to receive from the RTP sender. 
   <vspace blankLines="1" />
   If this parameter is not present, the default value 12, as
   specified in <xref target= "3GPP2-DTX" /> MUST be assumed.  This
   parameter MUST be ignored if silence suppression using DTX is not
   used for the session. </t>

   <t hangText="hangover:"> Permissible values are from 0 to
   255. Indicates the number of consecutive
   silence frames transmitted at the end of an active speech interval
   but before the DTX interval begins.  When setting up an RTP session
   that uses DTX, an RTP receiver can use this parameter to signal the
   number of silence frames it expects to receive before the beginning
   of DTX.  While hangover=0 is allowed, it is RECOMMENDED that
   hangover be set to 1 or greater since the presence of silence
   frames at the end of an active speech can help the RTP receiver to
   identify the beginning of the DTX period.  
   <vspace blankLines="1" />
   If this parameter is not present for a session that uses DTX, the
   default value 1, as specified in <xref target= "3GPP2-DTX" /> MUST
   be assumed.  This parameter MUST be ignored if silence suppression
   using DTX is not used for the session.</t>

   </list>

   <t hangText="Encoding considerations:"> 
   <vspace blankLines="0" />
   This media type is framed binary data (see RFC 4288, Section 4.8)
   and is defined for transfer of EVRC-encoded data via 
   RTP, using the compact bundled format as described in RFC 4788. </t>

   <t hangText="Security considerations:"> See <xref target=
   "secu-sect"/> of RFC 4788.</t> 

   <t hangText="Interoperability considerations:"> none </t> 

   <t hangText="Published specification:"> 
   <vspace blankLines="0" />
   The EVRC vocoder is specified in 3GPP2 C.S0014 <xref
   target="3GPP2-EVRC" />.  Transfer method with compact bundled RTP
   format is specified in RFC 4788.</t>

   <t hangText="Applications that use this media type:"> 
   <vspace blankLines="0" />
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type. </t>

   <t hangText="Additional information:"> none </t>

   <t hangText="Person & email address to contact for further information:"> 
   <vspace blankLines="0" />
   Qiaobing Xie &lt;Qiaobing.Xie@motorola.com> </t>

   <t hangText="Intended usage:"> COMMON </t>

   <t hangText="Restrictions on usage:">
   <vspace blankLines="0" />
   This media type depends on RTP framing; hence, it is only defined
   for transfer via RTP (RFC 3550 <xref target="RFC3550"/>).  Transfer
   within other framing protocols is not defined at this time.  </t>

   <t hangText="Author:"> 
   <vspace blankLines="0" />
   Qiaobing Xie </t>

   <t hangText="Change controller:"> 
   <vspace blankLines="0" />
   IETF Audio/Video Transport working group delegated from the IESG. </t>
</list>
</t>

</section> <!--title="EVRC1"-->

<section title="Registration of Media Type EVRCB">

<t>
<list style="hanging">
   <t hangText="Type name:"> audio </t>

   <t hangText="Subtype names:"> EVRCB </t>

   <t hangText="Required parameters:"> none </t>

   <t hangText="Optional parameters:"></t>

   <list style="hanging">

   <t hangText="ptime:"> see RFC 4566 <xref target="RFC4566" />. </t>

   <t hangText="maxptime:"> The maximum amount of media that can be
   encapsulated in each packet, expressed as time in milliseconds.
   The time MUST be calculated as the sum of the time the media
   present in the packet represents.  The time SHOULD be a multiple of
   the duration of a single codec data frame (20 msec).  If not
   signaled, the default maxptime value MUST be 200 milliseconds.
   </t>

   <t hangText="maxinterleave:"> Maximum number for interleaving
   length (field LLL in the Interleaving Octet).  The interleaving
   lengths used in the entire session MUST NOT exceed this maximum
   value.  If not signaled, the maxinterleave length MUST be 5.
   </t>

   <t hangText="silencesupp:"> see <xref target= "sec-evrc1" /> for
   definition. If this parameter is not present, the default value 1
   MUST be assumed. </t>

   <t hangText="dtxmax:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="dtxmin:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="hangover:"> see <xref target= "sec-evrc1" /> </t>

   </list>

   <t hangText="Encoding considerations:"> 
   <vspace blankLines="0" />
   This media type is framed binary data (see RFC 4288, Section 4.8)
   and is defined for transfer of EVRC-B-encoded data via
   RTP using the Interleaved/Bundled packet format specified in RFC
   3558 <xref target="RFC3558" />. </t>

   <t hangText="Security considerations:"> See <xref target="secu-sect"/>
   of RFC 4788.</t> 

   <t hangText="Interoperability considerations:"> none </t> 

   <t hangText="Published specification:"> 
   <vspace blankLines="0" />
   The EVRC-B vocoder is specified in 3GPP2 C.S0014-B <xref
   target="3GPP2-EVRCB" />. Transfer method with Interleaved/Bundled
   packet format via RTP is specified in RFC 3558. </t>

   <t hangText="Applications that use this media type:">
   <vspace blankLines="0" />
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type. </t>

   <t hangText="Additional information:">
   <vspace blankLines="0" />
   The following information applies for storage format only.
   <vspace blankLines="1" />
   Magic number: #!EVRC-B\n (see <xref target="storage-sect" /> of RFC 4788)
   <vspace blankLines="0" />
   File extensions: evb, EVB
   <vspace blankLines="0" />
   Macintosh file type code: None
   <vspace blankLines="0" />
   Object identifier or OID: None
   </t>

   <t hangText="Person & email address to contact for further information:">
   <vspace blankLines="0" />
   Qiaobing Xie &lt;Qiaobing.Xie@motorola.com> </t>

   <t hangText="Intended usage:"> COMMON </t>

   <t hangText="Restrictions on usage:">
   <vspace blankLines="0" />
   This media type may be used with RTP framing (RFC 3550 <xref
   target="RFC3550"/>) and as a storage format. When used with RTP,
   the procedures in <xref target="evrcb-sect"/> MUST be followed.  In
   all other contexts, the storage format defined in <xref
   target="storage-sect"/> MUST be used. </t>

   <t hangText="Author:">
   <vspace blankLines="0" />
   Qiaobing Xie </t>

   <t hangText="Change controller:">
   <vspace blankLines="0" />
   IETF Audio/Video Transport working group delegated from the IESG. </t>
</list>
</t>

</section> <!--title="EVRCB"-->

<section title="Registration of Media Type EVRCB0">

<t>
<list style="hanging">
   <t hangText="Type name:"> audio </t>

   <t hangText="Subtype names:"> EVRCB0 </t>

   <t hangText="Required parameters:"> none </t>

   <t hangText="Optional parameters:"></t>

   <list style="hanging">

   <t hangText="silencesupp:"> see <xref target= "sec-evrc1" /> for
   definition. If this parameter is not present, the default value 1
   MUST be assumed. </t>

   <t hangText="dtxmax:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="dtxmin:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="hangover:"> see <xref target= "sec-evrc1" /> </t>

   </list>

   <t hangText="Encoding considerations:">
   <vspace blankLines="0" />
   This media type is framed binary data (see RFC 4288, Section 4.8)
   and is defined for transfer of EVRC-B-encoded data via
   RTP using the Header-Free packet format specified in RFC 3558 <xref
   target="RFC3558" />. </t>

   <t hangText="Security considerations:"> See <xref target="secu-sect"/>
   of RFC 4788.</t> 

   <t hangText="Interoperability considerations:"> none </t> 

   <t hangText="Published specification:">
   <vspace blankLines="0" />
   The EVRC-B vocoder is specified in 3GPP2 C.S0014-B <xref
   target="3GPP2-EVRCB" />. Transfer method with Header-Free packet
   format via RTP is specified in RFC 3558 and RFC 4788. </t>

   <t hangText="Applications that use this media type:">
   <vspace blankLines="0" />
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type. </t>

   <t hangText="Additional information:"> none </t>

   <t hangText="Person & email address to contact for further information:"> 
   <vspace blankLines="0" />
   Qiaobing Xie &lt;Qiaobing.Xie@motorola.com> </t>

   <t hangText="Intended usage:"> COMMON </t>

   <t hangText="Restrictions on usage:">
   <vspace blankLines="0" />
   This media type depends on RTP framing; hence, it is only defined
   for transfer via RTP (RFC 3550 <xref target="RFC3550"/>).  Transfer
   within other framing protocols is not defined at this time.  </t>

   <t hangText="Author:"> 
   <vspace blankLines="0" />
   Qiaobing Xie </t>

   <t hangText="Change controller:"> 
   <vspace blankLines="0" />
   IETF Audio/Video Transport working group delegated from the IESG.</t>
</list>
</t>

</section> <!--title="EVRCB0"-->


<section anchor="sec-evrcb1" title="Registration of Media Type EVRCB1">

<t>
<list style="hanging">
   <t hangText="Type name:"> audio </t>

   <t hangText="Subtype names:"> EVRCB1</t>

   <t hangText="Required parameters:"> none </t>

   <t hangText="Optional parameters:"></t>

   <list style="hanging">

   <t hangText="ptime:"> see RFC 4566 <xref target="RFC4566" />. </t>

   <t hangText="maxptime:"> The maximum amount of media that can be
   encapsulated in each packet, expressed as time in milliseconds.
   The time MUST be calculated as the sum of the time the media
   present in the packet represents.  The time SHOULD be a multiple of
   the duration of a single codec data frame (20 msec).  If not
   signaled, the default maxptime value MUST be 200 milliseconds.
   </t>

   <t hangText="fixedrate:"> Indicates the EVRC-B rate of the
   session while in single-rate operation.  Valid values include: 0.5
   and 1, where a value of 0.5 indicates the 1/2 rate while a value of
   1 indicates the full rate.  If this parameter is not present, 1/2
   rate is assumed. </t>

   <t hangText="silencesupp:"> see <xref target= "sec-evrc1" /> for
   definition. If this parameter is not present, the default value 1
   MUST be assumed. </t>

   <t hangText="dtxmax:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="dtxmin:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="hangover:"> see <xref target= "sec-evrc1" /> </t>

   </list>

   <t hangText="Encoding considerations:"> 
   <vspace blankLines="0" />
   This media type is framed binary data (see RFC 4288, Section 4.8)
   and is defined for transfer of EVRC-B-encoded data via RTP
   using the compact bundled format as described in RFC 4788. </t>

   <t hangText="Security considerations:"> See <xref target="secu-sect"/>
   of RFC 4788.</t> 

   <t hangText="Interoperability considerations:"> none. </t> 

   <t hangText="Published specification:"> 
   <vspace blankLines="0" />
   The EVRC-B vocoder is specified in 3GPP2 C.S0014-B <xref
   target="3GPP2-EVRCB" />. Transfer method with compact bundled RTP
   format is specified in RFC 4788.</t>

   <t hangText="Applications that use this media type:"> 
   <vspace blankLines="0" />
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type. </t>

   <t hangText="Additional information:"> none </t>

   <t hangText="Person & email address to contact for further information:"> 
   <vspace blankLines="0" />
   Qiaobing Xie &lt;Qiaobing.Xie@motorola.com> </t>

   <t hangText="Intended usage:"> COMMON </t>

   <t hangText="Restrictions on usage:">
   <vspace blankLines="0" />
   This media type depends on RTP framing; hence, it is only defined
   for transfer via RTP (RFC 3550 <xref target="RFC3550"/>).  Transfer
   within other framing protocols is not defined at this time.  </t>

   <t hangText="Author:"> 
   <vspace blankLines="0" />
   Qiaobing Xie </t>

   <t hangText="Change controller:"> 
   <vspace blankLines="0" />
   IETF Audio/Video Transport working group delegated from the IESG. </t>
</list>
</t>

</section> <!--title="EVRCB1"-->


<section anchor="sec-evrc" title="Updated Registration of Media Type EVRC">

<t> (The definition is from RFC 3558, added with the
optional DTX parameters, and updated with the new template specified
in <xref target="I-D.ietf-avt-rfc3555bis"/>.)

<list style="hanging">
   <t hangText="Type name:"> audio </t>

   <t hangText="Subtype names:"> EVRC </t>

   <t hangText="Required parameters:"> none </t>

   <t hangText="Optional parameters:"></t>

   <list style="hanging">

   <t hangText="ptime:"> Defined as usual for RTP audio (see RFC 4566). </t>

   <t hangText="maxptime:"> The maximum amount of media that can be
   encapsulated in each packet, expressed as time in milliseconds.
   The time SHALL be calculated as the sum of the time the media
   present in the packet represents.  The time SHOULD be a multiple of
   the duration of a single codec data frame (20 msec).  If not
   signaled, the default maxptime value SHALL be 200 milliseconds.
   </t>

   <t hangText="maxinterleave:"> Maximum number for interleaving
   length (field LLL in the Interleaving Octet).  The interleaving
   lengths used in the entire session MUST NOT exceed this maximum
   value.  If not signaled, the maxinterleave length SHALL be 5.  </t>

   <t hangText="silencesupp:"> see <xref target= "sec-evrc1" /> for
   definition. If this parameter is not present, the default value 1
   MUST be assumed. </t>

   <t hangText="dtxmax:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="dtxmin:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="hangover:"> see <xref target= "sec-evrc1" /> </t>
   </list>

   <t hangText="Encoding considerations:"> 
   <vspace blankLines="0" />
   This media type is framed binary data (see RFC 4288, Section 4.8),
   and is defined for transfer of EVRC-encoded data via RTP using the
   Interleaved/Bundled packet format specified in Sections 4.1, 6, and
   7 of RFC 3558.  It is also defined for other transfer methods using
   the storage format specified in Section 11 of RFC 3558.  </t>

   <t hangText="Security considerations:"> 
   See Section 14, "Security Considerations", of RFC 3558.
   </t> 

   <t hangText="Interoperability considerations:">
   <vspace blankLines="0" />
   The DTX parameters are receiver options. Existing RFC 3558
   implementations will not send any of the DTX parameters in their
   SDP and will ignore any DTX parameters they receive.  The adaptive
   DTX behavior of DTX-capable EVRC codecs (as detailed in <xref
   target= "3GPP2-DTX" />, Section 4.3.5) ensures interoperability
   with non-DTX EVRC codecs.  </t>

   <t hangText="Published specification:"> 
   <vspace blankLines="0" />
   The EVRC vocoder is
   specified in 3GPP2 C.S0014 <xref
   target="3GPP2-EVRC" />.  Transfer methods are specified in RFC
   3558.  </t>

   <t hangText="Applications that use this media type:">
   <vspace blankLines="0" />
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type. </t>

   <t hangText="Additional information:"> 
   <vspace blankLines="0" />
   The following information applies for storage format only. 
   <figure>
      <artwork>
      Magic number: #!EVRC\n (see Section 11 of RFC 3558)
      File extensions: evc, EVC
      Macintosh file type code: none
      Object identifier or OID: none
      </artwork>
   </figure>
   </t>

   <t hangText="Person & email address to contact for further information:">
   <vspace blankLines="0" />
   Qiaobing Xie &lt;Qiaobing.Xie@motorola.com> </t>

   <t hangText="Intended usage:"> COMMON </t>

   <t hangText="Restrictions on usage:">
   <vspace blankLines="0" />
   This media type may be used with RTP framing (RFC 3550 <xref
   target="RFC3550"/>) and as a storage format. When used with RTP,
   the procedures in RFC 3558, Section 4.1, MUST be followed.  In all
   other contexts, the storage format defined in RFC 3558, Section 11,
   MUST be used. </t>

   <t hangText="Author:">
   <vspace blankLines="0" />
   Adam Li/Qiaobing Xie </t>

   <t hangText="Change controller:">
   <vspace blankLines="0" />
   IETF Audio/Video Transport working group delegated from the IESG. </t>
</list>
</t>

</section> <!--title="EVRC"-->


<section anchor="sec-evrc0" title="Updated Registration of Media Type EVRC0">

<t> (The definition is from RFC 3558, added with the
optional DTX parameters, and updated with the new template specified
in <xref target="I-D.ietf-avt-rfc3555bis"/>.)

<list style="hanging">
   <t hangText="Type name:"> audio </t>

   <t hangText="Subtype names:"> EVRC0 </t>

   <t hangText="Required parameters:"> none </t>

   <t hangText="Optional parameters:"></t>

   <list style="hanging">
   <t hangText="silencesupp:"> see <xref target= "sec-evrc1" /> for
   definition. If this parameter is not present, the default value 1
   MUST be assumed. </t>

   <t hangText="dtxmax:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="dtxmin:"> see <xref target= "sec-evrc1" /> </t>

   <t hangText="hangover:"> see <xref target= "sec-evrc1" /> </t>
   </list>

   <t hangText="Encoding considerations:"> 
   <vspace blankLines="0" />
   This media type is framed binary data (see RFC 4288, Section 4.8)
   and is only defined for transfer of EVRC-encoded data via RTP
   using the Header-Free packet format specified in Section 4.2 of RFC
   3558.  </t>

   <t hangText="Security considerations:"> 
   See Section 14, "Security Considerations", of RFC 3558. </t> 

   <t hangText="Interoperability considerations:"> 
   <vspace blankLines="0" />
   The DTX parameters are receiver options. Existing RFC 3558
   implementations will not send any of the DTX parameters in their
   SDP and will ignore any DTX parameters they receive.  The adaptive
   DTX behavior of DTX-capable EVRC codecs (as detailed in <xref
   target= "3GPP2-DTX" />, Section 4.3.5) ensures interoperability
   with non-DTX EVRC codecs.  </t>

   <t hangText="Published specification:"> 
   <vspace blankLines="0" />
   The EVRC vocoder is specified in 3GPP2 C.S0014 <xref
   target="3GPP2-EVRC" />.  Transfer methods
   are specified in RFC 3558. </t>

   <t hangText="Applications that use this media type:">
   <vspace blankLines="0" />
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type. </t>

   <t hangText="Additional information:"> none </t>

   <t hangText="Person & email address to contact for further information:">
   <vspace blankLines="0" />
   Qiaobing Xie &lt;Qiaobing.Xie@motorola.com> </t>

   <t hangText="Intended usage:"> COMMON </t>

   <t hangText="Restrictions on usage:">
   <vspace blankLines="0" />
   This media type depends on RTP framing; hence, it is only defined
   for transfer via RTP (RFC 3550 <xref target="RFC3550"/>).  Transfer
   within other framing protocols is not defined at this time.  </t>

   <t hangText="Author:">
   <vspace blankLines="0" />
   Adam Li/Qiaobing Xie </t>

   <t hangText="Change controller:">
   <vspace blankLines="0" />
   IETF Audio/Video Transport working group delegated from the IESG. </t>
</list>
</t>

</section> <!--title="EVRC0"-->


<section anchor="map-sec" title="Mapping MIME Parameters into SDP">

<t> The information carried in the MIME media type specification has a
specific mapping to fields in the Session Description Protocol (SDP)
<xref target="RFC4566" />, which is commonly used to describe RTP
sessions. When SDP is used to specify sessions employing the compact
bundled format for EVRC/EVRC-B-encoded speech, the mapping is as
follows: 

  <list style="symbols">
  <t> The MIME type ("audio") goes in SDP "m=" as the media name. </t>

  <t> The MIME subtype ("EVRC", "EVRC0", "EVRC1", "EVRCB", EVRCB0", or
  "EVRCB1") goes in SDP "a=rtpmap" as the encoding name. </t>

  <t> The optional parameters "ptime" and "maxptime" (for subtypes
  EVRC, EVRC1, EVRCB, and EVRCB1) go in the SDP "a=ptime" and
  "a=maxptime" attributes, respectively.</t>

  <t> The optional parameter "maxinterleave" (for subtypes EVRC and
  EVRCB) goes in the SDP "a=fmtp" attribute by copying it directly
  from the MIME media type string as "maxinterleave=value".  </t>

  <t> The optional parameter "fixedrate" (for subtypes EVRC1 and
  EVRCB1) goes in the "a=fmtp" attribute by copying it directly from the
  MIME media type string as "fixedrate=value".</t>

  <t> The optional parameters "silencesupp", "dtxmax", "dtxmin", and
  "hangover" go in the "a=fmtp" attribute by copying it directly from the
  MIME media type string as "silencesupp=value", "dtxmax=value",
  "dtxmin=value", and "hangover=value", respectively. </t>

  </list>
</t>

<t> Example of usage of EVRC1:
   <figure>
      <artwork>
  m=audio 49120 RTP/AVP 97
  a=rtpmap:97 EVRC1/8000
  a=fmtp:97 fixedrate=0.5
  a=maxptime:120
      </artwork>
   </figure>
</t>

<t> Example of usage of EVRCB:
   <figure>
      <artwork>
  m=audio 49120 RTP/AVP 97
  a=rtpmap:97 EVRCB/8000
  a=maxptime:120
      </artwork>
   </figure>
</t>

<?rfc needLines="10" ?>

<t> Example of usage of EVRCB0:
   <figure>
      <artwork>
  m=audio 49120 RTP/AVP 97
  a=rtpmap:97 EVRCB0/8000
      </artwork>
   </figure>
</t>

<t> Example of usage of EVRCB1:
   <figure>
      <artwork>
  m=audio 49120 RTP/AVP 97
  a=rtpmap:97 EVRCB1/8000
  a=fmtp:97 fixedrate=0.5
  a=maxptime:100
      </artwork>
   </figure>
</t>

<t> Example of usage of EVRC with DTX with silencesupp=1:
   <figure>
      <artwork>
  m=audio 49120 RTP/AVP 97
  a=rtpmap:97 EVRC/8000
  a=fmtp:97 silencesupp=1 dtxmax=32 dtxmin=12 hangover=1
      </artwork>
   </figure>
</t>


<t> Example of usage of EVRC with DTX with silencesupp=0:
   <figure>
      <artwork>
  m=audio 49120 RTP/AVP 97
  a=rtpmap:97 EVRC/8000
  a=fmtp:97 silencesupp=0
      </artwork>
   </figure>
</t>

</section> <!--title="Mapping MIME Parameters into SDP"-->

<section title="Usage in Offer/Answer">

<t> All SDP parameters in this payload format are declarative, and all
reasonable values are expected to be supported. In particular, when
DTX is supported, the RTP sender implementation SHOULD support
hangover, dtxmin, and dtxmax values from 0 to 255.  Thus, the standard
usage of Offer/Answer, as described in RFC 3264 <xref
target="RFC3264"/>, SHOULD be followed. </t>

<t> In addition, the following rules MUST be followed while
negotiating DTX parameters: </t>

  <list style="numbers">

    <t> If any DTX parameter is not present in either offer and/or
    answer, the default value of the DTX parameter MUST be assumed.
    </t>

    <t> If silencesupp is present and set to 0 in either offer or
    answer, the values of all received DTX parameters other than
    silencesupp SHOULD be ignored. </t>

    <t> In an offer or answer, the value of dtxmax SHOULD always be
    larger than or equal to the value of dtxmin, regardless of whether
    the values are indicated explicitly or implicitly by
    default. Moreover, if the indicated value of dtxmin is larger 

<?rfc needLines="3" ?>

than
    that of dtxmax, an RTP sender MUST ignore the indicated values
    and MUST fall back on using the default dtxmin and dtxmax
    values. </t>

  </list>

</section> <!--title="Usage in Offer/Answer"-->

</section> <!--title="DSR MIME Type Registration"-->


<section title="Backward Compatibility with RFC 3558">

   <t> This document adds new optional DTX parameters to the original
   EVRC payload subtypes "EVRC" and "EVRC0" defined in RFC 3558. Since
   the new DTX parameters are receiver options, we expect that the existing
   RFC 3558 implementations will not send any of the DTX parameters in
   their SDP and will ignore any DTX parameters they receive.  The
   adaptive DTX behavior of DTX-capable EVRC codecs (as detailed in
   <xref target= "3GPP2-DTX" />, Section 4.3.5) ensures the backward
   interoperability between the DTX-capable EVRC codec and non-DTX
   EVRC codecs.  </t>

</section> <!--title="Backward Compatibility with RFC 3558"-->


<section title="IANA Considerations">

<t> Four (4) new MIME subtype registrations - "EVRC1", "EVRCB",
"EVRCB0", and "EVRCB1" - are defined in this document 
(see <xref target= "sec-evrc1" /> - <xref target= "sec-evrcb1" />) 
for EVRC-B and compact bundled payload format support. </t>

<t> For all the EVRC and EVRC-B RTP payload formats defined in RFC
3558 <xref target="RFC3558" /> and RFC 4788, four additional optional
parameters - "silencesupp", "dtxmax", "dtxmin", and "hangover" - are
defined and used in DTX.</t>

<t> The MIME subtype registrations "EVRC" and "EVRC0", originally
defined in RFC 3558 <xref target="RFC3558" />, are updated with the
optional DTX parameters 
(see Sections <xref target= "sec-evrc" format="counter" /> and <xref
target= "sec-evrc0" format="counter" />). </t>

</section> <!--title="IANA Considerations"-->

<section anchor="secu-sect" title="Security Considerations">

<t> 
Implementations using the payload defined in this specification are
subject to the security considerations discussed in RFC 3558 <xref
target="RFC3558"/>, RFC 3550 <xref target="RFC3550"/>, and any
appropriate profile (for example, RFC 3551 <xref target="RFC3551"/>).
This payload does not specify any different security services.
</t>

</section> <!--title="Security Considerations"-->

<section title="Acknowledgements">

<t>The following people have made significant contributions to this
document (in alphabetical order): 
Parag Agashe, 
Jim Ashley, 
Harikishan Desineni, 
Serafin Diaz, 
Harinath Garudadri, 
Gouri Johanssen, 
Ananth Kandhadai, 
Waqar Mohsin,
Ashok Roy, 
Gino Scribano, 
and
Gajinder Singh Vij.</t>

<t>Special thanks to Colin Perkins, Magnus Westerlund, and Adam Li for
their careful review and comments that significantly improved the
quality of this document.</t>

</section> <!--title="Acknowledgements"-->


    </middle>


    <back>

<references title="Normative References">

<!--
    <reference anchor='RFC2026'>
    <front>
      <title>The Internet Standards Process -- Revision 3</title>
      <author initials='S.' surname='Bradner'></author>
      <date month='October' year='1996'></date>
    </front>
    <seriesInfo name='BCP' value='9' />
    <seriesInfo name='RFC' value='2026' />
    </reference>
-->
    <reference anchor='RFC2119'>
    <front>
      <title>Key words for use in RFCs to Indicate Requirement
      Levels</title>
      <author initials='S.' surname='Bradner'></author>
      <date month='March' year='1997'></date>
    </front>
    <seriesInfo name='BCP' value='14' />
    <seriesInfo name='RFC' value='2119' />
    </reference>

    <reference anchor='3GPP2-EVRC'>
    <front>
      <title>Enhanced Variable Rate Codec, Speech Service
        Option 3 for Wideband Spread Spectrum Digital Systems
      </title>
      <date month='January' year='1997'></date>
    </front>
    <seriesInfo name='3GPP2' value='C.S0014' />
    </reference>

    <reference anchor='3GPP2-EVRCB'>
    <front>
      <title>
	Enhanced Variable Rate Codec, Speech Service Option 3 and 68
        for Wideband Spread Spectrum Digital Systems
      </title>
      <date month='May' year='2006'></date>
    </front>
    <seriesInfo name='3GPP2' value='C.S0014-B v1.0' />
    </reference>

    <reference anchor='RFC3558'>
    <front>
      <title>RTP Payload Format for Enhanced Variable Rate Codecs
	(EVRC) and Selectable Mode Vocoders (SMV)
      </title>
      <author initials='A.' surname='Li'></author>
      <date month='July' year='2003'></date>
    </front>
    <seriesInfo name='RFC' value='3558' />
    </reference>

    <reference anchor='RFC3550'>
    <front>
      <title>RTP: A Transport Protocol for Real-Time
      Applications</title>
      <author initials='H.' surname='Schulzrinne'></author>
      <author initials='S.' surname='Casner'></author>
      <author initials='R.' surname='Frederick'></author>
      <author initials='V.' surname='Jacobson'></author>
      <date month='July' year='2003' />
    </front>
    <seriesInfo name='RFC' value='3550' />
    </reference>

    <reference anchor='RFC3264'>
    <front>
      <title>An Offer/Answer Model with the Session Description
	Protocol (SDP)</title> 
      <author initials='J.' surname='Rosenberg'></author>
      <author initials='H.' surname='Schulzrinne'></author>
      <date month='June' year='2002' />
    </front>
    <seriesInfo name='RFC' value='3264' />
    </reference>

   <reference anchor='RFC4566'>
    <front>
      <title>SDP: Session Description Protocol</title>
      <author initials='M.' surname='Handley'></author>
      <author initials='V.' surname='Jacobson'></author>
      <author initials='C.' surname='Perkins'></author>
      <date month='July' year='2006' />
    </front>
    <seriesInfo name='RFC' value='4566' />
    </reference>

    <reference anchor='3GPP2-DTX'>
    <front>
      <title>
	Discontinuous Transmission (DTX) of Speech in cdma2000 Systems
      </title>
      <date month='December' year='2005' />
    </front>
    <seriesInfo name='3GPP2' value='C.S0076-0, Version 1.0'/>
    </reference>

</references>


 <references title="Informative References">

    <reference anchor='RFC3551'>
    <front>
      <title>RTP Profile for Audio and Video Conferences with Minimal
      Control</title>
      <author initials='H.' surname='Schulzrinne'></author>
      <author initials='S.' surname='Casner'></author>
      <date month='July' year='2003' />
    </front>
    <seriesInfo name="RFC" value="3551" /> 
    </reference>
 
    <reference anchor="I-D.ietf-avt-rfc3555bis">
    <front>
      <title>Media Type Registration of RTP Payload Formats</title>
      <author initials="S" surname="Casner" fullname="Stephen L. Casner"> 
      <organization /></author>
      <date month="March" year="2006" />
    </front>
    <seriesInfo name="Work in"
    value="Progress" />
    </reference>

</references>

    </back>

</rfc>
