diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-06-09 18:37:43 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-06-19 11:02:00 +0200 |
commit | 09094f2f3d1a0991345dd67787c18120da8bd73e (patch) | |
tree | ad311cff8b945166f43fdba5116d070c0be8245e | |
parent | 80d5bd7168172cc9dc90c1ab1a571126a2186e18 (diff) |
shapewipe: Proxy bufferalloc on the video sinkpad
-rw-r--r-- | gst/shapewipe/gstshapewipe.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gst/shapewipe/gstshapewipe.c b/gst/shapewipe/gstshapewipe.c index 61aaf476a..e8d8207d0 100644 --- a/gst/shapewipe/gstshapewipe.c +++ b/gst/shapewipe/gstshapewipe.c @@ -67,6 +67,8 @@ static gboolean gst_shape_wipe_video_sink_event (GstPad * pad, static gboolean gst_shape_wipe_video_sink_setcaps (GstPad * pad, GstCaps * caps); static GstCaps *gst_shape_wipe_video_sink_getcaps (GstPad * pad); +static GstFlowReturn gst_shape_wipe_video_sink_bufferalloc (GstPad * pad, + guint64 offset, guint size, GstCaps * caps, GstBuffer ** buf); static GstFlowReturn gst_shape_wipe_mask_sink_chain (GstPad * pad, GstBuffer * buffer); static gboolean gst_shape_wipe_mask_sink_event (GstPad * pad, GstEvent * event); @@ -165,6 +167,8 @@ gst_shape_wipe_init (GstShapeWipe * self, GstShapeWipeClass * g_class) GST_DEBUG_FUNCPTR (gst_shape_wipe_video_sink_setcaps)); gst_pad_set_getcaps_function (self->video_sinkpad, GST_DEBUG_FUNCPTR (gst_shape_wipe_video_sink_getcaps)); + gst_pad_set_bufferalloc_function (self->video_sinkpad, + GST_DEBUG_FUNCPTR (gst_shape_wipe_video_sink_bufferalloc)); gst_element_add_pad (GST_ELEMENT (self), self->video_sinkpad); self->mask_sinkpad = @@ -265,6 +269,25 @@ gst_shape_wipe_reset (GstShapeWipe * self) gst_segment_init (&self->segment, GST_FORMAT_TIME); } +static GstFlowReturn +gst_shape_wipe_video_sink_bufferalloc (GstPad * pad, guint64 offset, guint size, + GstCaps * caps, GstBuffer ** buf) +{ + GstShapeWipe *self = GST_SHAPE_WIPE (gst_pad_get_parent (pad)); + GstFlowReturn ret = GST_FLOW_OK; + + GST_DEBUG_OBJECT (pad, "Allocating buffer with offset 0x%" G_GINT64_MODIFIER + "x and size %u with caps: %" GST_PTR_FORMAT, offset, size, caps); + + *buf = NULL; + + ret = gst_pad_alloc_buffer (self->srcpad, offset, size, caps, buf); + + gst_object_unref (self); + + return ret; +} + static gboolean gst_shape_wipe_video_sink_setcaps (GstPad * pad, GstCaps * caps) { |