From 6e5d23b3d7ab28343a29ff4af7dc65d6a31e79ae Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 5 Oct 2007 12:07:37 +0000 Subject: gst/rtpmanager/gstrtpjitterbuffer.c: Only peek at the tail element instead of popping it off, which allows us to grea... Original commit message from CVS: * gst/rtpmanager/gstrtpjitterbuffer.c: (gst_rtp_jitter_buffer_chain), (gst_rtp_jitter_buffer_loop): Only peek at the tail element instead of popping it off, which allows us to greatly simplify things when the tail element changes. * gst/rtpmanager/gstrtpsession.c: (gst_rtp_session_event_recv_rtp_sink): * gst/rtpmanager/gstrtpssrcdemux.c: (gst_rtp_ssrc_demux_sink_event): Forward FLUSH events instead of leaking them. * gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_reset_skew), (calculate_skew), (rtp_jitter_buffer_insert): * gst/rtpmanager/rtpjitterbuffer.h: Remove the tail-changed callback in favour of a simple boolean when we insert a buffer in the queue. Add method to peek the tail of the buffer. --- gst/rtpmanager/rtpjitterbuffer.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) (limited to 'gst/rtpmanager/rtpjitterbuffer.c') diff --git a/gst/rtpmanager/rtpjitterbuffer.c b/gst/rtpmanager/rtpjitterbuffer.c index a002cc38..f3c2a2ab 100644 --- a/gst/rtpmanager/rtpjitterbuffer.c +++ b/gst/rtpmanager/rtpjitterbuffer.c @@ -99,16 +99,6 @@ rtp_jitter_buffer_new (void) return jbuf; } -void -rtp_jitter_buffer_set_tail_changed (RTPJitterBuffer * jbuf, RTPTailChanged func, - gpointer user_data) -{ - g_return_if_fail (jbuf != NULL); - - jbuf->tail_changed = func; - jbuf->user_data = user_data; -} - void rtp_jitter_buffer_set_clock_rate (RTPJitterBuffer * jbuf, gint clock_rate) { @@ -374,6 +364,7 @@ compare_seqnum (GstBuffer * a, GstBuffer * b, RTPJitterBuffer * jbuf) * @jbuf: an #RTPJitterBuffer * @buf: a buffer * @time: a running_time when this buffer was received in nanoseconds + * @tail: TRUE when the tail element changed. * * Inserts @buf into the packet queue of @jbuf. The sequence number of the * packet will be used to sort the packets. This function takes ownerhip of @@ -383,7 +374,7 @@ compare_seqnum (GstBuffer * a, GstBuffer * b, RTPJitterBuffer * jbuf) */ gboolean rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf, - GstClockTime time) + GstClockTime time, gboolean * tail) { GList *list; gint func_ret = 1; @@ -412,13 +403,12 @@ rtp_jitter_buffer_insert (RTPJitterBuffer * jbuf, GstBuffer * buf, if (list) g_queue_insert_before (jbuf->packets, list, buf); - else { + else g_queue_push_tail (jbuf->packets, buf); - /* tail buffer changed, signal callback */ - if (jbuf->tail_changed) - jbuf->tail_changed (jbuf, jbuf->user_data); - } + /* tail was changed when we did not find a previous packet */ + if (tail) + *tail = (list == NULL); return TRUE; } -- cgit v1.2.1