mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
nvdec: Filter openGL API version to use
To ensure PBO buffer, openGL API >= 3 is required.
This commit is contained in:
parent
4841c2759d
commit
9bfd6d13e6
1 changed files with 16 additions and 1 deletions
|
@ -38,6 +38,8 @@ GST_DEBUG_CATEGORY_STATIC (gst_nvdec_debug_category);
|
||||||
#define GST_CAT_DEFAULT gst_nvdec_debug_category
|
#define GST_CAT_DEFAULT gst_nvdec_debug_category
|
||||||
|
|
||||||
#ifdef HAVE_NVCODEC_GST_GL
|
#ifdef HAVE_NVCODEC_GST_GL
|
||||||
|
#define SUPPORTED_GL_APIS (GST_GL_API_OPENGL | GST_GL_API_OPENGL3 | GST_GL_API_GLES2)
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
gst_nvdec_copy_device_to_gl (GstNvDec * nvdec,
|
gst_nvdec_copy_device_to_gl (GstNvDec * nvdec,
|
||||||
CUVIDPARSERDISPINFO * dispinfo, GstBuffer * output_buffer);
|
CUVIDPARSERDISPINFO * dispinfo, GstBuffer * output_buffer);
|
||||||
|
@ -638,6 +640,9 @@ gst_nvdec_open (GstVideoDecoder * decoder)
|
||||||
#if HAVE_NVCODEC_GST_GL
|
#if HAVE_NVCODEC_GST_GL
|
||||||
gst_gl_ensure_element_data (GST_ELEMENT (nvdec),
|
gst_gl_ensure_element_data (GST_ELEMENT (nvdec),
|
||||||
&nvdec->gl_display, &nvdec->other_gl_context);
|
&nvdec->gl_display, &nvdec->other_gl_context);
|
||||||
|
if (nvdec->gl_display)
|
||||||
|
gst_gl_display_filter_gl_api (GST_GL_DISPLAY (nvdec->gl_display),
|
||||||
|
SUPPORTED_GL_APIS);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -1119,6 +1124,12 @@ gst_nvdec_decide_allocation (GstVideoDecoder * decoder, GstQuery * query)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!gst_gl_context_check_gl_version (nvdec->gl_context,
|
||||||
|
SUPPORTED_GL_APIS, 3, 0)) {
|
||||||
|
GST_ERROR_OBJECT (nvdec, "OpenGL context could not support PBO download");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
gst_query_parse_allocation (query, &outcaps, NULL);
|
gst_query_parse_allocation (query, &outcaps, NULL);
|
||||||
n = gst_query_get_n_allocation_pools (query);
|
n = gst_query_get_n_allocation_pools (query);
|
||||||
if (n > 0)
|
if (n > 0)
|
||||||
|
@ -1166,8 +1177,12 @@ gst_nvdec_src_query (GstVideoDecoder * decoder, GstQuery * query)
|
||||||
}
|
}
|
||||||
#ifdef HAVE_NVCODEC_GST_GL
|
#ifdef HAVE_NVCODEC_GST_GL
|
||||||
if (gst_gl_handle_context_query (GST_ELEMENT (decoder), query,
|
if (gst_gl_handle_context_query (GST_ELEMENT (decoder), query,
|
||||||
nvdec->gl_display, nvdec->gl_context, nvdec->other_gl_context))
|
nvdec->gl_display, nvdec->gl_context, nvdec->other_gl_context)) {
|
||||||
|
if (nvdec->gl_display)
|
||||||
|
gst_gl_display_filter_gl_api (GST_GL_DISPLAY (nvdec->gl_display),
|
||||||
|
SUPPORTED_GL_APIS);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
Loading…
Reference in a new issue