[Speex-dev] speex on TI C5x fixed-point DSP

Jean-Marc Valin jean-marc.valin at usherbrooke.ca
Fri Oct 29 21:59:41 PDT 2004

> I have the encoder and decoder running now and have verified that the 
> encoder is bit-exact wrt to the fixed-point code running on x86 for the 
> same 30-second audio sample.  Encode and decode together run in 
> real-time for 8KHz data, complexity=3, on 120MHz C5509 when code and 
> data are all in on-chip SRAM.  I have not tested the wideband codec yet.

Cool! Just curious, how much of the DSP does it take to do that?

> I fixed the problem where extracting bytes from SpeexBits was wrong endian.


> I have not addressed this problem yet.  In my testing all the Speex code 
> and data in the on-chip sram of TI C5509 DSP, and it all fit.  Is 
> compute_weighted_codebook the only routine that looks at the raw 
> codebooks?  If so, I'll take a look at packing the codebooks to save a 
> few KB.

compute_weighted_codebook (and the corresponding decoding function) is
the only function using the codebooks that have "exc" in the name. The
are two other places that use other codebooks.

> Patch is attached.

I looked at the patch. Seems mostly OK, though there are some minor
issues. First, I don't think it's right to say spx_int_32_t=long except
for alpha. This will likely cause problems on Itanium, Power64, SPARC64
and probably x86-64. I suggest either an explicit check for C55xx (and
later others) or a test in configure.ac.

Also, I'm not sure I get your use of "+#ifdef UNUSED" in the SpeexBits
code. Finally, there's a few changes which I think should be removed,
like for speex_alloc, speex_warning, ... same as the "#if 0" for
wideband and other debug stuff. Could you clean the patch and send it
back to me so I can apply it? 


More information about the Speex-dev mailing list