mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 17:50:36 +00:00
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.
This commit is contained in:
parent
21798184a0
commit
e024926636
1 changed files with 5 additions and 0 deletions
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue