diff options
author | Thiago Santos <ts.santos@osg.sisa.samsung.com> | 2014-07-29 14:21:33 -0300 |
---|---|---|
committer | Thiago Santos <ts.santos@osg.sisa.samsung.com> | 2014-07-29 21:08:38 -0300 |
commit | e5ac798c7bc9dae4084ca02b11ba2190185371cd (patch) | |
tree | 9cf393ee21d1bceea8d6cea7a05db05528cc0f5a /plugins | |
parent | 9fe3365f94f02473ac7e40a2d4ab5c787b175a87 (diff) | |
download | gstreamer-e5ac798c7bc9dae4084ca02b11ba2190185371cd.tar.gz |
multiqueue: avoid using infinite buffers limit if finite is requested
If the current max-buffers limit it infinite and a finite value is
requested, switch to the MAX (requested, current-value) to set some
limit but not below what we know that we've needed so far.
https://bugzilla.gnome.org/show_bug.cgi?id=733837
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/elements/gstmultiqueue.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/plugins/elements/gstmultiqueue.c b/plugins/elements/gstmultiqueue.c index 7fc1b87550..41b88ec612 100644 --- a/plugins/elements/gstmultiqueue.c +++ b/plugins/elements/gstmultiqueue.c @@ -514,9 +514,16 @@ gst_multi_queue_set_property (GObject * object, guint prop_id, GstSingleQueue *q = (GstSingleQueue *) tmp->data; gst_data_queue_get_level (q->queue, &size); - /* do not reduce max size below current level if the single queue has grown because of empty queue */ + GST_DEBUG_OBJECT (mq, "Queue %d: Requested buffers size: %d," + " current: %d, current max %d", q->id, new_size, size.visible, + q->max_size.visible); + + /* do not reduce max size below current level if the single queue + * has grown because of empty queue */ if (new_size == 0) { q->max_size.visible = new_size; + } else if (q->max_size.visible == 0) { + q->max_size.visible = MAX (new_size, size.visible); } else if (new_size > size.visible) { q->max_size.visible = new_size; } |