ADT公司G729 方案指标
G.729 Voice Compression Algorithm and its many annexes
G.729 is used in wireless voice, voice-over-packet-networks, multimedia, and voice circuit multiplexing applications.
FEATURES
Platform |
G.729 |
G.729 A |
G.729 B |
G.729 AB |
G.729 D |
G.729 F |
G.729 I & E |
TI TMS320C64x+ / C66x |
Available |
Available |
Available |
Available |
Available |
Available |
|
TI TMS320C67/674x |
Available |
Available |
Available |
Available |
Available |
Available |
Available |
TI TMS320C64x |
Available |
Available |
Available |
Available |
Available |
Available |
|
TI TMS320C62x |
|
|
|
Available |
|
|
|
TI TMS320C55x |
Available |
Available |
Available |
Available |
Available |
|
|
TI TMS320C54x |
Available |
Available |
Available |
Available |
Available |
|
|
ARM9E |
|
|
|
Available |
|
|
|
ARM11 |
|
|
|
Available |
|
|
|
ARM Cortex A8 |
|
Available |
|
Available |
|
|
|
ARM Cortex A9 |
|
Available |
|
Available |
|
|
|
ARM Cortex A15 |
|
Available |
|
Available |
|
|
|
ARM Cortex M3 |
|
Available |
|
Available |
|
|
|
ARM Cortex M4 |
|
Available |
|
Available |
|
|
|
Win32 Static** |
|
|
|
Available |
Available |
|
|
Win32 DLL** |
|
Available |
|
Available |
Available |
|
|
** Windows 32 DLL - Contact Sales for specifications.
DESCRIPTION
The Adaptive Digital Technologies' G.729 voice coder software is an implementation of ITU Recommendation G.729 8 kbit/s CS-ACELP Speech Codec.
G.729 is an umbrella of vocoder standards. The G.729 vocoders perform voice compression at bit rates that vary between 6.4 and 12.4 kbps. The figure below shows an example of the G.729 vocoder connected to a digital communication channel. The input speech is fed into the G.729 encoder as a stream of16-bit PCM samples, sampled at a rate of 8000 samples/second. The G.729 encoder compresses the data into the Encode Stream. The encoder also outputs the DTX status, which is discussed later in this data sheet. The digital channel carries the data stream and DTX status to the decoder, which regenerates a representation of the original speech, and outputs it as the output speech – again as 16-bit PCM at a sampling rate of 8000 samples/second. Since G.729 is a uses lossy compression, the output speech is not identical to the input speech.
The decoder is also fed a frame erase flag, which is an indication that the decode stream has temporarily been corrupted. The decoder is able to “smooth over” the output , doing its best to conceal the loss of data and minimize the loss in voice quality. This process is known as packet loss concealment (PLC). It works surprisingly well even under high packet loss rates.
Adaptive Digital's G.729AB voice compression algorithm is a highly optimized version of the G.729 ITU Annex A and Annex B standard. G.729 AB offers toll quality speech at a reasonably low bit rate of 8Kbps. The G.729 AB codec uses Discontinuous Transmission (DTX), Voice Activity Detection (VAD), and Comfort Noise Generation (CNG) to reduce bandwidth usage. G.729AB is used in wireless voice, voice-over-packet-networks, multimedia, and voice circuit multiplexing applications.
Click here for G.729 information on the following topics. G.729 comparisons and differences.
✓ DECIPHERING THE MANY ANNEXES & APPENDICES of G.729
✓ PATENT ISSUES
✓ COMPARISON SHOPPING
SPECIFICATIONS
TI TMS320C6000
G.729 C64x, C64x+ / C66x
CPU UTILIZATION & MEMORY REQUIREMENTS
All Memory usage is given in units of byte.
Annex AB |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729AB C64x |
Enc |
5.2 |
-- |
-- |
2400 |
2148 |
Dec |
1.2 |
-- |
-- |
800 |
2200 |
|
Enc/Dec |
6.3 |
63k |
6.7k |
3200 |
4344 |
|
G.729AB C64x+ / C66x |
Enc |
4.8 |
-- |
-- |
2400 |
2148 |
Dec |
1.2 |
-- |
-- |
800 |
2200 |
|
Enc/Dec |
6.0 |
57k |
6.7k |
3200 |
4344 |
Annex D |
Function |
MIPS |
Program Memory |
Scratch Memory |
Per Channel Data Memory |
G.729D |
Enc |
20.5 (8 kbps) |
-- |
-- |
2392 |
Dec |
4.1 (8 kbps) |
-- |
-- |
1572 |
|
Enc Dec |
24.6 (8 kbps) |
124K |
8192 |
3964 |
Annex B & F |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729B / G.729F |
Enc |
20.4 |
-- |
-- |
8192 |
2388 |
Dec |
4.7 |
-- |
-- |
0 |
1568 |
|
Enc Dec |
25.7 |
119k |
7.2K |
8192 |
3956 |
|
G.729B / G.729F |
Enc |
19.6 |
-- |
-- |
8192 |
2388 |
Dec |
5.1 |
-- |
-- |
0 |
1568 |
|
Enc Dec |
24.7 |
84k |
7.2K |
8192 |
3956 |
C674x
CPU UTILIZATION & MEMORY REQUIREMENTS
Annex AB |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729I* |
Enc |
33 |
-- |
-- |
-- |
3776 |
Dec |
12 |
-- |
-- |
-- |
2560 |
|
Enc/Dec |
45 |
121k |
500 |
8000 |
6336 |
CPU UTILIZATION & MEMORY REQUIREMENTS
Annex AB |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729E |
Enc |
42 |
-- |
-- |
-- |
3776 |
Dec |
18 |
-- |
-- |
-- |
2560 |
|
Enc/Dec |
60 |
174k |
500 |
800 |
6336 |
*G.729 B, D, E - G.729 Annex I combines G 729 D (6.4kbps rate) , G729 (8kbps rate) and G729 E (11.8 kbps rate). Annex B is integrated into all 3 rates. Giving 5 different possible rates: 0, 1.6k, 6.4k, 8k and 11.8k The 3 bit rates are switchable frame to frame by the host.
C6x
CPU UTILIZATION & MEMORY REQUIREMENTS
Annex AB |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729AB C62x/67x |
Enc |
5.2 |
-- |
-- |
2400 |
2148 |
Dec |
1.3 |
-- |
-- |
800 |
2200 |
|
Enc/Dec |
6.5 |
72k |
6.1k |
3200 |
4344 |
TI TMS320C5000
G.729 C55x
CPU UTILIZATION & MEMORY REQUIREMENTS
All Memory usage is given in units of byte.
C55x |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729AB |
Enc |
8.3 |
28354 |
9272 |
1976 |
2156 |
Dec |
2.0 |
13654 |
6310 |
436 |
1848 |
C55x |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729B |
Enc |
37 |
33421 |
9120 |
4960 |
2400 |
Dec |
7.8 |
1024 |
1440 |
C55x |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729D |
Enc |
32.2 (8 kbps) |
24780 |
6570 |
4960 |
1980 |
Dec |
5.9 (8 kbps) |
12607 |
6574 |
1024 |
1416 |
|
G.729D |
Enc/Dec |
38.1 (8 kbps) |
28040 |
6630 |
4960 |
3396 |
G.729 C54x
CPU UTILIZATION & MEMORY REQUIREMENTS
All Memory usage is given in units of 16-bit word.
C54x |
Function |
MIPS |
Common Program Memory |
Program Memory |
Data Memory |
Common Data Memory |
Per Channel Data Memory |
G.729 |
Enc |
18.07 |
2086 |
6191 |
194 |
3100 |
808 |
Dec |
3.0 |
2086 |
2908 |
113 |
3100 |
670 |
|
G.729A |
Enc |
9.7 |
2162 |
6215 |
194 |
2899 |
976 |
Dec |
1.8 |
2162 |
1989 |
113 |
2899 |
838 |
|
G.729B |
Enc |
18.9 |
4223 |
8571 |
194 |
3401 |
763 |
Dec |
3.2 |
4223 |
3552 |
113 |
3401 |
670 |
|
G.729AB |
Enc |
10.0 |
4236 |
8567 |
246 |
3200 |
931 |
Dec |
2.2 |
4236 |
2625 |
113 |
3200 |
838 |
ARM ® DEVICES
G.729 ARM Cortex-A8/A9/A15
CPU UTILIZATION & MEMORY REQUIREMENTS
All Memory usage is given in units of byte.
Annex AB |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729AB, G.729A |
Enc |
22.5 |
-- |
-- |
2400 |
2148 |
Dec |
8.3 |
-- |
-- |
800 |
2200 |
|
Enc/Dec |
30.8 |
124.5K |
6080 |
3200 |
4348 |
G.729 ARM Cortex-M3/M4
CPU UTILIZATION & MEMORY REQUIREMENTS
All Memory usage is given in units of byte.
Annex AB |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729AB, G.729A |
Enc |
25 |
-- |
-- |
2400 |
2148 |
Dec |
11 |
-- |
-- |
800 |
2200 |
|
Enc/Dec |
35 |
73024 |
6016 |
3200 |
4348 |
G.729 ARM9E / ARM11
CPU UTILIZATION & MEMORY REQUIREMENTS
All Memory usage is given in units of byte.
Annex AB |
Function |
MIPS |
Program Memory |
Data Memory |
Scratch Memory |
Per Channel Data Memory |
G.729AB G.729A |
Enc |
27.3 |
-- |
-- |
2400 |
2148 |
Dec |
10.9 |
-- |
-- |
800 |
2200 |
|
Enc/Dec |
38.2 |
142.2k |
6016 |
3200 |
4348 |
API function call summary
G729_ADT_encodeInit(. . .) Initializes the G.729 encoder software
G729_ADT_decodeInit(. . .) Initializes the G.729 encoder software
G729_ADT_encode(. . .) Executes the G.729 encoder
G729_ADT_decode(. . .) Executes the G.729 decoder
G729_ADT_Annex_(A. . .I)_encoderInit(. . .) Initializes the G.729 (A. . .I)_ encoder software
G729_ADT_Annex_(A. . .I)_decoderInit(. . .) Initializes the G.729 (A. . .I)_ encoder software
G729_ADT_Annex_(A. . .I)_encode(. . .) Executes the G.729 (A. . .I)_ encoder
G729_ADT_Annex_(A. . .I)_decode(. . .) Executes the G.729 (A. . .I)_ decoder