[Speex-dev] AEC on a TI C6x - has no effect

Itay Chamiel ItayC at mangodsp.com
Wed Aug 16 02:15:04 PDT 2006


I followed your advice on running the trivial case. The float version started cancelling sounds out within a second. The fixed point version also worked, but took a little longer before the effect was noticeable. Since I now realized the fixed point version might need a little more tweaking than the float version, I started modifying some things and ended up with the following changes:

1. Buffered up the "play" buffer by one frame (192 samples on our system), such that the delay between the play and rec is reduced from about 350 samples (43 msec) to a little under 200 samples. (yes I realize 350-192 != 200, there are slight variations between runs.) I didn't buffer by 2 frames because this would run the risk of a negative delay value.
2. Reduced the filter size from 800 or 400 (which I was using before) to 200.

With these changes the fixed point version is working well. I guess the conclusion we can reach here is not that the fixed point version doesn't work, but that it is not *equivalent* to the floating point version. The floating point version is better at adapting in somewhat harder conditions (larger delay), and can adapt in conditions where the fixed point version won't adapt at all.

Thanks for your help,


-----Original Message-----
From: Jean-Marc Valin [mailto:jean-marc.valin at usherbrooke.ca] 
Sent: Tuesday, August 15, 2006 5:53 PM
To: Itay Chamiel
Cc: Jim Crichton; speex-dev at xiph.org
Subject: Re: [Speex-dev] AEC on a TI C6x - has no effect

Itay Chamiel a écrit :
> Hi Jim,
> I've tried both 11343 and 11398 (after fixing a couple of compiler
> errors) and annoyingly enough I get the same results as the current
> build: float works, fixed doesn't. I also saw the same phenomenon 
> where the st->W and st->PHI arrays are all zeroes in fixed point mode.
> I'm still optimistic though, as you've seen the same problem I've seen.

Check if Jim email solves the problem. Otherwise, can you test the trivial case where you send the same data for the mic and the echo? Does it cancel anything?


More information about the Speex-dev mailing list