From 6f9ae5d7580763b5d18badb76f2166ff0012886a Mon Sep 17 00:00:00 2001 From: Jan Schmidt Date: Thu, 30 Jun 2022 12:50:17 +1000 Subject: [PATCH] glupload: Fix caps query with no filter If no filter caps are provided with a caps query, always generate a full set of all caps from all upload methods, not just the configured one. This is needed to handle renegotiation when dealing with raw sysmem caps - as the upload method might accept raw sysmem caps, but only the raw data uploader adds those to the caps query. Part-of: --- subprojects/gst-plugins-base/gst-libs/gst/gl/gstglupload.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/subprojects/gst-plugins-base/gst-libs/gst/gl/gstglupload.c b/subprojects/gst-plugins-base/gst-libs/gst/gl/gstglupload.c index 8cd09f6..96d2880 100644 --- a/subprojects/gst-plugins-base/gst-libs/gst/gl/gstglupload.c +++ b/subprojects/gst-plugins-base/gst-libs/gst/gl/gstglupload.c @@ -2358,7 +2358,12 @@ gst_gl_upload_transform_caps (GstGLUpload * upload, GstGLContext * context, GstCaps *result, *tmp; gint i; - if (upload->priv->method) { + /* If (and only if) there is an upstream filter, we can + * save some time by first checking if the configured upload method + * generates intersecting caps. If there's no filter, or no + * intersection we need to generate a full set of caps from all + * uploaders for upstream to choose from */ + if (upload->priv->method && filter != NULL) { tmp = upload->priv->method->transform_caps (upload->priv->method_impl, context, direction, caps); if (tmp) { -- 2.7.4