On Thu, 23 Jun 2005, Klaus-Peter Junghanns wrote:
> Am Donnerstag, den 23.06.2005, 12:41 +0200 schrieb Armin Schindler:
> 
> > > I strongly disagree. :-) You dont want to do echo cancelation in
> > > userspace. Especially not on a non-realtime operating system.
> > > To make echo cancelation work it has to be as close to the line
> > > interface as possible. Also the frames have to be as small
> > > as possible. This rules out capi pretty much.
> > 
> > If you don't want echo-canceling in user-space, then neither Asterisk nor
> > any chan_* plugin should do it.
> > 
> > I don't know the zap channel code, but does the zap echo-cancel-code is 
> > inside a kernel module?
> 
> Yes, sir.
> 
> > If yes, then I have to disagree here. Something like 'playing' with 
> > audio-data is nothing the kernel should be concerned with.
> > This belongs in user-space and if you need realtime, then you should use a 
> > realtime OS or use RT-scheduling. Just putting such a code into kernelspace 
> > is a bad idea.
> 
> What is so bad about "playing" with audio-data in kernel space?

Besides preemption or RT-patches, it is not easy (and noboady does it)
to be 'nice' and have a fair scheduling. With such work in kernel, you just
say "I'm at the highest priority, I don't care about others". And that's 
just wrong in the kernel.
Normaly, the kernel just should provide access to the hardware 
and basic functions for interaction with the hardware.

> If you "play" with echo cancelation in user space you will need
> to de-jitter the audio first introducing more and more latency, so
> your echo cancelation becomes way more computationally expensive.

That depends on what scheduling priority this task runs. If you don't want 
to get interrupted by other tasks, then you need a higher priority. 
 
> > So the correct way is either the hardware supports it or the 
> > application knows what to do with the data received, like DTMF.
> > 
> 
> Why should the application have to worry about things like echo
> cancelation?

In the case of Asterisk and echo-cancel, this application is the
position where is makes sense. Otherwise you need a copy of the echo-cancel 
code in each channel driver.

> Zaptel is not only used by Asterisk but also by other
> projects. With EC in kernel space (which gets switched on and off
> by userspace) there is no need to reinvent the EC-wheel for every
> project.

Okay, from that point of view it makes sense. On the other hand, something 
like echo-cancel and DTMF is not channel specific and therefore should not 
be part of that. Or would you add additional codecs into the channel driver?

Armin
_______________________________________________
Asterisk-Users mailing list
Asterisk-Users@lists.digium.com
http://lists.digium.com/mailman/listinfo/asterisk-users
To UNSUBSCRIBE or update options visit:
   http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to