[Speex-dev] Error while decoding the audio file.

Rannes Ahmed raneez_n at yahoo.com
Thu Mar 8 09:36:13 PST 2012

The code i used for decoding is given below:

#include <jni.h>
#include <stdio.h>
#include "speex/speex.h"

 #define FRAME_SIZE 160

void Java_com_m2_iSmartDm_ISmartDMActivity_spxDec(JNIEnv * env, jobject jobj,jstring dir1,jstring dir2)
    const char *inFile= (*env)->GetStringUTFChars(env,dir1,0);
    const char *outFile= (*env)->GetStringUTFChars(env,dir2,0);
    FILE *fin;
    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*/
  speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp);

  fin = fopen(inFile, "r");


  while (1)
   /*Read the size encoded by sampleenc, this part will likely be
   different in your application*/
   fread(&nbBytes, sizeof(int), 1, fin);
   if (feof(stdin))

   /*Read the "packet" encoded by sampleenc*/
   fread(cbits, 1, nbBytes, fin);

   /*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++)

     /*Write the decoded audio to file*/
      fwrite(out, sizeof(short), FRAME_SIZE, fout);

  /*Destroy the decoder state*/
   /*Destroy the bit-stream truct*/

Please check this code and correct me. Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20120308/797395ef/attachment.htm 

More information about the Speex-dev mailing list