plugins/elements/gstmultiqueue.c: When figuring out when a queue is filled, use our internal time estimate based on s...

Original commit message from CVS:
* plugins/elements/gstmultiqueue.c: (apply_buffer),
(single_queue_overrun_cb):
When figuring out when a queue is filled, use our internal time estimate
based on segments, just like check_full does.
This commit is contained in:
Wim Taymans 2007-06-28 11:25:17 +00:00
parent 4b239eb63b
commit 45bed69a60
2 changed files with 17 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2007-06-28 Wim Taymans <wim@fluendo.com>
* plugins/elements/gstmultiqueue.c: (apply_buffer),
(single_queue_overrun_cb):
When figuring out when a queue is filled, use our internal time estimate
based on segments, just like check_full does.
2007-06-27 Stefan Kost <ensonic@users.sf.net> 2007-06-27 Stefan Kost <ensonic@users.sf.net>
* gst/gstminiobject.c: (gst_mini_object_get_type): * gst/gstminiobject.c: (gst_mini_object_get_type):

View file

@ -1126,7 +1126,10 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq)
GstSingleQueue *ssq = (GstSingleQueue *) tmp->data; GstSingleQueue *ssq = (GstSingleQueue *) tmp->data;
GstDataQueueSize ssize; GstDataQueueSize ssize;
GST_LOG_OBJECT (mq, "Checking Queue %d", ssq->id);
if (gst_data_queue_is_empty (ssq->queue)) { if (gst_data_queue_is_empty (ssq->queue)) {
GST_LOG_OBJECT (mq, "Queue %d is empty", ssq->id);
if (IS_FILLED (visible, size.visible)) { if (IS_FILLED (visible, size.visible)) {
sq->max_size.visible++; sq->max_size.visible++;
GST_DEBUG_OBJECT (mq, GST_DEBUG_OBJECT (mq,
@ -1139,8 +1142,14 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq)
/* check if we reached the hard time/bytes limits */ /* check if we reached the hard time/bytes limits */
gst_data_queue_get_level (ssq->queue, &ssize); gst_data_queue_get_level (ssq->queue, &ssize);
GST_DEBUG_OBJECT (mq,
"queue %d: visible %u/%u, bytes %u/%u, time %" G_GUINT64_FORMAT "/%"
G_GUINT64_FORMAT, ssq->id, ssize.visible, sq->max_size.visible,
ssize.bytes, sq->max_size.bytes, sq->cur_time, sq->max_size.time);
/* if this queue is filled completely we must signal overrun */ /* if this queue is filled completely we must signal overrun */
if (IS_FILLED (bytes, ssize.bytes) || IS_FILLED (time, ssize.time)) { if (IS_FILLED (bytes, ssize.bytes) || IS_FILLED (time, sq->cur_time)) {
GST_LOG_OBJECT (mq, "Queue %d is filled", ssq->id);
filled = TRUE; filled = TRUE;
} }
} }