From: Steve K. <st...@st...> - 2004-10-20 16:26:41
|
Babar Shafiq wrote: >Hi Steve Kann and list, > >Codec stuff is too cool, Great work Steve. superb codec structured work. > >I tried ulaw,speex,iLBC codecs and updated codecs in ActiveX Control from iaxclient latest CVS. >(iaxclient still have some VC specific issues may I supply patch for VC ?). > > Are your issues only in libiax2? Bill Doll is also working on this (and is on the list, I think). Maybe he can send you his patches, and you could test them? Last time we went through this, the zero-length pointer thing was the problem, but he tells me that MSVC can now do this, as it's part of C99.. >Tested iLBC,Speex and uLaw and they are working great but some little noise filters sort of issues >are remaining may be from my side. > >iLBC is working great but i think it is taking little more of bandwidth how to reduce it ? I am >using iaxclient lib default settings of iLBC. > > I haven't measured this; it should actually use 13kbps + overhead, which should be about 8kbps with it's 30ms frames. >Speex is also working great but it is taking little more of processor but it is only taking about >half of bandwidth as compare to iLBC. voice quality is too good for both iLBC and Speex. > > I'm actually a big fan of speex, and there's a few things to do here: I don't think the CPU usage of speex should be an issue for iaxclient in general, as you're only ever encoding one call, and even unoptimized on slow machines, speex should easily be 10X realtime or so. [maybe not for those using ARM processors and the like]: 1) compile speex to use optimization, and SSE [If you use VC, you'll need to do this stuff yourself]. This will significantly reduce CPU. 2) You can also modify the speex parameters to use a lower complexity, or lower bandwidth, or VBR/ABR. I'll probably add some API or examples for this soon. Lower bandwidth _or_ complexity for speex will reduce CPU usage. 3) You can also reduce upstream bandwidth (i.e. out of iaxclient) for any codec by increasing the minimum frame size. Presently you need to do this by changing this: /* find mimumum frame size */ toRead = 160; /* default */ to something larger (i.e. 320 or 480). This will reduce the overhead a lot. >Also when I apply echo filter I m getting error, AGC and noise filters are working but not able to >use echo :( > > Echo cancellation is experimental, and even more so presently, as some of the codec changes broke it. >Codec negotiation is not yet updated in the CVS ? we can change codec on run time after init ? > > Yes, with the patch I posted the other day. I've got no objections to it, but I also have gotten no good reports. I'll probably commit it soon unless someone speaks up. -SteveK |