[Speex-dev] AEC on a TI C6x - has no effect
Itay Chamiel
ItayC at mangodsp.com
Mon Aug 14 04:10:14 PDT 2006
Hello all,
I am attempting to integrate the AEC algorithm from Speex into an
RTP-based voice-over-IP application. The application is supposed to
operate on a TI C6412-based board, using Code Composer Studio for
development. Everything seems to be working, but the problem is that
there is no discernible difference in the output, whether the echo
cancel function is called or not.
Let me first give more details about what I'm doing.
Since I'm only interested in AEC (we use a simple a-Law for the audio
compression), I created a lib that only includes the following files,
all from directory \trunk\speex\libspeex:
fftwrap.c
kiss_fft.c
kiss_fftr.c
math_approx.c
mdf.c
misc.c
This appears to be sufficient to call the speex_echo_* functions without
a linker error. I define the preprocessor symbols CONFIG_TI_C6X and
HAVE_CONFIG_H. FIXED_POINT is defined in ti/config.h (also from the
trunk). I am using the latest files from svn, as of last Thursday
(Aug.10).
>From reading the documentation and this mailing list, it seems that I am
doing things correctly. I am using a sample rate of 8kHz and a frame
size of 192 samples (24msec). When looking at the graphs of the buffers
I'm giving as inputs to speex_echo_cancel, there is a delay of about 350
samples (43 msec) between a noise about to be output by the speaker
(given as the echo_frame parameter) and that same sound later picked up
as an echo by the mic (given as input_frame). I've tried filter lengths
of 400, 800 and others, with no noticeable difference.
The call to speex_echo_cancel typically takes 4 to 5 msec, which seems
reasonable. After the algorithm has been running for a while, I can see
within the code that st->adapted = 1. The arrays st->W and st->PHI seem
to be all zeroes, which seems odd. I don't know where else to look to
check whether things are working properly.
Since as I said the echo cancelling is not working, I have these
questions:
1. Is there anything in my setup that seems to be wrong?
2. Is this algorithm tested to work on a C6x? (The included projects
test the codec but not AEC.)
3. Assuming everything is fine up to now, what should I check to try and
find out what's wrong?
Thanks in advance,
-Itay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20060814/81cb3d7e/attachment.htm
More information about the Speex-dev
mailing list