From e024926636443da733e7a5906ee7e5abae2ec0a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 14 Aug 2019 09:51:55 +0300 Subject: [PATCH] aggregator: Actually handle NEED_DATA return from update_src_caps() The documentation says that this allows the subclass to signal that it needs more data before it can decide on caps, so let's actually implement it that way. --- libs/gst/base/gstaggregator.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libs/gst/base/gstaggregator.c b/libs/gst/base/gstaggregator.c index 18e1d336bf..acba94cf24 100644 --- a/libs/gst/base/gstaggregator.c +++ b/libs/gst/base/gstaggregator.c @@ -1034,6 +1034,9 @@ gst_aggregator_update_src_caps (GstAggregator * self) if (ret < GST_FLOW_OK) { GST_WARNING_OBJECT (self, "Subclass failed to update provided caps"); goto done; + } else if (ret == GST_AGGREGATOR_FLOW_NEED_DATA) { + GST_DEBUG_OBJECT (self, "Subclass needs more data to decide on caps"); + goto done; } if ((caps == NULL || gst_caps_is_empty (caps)) && ret >= GST_FLOW_OK) { ret = GST_FLOW_NOT_NEGOTIATED; @@ -1147,6 +1150,8 @@ gst_aggregator_aggregate_func (GstAggregator * self) flow_return = gst_aggregator_update_src_caps (self); if (flow_return != GST_FLOW_OK) gst_pad_mark_reconfigure (GST_AGGREGATOR_SRC_PAD (self)); + if (flow_return == GST_AGGREGATOR_FLOW_NEED_DATA) + flow_return = GST_FLOW_OK; } if (timeout || flow_return >= GST_FLOW_OK) {