More frames in one packet

"Peter Soxberger" <[email protected]>
Newsgroups gmane.comp.audio.compression.speex.devel
Message-ID <[email protected]>
Hi,

I read in the documentation something about how to realize packing more than one encoded frame into a packet. Before I read this, I always encoded every frame seperate and packet them as following together:
[encoded length][encoded frame][encoded length][encoded frame]...

But if I understood the docu correct, it should be easier:
I call speex_encode_int() for every frame until the whole recorded buffer has been encoded. After that I call only once speex_bits_write() and send this data over the network.
The receiver then calls speex_decode_int() (only once I guess, but this isn't mentioned in the manual).

It works if I encode only one frame, but with multiple frames I get strange results (sounds like parts are lost or something like that).

What am I doing wrong? Do I have to call speex_decode_int() for every frame inside the packet? And how can I get the number of bytes speex_decode_int() wrote into the destination buffer?

Here small code snippets of my implementation:

//**********************************************
// Encoding:
short* Frame = (short*)malloc(speex_frame_size);
speex_bits_reset(enc_bits);
for(unsigned int i = 0; RecBufferLen > speex_frame_size * i; i++)
{
	memcpy(Frame, RecBuffer + speex_frame_size * i, speex_frame_size);

	speex_encode_int(enc_state, Frame, enc_bits);
}
free((void*)Frame);
return speex_bits_write(enc_bits, SendBuffer, SendBufferLen);

//**********************************************
//Decoding:
speex_bits_reset(dec_bits);
speex_bits_read_from(dec_bits, RcvBuffer, RcvBufferLen);

return speex_decode_int(dec_state, dec_bits, (spx_int16_t*)DestBuffer);
//**********************************************

Is this correct what I'm doing here?

Thanks for your help!
-- 
Empfehlen Sie GMX DSL Ihren Freunden und Bekannten und wir
belohnen Sie mit bis zu 50,- Euro! https://freundschaftswerbung.gmx.de
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.