diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2015-04-26 21:39:06 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2015-04-26 21:39:06 +0200 |
commit | c638477c48793de9829a1fa92c6828b5b54a7f74 (patch) | |
tree | 98a4555d02287d1256f09c19e2a038e4ccf444c1 /ext/gl/gstgldeinterlace.c | |
parent | 51daa8b9e2b351055ce59ed89b0417ff9f7dccb9 (diff) | |
download | gstreamer-plugins-bad-c638477c48793de9829a1fa92c6828b5b54a7f74.tar.gz |
glfilter: Remove onStart/onStop vfuncs, and unused onReset()
onStart/onStop are just duplicates of the basetransform ones, onReset
was never called but was used everywhere when stop should've been used.
Diffstat (limited to 'ext/gl/gstgldeinterlace.c')
-rw-r--r-- | ext/gl/gstgldeinterlace.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/ext/gl/gstgldeinterlace.c b/ext/gl/gstgldeinterlace.c index bf969f2dc..74f27efdc 100644 --- a/ext/gl/gstgldeinterlace.c +++ b/ext/gl/gstgldeinterlace.c @@ -48,7 +48,7 @@ enum #define DEBUG_INIT \ GST_DEBUG_CATEGORY_INIT (gst_gl_deinterlace_debug, "gldeinterlace", 0, "gldeinterlace element"); - +#define gst_gl_deinterlace_parent_class parent_class G_DEFINE_TYPE_WITH_CODE (GstGLDeinterlace, gst_gl_deinterlace, GST_TYPE_GL_FILTER, DEBUG_INIT); @@ -57,7 +57,7 @@ static void gst_gl_deinterlace_set_property (GObject * object, static void gst_gl_deinterlace_get_property (GObject * object, guint prop_id, GValue * value, GParamSpec * pspec); -static void gst_gl_deinterlace_reset (GstGLFilter * filter); +static gboolean gst_gl_deinterlace_reset (GstBaseTransform * trans); static gboolean gst_gl_deinterlace_init_shader (GstGLFilter * filter); static gboolean gst_gl_deinterlace_filter (GstGLFilter * filter, GstBuffer * inbuf, GstBuffer * outbuf); @@ -163,11 +163,12 @@ gst_gl_deinterlace_class_init (GstGLDeinterlaceClass * klass) "Deinterlacing based on fragment shaders", "Julien Isorce <julien.isorce@mail.com>"); + GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_deinterlace_reset; + GST_GL_FILTER_CLASS (klass)->filter = gst_gl_deinterlace_filter; GST_GL_FILTER_CLASS (klass)->filter_texture = gst_gl_deinterlace_filter_texture; GST_GL_FILTER_CLASS (klass)->onInitFBO = gst_gl_deinterlace_init_shader; - GST_GL_FILTER_CLASS (klass)->onReset = gst_gl_deinterlace_reset; GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api = GST_GL_API_OPENGL; } @@ -180,18 +181,20 @@ gst_gl_deinterlace_init (GstGLDeinterlace * filter) filter->prev_tex = 0; } -static void -gst_gl_deinterlace_reset (GstGLFilter * filter) +static gboolean +gst_gl_deinterlace_reset (GstBaseTransform * trans) { - GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter); + GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (trans); gst_buffer_replace (&deinterlace_filter->prev_buffer, NULL); //blocking call, wait the opengl thread has destroyed the shader if (deinterlace_filter->shader) - gst_gl_context_del_shader (GST_GL_BASE_FILTER (filter)->context, + gst_gl_context_del_shader (GST_GL_BASE_FILTER (trans)->context, deinterlace_filter->shader); deinterlace_filter->shader = NULL; + + return GST_BASE_TRANSFORM_CLASS (parent_class)->stop (trans); } static void |