[Speex-dev] ARM7 Speex decoder

pberna at iol.it pberna at iol.it
Mon Mar 20 03:25:18 PST 2006


Dear All

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 ?


    /*Create a new decoder state in narrowband mode*/
    state = speex_decoder_init(&speex_nb_mode);
    /*Set the perceptual enhancement on*/
    tmp=1;
    speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp);

    /* Get frame size */
    speex_decoder_ctl(state, SPEEX_GET_FRAME_SIZE, &nbBytes);

    /*Initialization of the structure that holds the bits*/
    speex_bits_init(&bits);

   do 
          {
            lb = file_read(&file, nbBytes, (void *)cbits);
            /*Copy the data into the bit-stream struct*/

            speex_bits_read_from(&bits, cbits, nbBytes);
            /*Decode the data*/

            speex_decode(state, &bits, output);

            /* now I reder the block */
            render(output);

          } while(lb); /* do */

 
2) What is the third parameter of the speex_bits_read_from function ? Can I put there a fraction of the ogg. file size ?
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 ?

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

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

Thank you
Best Regards
Paolo




More information about the Speex-dev mailing list