[asterisk-dev] M9645: provide zaptel master timing to spans

Hans Petter Selasky hselasky at c2i.net
Wed May 2 12:35:33 MST 2007


On Wednesday 02 May 2007 20:04, Matthew Fredrickson wrote:
> > Just a comment: You should not interrupt at 1ms intervals.
> >
> > For example:
> >
> > The interrupt handler must respond within 1ms for transmission of
> > data. This
> > contradicts to block-processing of sound which might take more than
> > 1ms.
> >
> > The result is that Zaptel will not be able to do echo cancelling from
> > the
> > interrupt thread. Then Zaptel needs another thread that pre-computes
> > the
> > echo, which either adds more delay in the transmission path, or
> > computes the
> > estimated echo too often.
> >
> > Zaptel is in other words not designed for efficiency.
>
> No comment :-)
>
> > If you don't know what a fast echo canceller looks like, have a look
> > here:
> >
> > http://www.turbocat.net/~hselasky/isdn4bsd/sources/new_ec/
>
> I don't have a lot of echo canceler design experience, but after
> glancing at your code, I have this question.  What are you doing an FFT
> for in your echo canceler?  I can see why you'd be concerned with not
> finishing block processing within 1ms if you're doing that in your echo
> canceler.

Because it is much faster, speaking in CPU cycles, to do a FIR filter in the 
sine/cosine frequency domain, than to compute "N" multiplications and 
additions per sample, like a traditional NLMS filter requires.

And the result is _exactly_ the same. Only the adaption process is different.

Assuming that the number of taps is equal to the block size you get that a FIR 
filter is O(N*N), while a FFT based FIR filter is O(log2(N)*N). Do you see 
something :-)

--HPS


More information about the asterisk-dev mailing list