cccombiner: Correct sink_query chain up and fix caps leaks

Don't chain up to src_query() from sink_query() method, and
returned caps by gst_static_pad_template_get_caps() needs to be
cleared.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1513>
This commit is contained in:
Seungha Yang 2020-08-13 20:19:21 +09:00
parent 5ffd2c64a0
commit 91f9490529

View file

@ -521,6 +521,7 @@ gst_cc_combiner_src_query (GstAggregator * aggregator, GstQuery * query)
gst_query_parse_accept_caps (query, &caps); gst_query_parse_accept_caps (query, &caps);
gst_query_set_accept_caps_result (query, gst_caps_is_subset (caps, gst_query_set_accept_caps_result (query, gst_caps_is_subset (caps,
templ)); templ));
gst_caps_unref (templ);
ret = TRUE; ret = TRUE;
break; break;
} }
@ -553,7 +554,8 @@ gst_cc_combiner_sink_query (GstAggregator * aggregator,
ret = gst_pad_peer_query (srcpad, query); ret = gst_pad_peer_query (srcpad, query);
} else { } else {
ret = ret =
GST_AGGREGATOR_CLASS (parent_class)->src_query (aggregator, query); GST_AGGREGATOR_CLASS (parent_class)->sink_query (aggregator,
aggpad, query);
} }
break; break;
case GST_QUERY_CAPS: case GST_QUERY_CAPS:
@ -587,11 +589,13 @@ gst_cc_combiner_sink_query (GstAggregator * aggregator,
gst_query_parse_accept_caps (query, &caps); gst_query_parse_accept_caps (query, &caps);
gst_query_set_accept_caps_result (query, gst_caps_is_subset (caps, gst_query_set_accept_caps_result (query, gst_caps_is_subset (caps,
templ)); templ));
gst_caps_unref (templ);
ret = TRUE; ret = TRUE;
} }
break; break;
default: default:
ret = GST_AGGREGATOR_CLASS (parent_class)->src_query (aggregator, query); ret = GST_AGGREGATOR_CLASS (parent_class)->sink_query (aggregator,
aggpad, query);
break; break;
} }