On Apr 12, 2005, at 1:03 AM, Michael Giagnocavo wrote:
On Fri, 2005-04-08 at 09:33 -0500, Brian West wrote:Speex is a CPU whore. Even more so than g729.
How much of a whore are we talking about here? Clock cycles are cheap,
so if I can get 7 channels of speex with a dual 900Mhz PIII (my current
system) I'd say it's worth the savings in bandwidth.
FWIW, I just spoke to VoicePulse and their engineering department said they will support Speex with IAX termination within 1 to 2 days.
-lee
It's about 3 times worse than G729 for encoding and just a tad bit faster on
decoding. So, from a provider's standpoint, that means reduced capacity per
machine, which in turn means higher overhead and less profit. Usually when
you work out rates, you'll get your codecs worked out too. If your provider
has to do expensive CPU work, expect to pay for it. Then again, if you're
not running tons of traffic, it might just not make enough difference and
they probably play the average (considering some use ULAW and some GSM,
which could balance out your Speex usage).
Just for comparison, here's a complete "show translation" table:
Translation times between formats (in milliseconds) Source Format (Rows) Destination Format(Columns)
g723 gsm ulaw alaw g726 adpcm slin lpc10 g729 speex ilbc
g723 - 4 2 2 3 2 1 7 11 31 18
gsm 12 - 2 2 3 2 1 7 11 31 18
ulaw 12 4 - 1 3 2 1 7 11 31 18
alaw 12 4 1 - 3 2 1 7 11 31 18
g726 13 5 3 3 - 3 2 8 12 32 19
adpcm 12 4 2 2 3 - 1 7 11 31 18
slin 11 3 1 1 2 1 - 6 10 30 17
lpc10 13 5 3 3 4 3 2 - 12 32 19
g729 13 5 3 3 4 3 2 8 - 32 19
speex 12 4 2 2 3 2 1 7 11 - 18
ilbc 14 6 4 4 5 4 3 9 13 33 -
Speex is definitely the worst performer here, as far as CPU time goes.
(These numbers from a P4 2.4GHz, using Digium's G729 P4 codec, and Intel's
G723, 5.3 rate, optimized for P4, and Speex 1.0.4-1, Asterisk
CVS-HEAD-04/11/05-19:24:17).
Try (a) compiling speex with --enable-sse, and (b) set complexity 2 or 3, and use =8000 in codecs.conf, and it will probably be comparable to g729 in encode, and tons faster in decode. On P3-500, with complexity 2 and abr 8000 bps, I get 42ms for speex encode, and 9ms for decode, where iLBC is 62/11, respectively, and I don't have --enable-sse for my build. (I'm using Redhat 8 on this box, and the old gcc on that box has bugs in the SSE intrinsics).
We should really change the defaults in codecs.conf, and think about bunding an optimized speex with asterisk, because it gets a bad rap because of these things.
-SteveK
_______________________________________________ Asterisk-Biz mailing list [email protected] http://lists.digium.com/mailman/listinfo/asterisk-biz
