From 39daed4c1e07e50f3abc28b05694a6ef355b044f Mon Sep 17 00:00:00 2001 From: Zeeshan Ali Date: Mon, 31 Oct 2005 13:29:06 +0000 Subject: [PATCH] Fixed the queueing algorithm. Original commit message from CVS: Fixed the queueing algorithm. --- ChangeLog | 7 +++++++ gst-libs/gst/rtp/gstbasertpdepayload.c | 24 ++++++++---------------- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index 193143228d..4f1fe43988 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2005-10-31 Zeeshan Ali + + * 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 * gst-libs/gst/rtp/gstbasertpdepayload.c: diff --git a/gst-libs/gst/rtp/gstbasertpdepayload.c b/gst-libs/gst/rtp/gstbasertpdepayload.c index 369b190baf..72d4223846 100644 --- a/gst-libs/gst/rtp/gstbasertpdepayload.c +++ b/gst-libs/gst/rtp/gstbasertpdepayload.c @@ -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