[Speex-dev] ARM7 Speex decoder

Jean-Marc Valin Jean-Marc.Valin at USherbrooke.ca
Mon Mar 20 15:12:19 PST 2006

> I ported the speex decoder in LPC2000 ARM7 family. 
> Because I fetched the .ogg file from and external MMC card, I can only red a limited memory block 
> 1) Can I decode only a block of a speex file at time ?

Of course. That's actually the *only* way to do it.

>             lb = file_read(&file, nbBytes, (void *)cbits);

This is *definitely* not how you read an Ogg file.
> 2) What is the third parameter of the speex_bits_read_from function ? Can I put there a fraction of the ogg. file size ?

It just tells how many bytes you want to copy in the SpeexBits struct.

> I red the frame size from the speex_decoder_ctl "nbBytes", and than I use it to get a frame from the input file. Is it right ?

I don't understand what you're doing exactly, but it's certainly not

> 3) With the previous code I get the error message 
> warning: Invalid mode encountered: corrupted stream?
> Any suggestion ? Where I'm wrong ?

Everywhere. Look at sampledec to see how you need to decode.

> 4) Do anyone know if and when will exist a full fixed point version of the speex ? and an optimized version for ARM7 ?

There is. Most of the code is fixed-point already, there's only a
handful of float operations left, mostly in wideband. As for optimizing
for ARM7 (arch 4), you need to configure with --enable-arm4-asm.


More information about the Speex-dev mailing list