From: Mathieu Duponchelle Date: Sat, 17 Dec 2022 00:36:49 +0000 (+0000) Subject: basesrc: respect FIXED_CAPS flag in caps query implementation X-Git-Tag: 1.22.0~151 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f8b732563bd7f3147e97da8a42aeea7119d5fe32;p=platform%2Fupstream%2Fgstreamer.git basesrc: respect FIXED_CAPS flag in caps query implementation Part-of: --- diff --git a/subprojects/gstreamer/libs/gst/base/gstbasesrc.c b/subprojects/gstreamer/libs/gst/base/gstbasesrc.c index 25bd2a0..e47d145 100644 --- a/subprojects/gstreamer/libs/gst/base/gstbasesrc.c +++ b/subprojects/gstreamer/libs/gst/base/gstbasesrc.c @@ -1342,20 +1342,25 @@ gst_base_src_default_query (GstBaseSrc * src, GstQuery * query) case GST_QUERY_CAPS: { GstBaseSrcClass *bclass; - GstCaps *caps, *filter; + GstCaps *caps = NULL, *filter; bclass = GST_BASE_SRC_GET_CLASS (src); - if (bclass->get_caps) { + if (GST_PAD_IS_FIXED_CAPS (src->srcpad)) { + caps = gst_pad_get_current_caps (src->srcpad); + } + + if (caps == NULL && bclass->get_caps) { gst_query_parse_caps (query, &filter); - if ((caps = bclass->get_caps (src, filter))) { - gst_query_set_caps_result (query, caps); - gst_caps_unref (caps); - res = TRUE; - } else { - res = FALSE; - } - } else + caps = bclass->get_caps (src, filter); + } + + if (caps != NULL) { + res = TRUE; + gst_query_set_caps_result (query, caps); + gst_caps_unref (caps); + } else { res = FALSE; + } break; } case GST_QUERY_URI:{