[Speex-dev] Echo canceller problem

Andrzej Fien fien112 at hotmail.com
Thu Jun 8 09:55:24 PDT 2006


Hello everybody.
I have the same problem like you. I use ARM microcontroller too.
Here is the list of all functions called by speex_echo_cancel until goes 
into infinite loop:

speex_echo_cancel()
   |
spx_fft
   |
kiss_fftr
   |
kiss_fft
   |
kiss_fft_stride
   |
kf_work

Function kf_work looks like:

static void kf_work(kiss_fft_cpx * Fout, const kiss_fft_cpx * f, const 
size_t fstride, int in_stride, int * factors, const kiss_fft_cfg st)
{
  kiss_fft_cpx * Fout_beg=Fout;
  const int p=*factors++; 		// the radix
  const int m=*factors++; 		// stage's fft length/p
  const kiss_fft_cpx * Fout_end = Fout + p*m;
  if(m==1)
  {
    do
    {
      *Fout = *f;
      f += fstride*in_stride;
    }
    while(++Fout != Fout_end );
  }
  else
  {
    do
    {
      kf_work(Fout , f, fstride*p, in_stride, factors,st);		// <---------- 
here this function calls itself and that's why goes infinite
      f += fstride*in_stride;
    }
    while( (Fout += m) != Fout_end );
  }
  ...
  ...

If anybody knows how to work around this problem please help.

Regards
Andre

_________________________________________________________________
FREE pop-up blocking with the new MSN Toolbar - get it now! 
http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/



More information about the Speex-dev mailing list