RFC 4788

Enhancements to RTP Payload Formats for EVRC Family Codecs

๐Ÿ“… published January 2007, from ietf

RFC 4788 ๐Ÿ’– Enhancements to RTP Payload Formats for EVRC Family Codecs ๐ŸŽ€

Okay so the header block tells us the important stuff: this is a Standards Track doc from January 2007 ๐Ÿ“…, written by Q. Xie (Motorola) and R. Kapoor (Qualcomm) ๐Ÿ‘‘. It updates RFC 3558 ๐Ÿฆ‹, which means it builds on that earlier spec. There's no Obsoletes line, so it doesn't replace anything.

Status of This Memo โœจ

Bestie, this doc is an Internet standards track protocol for the Internet community ๐ŸŒ. It's asking for discussion and suggestions for improvements ๐Ÿ’ฌ. If you want to know where this protocol stands on the standardization ladder, check the current edition of "Internet Official Protocol Standards" (STD 1) ๐Ÿ“š. And distribution of this memo is unlimited, so share away ๐Ÿ’….

Copyright (C) The IETF Trust (2007).

Abstract ๐Ÿฆ‹

So this doc updates the EVRC RTP payload formats from RFC 3558 ๐ŸŽ€, the Enhanced Variable Rate Codec ones. It adds a bunch of upgrades ๐Ÿ”ฅ: support for the header-free and interleaved/bundled packet formats for the EVRC-B codec, a brand-new compact bundled format for EVRC and EVRC-B, and discontinuous transmission (DTX) support for EVRC and EVRC-B speech sent over RTP. Why does this matter? VoIP apps running over low-bandwidth dial-up and wireless networks need this stuff to use their bandwidth well ๐Ÿฅน๐Ÿ“ถ.

Table of Contents ๐ŸŒธ

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  3
     1.1.  Support of EVRC-B Codec  . . . . . . . . . . . . . . . . .  3
     1.2.  Compact (Header-free) Bundled Format . . . . . . . . . . .  3
     1.3.  Discontinuous Transmission (DTX) . . . . . . . . . . . . .  4
   2.  Conventions  . . . . . . . . . . . . . . . . . . . . . . . . .  5
   3.  EVRC-B Codec . . . . . . . . . . . . . . . . . . . . . . . . .  5
   4.  Compact Bundled Format . . . . . . . . . . . . . . . . . . . .  5
     4.1.  Single-Rate Operation  . . . . . . . . . . . . . . . . . .  5
   5.  Storage Format for EVRC-B Codec  . . . . . . . . . . . . . . .  6
   6.  Media Type Definitions . . . . . . . . . . . . . . . . . . . .  6
     6.1.  Registration of Media Type EVRC1 . . . . . . . . . . . . .  6
     6.2.  Registration of Media Type EVRCB . . . . . . . . . . . . .  9
     6.3.  Registration of Media Type EVRCB0  . . . . . . . . . . . . 11
     6.4.  Registration of Media Type EVRCB1  . . . . . . . . . . . . 12
     6.5.  Updated Registration of Media Type EVRC  . . . . . . . . . 13
     6.6.  Updated Registration of Media Type EVRC0 . . . . . . . . . 15
     6.7.  Mapping MIME Parameters into SDP . . . . . . . . . . . . . 17
     6.8.  Usage in Offer/Answer  . . . . . . . . . . . . . . . . . . 18
   7.  Backward Compatibility with RFC 3558 . . . . . . . . . . . . . 19
   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 19
   9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 19
   10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 19
   11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 20
     11.1. Normative References . . . . . . . . . . . . . . . . . . . 20
     11.2. Informative References . . . . . . . . . . . . . . . . . . 20

1. Introduction ๐ŸŒˆ

Okay so this section sets the scene ๐ŸŽฌ. The doc 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 โœจ, and DTX support for EVRC and EVRC-B speech sent via RTP. VoIP apps on low-bandwidth dial-up and wireless networks need these EVRC RTP payload capabilities to use bandwidth efficiently ๐Ÿซถ.

