summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorThiago Santos <ts.santos@osg.sisa.samsung.com>2014-07-29 14:21:33 -0300
committerThiago Santos <ts.santos@osg.sisa.samsung.com>2014-07-29 21:08:38 -0300
commite5ac798c7bc9dae4084ca02b11ba2190185371cd (patch)
tree9cf393ee21d1bceea8d6cea7a05db05528cc0f5a /plugins
parent9fe3365f94f02473ac7e40a2d4ab5c787b175a87 (diff)
downloadgstreamer-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.c9
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;
}