multiqueue: don't check visible items in buffering

In buffering mode we want to ignore the max visible items to decide when the
queue is filled. Instead, we only look at the number of bytes and/or time in the
queue.
This commit is contained in:
Wim Taymans 2009-10-22 14:07:31 -04:00 committed by Wim Taymans
parent 6ac9191527
commit 07991ae4ab

View file

@ -1499,17 +1499,19 @@ single_queue_check_full (GstDataQueue * dataq, guint visible, guint bytes,
guint64 time, GstSingleQueue * sq) guint64 time, GstSingleQueue * sq)
{ {
gboolean res; gboolean res;
GstMultiQueue *mq = sq->mqueue;
GST_DEBUG ("queue %d: visible %u/%u, bytes %u/%u, time %" G_GUINT64_FORMAT GST_DEBUG_OBJECT (mq,
"/%" G_GUINT64_FORMAT, sq->id, visible, sq->max_size.visible, bytes, "queue %d: visible %u/%u, bytes %u/%u, time %" G_GUINT64_FORMAT "/%"
G_GUINT64_FORMAT, sq->id, visible, sq->max_size.visible, bytes,
sq->max_size.bytes, sq->cur_time, sq->max_size.time); sq->max_size.bytes, sq->cur_time, sq->max_size.time);
/* we are always filled on EOS */ /* we are always filled on EOS */
if (sq->is_eos) if (sq->is_eos)
return TRUE; return TRUE;
/* we never go past the max visible items */ /* we never go past the max visible items unless we are in buffering mode */
if (IS_FILLED (sq, visible, visible)) if (!mq->use_buffering && IS_FILLED (sq, visible, visible))
return TRUE; return TRUE;
/* check time or bytes */ /* check time or bytes */