speexenc: fix buffer time and duration for multiple frames per packet
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 18 Sep 2009 09:43:46 +0000 (11:43 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 18 Sep 2009 12:46:38 +0000 (14:46 +0200)
ext/speex/gstspeexenc.c

index 17e1703..60fc1d9 100644 (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);