speexenc: fix buffer time and duration for multiple frames per packet

This commit is contained in:
Mark Nauwelaerts 2009-09-18 11:43:46 +02:00
parent 0868ddf30f
commit f4482e4ae3

View file

@ -928,10 +928,11 @@ gst_speex_enc_encode (GstSpeexEnc * enc, gboolean flush)
speex_bits_reset (&enc->bits);
GST_BUFFER_TIMESTAMP (outbuf) = enc->start_ts +
gst_util_uint64_scale_int ((enc->frameno_out - 1) * frame_size -
enc->lookahead, GST_SECOND, enc->rate);
GST_BUFFER_DURATION (outbuf) = gst_util_uint64_scale_int (frame_size,
GST_SECOND, enc->rate);
gst_util_uint64_scale_int ((enc->frameno_out -
enc->nframes) * frame_size - enc->lookahead, GST_SECOND, enc->rate);
GST_BUFFER_DURATION (outbuf) =
gst_util_uint64_scale_int (frame_size * enc->nframes, GST_SECOND,
enc->rate);
/* set gp time and granulepos; see gst-plugins-base/ext/ogg/README */
GST_BUFFER_OFFSET_END (outbuf) = enc->granulepos_offset +
((enc->frameno_out) * frame_size - enc->lookahead);