summaryrefslogtreecommitdiff
path: root/gst
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-10-27 15:23:00 +0100
committerSebastian Dröge <sebastian.droege@collabora.co.uk>2009-10-29 11:17:17 +0100
commit141e06b547d8153880446ec3bac4a6933b9e9b19 (patch)
tree5b6ce79d650a134cdbced9ca3f07858bec9e0ecc /gst
parentf766708c17aa0f99f963f91711ccc089e819308f (diff)
queue2: add custom acceptcaps function
Diffstat (limited to 'gst')
-rw-r--r--gst/playback/gstqueue2.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/gst/playback/gstqueue2.c b/gst/playback/gstqueue2.c
index 57eebc0c6a..1fe9a22d79 100644
--- a/gst/playback/gstqueue2.c
+++ b/gst/playback/gstqueue2.c
@@ -353,6 +353,7 @@ static gboolean gst_queue_handle_src_event (GstPad * pad, GstEvent * event);
static gboolean gst_queue_handle_src_query (GstPad * pad, GstQuery * query);
static GstCaps *gst_queue_getcaps (GstPad * pad);
+static gboolean gst_queue_acceptcaps (GstPad * pad, GstCaps * caps);
static GstFlowReturn gst_queue_get_range (GstPad * pad, guint64 offset,
guint length, GstBuffer ** buffer);
@@ -465,6 +466,8 @@ gst_queue_init (GstQueue * queue, GstQueueClass * g_class)
GST_DEBUG_FUNCPTR (gst_queue_handle_sink_event));
gst_pad_set_getcaps_function (queue->sinkpad,
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
+ gst_pad_set_acceptcaps_function (queue->sinkpad,
+ GST_DEBUG_FUNCPTR (gst_queue_acceptcaps));
gst_pad_set_bufferalloc_function (queue->sinkpad,
GST_DEBUG_FUNCPTR (gst_queue_bufferalloc));
gst_element_add_pad (GST_ELEMENT (queue), queue->sinkpad);
@@ -481,6 +484,8 @@ gst_queue_init (GstQueue * queue, GstQueueClass * g_class)
GST_DEBUG_FUNCPTR (gst_queue_src_checkgetrange_function));
gst_pad_set_getcaps_function (queue->srcpad,
GST_DEBUG_FUNCPTR (gst_queue_getcaps));
+ gst_pad_set_acceptcaps_function (queue->srcpad,
+ GST_DEBUG_FUNCPTR (gst_queue_acceptcaps));
gst_pad_set_event_function (queue->srcpad,
GST_DEBUG_FUNCPTR (gst_queue_handle_src_event));
gst_pad_set_query_function (queue->srcpad,
@@ -550,6 +555,21 @@ gst_queue_finalize (GObject * object)
G_OBJECT_CLASS (parent_class)->finalize (object);
}
+static gboolean
+gst_queue_acceptcaps (GstPad * pad, GstCaps * caps)
+{
+ GstQueue *queue;
+ GstPad *otherpad;
+ gboolean result;
+
+ queue = GST_QUEUE (GST_PAD_PARENT (pad));
+
+ otherpad = (pad == queue->srcpad ? queue->sinkpad : queue->srcpad);
+ result = gst_pad_peer_accept_caps (otherpad, caps);
+
+ return result;
+}
+
static GstCaps *
gst_queue_getcaps (GstPad * pad)
{