G.722.1

G.722.1 / AMR WB AUDIO CODER

G.722.1 vocoder is a high quality low-complexity algorithm

Listen

Features List

  • Functions are C-callable
  • Multi -Channel Implementation
  • Completely re-entrant (Channel can interrupt any Channel, any time)
  • Can be integrated with echo cancellers, VOX and tone detection/regeneration
  • The encoder and decoder meet all ITU G.722.1 compliance data files
  • Includes Frame Loss Concealment Algorithm

Coding Rate: 16, 24, 32, and 48 kbps
Sampling Rate: 16, and 32 kHz
Delay: 20 microseconds

Availability

Platforms
Arm ® Devices – Armv7-A / Armv8-A / Armv9-A || Armv7-M / Armv8-M || Legacy Cortex-M3
Texas Instruments – TI TMS320C7000 C7x, TMS320C6000 C66x / C64x / C64x+, C674x, TMS320C5000 C55x / C54x
MIPS32® 24KE™

ADT G.722.1 is available on the above Platforms: Other configurations are available upon request.

Specifications

NOTE: We specify MIPS (Millions of Instructions Per Second) as MCPS (Millions of Instruction Cycles Per Second). Unless otherwise specified, peak MIPS are indicated.

↓  Click on links below to view specification tables. 

G.722.1 ARM Cortex-A

CPU Utilization & Memory Requirements
Memory usage is given in units of byte
Function32 kHz (Annex C)
MIPS
48kbps
32 kHz (Annex C)
MIPS
32kbps
32 kHz (Annex C)
MIPS
24kbps
16 kHz
MIPS
32kbps
16 kHz
MIPS
24kbps
16 kHz
MIPS
16kbps
Program MemoryData MemoryScratch
Encode191815.51099
Decode19.518169.58.58
Encode/Decode38.53631.519.517.51746544314506.4K
* With annex “C” defined.

G.722.1 ARM Cortex-A Memory

Memory Requirements
All Memory usage is given in units of byte.
FunctionProgramDataChannelScratch
Encode1.3K*6685.2K
Decode2.6K*1.3K5.2K
Encode/Decode714824K5.2K

G.722.1 ARM Cortex-A Channel Memory

Per Channel Memory Requirements
Memory usage is given in units of byte
G.722.1 ModeEncoderDecoder
Wideband (16kHz)6561344
Ultra-Wideband (32kHz)12962624

G.722.1 ARM Cortex-M4

CPU Utilization & Memory Requirements
Memory usage is given in units of byte
Function32 kHz (Annex C)
MIPS
32kbps
32 kHz (Annex C)
MIPS
24kbps
16 kHz
MIPS
32kbps
16 kHz
MIPS
24kbps
Program MemoryData MemoryScratch
Encode31.228.618.617.7
Decode28.826.115.814.6
Encode/Decode6054.734.432.314956301926.4K

G.722.1 ARM Cortex-M33/M35 – estimate

CPU Utilization & Memory Requirements
Memory usage is given in units of byte
Function32 kHz (Annex C)
MIPS
32kbps
32 kHz (Annex C)
MIPS
24kbps
16 kHz
MIPS
32kbps
16 kHz
MIPS
24kbps
Program MemoryData MemoryScratch
Encode25231511.3
Decode23211011.7
Encode/Decode4844252314956301926.4K

G.722.1 ARM Cortex-M Channel Memory

Per Channel Memory Requirements
Memory usage is given in units of byte
G.722.1 ModeEncoderDecoder
Wideband (16kHz)6561344
Ultra-Wideband (32kHz)12962624

G.722.1 ARM Cortex-M3 Legacy

CPU Utilization & Memory Requirements
Memory usage is given in units of byte
FunctionMIPS
24kbps
MIPS
32kbps
Program MemoryData MemoryPer-Channel Data Memory
Encode28.228.9648
Decode27.128.11312
Encode/Decode55.35728318207181950

G.722.1 C62x

CPU Utilization & Memory Requirements
Memory usage is given in units of byte
FunctionMIPS
24kbps
MIPS
32kbps
Program MemoryData MemoryPer-Channel Data Memory
Encode2.472.6648
Decode2.222.451312
Encode/Decode4.695.0520128226241950

G.722.1 C64x / C64x+ / C66x /C674x | C7x

CPU Utilization & Memory Requirements
Memory usage is given in units of byte
Function32 kHz (Annex C)
MIPS
48kbps
32 kHz (Annex C)
MIPS
32kbps
32 kHz (Annex C)
MIPS
24kbps
16 kHz
MIPS
32kbps
16 kHz
MIPS
24kbps
16 kHz
MIPS
16kbps
Program MemoryData MemoryScratch
Encode4.934.704.221.951.861.75656 or 1296*
Decode3.983.493.342.121.851.761344 or 2624*
Encode/Decode8.868.197.564.073.723.5152K6.4K
* With annex “C” defined. 
C64x supports Big Endian/Little Endian

G.722.1 C55x

CPU Utilization
Function32 kHz (Annex C)
MIPS
48kbps
32 kHz (Annex C)
MIPS
32kbps
32 kHz (Annex C)
MIPS
24kbps
16 kHz
MIPS
32kbps
16 kHz
MIPS
24kbps
16 kHz
MIPS
16kbps
Encode5.915.765.323.102.912.85
Decode7.647.076.534.153.643.39
Encode/Decode13.5512.8311.857.256.556.24
Note: 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.

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. 

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. 

Function API's

API function call summary

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

Translate »