mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-23 08:46:40 +00:00
multiqueue: never consider a queue that is not waiting
.. when computing the high id. After a flush for instance, sq->srcresult is reset to OK, yet it doesn't make sense to pick a non-existing position id as the high id when a queue doesn't contain any items in that situation either. It is in any case completely OK to let the not-linked stream get consumed without throttling at this stage, as any first packet arriving on other single queues will get assigned a higher position id. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1271>
This commit is contained in:
parent
8eebe19cae
commit
33ea698ef3
1 changed files with 7 additions and 7 deletions
|
@ -2972,7 +2972,6 @@ compute_high_id (GstMultiQueue * mq)
|
||||||
GST_LOG_OBJECT (mq, "inspecting sq:%d , nextid:%d, oldid:%d, srcresult:%s",
|
GST_LOG_OBJECT (mq, "inspecting sq:%d , nextid:%d, oldid:%d, srcresult:%s",
|
||||||
sq->id, sq->nextid, sq->oldid, gst_flow_get_name (sq->srcresult));
|
sq->id, sq->nextid, sq->oldid, gst_flow_get_name (sq->srcresult));
|
||||||
|
|
||||||
if (sq->srcresult == GST_FLOW_NOT_LINKED) {
|
|
||||||
/* No need to consider queues which are not waiting */
|
/* No need to consider queues which are not waiting */
|
||||||
if (sq->nextid == 0) {
|
if (sq->nextid == 0) {
|
||||||
GST_LOG_OBJECT (mq, "sq:%d is not waiting - ignoring", sq->id);
|
GST_LOG_OBJECT (mq, "sq:%d is not waiting - ignoring", sq->id);
|
||||||
|
@ -2980,6 +2979,7 @@ compute_high_id (GstMultiQueue * mq)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sq->srcresult == GST_FLOW_NOT_LINKED) {
|
||||||
if (sq->nextid < lowest)
|
if (sq->nextid < lowest)
|
||||||
lowest = sq->nextid;
|
lowest = sq->nextid;
|
||||||
} else if (!GST_PAD_IS_EOS (srcpad) && sq->srcresult != GST_FLOW_EOS) {
|
} else if (!GST_PAD_IS_EOS (srcpad) && sq->srcresult != GST_FLOW_EOS) {
|
||||||
|
|
Loading…
Reference in a new issue