G.711 PCM Vocoder | G.711 A1 A2
G.711 ITU Standard - Pulse Code Modulation (PCM) Waveform coder
G.711 is by far, the most commonly supported voice companding algorithm used in telephony.
G.711 Appendix 1 (optional) coder is a high quality low-complexity algorithm for packet loss concealment (PLC). It is a highly effective algorithm for concealing lost packets of G.711 data. Speech remains intelligible even under conditions where up to 30% of the packets are lost. Robust packet loss concealment improves voice quality under packet loss conditions.
G.711 Appendix 2 (optional) provides voice activity detection (VAD), discontinuous transmission (DTX), and comfort noise generation (CNG). When combined, these algorithms provide an efficient method for reducing packet bandwidth during portions of a conversation when no voice activity is present. During silence periods, only the bits necessary to model the background noise characteristics
Features List
- Functions are C-callable.
- Supports both mu-law and a-law
- ITU G.711 Compliant
Robust packet loss concealment
Multi-channel capable
Availability
Platforms | G.711 | G.711-Appendices 1 | G.711-Appendices 2 | G.711 Appendices 1 & 2 |
Arm ® Devices – | Armv9-A || Armv7-A / Armv8-A || Armv7-M / Armv8-M || Legacy Cortex-M3, ARM9E/11 | Legacy ARM9E / 11 | — | Armv7-A / Armv8-A || Armv7-M / Armv8-M || Legacy Cortex-M3, ARM9E/11 |
Texas Instruments – TI TMS320C7000 C7x, TI TMS320C6000 C64x/C64x+/C66x, C674x, TMS320C5000 C55x / C54x | C7x / C64x / C55x / C54x | C7x / C64x / C55x / C54x | C55x / C64x | C7x / C64x+ / C64x / C55x / C54x |
Win32 static LIB / DLL | — | — | — | Win32 static LIB / DLL |
Linux 32 Bit | — | — | — | Linux 32 Bit |
ADT G.711 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.711 Armv9-A Neoverse N2
CPU UtilizationThe ARM Neoverse is a group of 64-bit ARM processor cores.
Function | MIPS |
G.711 Encode/Decode | 0.44 |
G.711 Armv9-A, Armv8-A, Armv7-A Cortex-A8 / A9 / A15
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Product | Function | MIPS | Program Memory | Data Memory | Per Channel Data Memory | Scratch Memory |
G.711A1A2 | Encode | 7.9 | 92 K | 5.26 K | 1640 | 624 |
Decode | 2.3 | 1776 | 624 |
G.711 Armv7-M
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Product | Function | MIPS | Program Memory | Data Memory | Per Channel Data Memory |
G.711A1A2 | Encode | 7.33 | 22700 | 2886 | 1636 |
Decode | 2.5 | 1776 |
G.711 Armv8-M
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Product | Function | MIPS | Program Memory | Data Memory | Per Channel Data Memory |
G.711A1A2 | Encode | 10.26 | 22700 | 2886 | 1636 |
Decode | 3.5 | 1776 |
G.711 ARM9e / ARM11
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Product | Function | MIPS | Program Memory | Data Memory | Per Channel Data Memory | Scratch Memory |
G.711A1A2 | Encode | 12.1 | 61 K | 5.26 K | 1640 | 624 |
Decode | 3.8 | 1776 | 624 |
G.711 ARM7 – Legacy
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Product | Function | MIPS (Peak) | Program Memory | Data Memory | Per-Channel Data Memory |
G.711 | Mu-law (Compress) Encode | 69 | — | — | — |
Mu-law (Expand) Decode | 20 | — | — | — | |
A-law (Compress) Encode | 70 | — | — | — | |
A-law (Expand) Encode | 15 | — | — | — | |
G.711 Common/Tables | — | 900 | 1024 | — |
G.711 C7x / C64x / C64x+
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Function | MIPS (Peak) | Program Memory | Data Memory | Per-Channel Data Memory |
Mu-law Encode | 0.05 | — | — | — |
Mu-law Decode | 0.02 | — | — | — |
A-law Encode | 0.05 | — | — | — |
A-law Encode | 0.02 | — | — | — |
G.711 Common/Tables | — | 1696 | 1024 | — |
G.711 Appendix 1 | 0.36 | 4990 | 96 | 1680 |
VAD – G.711 Appendix 2 | 1.73 | 16032 | 1548 | 1644 |
VAD – G.711 Appendix 2 | 0.44 | 3584 | 272 | 104 |
G.711 C55x
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Function | MIPS (Peak) | Program Memory | Data Memory | Per-Channel Data Memory |
Mu-law Encode | 0.14 | — | — | — |
Mu-law Decode | 0.07 | — | — | — |
A-law Encode | 0.14 | — | — | — |
A-law Encode | 0.07 | — | — | — |
G.711 Common/Tables | — | 262 | 1032 | — |
G.711 Appendix 1 | 0.27 | 2162 | 98 | 1680 |
VAD – G.711 Appendix 2 | 2.9 | 10388 | 3464 | 1352 |
VAD – G.711 Appendix 2 | 0.9 | 1942 | 682 | 568 |
G.711 C54x
CPU Utilization & Memory RequirementsAll Memory usage is given in units of 16 bit word.
Function | MIPS (Peak) | Program Memory | Data Memory | Per-Channel Data Memory |
Mu-law Encode | 0.4 | — | — | — |
Mu-law Decode | 0.1 | — | — | — |
A-law Encode | 0.25 | — | — | — |
A-law Encode | 0.1 | — | — | — |
G.711 Common/Tables | — | 644 | 4 | — |
G.711 Appendix 1 | 0.37 | 1593 | 49 | 836 |
VAD – G.711 Appendix 2 | 3.2 | 4935 | 1447 | 434 |
VAD – G.711 Appendix 2 | 1.3 | 877 | 181 | 210 |
G.711 Windows LIB
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Product | Function | MIPS | Program Memory | Data Memory | Per Channel Data Memory | Scratch Memory |
G.711A1A2 | Encode | 7.59 | 61 K | 5.2 K | 1640 | 624 |
Decode | 2.64 | 1776 | 624 |
G.711 Windows DLL
CPU Utilization & Memory RequirementsAll Memory usage is given in units of byte.
Product | Function | MIPS | Program Memory | Data Memory | Per Channel Data Memory | Scratch Memory |
G.711A1A2 | Encode | 8.58 | 61 K | 5.2 K | 1640 | 624 |
Decode | 2.64 | 1776 | 624 |
G.711 Linux i868
CPU Utilization & Memory Requirements
All Memory usage is given in units of byte.
Product Function MIPS Program Memory Data Memory Per Channel Data Memory Scratch Memory G.711A1A2 Encode 9.72 62 K 5.3 K 1640 624 Decode 1.26 1776 624
Description
G.711 is, by far, the most commonly supported voice companding algorithm used in telephony. It has become the de facto standard used to ensure interoperability in voice over Internet protocol (VoIP) applications. Compression is performed on a per sample basis with each uniformly quantized sample producing an 8-bit pulse code modulated (PCM) or companded value.
In addition to companding, appendices have been added to the G.711 standard that allow telephony equipment to reduce network traffic by transmitting minimal data during periods of silence and to improve playback quality by synthesizing speech during periods when data has been lost or corrupted.
Adaptive Digital’s G.711 waveform coder is a bit exact implementation of the ITU G.711 PCM standard. Adaptive Digital’s G.711 coder converts between 8-bit mu-law (American standard) or a-law (European standard) companded values and 16-bit uniformly quantized values. Although many DSPs support G.711 conversion via hardware interface to TDM highways, it is often necessary to perform G.711 conversion in software, particularly when voice and signaling applications share a common line. Unlike the G.711 companding standard, the two G.711 appendices are not bit-exact. As a result, not all implementations perform identically.
Function APIs
Standard Functions
G711_Encode(. . .)
G711_Decode(. . .)
Performs G.711 encode function
Performs G.711 decode function
Appendix 1 (concealment) functions
G711ErasureInit(. . .)
G711A1Decode(. . .)
Initializes data structures for per channel packet loss concealment
Generates synthesized voice samples to cover missing data
Appendix 1 (VAD/CNG) functions
Vad_ADT_Init(. . .)
Cng_ADT_Init(. . .)
Vad_ADT_Run(. . .)
Cng_ADT_Run(. . .)
Initializes data structures for voice activity detection
Initializes data structures for comfort noise generation
Detects voice or silence and returns comfort noise parameters during silence periods
Generate comfort noise based upon received parameters
Appendix 1 & 2 (integrated) functions
G711_ADT_initEncode (. . .)
G711_ADT_initDecode (. . .)
G711_ADT_encode (. . .)
G711_ADT_decode (. . .)
Initializes G.711 Encode Channel
Initializes G.711 Decode Channel
Perform G.711 encode
Perform G.711 decode