G.722.1 Annex C Audio Coder

Vocoders by Adaptive Digital

  G.722.1 C55x , C62x, C64x
    Stellaris® Cortex-M3, Cortex-M4, Cortex A-8

The Adaptive Digital Technologies G.722.1 Audio Coder is a real-time implementation of the ITU G.722.1 standard.

PRODUCT DESCRIPTION

The Adaptive Digital Technologies G.722.1 Audio Coder is an implementation of the ITU G.722.1 standard. ADT’s G.722.1 coder is a high quality low-complexity algorithm that provides an audio bandwidth of 50Hz to 7kHz (to 14khz with Annex C), operating at a bit rate of 48 kbps (Annex C), 24 kbit/s or 32 kbit/s or 16 kbit/s (Not available in Annex C).  This algorithm is recommended for use in hands-free applications such as conferencing where there is a low probability of frame loss.  It is used with many applications that require audio frequency bandwidth coding such as video conferencing, multimedia, and speaker/microphone digital telephony. The G.722.1 audio coder encodes 16 kHz and 32khz sampled audio signals for transmission over 16, 24, 32 and 48 kbps channels, and provides 7 kHz /14khz of audio bandwidth.

G.722.1 OVERVIEW

The ITU-T G.722.1 recommendation is a wideband, audio coding algorithm that can be utilized for services such as video conferencing, teleconferencing, and Internet streaming applications. The recommendation is capable of providing an audio bandwidth of 50 Hz to 7 kHz with Annex C extending the maximum bandwidth to 14 kHz. At the current time, the ITU is studying the G.722.1 FB extension, which would increase the maximum bandwidth to 20 kHz and therefore, provide high-definition audio. The baseline and Annex C flavors of G.722.1 are capable of operating at bit rates of 24 Kbits/s and 32 Kbits/s with the Annex C (14 kHz) extension capable of operating at 48 Kbits/s. G.722.1

The G.722.1 algorithm is based on a transform technology known as the Modulated Lapped Transform (MLT). It is a critically sampled, perfect reconstruction, linear transform. For a period of 20 ms and a maximum bandwidth of 7 kHz, 640 time domain samples are loaded into the MLT and the result is a frame of 320 transform coefficients. These coefficients are then used by the algorithm to compute a quantized amplitude envelope, which is divided into fourteen regions and is a rough representation of the MLT spectrum. With only a set number of bits available to a frame (based on the bit rate), any remaining bits after the quantization and coding of the amplitude envelope are then used to encode the transform coefficients in the categorization procedure of the algorithm.

The categorization procedure determines the step-sizes for the quantization of the MLT coefficients and in addition, assigns a category to each of the fourteen regions in the frame. The purpose of assigning a category is to determine the quantization and coding parameters as well as the expected number of bits it will take to effectively represent the quantized transform coefficients in each region. Out of the sixteen possible categorizations sets that are computed within the algorithm, only one will be selected for transmission.

With the number of available bits fixed for a frame (depending on the bit rate), the frame will consist of the amplitude envelope bits, the categorization control bits, and the MLT coefficient bits. It is the decoder’s task to parse through these bits and determine the amplitude envelope, what category the MLT coefficients were assigned to, and lastly, the values of the quantized MLT coefficients. An inverse MLT is utilized to convert the 320 transform coefficients to 320 time domain audio samples.

The G.722.1 recommendation has three annexes that have been approved and one that is under study by the ITU. Annex A discusses the format of a frame packet, which was explained in the previous paragraph. In addition, this annex defines the capability identifiers and parameters for both the baseline and extended modes of G.722.1. Annex B focuses on the floating-point implementation of G.722.1. This annex states that it is similar to the fixed-point implementation found within the baseline explanation. As stated previously, Annex C extends the maximum bandwidth to 14 kHz by doubling the sample rate (from 16 to 32 kHz), the samples per frame (320 to 640), and the transform window (640 to 1280). Lastly, Annex FB could involve increasing the sample rate, the samples per frame, the transform window, or some other modification not discussed in the G.722.1 recommendation.

