[Speex-dev] Decoded output buffer size

Daniele Barzotti
Thu, 15 Apr 2010 08:55:17 -0000

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 15/04/2010 01:30, Conrad Parker wrote:
>
>> But how can I know the size of each speex frame into a multiframe
payload?
>
> use speex_bit_read_from() just once on the packet, then call
> speex_decode() once for each frame.
>
> Conrad.

Thanks for the reply, Conrad.
What is not clear for me (and I didn't found it on the manual) is how to
decode a multi-frame payload.
Once have called speex_bits_read_from, I need a way to know how many
speex frames there are, how can I do this?

I try to use speex_bits_remaining, but after some cycles it returns
always 4.

UINT DecodePayload( char* payload, UINT payload_len )
{
  speex_bits_reset(&spx_bits_);
  speex_bits_read_from(&spx_bits_, payload, payload_len);
  UINT nbBytes = speex_bits_remaining(&spx_bits_);

  while (nbBytes>0)
  {
    speex_decode(spx_state_, &spx_bits_, spx_dec_frame_);
    nbBytes = speex_bits_remaining(&spx_bits_);

    // Save the speex frame into the buffer
    DecOutBuffer_.Write(spx_dec_frame_, spx_frame_size_);
  }
}

Any suggestion?

Thanks,
Daniele.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)

iEYEARECAAYFAkvG1HUACgkQ/l+kMioSZwi/JgCfarhEpOljEFU3/zLrXO1BL+dq
TqUAn2P1YMuqbNz3K80pvP0fJ0JTCFos
=arZ0
-----END PGP SIGNATURE-----