[Asterisk-Users] Open G.729A codec

Steve Underwood steveu at coppice.org
Tue Aug 12 23:49:10 MST 2003


Steve Underwood wrote:

> The ITU G.729 code is pretty much useless for real world use. It is 
> very slow. It gets the right answers, but not by efficient means. All 
> the voice codec reference code I have seen is like this. The people 
> who develop these things *have* to write an efficient version, as 
> standards bodies demand to know the approximate MIPS a good 
> implementation will require. The implementors do not release this 
> version as the reference model. I've been through this from the codec 
> developer's side. The reference model may be 10 or more times slower 
> than a commercial grade implementation. I've no idea what the ratio 
> might be for G.729.

After writing this I got curious about how fast/slow the ITU reference 
code really is. I built and ran the G.729A reference code on a 2.4GHz 
Xeon machine, running RedHat 9. Its actually a dual Xeon, but the test 
is only able to use 1 CPU.

G.729A is the fixed point reduced complexity version of G.729. Reduced 
complexity means it needs about half the MIPs of the more complex 
version. I compressed and decompressed a 3.5 minute file of 16 bit 
linear speech. It took 25 seconds to compress and about 5 seconds to 
decompress. That ratio seems about right for a codec of this type. So, 
using this code you can only do 7 bidirectional channels, using 100% of 
a 2.4GHz Xeon. Not exactly great, huh?

Perhaps I should try the floating point version. That might perform 
somewhat better on an x86 machine, as any scaling and saturation steps 
need not be performed.

For comparison, can anyone tell me how fast the VoiceAge codec runs? If 
is isn't a *lot* faster than that I would be rather surprised. It should 
be algorithmically more efficient, and I assume as a commercial product 
it should be using MMX, SSE and/or SSE2.

Regards,
Steve





More information about the asterisk-users mailing list