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? Jean-Marc> Thanks, > > -itay > > ________________________________ > > From: Jim Crichton [mailto:jim.crichton@comcast.net] > Sent: Tuesday, August 15, 2006 3:39 PM > To: Itay Chamiel; speex-dev@xiph.org > Subject: Re: [Speex-dev] AEC on a TI C6x - has no effect > > > Itay, > > I tested on C6x in May with build 11343 and 11398, and it worked fine. > I just ran the same test with build 11768, and there was no > cancellation, just as you saw. I will try to track this down in the > next day or two. In the meantime, I suggest that you try testing with > 11398. > > - Jim > _______________________________________________ > Speex-dev mailing list > Speex-dev@xiph.org > http://lists.xiph.org/mailman/listinfo/speex-dev >
Jean-Marc, 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, -itay -----Original Message----- From: Jean-Marc Valin [mailto:jean-marc.valin@usherbrooke.ca] Sent: Tuesday, August 15, 2006 5:53 PM To: Itay Chamiel Cc: Jim Crichton; speex-dev@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? Jean-Marc
> 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:Can you check if you see the same difference between fixed-point and floating-point in 1.1.12?> 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.Try using smaller frames. If your system uses frames of 196, try splitting that in two and using a frame size of 96 for the AEC. This should improve things. Also, a tail length of 200 might be a bit short.> 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.Care to send me (small) files where there's a big difference. In the samples I have, the fixed-point is actually pretty close to the float version. Maybe it's only because of the larger frame size (FFT quantization noise increases with frame size). Jean-Marc