| 
							- #include <speex/speex.h>
 - #include <stdio.h>
 - 
 - /*The frame size in hardcoded for this sample code but it doesn't have to be*/
 - #define FRAME_SIZE 160
 - int main(int argc, char **argv)
 - {
 -    char *outFile;
 -    FILE *fout;
 -    /*Holds the audio that will be written to file (16 bits per sample)*/
 -    short out[FRAME_SIZE];
 -    /*Speex handle samples as float, so we need an array of floats*/
 -    float output[FRAME_SIZE];
 -    char cbits[200];
 -    int nbBytes;
 -    /*Holds the state of the decoder*/
 -    void *state;
 -    /*Holds bits so they can be read and written to by the Speex routines*/
 -    SpeexBits bits;
 -    int i, tmp;
 - 
 -    /*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);
 - 
 -    outFile = argv[1];
 -    fout = fopen(outFile, "w");
 - 
 -    /*Initialization of the structure that holds the bits*/
 -    speex_bits_init(&bits);
 -    while (1)
 -    {
 -       /*Read the size encoded by sampleenc, this part will likely be 
 -         different in your application*/
 -       fread(&nbBytes, sizeof(int), 1, stdin);
 -       fprintf (stderr, "nbBytes: %d\n", nbBytes);
 -       if (feof(stdin))
 -          break;
 -       
 -       /*Read the "packet" encoded by sampleenc*/
 -       fread(cbits, 1, nbBytes, stdin);
 -       /*Copy the data into the bit-stream struct*/
 -       speex_bits_read_from(&bits, cbits, nbBytes);
 - 
 -       /*Decode the data*/
 -       speex_decode(state, &bits, output);
 - 
 -       /*Copy from float to short (16 bits) for output*/
 -       for (i=0;i<FRAME_SIZE;i++)
 -          out[i]=output[i];
 - 
 -       /*Write the decoded audio to file*/
 -       fwrite(out, sizeof(short), FRAME_SIZE, fout);
 -    }
 -    
 -    /*Destroy the decoder state*/
 -    speex_decoder_destroy(state);
 -    /*Destroy the bit-stream truct*/
 -    speex_bits_destroy(&bits);
 -    fclose(fout);
 -    return 0;
 - }
 
 
  |