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