[asterisk-dev] iLBC packet loss concealment (was: code-cleanup concerns)

Mike Taht mike.taht at gmail.com
Sun Apr 16 11:29:33 MST 2006


On 4/16/06, Tzafrir Cohen <tzafrir.cohen at xorcom.com> wrote:

> >
> > Questions:
> >
> >  1) Does the iLBC codec code in Asterisk perform Packet Loss
> > Concealment (PLC)?  If so, is it being done in the most optimal way?
> > Is it just in IAX2 or in SIP as well?  (there was an answer on this
> > by Zoa, but it still isn't clear.)
> >
> >  2) Are the higher bitrate patches I've seen scurrying around the SVN
> > branch mailing list currently in TRUNK or still in "experimental test
> > phase"?  (see oej's "test-this-branch", and bug #5084, which really
> > just seems to support G.722 passthrough, and is not a codec
> > implementation)
> >
> >  3) Is this all a moot point until more end devices support iLBC and
> > better PLC? (Hint: I don't think so, since I'd love to terminate all
> > my LD minutes to an Asterisk server with high-bitrate,
> > loss-concealing iLBC instead of just using G.711 like I do today.
> > Bitrates are not my problem; sound quality is my problem, but if I
> > get better than 64kbps for better sound quality then that's a bonus.)
>
> 4-6. Basically The above questions, with s/iLBC/speex/ .


My basic understanding of questions 4 and 6 is - 4) pretty darn good, and 6,
well, there are a ton of speex enabled softphones out there, but few are
doing things "right". Nearly every [expletive deleted] iaxclient based
softphone bundles it's own obsolete version of speex, and none to my
knowledge support wideband.... according to the message below libspeex
should really be optimized on a per processor type and quality settings
basis....

---------- Forwarded message ----------
From: Jean-Marc Valin <Jean-Marc.Valin at usherbrooke.ca>
Date: Apr 16, 2006 4:57 AM
Subject: Re: speex performance & asterisk
To: Mike Taht <mike.taht at gmail.com>

Hi Mike,

I've heard some complaints about the performance of Speex and I think
the main reason is simply sub-optimal compiling/old version. First, I
strongly recommend using the unstable branch (1.1.x), which is much
better and faster than 1.0.x. The most important thing to do is to
configure with --enable-sse and you'll get a big improvement right
there. Also, I recommend the following gcc options:
-O3, -ffast-math, -fprofile-generate (first compilation) with
-fprofile-use (to get final binary), and possibly (YMMV)
-ftree-vectorize.

Have a look at slide 16 of http://people.xiph.org/~jm/LCA_Speex.pdf to
see what kind of performance to expect. To give you an idea, at
complexity 1 (almost as good quality as the default of 2), it's possible
to encode at 8kbps 120x faster than real-time (i.e. 0.8% CPU) on a 2.1
GHz Pentium-M. Given the extra 8 registers it has, the Opteron, should
be really fast at encoding/decoding Speex.



--
Mike Taht
PostCards From the Bleeding Edge
http://the-edge.blogspot.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20060416/ad3af74a/attachment.htm


More information about the asterisk-dev mailing list