The G.729 codec is one of the most popular voice compression algorithms used in VoIP.
G.729 vocoder operates with near toll quality using a very limited bandwidth - 6.4 kbit/s, 8 kbit/s or 12.4 kbit/s.

search our site

G.729A, AB, B, D, & F The G.729 voice coder provides near toll speech quality at a compressed data rate of 8 kbit/s.

Give us a listen!

Contact us
  for more information

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

  1. Functions are C-callable.
  2. Multi-channel capable.
  3. The encoder and decoder meet all ITU G.729 compliance and interoperability requirements.
  4. Can be integrated with echo cancellers.
  5. Capable of in-band synchronization.
  6. Available as part of Adaptive Digital’s G.PAK turnkey DSP software packages

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. The software runs on the Texas Instruments' TMS320 family of Digital Signal Processors (DSPs).

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. G.729 ImplementationThe 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.

Data sheet .pdf   pdf data sheet

g.729 questionsgo to 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
C64x
Enc 20.5 (8 kbps)
  17.1 (6.4 kbps)
-- -- 2392
Dec 4.1 (8 kbps)
 4.4 (6.4 kbps)
-- -- 1572
Enc Dec 24.6  (8 kbps)
  21.5 (6.4 kbps)
124K 8192 3964

 

Annex B & F Function MIPS Program Memory Data Memory Scratch Memory Per Channel Data Memory
G.729B / G.729F
C64x
Enc 20.4 -- -- 8192 2388
Dec 4.7 -- -- 0 1568
Enc Dec 25.7 119k 7.2K 8192 3956
G.729B / G.729F
C64x
+ / C66x
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)
20.5 (6.4 kbps)
24780 6570 4960 1980
Dec 5.9 (8 kbps)
6.4 (6.4 kbps)
12607 6574 1024 1416
G.729D Enc/Dec 38.1 (8 kbps)
26.9 (6.4 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
A8/A9/15
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
M3/M4
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