mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-20 21:16:24 +00:00
glmixer: Add GL_SYNC_META option to bufferpool
when pipline is glvideomixerelement->glcolorconvertelement->gldownloadelement and glcolorconvertelement is not passthrough, the gl bufferpool between glvideomixerelement and glcolorconvertelement will not add gl sync meta during allocating buffer. This will cause that glcolorconvert's inbuf has no sync meta to wait for. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6756>
This commit is contained in:
parent
59e17fa931
commit
a92167ea6e
2 changed files with 9 additions and 3 deletions
|
@ -23,6 +23,7 @@
|
|||
#endif
|
||||
|
||||
#include <gst/gl/gl.h>
|
||||
#include <gst/gl/gstglfuncs.h>
|
||||
#if GST_GL_HAVE_PLATFORM_EGL && GST_GL_HAVE_DMABUF
|
||||
#include <gst/gl/egl/gsteglimage.h>
|
||||
#include <gst/allocators/gstdmabuf.h>
|
||||
|
@ -1454,13 +1455,15 @@ gst_gl_download_element_propose_allocation (GstBaseTransform * bt,
|
|||
size = info.size;
|
||||
gst_buffer_pool_config_set_params (config, caps, size, 0, 0);
|
||||
gst_buffer_pool_config_set_gl_min_free_queue_size (config, 1);
|
||||
gst_buffer_pool_config_add_option (config,
|
||||
GST_BUFFER_POOL_OPTION_GL_SYNC_META);
|
||||
|
||||
if (!gst_buffer_pool_set_config (pool, config)) {
|
||||
gst_object_unref (pool);
|
||||
goto config_failed;
|
||||
}
|
||||
|
||||
if (context->gl_vtable->FenceSync)
|
||||
gst_query_add_allocation_meta (query, GST_GL_SYNC_META_API_TYPE, NULL);
|
||||
|
||||
gst_query_add_allocation_pool (query, pool, size, 1, 0);
|
||||
|
||||
gst_object_unref (pool);
|
||||
|
|
|
@ -239,7 +239,7 @@ gst_gl_mixer_propose_allocation (GstAggregator * agg,
|
|||
|
||||
/* we also support various metadata */
|
||||
if (context->gl_vtable->FenceSync)
|
||||
gst_query_add_allocation_meta (query, GST_GL_SYNC_META_API_TYPE, 0);
|
||||
gst_query_add_allocation_meta (query, GST_GL_SYNC_META_API_TYPE, NULL);
|
||||
|
||||
return TRUE;
|
||||
|
||||
|
@ -644,6 +644,9 @@ gst_gl_mixer_decide_allocation (GstAggregator * agg, GstQuery * query)
|
|||
|
||||
gst_buffer_pool_config_set_params (config, caps, size, min, max);
|
||||
gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META);
|
||||
if (gst_query_find_allocation_meta (query, GST_GL_SYNC_META_API_TYPE, NULL))
|
||||
gst_buffer_pool_config_add_option (config,
|
||||
GST_BUFFER_POOL_OPTION_GL_SYNC_META);
|
||||
|
||||
gst_buffer_pool_set_config (pool, config);
|
||||
|
||||
|
|
Loading…
Reference in a new issue