ext/lame/gstlame.c: Correctly set number of channels when using mono-encoding mode...
authorMark Nauwelaerts <manauw@syknet.be>
Mon, 14 Jan 2008 09:17:47 +0000 (09:17 +0000)
committerSebastian Dröge <slomo@circular-chaos.org>
Mon, 14 Jan 2008 09:17:47 +0000 (09:17 +0000)
Original commit message from CVS:
Patch by: Mark Nauwelaerts <manauw at syknet dot be>
* ext/lame/gstlame.c: (gst_lame_sink_setcaps),
(gst_lame_sink_event):
Correctly set number of channels when using mono-encoding mode
and fix the duration calculation of the EOS buffer.

ext/lame/gstlame.c

index a341ef5..cff4add 100644 (file)
@@ -550,7 +550,7 @@ gst_lame_sink_setcaps (GstPad * pad, GstCaps * caps)
       gst_caps_new_simple ("audio/mpeg",
       "mpegversion", G_TYPE_INT, 1,
       "layer", G_TYPE_INT, 3,
-      "channels", G_TYPE_INT, lame->num_channels,
+      "channels", G_TYPE_INT, lame->mode == MONO ? 1 : lame->num_channels,
       "rate", G_TYPE_INT, out_samplerate, NULL);
 
   /* and use these caps */
@@ -974,8 +974,8 @@ gst_lame_sink_event (GstPad * pad, GstEvent * event)
         if (size > 0 && lame->last_flow == GST_FLOW_OK) {
           gint64 duration;
 
-          duration = gst_util_uint64_scale_int (size, GST_SECOND,
-              2 * lame->samplerate * lame->num_channels);
+          duration = gst_util_uint64_scale_int (size, 8 * GST_SECOND,
+              1000 * lame->bitrate);
 
           if (lame->last_ts == GST_CLOCK_TIME_NONE) {
             lame->last_ts = lame->eos_ts;