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 _______________________________________________ --Bandwidth and Colocation provided by Easynews.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev
