From: Matthew Waters Date: Tue, 3 Feb 2015 02:32:47 +0000 (+1100) Subject: glcolorconvert: put GstGLSyncMeta on output buffers X-Git-Tag: 1.19.3~511^2~1989^2~1078 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=68dc0fef6d37069cfac0cb263af445f20935381c;p=platform%2Fupstream%2Fgstreamer.git glcolorconvert: put GstGLSyncMeta on output buffers allows thread safely using the provided output buffer in a separate thread --- diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c index 36c3db4..582ac78 100644 --- a/ext/gl/gstglimagesink.c +++ b/ext/gl/gstglimagesink.c @@ -1379,6 +1379,7 @@ gst_glimage_sink_on_draw (GstGLImageSink * gl_sink) const GstGLFuncs *gl = NULL; GstGLWindow *window = NULL; gboolean do_redisplay; + GstGLSyncMeta *sync_meta; g_return_if_fail (GST_IS_GLIMAGE_SINK (gl_sink)); @@ -1407,6 +1408,10 @@ gst_glimage_sink_on_draw (GstGLImageSink * gl_sink) gl_sink->caps_change = FALSE; } + sync_meta = gst_buffer_get_gl_sync_meta (gl_sink->stored_buffer); + if (sync_meta) + gst_gl_sync_meta_wait (sync_meta); + /* make sure that the environnement is clean */ gst_gl_context_clear_shader (gl_sink->context); diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c index 2594e2e..755e587 100644 --- a/gst-libs/gst/gl/gstglcolorconvert.c +++ b/gst-libs/gst/gl/gstglcolorconvert.c @@ -1560,6 +1560,14 @@ out: convert->outbuf = NULL; } + if (convert->outbuf) { + GstGLSyncMeta *sync_meta = + gst_buffer_add_gl_sync_meta (convert->context, convert->outbuf); + + if (sync_meta) + gst_gl_sync_meta_set_sync_point (sync_meta, convert->context); + } + convert->priv->result = res; return; }