1.1. Support of EVRC-B Codec

It's giving lore, so let's go ๐Ÿ“œ. EVRC-B [3] is an extension to EVRC [2], developed in the Third Generation Partnership Project 2 (3GPP2) ๐Ÿ›ฐ๏ธ. It compresses every 20 milliseconds of 8000Hz, 16-bit sampled speech input into output frames of one of four sizes: Rate 1 (171 bits), Rate 1/2 (80 bits), Rate 1/4 (40 bits), or Rate 1/8 (16 bits) ๐Ÿ”ข. On top of that there are two zero-bit codec frame types, null frames and erasure frames, similar to EVRC [2] ๐Ÿซฅ.

The big glow-up in EVRC-B is the use of 1/4-rate frames, which EVRC never used ๐Ÿ’…. That gives lower average data rates (ADRs) than EVRC for a given voice quality ๐Ÿ“‰โœจ.

Now the tea โ˜•: speech frames encoded by EVRC-B are different from the ones encoded by EVRC, so EVRC-B and EVRC codecs do not interoperate with each other ๐Ÿ™…โ€โ™€๏ธ. When an RTP session starts, the sender and receiver need to say (for example, with MIME subtypes that are separate from EVRC's) that EVRC-B is the codec for that session ๐Ÿ“ฃ.

1.2. Compact (Header-free) Bundled Format

Let's talk packets ๐Ÿ“ฆ. The current interleaved/bundled packet format in RFC 3558 lets you bundle several speech frames of different rates into one RTP packet ๐ŸŽ, send mode change requests, and interleave ๐Ÿ”€. To make that work, each RTP packet carries a Table of Contents (ToC) on top of the standard RTP header ๐Ÿ“‘. The ToC's size depends on how many EVRC frames are in the packet [4] ๐Ÿ“.

The header-free packet format in RFC 3558 is more compact and optimized for wireless links ๐Ÿ“ก. It gets rid of the ToC by requiring each RTP packet to hold only one speech frame (of any allowable rate), so bundling is not allowed ๐Ÿšซ. Interleaving and mode change requests aren't supported in header-free format either [4] ๐Ÿ™ƒ.

Enter the compact bundled format ๐Ÿฆ‹. It gives users an alternative to the header-free format from RFC 3558 โœจ. It lets you bundle several EVRC or EVRC-B frames without adding the extra headers that the interleaved/bundled format would need ๐Ÿ“ฆ. The catch: to use this compact bundled format, only one EVRC/EVRC-B rate (full rate or 1/2 rate) can be used in the session ๐ŸŽฏ. Just like the header-free format in RFC 3558, interleaving and mode change requests are not supported in the compact bundled format ๐Ÿ™ˆ.

1.3. Discontinuous Transmission (DTX)

Okay, DTX is the quiet-time hero ๐Ÿคซ. Frames carried by EVRC and EVRC-B vary very little during silence ๐Ÿ˜ด. Sending those frames over a wireless radio interface eats up capacity ๐Ÿ’ธ, so suppressing them is desirable ๐Ÿ™Œ. That's what DTX (also called silence suppression) does ๐Ÿ”‡.

Here's how it usually goes ๐ŸŽž๏ธ. When silence starts, the first few silence frames may be sent to establish background noise ๐ŸŽ™๏ธ. After that, a chunk of the following silence frames isn't sent and gets discarded at the sender ๐Ÿ—‘๏ธ. On the receiving end, background or comfort noise can be generated using the silence frames received earlier ๐ŸŽถ.

The full DTX/silence suppression details live in DTX [8], RFC 3551 [9], and RFC 3558 [4] ๐Ÿ“š. This doc only defines the extra optional MIME parameters (silencesupp, dtxmax, dtxmin, and hangover) for setting up a DTX/silence suppression session ๐Ÿ› ๏ธ. Here's the cast ๐ŸŽญ:

  • silencesupp shows the capability and willingness to use DTX/silence suppression ๐Ÿค.
  • dtxmax and dtxmin give the desired range of DTX update interval ๐Ÿ“.
  • hangover gives the desired number of silence frames at the start of each silence period to establish background noise at the receiver ๐ŸŽง (see Section 6.1 for the detailed definition).

Now the mode bit ๐Ÿ”€. EVRC and EVRC-B, in variable-rate operation mode, send 1/8-rate frames during silence, while in single-rate operation mode (see Section 4), silence is encoded and sent in frames of the same rate as speech frames ๐ŸŒ—. The DTX parameters in this doc apply to 1/8-rate frames in variable-rate mode and to silence frames in single-rate operation mode ๐Ÿ’ซ.

To keep things simple for the rest of the doc, "silence frame" means either a 1/8-rate frame in variable-rate operation, or a frame that contains only silence in the signal-rate operation ๐Ÿค.

2. Conventions ๐Ÿ“

Okay this part is the rulebook ๐Ÿ“–. 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 [1] ๐Ÿ”‘. Read them like a contract, not a vibe ๐Ÿ’ผ.

3. EVRC-B Codec ๐Ÿ’œ

Three RTP packet formats are supported for EVRC-B: interleaved/bundled, header-free, and compact bundled ๐ŸŽ€. For the interleaved/bundled and header-free formats, the operational details and capabilities (ToC, interleaving, and bundling) of EVRC-B are exactly the same as EVRC's, as defined in RFC 3558 [4] ๐Ÿ‘ฏ. The one difference: the mode change request field in the ToC MUST be interpreted according to the definition of the RATE_REDUC parameter in EVRC-B [3] โš ๏ธ. The compact bundled packet format for EVRC-B is defined in Section 4 of this document ๐Ÿฆ‹.

4. Compact Bundled Format ๐ŸŽ

A packet in the compact bundled format is an RTP header, followed by one or more consecutive EVRC/EVRC-B codec data frames of the same rate ๐Ÿ“ฆ. It looks like this ๐Ÿ‘€:

    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        |
   |                             ....                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Here's the rule ๐Ÿšจ: the codec data frames MUST be generated from the codec output following the procedure in Section 5.2 of RFC 3558 [4], and all of them MUST be the same rate and size ๐Ÿ’ฏ.

4.1. Single-Rate Operation ๐ŸŒ—

As mentioned earlier, 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 can only carry full-rate or half-rate frames ๐ŸŽฏ.

For a session using the compact bundled format, the session rate can be figured out during setup signaling, for example through Session Description Protocol (SDP) exchanges ๐Ÿ“จ. See Section 6 below for more details ๐Ÿ‘€โœจ.

5. Storage Format for EVRC-B Codec ๐Ÿ“ผโœจ

okay so this section is all about storing EVRC-B-encoded speech frames ๐ŸŽ€ like, saving them as a file or sending them as an e-mail attachment. literally a whole vibe ๐Ÿ’…

The file starts with a magic number so you can tell which vocoder made it ๐Ÿ” the magic number for EVRC-B is the ASCII string:

"#!EVRC-B\n"

(or 0x2321 0x4556 0x5243 0x2d42 0x0a in hex ๐Ÿงš)

ngl the \n at the end is the MAIN CHARACTER here ๐Ÿ‘‘ it's part of this magic number AND the "#!EVRC\n" magic number from Section 11 of RFC 3558 ๐ŸŒธ so the \n MUST be included whenever you compare either magic number ๐Ÿซถ otherwise a prefix of the EVRC-B magic number could get mistaken for the EVRC one ๐Ÿ˜ญ yikes, no thanks ๐Ÿ’€

The codec data frames are stored back to back in consecutive order ๐Ÿฆ‹ each one gets a single ToC entry field in front of it, extended to one octet ๐Ÿ“ the ToC field (from Section 5.1 of [4]) 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 ๐Ÿ’–

Speech frames that get lost in transmission, and frames that never arrived, MUST be stored as erasure frames ๐Ÿ™ˆ that's how everything stays in sync with the original media ๐Ÿ”ฅ

6. Media Type Definitions ๐Ÿ’Œ

6.1. Registration of Media Type EVRC1 ๐ŸŽง

Type name:  audio

Subtype names:  EVRC1

Required parameters:  none
Optional parameters:

   ptime:  See RFC 4566 [7].

   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.

   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.

   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.

      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.

      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.

   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.

      If this parameter is not present in a session that uses DTX,
      the default value 32, as specified in [8], MUST be assumed.
      This parameter MUST be ignored if silence suppression using DTX
      is not used for the session.

      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.

   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.

      If this parameter is not present, the default value 12, as
      specified in [8] MUST be assumed.  This parameter MUST be
      ignored if silence suppression using DTX is not used for the
      session.

   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.

      If this parameter is not present for a session that uses DTX,
      the default value 1, as specified in [8] MUST be assumed.  This
      parameter MUST be ignored if silence suppression using DTX is
      not used for the session.

Encoding considerations:
   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.

Security considerations:  See Section 9 of RFC 4788.

Interoperability considerations:  none

Published specification:
   The EVRC vocoder is specified in 3GPP2 C.S0014 [2].  Transfer
   method with compact bundled RTP format is specified in RFC 4788.

Applications that use this media type:
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type.

Additional information:  none

Person & email address to contact for further information:
   Qiaobing Xie <Qiaobing.Xie@motorola.com>

Intended usage:  COMMON

Restrictions on usage:
   This media type depends on RTP framing; hence, it is only defined
   for transfer via RTP (RFC 3550 [5]).  Transfer within other
   framing protocols is not defined at this time.

Author:
   Qiaobing Xie

Change controller:
   IETF Audio/Video Transport working group delegated from the IESG.

6.2. Registration of Media Type EVRCB ๐ŸŽถ

Type name:  audio

Subtype names:  EVRCB

Required parameters:  none

Optional parameters:

   ptime:  see RFC 4566 [7].

   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.

   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.

   silencesupp:  see Section 6.1 for definition.  If this parameter
      is not present, the default value 1 MUST be assumed.

   dtxmax:  see Section 6.1

   dtxmin:  see Section 6.1

   hangover:  see Section 6.1

Encoding considerations:
   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 [4].

Security considerations:  See Section 9 of RFC 4788.

Interoperability considerations:  none

Published specification:
   The EVRC-B vocoder is specified in 3GPP2 C.S0014-B [3].  Transfer
   method with Interleaved/Bundled packet format via RTP is specified
   in RFC 3558.

Applications that use this media type:
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type.

Additional information:
   The following information applies for storage format only.

   Magic number: #!EVRC-B\n (see Section 5 of RFC 4788)
   File extensions: evb, EVB
   Macintosh file type code: None
   Object identifier or OID: None

Person & email address to contact for further information:
   Qiaobing Xie <Qiaobing.Xie@motorola.com>

Intended usage:  COMMON

Restrictions on usage:
   This media type may be used with RTP framing (RFC 3550 [5]) and as
   a storage format.  When used with RTP, the procedures in Section 3
   MUST be followed.  In all other contexts, the storage format
   defined in Section 5 MUST be used.

Author:
   Qiaobing Xie

Change controller:
   IETF Audio/Video Transport working group delegated from the IESG.

6.3. Registration of Media Type EVRCB0 ๐ŸŒˆ

Type name:  audio

Subtype names:  EVRCB0

Required parameters:  none

Optional parameters:

   silencesupp:  see Section 6.1 for definition.  If this parameter
      is not present, the default value 1 MUST be assumed.

   dtxmax:  see Section 6.1

   dtxmin:  see Section 6.1

   hangover:  see Section 6.1

Encoding considerations:
   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 [4].

Security considerations:  See Section 9 of RFC 4788.

Interoperability considerations:  none

Published specification:
   The EVRC-B vocoder is specified in 3GPP2 C.S0014-B [3].  Transfer
   method with Header-Free packet format via RTP is specified in RFC
   3558 and RFC 4788.

Applications that use this media type:
   It is expected that many VoIP applications (as well as mobile
   applications) will use this type.

Additional information:  none

Person & email address to contact for further information:
   Qiaobing Xie <Qiaobing.Xie@motorola.com>

Intended usage:  COMMON

Restrictions on usage:
   This media type depends on RTP framing; hence, it is only defined
   for transfer via RTP (RFC 3550 [5]).  Transfer within other
   framing protocols is not defined at this time.

Author:
   Qiaobing Xie

Change controller:
   IETF Audio/Video Transport working group delegated from the IESG.

6.4. Registration of Media Type EVRCB1 ๐Ÿฆ‹

Okay bestie, this is the EVRCB1 registration ๐ŸŽ€ and it's giving clean, simple audio vibes โœจ

  • Type name: audio
  • Subtype names: EVRCB1
  • Required parameters: none
  • Optional parameters:
    • ptime: see RFC 4566 [7].
    • maxptime: the most media you can fit into one packet, measured in milliseconds ๐Ÿ•. The time MUST be worked out by adding up how much time the media in that packet represents. The time SHOULD be a multiple of one codec data frame (20 msec). If it isn't signaled, the default maxptime value MUST be 200 milliseconds.
    • fixedrate: tells you the EVRC-B rate of the session while it's in single-rate operation ๐Ÿ“. Valid values are 0.5 and 1. A value of 0.5 means 1/2 rate, and a value of 1 means full rate. If this parameter isn't present, 1/2 rate is assumed.
    • silencesupp: see Section 6.1 for the definition. If this parameter isn't present, the default value 1 MUST be assumed.
    • dtxmax: see Section 6.1
    • dtxmin: see Section 6.1
    • hangover: see Section 6.1
  • Encoding considerations: this is framed binary data (see RFC 4288, Section 4.8) ๐Ÿ’œ and it's defined for sending EVRC-B-encoded data over RTP using the compact bundled format from RFC 4788.
  • Security considerations: See Section 9 of RFC 4788.
  • Interoperability considerations: none.
  • Published specification: the EVRC-B vocoder is specified in 3GPP2 C.S0014-B [3]. The transfer method with the compact bundled RTP format is specified in RFC 4788.
  • Applications that use this media type: lots of VoIP apps (and mobile apps too) are expected to use this one ๐Ÿ“ฑ
  • Additional information: none
  • Person & email address to contact for further information: Qiaobing Xie <Qiaobing.Xie@motorola.com>
  • Intended usage: COMMON
  • Restrictions on usage: this media type depends on RTP framing, so it's only defined for transfer via RTP (RFC 3550 [5]). Transfer within other framing protocols isn't defined at this time ๐Ÿ™ˆ
  • Author: Qiaobing Xie
  • Change controller: IETF Audio/Video Transport working group, delegated from the IESG.

6.5. Updated Registration of Media Type EVRC ๐Ÿ’…

Now we're glowing up the original EVRC type! ๐ŸŒธ It came from RFC 3558, got the optional DTX parameters, and got the new template from [10].

  • Type name: audio
  • Subtype names: EVRC
  • Required parameters: none
  • Optional parameters:
    • ptime: defined as usual for RTP audio (see RFC 4566).
    • maxptime: the most media you can fit into one packet, measured in milliseconds. The time SHALL be worked out by adding up how much time the media in that packet represents. The time SHOULD be a multiple of one codec data frame (20 msec). If it isn't signaled, the default maxptime value SHALL be 200 milliseconds.
    • maxinterleave: the maximum interleaving length, which is the field LLL in the Interleaving Octet ๐Ÿ”. The interleaving lengths used in the entire session MUST NOT exceed this maximum value. If it isn't signaled, the maxinterleave length SHALL be 5.
    • silencesupp: see Section 6.1 for the definition. If this parameter isn't present, the default value 1 MUST be assumed.
    • dtxmax: see Section 6.1
    • dtxmin: see Section 6.1
    • hangover: see Section 6.1
  • Encoding considerations: this is framed binary data (see RFC 4288, Section 4.8). It's defined for sending EVRC-encoded data over RTP using the Interleaved/Bundled packet format from Sections 4.1, 6, and 7 of RFC 3558. It's also defined for other transfer methods that use the storage format from Section 11 of RFC 3558 ๐ŸŽ€
  • Security considerations: See Section 14, "Security Considerations", of RFC 3558.
  • Interoperability considerations: the DTX parameters are receiver options ๐Ÿซถ. Existing RFC 3558 implementations won't send any of the DTX parameters in their SDP, and they'll ignore any DTX parameters they get. The adaptive DTX behavior of DTX-capable EVRC codecs (as detailed in [8], Section 4.3.5) keeps things working with non-DTX EVRC codecs. Iconic.
  • Published specification: the EVRC vocoder is specified in 3GPP2 C.S0014 [2]. Transfer methods are specified in RFC 3558.
  • Applications that use this media type: lots of VoIP apps (and mobile apps too) are expected to use this one ๐Ÿ“ฑ
  • Additional information: the following info applies to the storage format only ๐Ÿ’พ
Magic number: #!EVRC\n (see Section 11 of RFC 3558)
File extensions: evc, EVC
Macintosh file type code: none
Object identifier or OID: none
  • Person & email address to contact for further information: Qiaobing Xie <Qiaobing.Xie@motorola.com>
  • Intended usage: COMMON
  • Restrictions on usage: this media type may be used with RTP framing (RFC 3550 [5]) and as a storage format. When it's 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. Rules are rules ๐Ÿงš
  • Author: Adam Li/Qiaobing Xie
  • Change controller: IETF Audio/Video Transport working group, delegated from the IESG.

6.6. Updated Registration of Media Type EVRC0 ๐ŸŒˆ

Same glow-up energy for EVRC0, the header-free sibling ๐Ÿฆ‹ (same origin: RFC 3558, plus the optional DTX parameters, plus the new template from [10]).

  • Type name: audio
  • Subtype names: EVRC0
  • Required parameters: none
  • Optional parameters:
    • silencesupp: see Section 6.1 for the definition. If this parameter isn't present, the default value 1 MUST be assumed.
    • dtxmax: see Section 6.1
    • dtxmin: see Section 6.1
    • hangover: see Section 6.1
  • Encoding considerations: this is framed binary data (see RFC 4288, Section 4.8). It's only defined for sending EVRC-encoded data over RTP using the Header-Free packet format from Section 4.2 of RFC 3558 ๐Ÿ“
  • Security considerations: See Section 14, "Security Considerations", of RFC 3558.
  • Interoperability considerations: the DTX parameters are receiver options. Existing RFC 3558 implementations won't send any of the DTX parameters in their SDP, and they'll ignore any DTX parameters they get. The adaptive DTX behavior of DTX-capable EVRC codecs (as detailed in [8], Section 4.3.5) keeps things working with non-DTX EVRC codecs ๐Ÿ’–
  • Published specification: the EVRC vocoder is specified in 3GPP2 C.S0014 [2]. Transfer methods are specified in RFC 3558.
  • Applications that use this media type: lots of VoIP apps (and mobile apps too) are expected to use this one ๐Ÿ“ฑ
  • Additional information: none
  • Person & email address to contact for further information: Qiaobing Xie <Qiaobing.Xie@motorola.com>
  • Intended usage: COMMON
  • Restrictions on usage: this media type depends on RTP framing, so it's only defined for transfer via RTP (RFC 3550 [5]). Transfer within other framing protocols isn't defined at this time ๐Ÿ™ˆ
  • Author: Adam Li/Qiaobing Xie
  • Change controller: IETF Audio/Video Transport working group, delegated from the IESG.

6.7. Mapping MIME Parameters into SDP ๐Ÿ—บ๏ธ

The info in the MIME media type spec maps onto fields in the Session Description Protocol (SDP) [7] ๐Ÿ“, which is what people usually use to describe RTP sessions. When SDP describes sessions that use the compact bundled format for EVRC/EVRC-B-encoded speech, the mapping goes like this:

  • The MIME type (audio) goes in the SDP m= line as the media name.
  • The MIME subtype ("EVRC", "EVRC0", "EVRC1", "EVRCB", EVRCB0", or "EVRCB1") goes in the SDP a=rtpmap attribute as the encoding name.
  • The optional parameters ptime and maxptime (for the subtypes EVRC, EVRC1, EVRCB, and EVRCB1) go in the SDP a=ptime and a=maxptime attributes, respectively.
  • The optional parameter maxinterleave (for the subtypes EVRC and EVRCB) goes in the SDP a=fmtp attribute, copied straight from the MIME media type string as maxinterleave=value.
  • The optional parameter fixedrate (for the subtypes EVRC1 and EVRCB1) goes in the a=fmtp attribute, copied straight from the MIME media type string as fixedrate=value.
  • The optional parameters silencesupp, dtxmax, dtxmin, and hangover go in the a=fmtp attribute, copied straight from the MIME media type string as silencesupp=value, dtxmax=value, dtxmin=value, and hangover=value, respectively.

Here are the examples, bestie ๐Ÿงš

Example of usage of EVRC1:

m=audio 49120 RTP/AVP 97
a=rtpmap:97 EVRC1/8000
a=fmtp:97 fixedrate=0.5
a=maxptime:120

Example of usage of EVRCB:

m=audio 49120 RTP/AVP 97
a=rtpmap:97 EVRCB/8000
a=maxptime:120

Example of usage of EVRCB0:

m=audio 49120 RTP/AVP 97
a=rtpmap:97 EVRCB0/8000

Example of usage of EVRCB1:

m=audio 49120 RTP/AVP 97
a=rtpmap:97 EVRCB1/8000
a=fmtp:97 fixedrate=0.5
a=maxptime:100

Example of usage of EVRC with DTX with silencesupp=1:

m=audio 49120 RTP/AVP 97
a=rtpmap:97 EVRC/8000
a=fmtp:97 silencesupp=1 dtxmax=32 dtxmin=12 hangover=1

Example of usage of EVRC with DTX with silencesupp=0:

m=audio 49120 RTP/AVP 97
a=rtpmap:97 EVRC/8000
a=fmtp:97 silencesupp=0

6.8. Usage in Offer/Answer ๐Ÿค

All SDP parameters in this payload format are declarative, and all reasonable values are expected to be supported. Specifically, when DTX is supported, the RTP sender implementation SHOULD support hangover, dtxmin, and dtxmax values from 0 to 255. So the standard Offer/Answer usage from RFC 3264 [6] SHOULD be followed too ๐Ÿ’œ

On top of that, the following rules MUST be followed while negotiating DTX parameters:

  1. If any DTX parameter isn't present in the offer and/or the answer, the default value of that DTX parameter MUST be assumed.
  2. If silencesupp is present and set to 0 in either the offer or the answer, the values of all the received DTX parameters other than silencesupp SHOULD be ignored.
  3. In an offer or answer, the value of dtxmax SHOULD always be larger than or equal to the value of dtxmin, whether the values are given explicitly or implicitly by default. Moreover, if the indicated value of dtxmin is larger than that of dtxmax, an RTP sender MUST ignore the indicated values and MUST fall back on the default dtxmin and dtxmax values ๐Ÿšซ

7. Backward Compatibility with RFC 3558 ๐ŸŽ€

This document adds new optional DTX parameters to the original EVRC payload subtypes "EVRC" and "EVRC0" from RFC 3558 โœจ. Since the new DTX parameters are receiver options, we expect existing RFC 3558 implementations won't send any of the DTX parameters in their SDP, and that they'll ignore any DTX parameters they receive. The adaptive DTX behavior of DTX-capable EVRC codecs (as detailed in [8], Section 4.3.5) keeps backward interoperability between DTX-capable EVRC codecs and non-DTX EVRC codecs working. It's giving harmony ๐Ÿซถ

8. IANA Considerations โœจ

okay so IANA gets four brand-new MIME subtype registrations ๐ŸŽ€: EVRC1, EVRCB, EVRCB0, and EVRCB1. They're all defined here (see Section 6.1 - Section 6.4) to support EVRC-B and the compact bundled payload format. ๐Ÿ’–

For all the EVRC and EVRC-B RTP payload formats in RFC 3558 [4] and RFC 4788, there are four extra optional parameters: silencesupp, dtxmax, dtxmin, and hangover. They're used for DTX ๐ŸŒธ

The EVRC and EVRC0 MIME subtype registrations, which were originally in RFC 3558 [4], get a glow-up too. They're updated with those optional DTX parameters (see Sections 6.5 and 6.6). the main character era is real ๐Ÿ‘‘

9. Security Considerations

bestie, this part is serious ๐Ÿ™ˆ Implementations using the payload in this spec are subject to the security considerations in RFC 3558 [4], RFC 3550 [5], and whatever profile applies (for example, RFC 3551 [9]). This payload doesn't specify any different security services, so those other docs are where you look for the protection stuff ๐Ÿ”’

10. Acknowledgements

shoutout to everyone who made serious contributions to this doc ๐Ÿซถ listed alphabetically: Parag Agashe, Jim Ashley, Harikishan Desineni, Serafin Diaz, Harinath Garudadri, Gouri Johanssen, Ananth Kandhadai, Waqar Mohsin, Ashok Roy, Gino Scribano, and Gajinder Singh Vij. โœจ

Special thanks to Colin Perkins, Magnus Westerlund, and Adam Li for their careful review and comments, which made this doc so much better ๐Ÿ’…

11. References

11.1. Normative References

  • [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.
  • [2] "Enhanced Variable Rate Codec, Speech Service Option 3 for Wideband Spread Spectrum Digital Systems", 3GPP2 C.S0014, January 1997.
  • [3] "Enhanced Variable Rate Codec, Speech Service Option 3 and 68 for Wideband Spread Spectrum Digital Systems", 3GPP2 C.S0014-B v1.0, May 2006.
  • [4] Li, A., "RTP Payload Format for Enhanced Variable Rate Codecs (EVRC) and Selectable Mode Vocoders (SMV)", RFC 3558, July 2003.
  • [5] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", RFC 3550, July 2003.
  • [6] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with the Session Description Protocol (SDP)", RFC 3264, June 2002.
  • [7] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session Description Protocol", RFC 4566, July 2006.
  • [8] "Discontinuous Transmission (DTX) of Speech in cdma2000 Systems", 3GPP2 C.S0076-0, Version 1.0, December 2005.

11.2. Informative References

  • [9] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video Conferences with Minimal Control", RFC 3551, July 2003.
  • [10] Casner, S., "Media Type Registration of RTP Payload Formats", Work in Progress, March 2006.

Authors' Addresses

Here's where to find the authors ๐Ÿฆ‹

Qiaobing Xie
Motorola, Inc.
1501 W. Shure Drive, 2-F9
Arlington Heights, IL  60004
US

Phone: +1-847-632-3028
EMail: Qiaobing.Xie@Motorola.com


Rohit Kapoor
Qualcomm Inc.
US

Phone: +1-858-845-1161
EMail: rkapoor@qualcomm.com

Copyright (C) The IETF Trust (2007). ๐Ÿ“œ

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.

The legal fine print, verbatim because it matters: 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

ngl this part is a lot, but here's the gist ๐Ÿง The IETF takes no position on 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 on whether any license under such rights might or might not be available. It also doesn't say it has made any independent effort to identify any such rights. Info on the procedures for rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat, any assurances of licenses to be made available, or the result of an attempt to get a general license or permission for implementers or users to use such proprietary rights 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 required to implement this standard. Please send that info to the IETF at ietf-ipr@ietf.org. ๐Ÿ“ฎ

Acknowledgement

Funding for the RFC Editor function is currently provided by the Internet Society. ๐Ÿ’œ

๐Ÿ“ฆ where this page comes from