From 4b019ba268e0136e6cbb11de90533634d198c5eb Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Tue, 14 Oct 2014 16:41:51 +0200 Subject: [PATCH] glfilter: add uploaded_buffer field --- gst-libs/gst/gl/gstglfilter.c | 13 ++++++++++++- gst-libs/gst/gl/gstglfilter.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c index c04275006a..a725fe281a 100644 --- a/gst-libs/gst/gl/gstglfilter.c +++ b/gst-libs/gst/gl/gstglfilter.c @@ -256,6 +256,11 @@ gst_gl_filter_reset (GstGLFilter * filter) filter->download = NULL; } + if (filter->uploaded_buffer) { + gst_buffer_unref (filter->uploaded_buffer); + filter->uploaded_buffer = NULL; + } + if (filter->context) { if (filter_class->onReset) filter_class->onReset (filter); @@ -1183,7 +1188,13 @@ gst_gl_filter_filter_texture (GstGLFilter * filter, GstBuffer * inbuf, filter_class = GST_GL_FILTER_GET_CLASS (filter); - if (!gst_gl_upload_perform_with_buffer (filter->upload, inbuf, &in_tex, NULL)) + if (filter->uploaded_buffer) { + gst_buffer_unref (filter->uploaded_buffer); + filter->uploaded_buffer = NULL; + } + + if (!gst_gl_upload_perform_with_buffer (filter->upload, inbuf, &in_tex, + &filter->uploaded_buffer)) return FALSE; to_download |= !gst_is_gl_memory (gst_buffer_peek_memory (outbuf, 0)); diff --git a/gst-libs/gst/gl/gstglfilter.h b/gst-libs/gst/gl/gstglfilter.h index c78649363a..2a8d0dfcce 100644 --- a/gst-libs/gst/gl/gstglfilter.h +++ b/gst-libs/gst/gl/gstglfilter.h @@ -77,6 +77,8 @@ struct _GstGLFilter GstGLUpload *upload; GstGLDownload *download; + GstBuffer *uploaded_buffer; + /* */ GLuint in_tex_id; GLuint out_tex_id;