ext/lame/gstlame.c: made source pad link function check if sinkpad is ok..fixes the...
authorZaheer Abbas Merali <zaheerabbas@merali.org>
Thu, 12 Aug 2004 16:12:00 +0000 (16:12 +0000)
committerZaheer Abbas Merali <zaheerabbas@merali.org>
Thu, 12 Aug 2004 16:12:00 +0000 (16:12 +0000)
Original commit message from CVS:
2004-08-12  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

* ext/lame/gstlame.c: (gst_lame_src_link):
made source pad link function check if sinkpad is ok..fixes the problem
where core fixates the output rate of lame stupidly

ext/lame/gstlame.c

index ca06874..29d260a 100644 (file)
@@ -353,7 +353,7 @@ gst_lame_src_link (GstPad * pad, const GstCaps * caps)
   GstLame *lame;
   gint out_samplerate;
   GstStructure *structure;
-  GstCaps *othercaps, *channelcaps;
+  GstCaps *othercaps, *channelcaps, *ratecaps;
   GstPadLinkReturn result;
 
   lame = GST_LAME (gst_pad_get_parent (pad));
@@ -363,6 +363,16 @@ gst_lame_src_link (GstPad * pad, const GstCaps * caps)
       !gst_structure_get_int (structure, "channels", &lame->num_channels))
     g_return_val_if_reached (GST_PAD_LINK_REFUSED);
 
+  /* try sample rate */
+  ratecaps =
+      gst_caps_new_simple ("audio/x-raw-int",
+      "channels", G_TYPE_INT, lame->num_channels,
+      "rate", G_TYPE_INT, out_samplerate, NULL);
+  result = gst_pad_try_set_caps (lame->srcpad, ratecaps);
+  gst_caps_free (ratecaps);
+  if (GST_PAD_LINK_FAILED (result))
+    return result;
+
   if (lame_set_out_samplerate (lame->lgf, out_samplerate) != 0)
     return GST_PAD_LINK_REFUSED;