plugins/elements/gstmultiqueue.c: When figuring out when a queue is filled, use our...
authorWim Taymans <wim.taymans@gmail.com>
Thu, 28 Jun 2007 11:25:17 +0000 (11:25 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Thu, 28 Jun 2007 11:25:17 +0000 (11:25 +0000)
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.

ChangeLog
plugins/elements/gstmultiqueue.c

index 586b6e1177f336111c73c33734e04a8ca95f5243..d29a8b71e8dee3e4e8f6779c289a5bdff300fd3c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
        * gst/gstminiobject.c: (gst_mini_object_get_type):
index f795f9625c25b0ddccc59df93831d4ebeb4da224..9c43b231fed482812ffd8cda547f5d266c44f5f6 100644 (file)
@@ -1126,7 +1126,10 @@ single_queue_overrun_cb (GstDataQueue * dq, GstSingleQueue * sq)
     GstSingleQueue *ssq = (GstSingleQueue *) tmp->data;
     GstDataQueueSize ssize;
 
+    GST_LOG_OBJECT (mq, "Checking Queue %d", ssq->id);
+
     if (gst_data_queue_is_empty (ssq->queue)) {
+      GST_LOG_OBJECT (mq, "Queue %d is empty", ssq->id);
       if (IS_FILLED (visible, size.visible)) {
         sq->max_size.visible++;
         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 */
     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 (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;
     }
   }