speexdec: allow for unknown varying number of frames per buffer

In particular, this caters for RTP payloads with multiple frames
per packet.
This commit is contained in:
Mark Nauwelaerts 2009-09-18 11:53:12 +02:00
parent 35f9efac88
commit 50c41acdff

View file

@ -655,7 +655,7 @@ speex_dec_chain_parse_data (GstSpeexDec * dec, GstBuffer * buf,
/* send data to the bitstream */
speex_bits_read_from (&dec->bits, (char *) data, size);
fpp = dec->header->frames_per_packet;
fpp = 0;
bits = &dec->bits;
GST_DEBUG_OBJECT (dec, "received buffer of size %u, fpp %d", size, fpp);
@ -677,8 +677,9 @@ speex_dec_chain_parse_data (GstSpeexDec * dec, GstBuffer * buf,
}
/* now decode each frame */
for (i = 0; i < fpp; i++) {
/* now decode each frame, catering for unknown number of them (e.g. rtp) */
for (i = 0; (!fpp || i < fpp) && (!bits || speex_bits_remaining (bits) > 0);
i++) {
GstBuffer *outbuf;
gint16 *out_data;
gint ret;