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

Itay Chamiel ItayC at mangodsp.com
Thu Aug 17 00:31:26 PDT 2006


Jean-Marc,

I am trying these things, but the main problem that has been bothering
me recently is that the fixed-point algorithm works "sometimes". Meaning
that sometimes it will work well, and other times it will not work at
all.

I think I've found the source of the problem. The speex_alloc()
function, called by speex_echo_state_init(), calls calloc() and returns
a zeroed array. On the other hand, the TI implementation (as it is if
you don't change the MANUAL_ALLOC define) replaces speex_alloc() with a
different version that doesn't use the heap but only allocates memory
from a large application-supplied memory block. Nothing zeroes this
memory, and there is no hint in the comments (ti\user_misc.h, lines
36-46) to let me know that the block must be zeroed externally. I
believe this should be clarified in these comments, or perhaps instead
add a memset in speex_alloc() in ti\user_misc.h to zero the memory.

Now that I'm zeroing this block in my initialization, everything seems
to be working much more consistently.

Thanks,

-Itay


More information about the Speex-dev mailing list