mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-30 13:41:48 +00:00
pushsrc: make alloc method a vmethod
This commit is contained in:
parent
41bb41616b
commit
4760e1902a
2 changed files with 26 additions and 3 deletions
|
@ -72,6 +72,8 @@ G_DEFINE_TYPE_WITH_CODE (GstPushSrc, gst_push_src, GST_TYPE_BASE_SRC, _do_init);
|
||||||
static gboolean gst_push_src_query (GstBaseSrc * src, GstQuery * query);
|
static gboolean gst_push_src_query (GstBaseSrc * src, GstQuery * query);
|
||||||
static GstFlowReturn gst_push_src_create (GstBaseSrc * bsrc, guint64 offset,
|
static GstFlowReturn gst_push_src_create (GstBaseSrc * bsrc, guint64 offset,
|
||||||
guint length, GstBuffer ** ret);
|
guint length, GstBuffer ** ret);
|
||||||
|
static GstFlowReturn gst_push_src_alloc (GstBaseSrc * bsrc, guint64 offset,
|
||||||
|
guint length, GstBuffer ** ret);
|
||||||
static GstFlowReturn gst_push_src_fill (GstBaseSrc * bsrc, guint64 offset,
|
static GstFlowReturn gst_push_src_fill (GstBaseSrc * bsrc, guint64 offset,
|
||||||
guint length, GstBuffer * ret);
|
guint length, GstBuffer * ret);
|
||||||
|
|
||||||
|
@ -81,6 +83,7 @@ gst_push_src_class_init (GstPushSrcClass * klass)
|
||||||
GstBaseSrcClass *gstbasesrc_class = (GstBaseSrcClass *) klass;
|
GstBaseSrcClass *gstbasesrc_class = (GstBaseSrcClass *) klass;
|
||||||
|
|
||||||
gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_push_src_create);
|
gstbasesrc_class->create = GST_DEBUG_FUNCPTR (gst_push_src_create);
|
||||||
|
gstbasesrc_class->alloc = GST_DEBUG_FUNCPTR (gst_push_src_alloc);
|
||||||
gstbasesrc_class->fill = GST_DEBUG_FUNCPTR (gst_push_src_fill);
|
gstbasesrc_class->fill = GST_DEBUG_FUNCPTR (gst_push_src_fill);
|
||||||
gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_push_src_query);
|
gstbasesrc_class->query = GST_DEBUG_FUNCPTR (gst_push_src_query);
|
||||||
}
|
}
|
||||||
|
@ -132,6 +135,24 @@ gst_push_src_create (GstBaseSrc * bsrc, guint64 offset, guint length,
|
||||||
return fret;
|
return fret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GstFlowReturn
|
||||||
|
gst_push_src_alloc (GstBaseSrc * bsrc, guint64 offset, guint length,
|
||||||
|
GstBuffer ** ret)
|
||||||
|
{
|
||||||
|
GstFlowReturn fret;
|
||||||
|
GstPushSrc *src;
|
||||||
|
GstPushSrcClass *pclass;
|
||||||
|
|
||||||
|
src = GST_PUSH_SRC (bsrc);
|
||||||
|
pclass = GST_PUSH_SRC_GET_CLASS (src);
|
||||||
|
if (pclass->alloc)
|
||||||
|
fret = pclass->alloc (src, ret);
|
||||||
|
else
|
||||||
|
fret = GST_BASE_SRC_CLASS (parent_class)->alloc (bsrc, offset, length, ret);
|
||||||
|
|
||||||
|
return fret;
|
||||||
|
}
|
||||||
|
|
||||||
static GstFlowReturn
|
static GstFlowReturn
|
||||||
gst_push_src_fill (GstBaseSrc * bsrc, guint64 offset, guint length,
|
gst_push_src_fill (GstBaseSrc * bsrc, guint64 offset, guint length,
|
||||||
GstBuffer * ret)
|
GstBuffer * ret)
|
||||||
|
|
|
@ -54,11 +54,13 @@ struct _GstPushSrc {
|
||||||
struct _GstPushSrcClass {
|
struct _GstPushSrcClass {
|
||||||
GstBaseSrcClass parent_class;
|
GstBaseSrcClass parent_class;
|
||||||
|
|
||||||
/* ask the subclass to create a buffer */
|
/* ask the subclass to create a buffer, the default implementation
|
||||||
|
* uses alloc and fill */
|
||||||
GstFlowReturn (*create) (GstPushSrc *src, GstBuffer **buf);
|
GstFlowReturn (*create) (GstPushSrc *src, GstBuffer **buf);
|
||||||
|
/* allocate memory for a buffer */
|
||||||
|
GstFlowReturn (*alloc) (GstPushSrc *src, GstBuffer **buf);
|
||||||
/* ask the subclass to fill a buffer */
|
/* ask the subclass to fill a buffer */
|
||||||
GstFlowReturn (*fill) (GstPushSrc *src, GstBuffer *buf);
|
GstFlowReturn (*fill) (GstPushSrc *src, GstBuffer *buf);
|
||||||
|
|
||||||
/*< private >*/
|
/*< private >*/
|
||||||
gpointer _gst_reserved[GST_PADDING];
|
gpointer _gst_reserved[GST_PADDING];
|
||||||
|
|
Loading…
Reference in a new issue