stevek at stevek.com
Fri Jun 10 18:27:07 PDT 2005
I'm not an expert either, but I see people choosing iLBC over speex
all the time with asterisk; partly it's because they have more
market share in hardphones, and partly it's because of marketing and
such. (another reason is that iLBC source is included in asterisk,
and speex is only compiled in if you have the speex development stuff
on your machine when you compile asterisk [i.e. the speex-devel
package]). Some comments below:
On Jun 10, 2005, at 12:24 AM, Jean-Marc Valin wrote:
> First, you can see a comparison of the codec features at
> As for quality/bitrate, the first thing is that Speex supports a lot
> more settings (from 4 to 42 kbps) and does wideband (16 kHz sampling),
There's a wideband version of iLBC, but it's not free(as in beer).
Skype uses this. (Actually I'm not 100% sure it's called speex, but
GIPS makes it, and it's probably closely related).
> which iLBC doesn't do. I've only tested iLBC once, but I've found that
> Speex has a better quality for the same bit-rate (or lower bit-rate
> the same quality). This is mainly due to the fact that iLBC is
> to encode frames independently (more on this below). Even from their
> site, you see that even at 13.3 or 15 kbps (they don't specify which),
> they have the same quality as G.729A at 8 kbps.
The two different bitrates are just the difference between 30ms and
20ms frame sizes; you use a bit more bps with the 20ms frames.
> Now, their point is that since each frame is independent, the codec is
> more robust to packet losses which is good for VoIP. However, in my
> opinion (and that of others) is that the price in terms of bit-rate is
> too high and you might as well just add redundancy by transmitting
> packets more than once (as proposed in
> http://www.icassp2004.com/Papers/viewpapers.asp?papernum=3280 ). For
> instance, if it goes to 20% packet loss, then transmitting 8 kbps
> packets twice (4% effective loss) will be much better than iLBC at 15
I think you'd have to look at how Speex (using PLC) compares to iLBC
(using PLC) to make an accurate comparison here..
> Regarding CPU utilization, I have no idea what iLBC requires. For a
> PC I
> don't think it actually matters and for embedded systems, then you
> to pay for a fixed-point iLBC license (Speex includes the fixed-
> point in
> the same code).
since there's so many speex options, it depends on the options you
choose. Asterisk presently has poor defaults, and most people link
against speex-1.0 code. If you use the latest speex code, and use
SSE optimizations, and complexity 2, you get very comparably
performance from speex as compared to iLBC. The iLBC reference code
is not well optimized, though.
More information about the Speex-dev