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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2687>
This commit is contained in:
Jan Schmidt 2022-06-30 12:50:17 +10:00 committed by GStreamer Marge Bot
parent de0e4b8fd6
commit 6f9ae5d758

View file

@ -2358,7 +2358,12 @@ gst_gl_upload_transform_caps (GstGLUpload * upload, GstGLContext * context,
GstCaps *result, *tmp; GstCaps *result, *tmp;
gint i; 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, tmp = upload->priv->method->transform_caps (upload->priv->method_impl,
context, direction, caps); context, direction, caps);
if (tmp) { if (tmp) {