mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-01 09:21:03 +00:00
plugins: direct render when raw video
Enable the direct rendering with linear surfaces if the negotiated src caps are video/x-raw without features. Pass also the caps, since they are needed to know the requested caps features.
This commit is contained in:
parent
faebca3383
commit
202110bded
1 changed files with 13 additions and 4 deletions
|
@ -568,14 +568,23 @@ error_create_allocator:
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
ensure_srcpad_allocator (GstVaapiPluginBase * plugin, GstVideoInfo * vinfo)
|
ensure_srcpad_allocator (GstVaapiPluginBase * plugin, GstVideoInfo * vinfo,
|
||||||
|
GstCaps * caps)
|
||||||
{
|
{
|
||||||
|
GstVaapiImageUsageFlags usage_flag =
|
||||||
|
GST_VAAPI_IMAGE_USAGE_FLAG_NATIVE_FORMATS;
|
||||||
|
|
||||||
if (!reset_allocator (plugin->srcpad_allocator, vinfo))
|
if (!reset_allocator (plugin->srcpad_allocator, vinfo))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
|
/* enable direct rendering if downstream requests raw video */
|
||||||
|
if (caps && gst_caps_is_video_raw (caps)) {
|
||||||
|
usage_flag = GST_VAAPI_IMAGE_USAGE_FLAG_DIRECT_RENDER;
|
||||||
|
GST_INFO_OBJECT (plugin, "enabling direct rendering in source allocator");
|
||||||
|
}
|
||||||
|
|
||||||
plugin->srcpad_allocator =
|
plugin->srcpad_allocator =
|
||||||
gst_vaapi_video_allocator_new (plugin->display, vinfo, 0,
|
gst_vaapi_video_allocator_new (plugin->display, vinfo, 0, usage_flag);
|
||||||
GST_VAAPI_IMAGE_USAGE_FLAG_NATIVE_FORMATS);
|
|
||||||
if (!plugin->srcpad_allocator)
|
if (!plugin->srcpad_allocator)
|
||||||
goto error_create_allocator;
|
goto error_create_allocator;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -892,7 +901,7 @@ gst_vaapi_plugin_base_decide_allocation (GstVaapiPluginBase * plugin,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!pool) {
|
if (!pool) {
|
||||||
if (!ensure_srcpad_allocator (plugin, &vi))
|
if (!ensure_srcpad_allocator (plugin, &vi, caps))
|
||||||
goto error;
|
goto error;
|
||||||
/* Update video size with allocator's image size */
|
/* Update video size with allocator's image size */
|
||||||
gst_allocator_get_vaapi_image_size (plugin->srcpad_allocator, &size);
|
gst_allocator_get_vaapi_image_size (plugin->srcpad_allocator, &size);
|
||||||
|
|
Loading…
Reference in a new issue