Fixed the queueing algorithm.
authorZeeshan Ali <zeenix@gmail.com>
Mon, 31 Oct 2005 13:29:06 +0000 (13:29 +0000)
committerZeeshan Ali <zeenix@gmail.com>
Mon, 31 Oct 2005 13:29:06 +0000 (13:29 +0000)
Original commit message from CVS:
Fixed the queueing algorithm.

ChangeLog
gst-libs/gst/rtp/gstbasertpdepayload.c

index 1931432..4f1fe43 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,13 @@
 2005-10-31  Zeeshan Ali  <zeenix@gmail.com>
 
        * gst-libs/gst/rtp/gstbasertpdepayload.c:
+       (gst_base_rtp_depayload_add_to_queue),
+       (gst_base_rtp_depayload_push):
+       Fixed the queueing algorithm.
+
+2005-10-31  Zeeshan Ali  <zeenix@gmail.com>
+
+       * gst-libs/gst/rtp/gstbasertpdepayload.c:
        (gst_base_rtp_depayload_push):
        A small fix
 
index 369b190..72d4223 100644 (file)
@@ -226,18 +226,18 @@ gst_base_rtp_depayload_add_to_queue (GstBaseRTPDepayload * filter,
     seqnum = gst_rtpbuffer_get_seq (in);
     queueseq = gst_rtpbuffer_get_seq (GST_BUFFER (g_queue_peek_head (queue)));
 
-    /* not our first packet
-     * let us make sure it is not very late */
-    if (seqnum < queueseq)
-      goto too_late;
-
     /* look for right place to insert it */
     int i = 0;
 
-    while (seqnum < queueseq) {
+    while (seqnum > queueseq) {
+      gpointer data;
+
       i++;
-      queueseq =
-          gst_rtpbuffer_get_seq (GST_BUFFER (g_queue_peek_nth (queue, i)));
+      data = g_queue_peek_nth (queue, i);
+      if (!data)
+        break;
+
+      queueseq = gst_rtpbuffer_get_seq (GST_BUFFER (data));
     }
 
     /* now insert it at that place */
@@ -251,14 +251,6 @@ gst_base_rtp_depayload_add_to_queue (GstBaseRTPDepayload * filter,
         g_queue_get_length (queue), i, timestamp, seqnum);
   }
   return GST_FLOW_OK;
-
-too_late:
-  {
-    QUEUE_UNLOCK (filter);
-    /* we need to drop this one */
-    GST_DEBUG ("Packet arrived to late, dropping");
-    return GST_FLOW_OK;
-  }
 }
 
 static void