Contributed by Ralph M. Alfano
College of Engineering - Senior Electrical Engineer
Villanova University
Click for Resume

  Data sheet .pdf

Coding Rate: 16, 24 and 32, 48 kbps

Sampling Rate: 16 kHz, 32 kHz

Delay: 20 microseconds

FEATURES

  1. Functions are C-callable

  2. Multi -Channel Implementation.

  3. Completely re-entrant (Channel can interrupt any Channel, any time)

  4. Can be integrated with echo cancellers, VOX and tone detection/regeneration.

  5. The encoder and decoder meet all ITU G.722.1 compliance data files.

  6. Includes Frame Loss Concealment Algorithm

  7. xDM Compliant: ensures easy codec implementation and integration for DaVinci™ Technology

AVAILABILITY

ADT G.722.1 is available on the TMS320™ DSP Family

C55x, C62x & C64x™DSP Generations

Stellaris® Cortex-M3, Cortex-M4, Cortex A-8

SPECIFICATIONS

C55x

All Memory usage is given in units of byte.

Function 32khz (Annex C) (MIPS) 16khz (MIPS) Memory (bytes)
48kbps 32kbps 24kbps 32kbps 24kbps 16kbps Program Data Channel Scratch
Encode 5.91 5.76 5.32 3.10 2.91 2.85 -- -- 1.3k* 668 5.2k
Decode 7.64  7.07 6.53 4.15 3.64 3.39 -- -- 2.6k* 1.3k 5.2k
Encode/Decode 13.55 12.83 11.85 7.25  6.55  6.24 7148 24K -- -- 5.2k

* Annex C mode - The G.722.1 coder works for both 16kHz and 32kHz sampling rates. If annex C is not defined,    the G.722.1 coder works for 16kHz sampling rate.

C62x

All Memory usage is given in units of byte.

Function MIPS Program Memory Data Memory Per-Channel Data Memory
Coding Rate
24 32
Encode 2.47 2.60 -- -- 648
Decode 2.22 2.45 -- -- 1312
Encode/Decode 4.69 5.05 20128 22624 1950

C64x supports Big Endian/Little Endian

All Memory usage is given in units of byte.

Function 32khz (Annex C) (MIPS) 16khz (MIPS) Memory (bytes)
48kbps 32kbps 24kbps 32kbps 24kbps 16kbps Program Channel Scratch
Encode 4.93 4.70 4.22 1.95 1.86 1.75 -- 656 or 1296 * --
Decode 3.93 3.49 3.34 2.12 1.85 1.76 -- 1344 or 2624 * --
Encode/Decode 8.86 8.19 7.56 4.07  3.71  3.51 52k -- 6.4k

* With annex “C” defined.

CORTEX -A8 / CORTEX-M4 with SIMD

All Memory usage is given in units of byte.

Function 32khz (Annex C) (MIPS) 16khz (MIPS) Memory (bytes)
48kbps 32kbps 24kbps 32kbps 24kbps 16kbps Program Channel Scratch
Encode 16.0 14.5 13.7 8.5 8.4 7.7 -- 656 or 1296 * --
Decode 13.9 13.2 12.3 7.3 6.5 6.1 -- 1344 or 2624 * --
Encode/Decode 29.9 27.7 26 15.8 14.9 13.8 45k -- 6.4k
* With annex “C” defined.

 

ARM CORTEX-M3

All Memory usage is given in units of byte.

Function MIPS Program Memory Data Memory Per-Channel Data Memory
Coding Rate
24 32
Encode 28.2 28.9 -- -- 648
Decode 27.1 28.1 -- -- 1312
Encode/Decode 55.3 57.0 28318 20718 1950

APPLICATIONS

Video Conferencing

Teleconferencing

Internet Streaming Applications

Cellular Applications

FUNCTION

ResetG722_1 (…) Initializes the G.722.1 audio coder Channel structures

EncodeG722_1 (…) Executes the G.722.1 encoder

DecodeG722_1 (…) Executes the G.722.1 decoder

 

 

 

 

Follow us on twitter