mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 20:21:24 +00:00
inputselector: install an acceptcaps function
Install a custom acceptcaps function instead of using the default expensive
check. We accept whatever downstream accepts so we pass along the acceptcaps
call to the downstream peer.
Merged from gst-plugins-base, 5b72f2adf9
.
This commit is contained in:
parent
b09bf81f15
commit
7c7acac0db
1 changed files with 18 additions and 0 deletions
|
@ -149,6 +149,7 @@ static gint64 gst_selector_pad_get_running_time (GstSelectorPad * pad);
|
||||||
static void gst_selector_pad_reset (GstSelectorPad * pad);
|
static void gst_selector_pad_reset (GstSelectorPad * pad);
|
||||||
static gboolean gst_selector_pad_event (GstPad * pad, GstEvent * event);
|
static gboolean gst_selector_pad_event (GstPad * pad, GstEvent * event);
|
||||||
static GstCaps *gst_selector_pad_getcaps (GstPad * pad);
|
static GstCaps *gst_selector_pad_getcaps (GstPad * pad);
|
||||||
|
static gboolean gst_selector_pad_acceptcaps (GstPad * pad, GstCaps * caps);
|
||||||
static GstIterator *gst_selector_pad_iterate_linked_pads (GstPad * pad);
|
static GstIterator *gst_selector_pad_iterate_linked_pads (GstPad * pad);
|
||||||
static GstFlowReturn gst_selector_pad_chain (GstPad * pad, GstBuffer * buf);
|
static GstFlowReturn gst_selector_pad_chain (GstPad * pad, GstBuffer * buf);
|
||||||
static GstFlowReturn gst_selector_pad_bufferalloc (GstPad * pad,
|
static GstFlowReturn gst_selector_pad_bufferalloc (GstPad * pad,
|
||||||
|
@ -465,6 +466,21 @@ gst_selector_pad_getcaps (GstPad * pad)
|
||||||
return caps;
|
return caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gst_selector_pad_acceptcaps (GstPad * pad, GstCaps * caps)
|
||||||
|
{
|
||||||
|
GstInputSelector *sel;
|
||||||
|
gboolean res;
|
||||||
|
|
||||||
|
sel = GST_INPUT_SELECTOR (gst_pad_get_parent (pad));
|
||||||
|
|
||||||
|
GST_DEBUG_OBJECT (sel, "Checking acceptcaps of srcpad peer");
|
||||||
|
res = gst_pad_peer_accept_caps (sel->srcpad, caps);
|
||||||
|
gst_object_unref (sel);
|
||||||
|
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_selector_pad_bufferalloc (GstPad * pad, guint64 offset,
|
gst_selector_pad_bufferalloc (GstPad * pad, guint64 offset,
|
||||||
guint size, GstCaps * caps, GstBuffer ** buf)
|
guint size, GstCaps * caps, GstBuffer ** buf)
|
||||||
|
@ -1247,6 +1263,8 @@ gst_input_selector_request_new_pad (GstElement * element,
|
||||||
GST_DEBUG_FUNCPTR (gst_selector_pad_event));
|
GST_DEBUG_FUNCPTR (gst_selector_pad_event));
|
||||||
gst_pad_set_getcaps_function (sinkpad,
|
gst_pad_set_getcaps_function (sinkpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_selector_pad_getcaps));
|
GST_DEBUG_FUNCPTR (gst_selector_pad_getcaps));
|
||||||
|
gst_pad_set_acceptcaps_function (sinkpad,
|
||||||
|
GST_DEBUG_FUNCPTR (gst_selector_pad_acceptcaps));
|
||||||
gst_pad_set_chain_function (sinkpad,
|
gst_pad_set_chain_function (sinkpad,
|
||||||
GST_DEBUG_FUNCPTR (gst_selector_pad_chain));
|
GST_DEBUG_FUNCPTR (gst_selector_pad_chain));
|
||||||
gst_pad_set_iterate_internal_links_function (sinkpad,
|
gst_pad_set_iterate_internal_links_function (sinkpad,
|
||||||
|
|
Loading…
Reference in a new issue