[Speex-dev] problem: The decoded frame is not as the original one
Mashal al-shboul
shboul8989 at yahoo.com
Sat Mar 10 11:20:04 PST 2012
Hi All,
i need your help in determining the problem in the following sample code (taken from speex manual) for fixed point encoding.
i tested encoding a 160 sample frame and then decoding it back But The problem is that the decoded frame is totally different from the original frame(see output below).What is the possible reason for this?.thanks for any help
#include<stdio.h>
#include"intel16.h"
#include <speex/speex.h>
#define FRAME_SIZE 160
#define MAX_NB_BYTES 25
SpeexBits bits;
void *enc_state;
int quality=4;
int nbBytes;
int byte_ptr;
int frame_size;
short frame[FRAME_SIZE];
char outBuffer[20];
SpeexBits decBits;
void *dec_state;
short decFrame[FRAME_SIZE];
/*===========END ===============================*/
int z=0;
int frame_size;
int main (int argc,char **argv)
{
for( z=0;z<160;z++)
{
frame[z]=intel_theme[z]; //array of short from "intel16" header file
}
printf("\n =================================== \n");
for( z=0;z<160;z++)
{
printf("%i",frame[z]);
printf (" ");
}
/*===============================ENCODING==============================================*/
speex_bits_init(&bits);
enc_state = speex_encoder_init(&speex_nb_mode);
speex_encoder_ctl(enc_state,SPEEX_GET_FRAME_SIZE,&frame_size);
speex_encoder_ctl(enc_state,SPEEX_SET_QUALITY,&quality);
speex_bits_reset(&bits);
//-----------TWO CALLS FOR ENCODING-------------------
speex_encode_int(enc_state, frame, &bits); // encoding from frame to &bits
nbBytes = speex_bits_write(&bits, outBuffer, MAX_NB_BYTES); //writing from &bits to outBuffer
//----------------------------------------------------
speex_bits_destroy(&bits);
speex_encoder_destroy(enc_state);
printf("\n outBuffer: ");
for(z=0;z<20;z++)
{
printf("%c",outBuffer[z]);
}
printf("\n \n");
/*===============================END OF ENCODING=========================================*/
/*===============================DECODING==============================================*/
speex_bits_init(&decBits);
dec_state=speex_decoder_init(&speex_nb_mode);
speex_decoder_ctl(dec_state, SPEEX_GET_FRAME_SIZE, &frame_size);
//-----------TWO CALLS FOR DECODING-------------------
speex_bits_read_from(&decBits,outBuffer,nbBytes);
speex_decode_int(dec_state,&decBits,decFrame);
//----------------------------------------------------
printf("\n BUFFER DECODED BACK \n");
for(z=0;z<160;z++)
{
printf("%i",decFrame[z]);
printf (" ");
}
speex_bits_destroy(&decBits);
speex_decoder_destroy(dec_state);
/*===============================END OF DECODING==============================================*/
printf("\n nbBytes: ");
printf("%i",nbBytes);
printf("\n frame_size= ");
printf("%i",frame_size);
printf ("\n");
//-----------------
printf("end of run!");
return 0;
}
OUTPUT:
//the original frame
1 -512 16384 512 -768 -2048 -1280 256 -1024 12288 0 8192 253 256 -768 12288 0 -16 -768 -512 -1 0 -512 -768 -1536 -512 -512 -768 16384 0 8192 -512 16384 512 -768 -2048 -1280 256 -1024 12288 0 8192 253 256 -768 12288 0 -16 -768 -512 -1 0 -512 -768 -1536 -512 -512 -768 16384 0 8192 -512 16384 512 -768 -2048 -1280 256 -1024 12288 0 8192 253 256 -768 12288 0 -16 -768 -512 -1 0 -512 -768 -1536 -512 -512 -768 16384 0 8192 -512 16384 512 -768 -2048 -1280 256 -1024 12288 0 8192 253 256 -768 12288 0 -16 -768 -512 -1 0 -512 -768 -1536 -512 -512 -768 16384 0 8192 -512 16384 512 -768 -2048 -1280 256 -1024 12288 0 8192 253 256 -768 12288 0 -16 -768 -512 -1 0 -512 -768 -1536 -512
-512 -768 16384 0 -1 0 -512 -768 -1536 -512 -512 -768 16384 -1
===================================
outBuffer: �9�p�C��m�Cx6��
//the decoded frame .totally different
BUFFER DECODED BACK
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2838 -3982 4801 -4136 432 -1945 610 1035 -1090 2752 -558 1431 -2320 -1016 789 5084 -2395 -2916 -225 -311 -703 586 1110 -557 -1152 1096 229 425 5825 -933 3922 -6289 7423 -6636 -793 -2123 -354 991 -1947 3958 -1070 1380 -2120 -2777 -679 9010 -2451 -4210 -1845 229 -1687 317 1443 -1355 -2818 214 721 -313 9997 -60 3489 -5953 9277 -6990 -2716 -1642 -792 477 -2417 5801 -1200 1055 -1744 -2927 -2053 10273 -1913 -4342 -2718 427
nbBytes: 20
frame_size= 160
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20120310/efd2a931/attachment.htm
More information about the Speex-dev
mailing list