G.722.1
G.722.1 / AMR WB AUDIO CODER
G.722.1 vocoder is a high quality low-complexity algorithm
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 RequirementsMemory usage is given in units of byte
Function | 32 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 Memory | Data Memory | Scratch |
Encode | 19 | 18 | 15.5 | 10 | 9 | 9 | — | — | — |
Decode | 19.5 | 18 | 16 | 9.5 | 8.5 | 8 | — | — | — |
Encode/Decode | 38.5 | 36 | 31.5 | 19.5 | 17.5 | 17 | 46544 | 31450 | 6.4K |
G.722.1 ARM Cortex-A Memory
Memory RequirementsAll Memory usage is given in units of byte.
Function | Program | Data | Channel | Scratch | |
Encode | — | — | 1.3K* | 668 | 5.2K |
Decode | — | — | 2.6K* | 1.3K | 5.2K |
Encode/Decode | 7148 | 24K | — | — | 5.2K |
G.722.1 ARM Cortex-A Channel Memory
Per Channel Memory RequirementsMemory usage is given in units of byte
G.722.1 Mode | Encoder | Decoder |
Wideband (16kHz) | 656 | 1344 |
Ultra-Wideband (32kHz) | 1296 | 2624 |
G.722.1 ARM Cortex-M4
CPU Utilization & Memory RequirementsMemory usage is given in units of byte
Function | 32 kHz (Annex C) MIPS 32kbps | 32 kHz (Annex C) MIPS 24kbps | 16 kHz MIPS 32kbps | 16 kHz MIPS 24kbps | Program Memory | Data Memory | Scratch |
Encode | 31.2 | 28.6 | 18.6 | 17.7 | — | — | — |
Decode | 28.8 | 26.1 | 15.8 | 14.6 | — | — | — |
Encode/Decode | 60 | 54.7 | 34.4 | 32.3 | 14956 | 30192 | 6.4K |
G.722.1 ARM Cortex-M33/M35 – estimate
CPU Utilization & Memory RequirementsMemory usage is given in units of byte
Function | 32 kHz (Annex C) MIPS 32kbps | 32 kHz (Annex C) MIPS 24kbps | 16 kHz MIPS 32kbps | 16 kHz MIPS 24kbps | Program Memory | Data Memory | Scratch |
Encode | 25 | 23 | 15 | 11.3 | — | — | — |
Decode | 23 | 21 | 10 | 11.7 | — | — | — |
Encode/Decode | 48 | 44 | 25 | 23 | 14956 | 30192 | 6.4K |
G.722.1 ARM Cortex-M Channel Memory
Per Channel Memory RequirementsMemory usage is given in units of byte
G.722.1 Mode | Encoder | Decoder |
Wideband (16kHz) | 656 | 1344 |
Ultra-Wideband (32kHz) | 1296 | 2624 |
G.722.1 ARM Cortex-M3 Legacy
CPU Utilization & Memory RequirementsMemory usage is given in units of byte
Function | MIPS 24kbps | MIPS 32kbps | Program Memory | Data Memory | Per-Channel Data Memory |
Encode | 28.2 | 28.9 | — | — | 648 |
Decode | 27.1 | 28.1 | — | — | 1312 |
Encode/Decode | 55.3 | 57 | 28318 | 20718 | 1950 |
G.722.1 C62x
CPU Utilization & Memory RequirementsMemory usage is given in units of byte
Function | MIPS 24kbps | MIPS 32kbps | Program Memory | Data Memory | Per-Channel Data Memory |
Encode | 2.47 | 2.6 | — | — | 648 |
Decode | 2.22 | 2.45 | — | — | 1312 |
Encode/Decode | 4.69 | 5.05 | 20128 | 22624 | 1950 |
G.722.1 C64x / C64x+ / C66x /C674x | C7x
CPU Utilization & Memory RequirementsMemory usage is given in units of byte
Function | 32 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 Memory | Data Memory | Scratch |
Encode | 4.93 | 4.70 | 4.22 | 1.95 | 1.86 | 1.75 | — | 656 or 1296* | — |
Decode | 3.98 | 3.49 | 3.34 | 2.12 | 1.85 | 1.76 | — | 1344 or 2624* | — |
Encode/Decode | 8.86 | 8.19 | 7.56 | 4.07 | 3.72 | 3.51 | 52K | — | 6.4K |
C64x supports Big Endian/Little Endian
G.722.1 C55x
CPU UtilizationFunction | 32 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 |
Encode | 5.91 | 5.76 | 5.32 | 3.10 | 2.91 | 2.85 |
Decode | 7.64 | 7.07 | 6.53 | 4.15 | 3.64 | 3.39 |
Encode/Decode | 13.55 | 12.83 | 11.85 | 7.25 | 6.55 | 6.24 |
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