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>
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) {