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*/
? tmp=1;
? speex_decoder_ctl(state, SPEEX_SET_ENH, &tmp);
? fin = fopen(inFile, "r");
? fout=fopen(outFile,"w");
? 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, fin);
?? if (feof(stdin))
??? break;
?? /*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++)
???? 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);
?? fclose(fin);
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