From bdfb4b46d746ef298fcf44260879c342af4cafa3 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 21 Oct 2009 16:24:29 -0400 Subject: [PATCH] inputselector: set output caps before pushing Set the output caps on the srcpad before pushing the buffer because else core will do a rather expensive check to see if we can actually accept those caps on the srcpad. --- gst/playback/gstinputselector.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gst/playback/gstinputselector.c b/gst/playback/gstinputselector.c index 546656a..c0b96aa 100644 --- a/gst/playback/gstinputselector.c +++ b/gst/playback/gstinputselector.c @@ -562,6 +562,7 @@ gst_selector_pad_chain (GstPad * pad, GstBuffer * buf) GstClockTime end_time, duration; GstSegment *seg; GstEvent *close_event = NULL, *start_event = NULL; + GstCaps *caps; sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad)); selpad = GST_SELECTOR_PAD_CAST (pad); @@ -648,6 +649,11 @@ gst_selector_pad_chain (GstPad * pad, GstBuffer * buf) GST_DEBUG_OBJECT (pad, "Forwarding buffer %p from pad %s:%s", buf, GST_DEBUG_PAD_NAME (pad)); + if ((caps = GST_BUFFER_CAPS (buf))) { + if (GST_PAD_CAPS (sel->srcpad) != caps) + gst_pad_set_caps (sel->srcpad, caps); + } + res = gst_pad_push (sel->srcpad, buf); done: -- 2.7.4