mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 01:00:37 +00:00
glimagesink: handle the local_context query
so that upstream elements can get the GL context from glimagesink
This commit is contained in:
parent
c2450a28f5
commit
296397a8b1
1 changed files with 31 additions and 3 deletions
|
@ -597,12 +597,40 @@ gst_glimage_sink_query (GstBaseSink * bsink, GstQuery * query)
|
|||
switch (GST_QUERY_TYPE (query)) {
|
||||
case GST_QUERY_CONTEXT:
|
||||
{
|
||||
gboolean ret =
|
||||
gst_gl_handle_context_query ((GstElement *) glimage_sink, query,
|
||||
const gchar *context_type;
|
||||
GstContext *context, *old_context;
|
||||
|
||||
res = gst_gl_handle_context_query ((GstElement *) glimage_sink, query,
|
||||
&glimage_sink->display, &glimage_sink->other_context);
|
||||
if (glimage_sink->display)
|
||||
gst_gl_display_filter_gl_api (glimage_sink->display, SUPPORTED_GL_APIS);
|
||||
return ret;
|
||||
|
||||
gst_query_parse_context_type (query, &context_type);
|
||||
|
||||
if (g_strcmp0 (context_type, "gst.gl.local_context") == 0) {
|
||||
GstStructure *s;
|
||||
|
||||
gst_query_parse_context (query, &old_context);
|
||||
|
||||
if (old_context)
|
||||
context = gst_context_copy (old_context);
|
||||
else
|
||||
context = gst_context_new ("gst.gl.local_context", FALSE);
|
||||
|
||||
s = gst_context_writable_structure (context);
|
||||
gst_structure_set (s, "context", GST_GL_TYPE_CONTEXT,
|
||||
glimage_sink->context, NULL);
|
||||
gst_query_set_context (query, context);
|
||||
gst_context_unref (context);
|
||||
|
||||
res = glimage_sink->context != NULL;
|
||||
}
|
||||
GST_LOG_OBJECT (glimage_sink, "context query of type %s %i", context_type,
|
||||
res);
|
||||
|
||||
if (res)
|
||||
return res;
|
||||
break;
|
||||
}
|
||||
case GST_QUERY_DRAIN:
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue