RFC 4788
Enhancements to RTP Payload Formats for EVRC Family Codecs
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 Notice
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 ๐ญ:
silencesuppshows the capability and willingness to use DTX/silence suppression ๐ค.dtxmaxanddtxmingive the desired range of DTX update interval ๐.hangovergives 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 SDPm=line as the media name. - The MIME subtype (
"EVRC", "EVRC0", "EVRC1", "EVRCB", EVRCB0", or "EVRCB1") goes in the SDPa=rtpmapattribute as the encoding name. - The optional parameters
ptimeandmaxptime(for the subtypes EVRC, EVRC1, EVRCB, and EVRCB1) go in the SDPa=ptimeanda=maxptimeattributes, respectively. - The optional parameter
maxinterleave(for the subtypes EVRC and EVRCB) goes in the SDPa=fmtpattribute, copied straight from the MIME media type string asmaxinterleave=value. - The optional parameter
fixedrate(for the subtypes EVRC1 and EVRCB1) goes in thea=fmtpattribute, copied straight from the MIME media type string asfixedrate=value. - The optional parameters
silencesupp,dtxmax,dtxmin, andhangovergo in thea=fmtpattribute, copied straight from the MIME media type string assilencesupp=value,dtxmax=value,dtxmin=value, andhangover=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:
- If any DTX parameter isn't present in the offer and/or the answer, the default value of that DTX parameter MUST be assumed.
- 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.
- 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
Full Copyright Statement
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
- ietf: rfc4788 2007-01
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms