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/
Le jeudi 08 juin 2006 ? 18:55 +0200, Andrzej Fien a ?crit :> 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:...> 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 ); > } > ...This is quite surprising. Can you reproduce the problem using only testecho? What happens on a PC with exactly the same options? Is the infinite loop the do{} while; one above or is it an infinite recustion calling kf_work (which should eventually crash). Does the program eventually crashes or does it loop forever? Jean-Marc
> > 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: >... > > 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 ); > > } > > ... > >This is quite surprising. Can you reproduce the problem using only >testecho? What happens on a PC with exactly the same options? Is the >infinite loop the do{} while; one above or is it an infinite recustion >calling kf_work (which should eventually crash). Does the program >eventually crashes or does it loop forever? > > Jean-MarcHello, The infinite loop is made by calling kf_work endless. That of cource crashes the program. If you want I can give you my data which I use in test program. Regards Andre _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
>Is that data-dependent (if so, I'd like to have that data)? I would >assume the behaviour is the same on all data. Have you been able to >reproduce it on a PC with testecho? > > Jean-MarcWhat is testecho ? Is it a file with 16bit voice samples ? Where is the file located ?