Hi, what is the good way to encode / decode multiple frames in packet ? I
read that I must do multiple call to encode and thats it. But when I'm
trying to decode,, it doesn't work. Maybe, the problem is my decode
function.
Here is my encode function
void ms_speex_enc_process(MSSpeexEnc *obj)
{
....
Do I need to increase gran value to 640 or read / encode (2 times)
ms_fifo_get_read_ptr(inf,gran,(void**)&input); (gran = 320)
g_return_if_fail(input!=NULL);
/* encode */
speex_bits_reset(&obj->bits);
speex_encode_int(obj->speex_state,(short*)input,&obj->bits);
m=ms_message_new(speex_bits_nbytes(&obj->bits));
//speex_bits_insert_terminator(&obj->bits);
m->size=speex_bits_write(&obj->bits,m->data,m->size);
ms_queue_put(outq,m);
}
And my decode function
void ms_speex_dec_process(MSSpeexDec *obj)
{
....
m=ms_queue_get(inq);
g_return_if_fail(m!=NULL);
speex_bits_reset(&obj->bits);
ms_fifo_get_write_ptr(outf,gran,(void**)&output);
g_return_if_fail(output!=NULL);
if (m->data!=NULL){
speex_bits_read_from(&obj->bits,m->data,m->size);
/* decode */
int ret = 1;
while( ret != -1 && speex_bits_remaining(&obj->bits) >
0 )
{
ret
speex_decode_int(obj->speex_state,&obj->bits,(short*)output);
}
}else{
/* we have a missing packet */
speex_decode_int(obj->speex_state,NULL,(short*)output);
}
ms_message_destroy(m);
}
Jonathan Blais
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.xiph.org/pipermail/speex-dev/attachments/20060210/6fb413d7/attachment.htm