mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-05 15:08:53 +00:00
plugins: add gst_vaapi_plugin_base_set_srcpad_can_dmabuf()
This patch refactors the code by adding the function vaapi_plugin_base_set_srcpad_can_dmabuf(), it determines if the passed GstGLContext can handle dmabuf-based buffers. The function is exposed publicly since it is intended to be used later at GstVaapiDisplay instantiation. https://bugzilla.gnome.org/show_bug.cgi?id=788503
This commit is contained in:
parent
8ef3bc3cc2
commit
998e79ced6
2 changed files with 30 additions and 6 deletions
|
@ -1182,12 +1182,7 @@ gst_vaapi_plugin_base_set_gl_context (GstVaapiPluginBase * plugin,
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case GST_GL_PLATFORM_EGL:
|
case GST_GL_PLATFORM_EGL:
|
||||||
#if VA_CHECK_VERSION (0,36,0) && USE_GST_GL_HELPERS
|
gst_vaapi_plugin_base_set_srcpad_can_dmabuf (plugin, object);
|
||||||
plugin->srcpad_can_dmabuf =
|
|
||||||
(!(gst_gl_context_get_gl_api (gl_context) & GST_GL_API_GLES1)
|
|
||||||
&& gst_gl_context_check_feature (gl_context,
|
|
||||||
"EGL_EXT_image_dma_buf_import"));
|
|
||||||
#endif
|
|
||||||
#if USE_EGL
|
#if USE_EGL
|
||||||
display_type = GST_VAAPI_DISPLAY_TYPE_EGL;
|
display_type = GST_VAAPI_DISPLAY_TYPE_EGL;
|
||||||
break;
|
break;
|
||||||
|
@ -1337,3 +1332,27 @@ gst_vaapi_plugin_base_get_allowed_raw_caps (GstVaapiPluginBase * plugin)
|
||||||
return NULL;
|
return NULL;
|
||||||
return plugin->allowed_raw_caps;
|
return plugin->allowed_raw_caps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_vaapi_plugin_base_set_srcpad_can_dmabuf:
|
||||||
|
* @plugin: a #GstVaapiPluginBase
|
||||||
|
* @object: the GL context from gst-gl
|
||||||
|
*
|
||||||
|
* This function will determine if @object supports dmabuf
|
||||||
|
* importing.
|
||||||
|
*
|
||||||
|
* Please note that the context @object should come from downstream.
|
||||||
|
**/
|
||||||
|
void
|
||||||
|
gst_vaapi_plugin_base_set_srcpad_can_dmabuf (GstVaapiPluginBase * plugin,
|
||||||
|
GstObject * object)
|
||||||
|
{
|
||||||
|
#if VA_CHECK_VERSION (0,36,0) && USE_EGL && USE_GST_GL_HELPERS
|
||||||
|
GstGLContext *const gl_context = GST_GL_CONTEXT (object);
|
||||||
|
|
||||||
|
plugin->srcpad_can_dmabuf =
|
||||||
|
(!(gst_gl_context_get_gl_api (gl_context) & GST_GL_API_GLES1)
|
||||||
|
&& gst_gl_context_check_feature (gl_context,
|
||||||
|
"EGL_EXT_image_dma_buf_import"));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
|
@ -247,6 +247,11 @@ G_GNUC_INTERNAL
|
||||||
GstCaps *
|
GstCaps *
|
||||||
gst_vaapi_plugin_base_get_allowed_raw_caps (GstVaapiPluginBase * plugin);
|
gst_vaapi_plugin_base_get_allowed_raw_caps (GstVaapiPluginBase * plugin);
|
||||||
|
|
||||||
|
G_GNUC_INTERNAL
|
||||||
|
void
|
||||||
|
gst_vaapi_plugin_base_set_srcpad_can_dmabuf (GstVaapiPluginBase * plugin,
|
||||||
|
GstObject * object);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
#endif /* GST_VAAPI_PLUGIN_BASE_H */
|
#endif /* GST_VAAPI_PLUGIN_BASE_H */
|
||||||
|
|
Loading…
Reference in a new issue