From 3668cfd91e87b70b41c3bad832d8486f55b9cd77 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 28 Sep 2007 14:51:58 +0000 Subject: gst/rtpmanager/gstrtpbin.c: Fix crasher in dispose. Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (free_client): Fix crasher in dispose. * gst/rtpmanager/rtpjitterbuffer.c: (calculate_skew): Handle cases where input buffers have no timestamps so that no clock skew can be calculated, in this case interpollate timestamps based on rtp timestamp and assume a 0 clock skew. --- gst/rtpmanager/rtpjitterbuffer.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'gst/rtpmanager/rtpjitterbuffer.c') diff --git a/gst/rtpmanager/rtpjitterbuffer.c b/gst/rtpmanager/rtpjitterbuffer.c index 0f52949e..d0304198 100644 --- a/gst/rtpmanager/rtpjitterbuffer.c +++ b/gst/rtpmanager/rtpjitterbuffer.c @@ -199,11 +199,6 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time) gint pos, i; GstClockTime gstrtptime, out_time; - /* we don't have an arrival timestamp so we can't do skew detection. FIXME, we - * should still apply a timestamp based on RTP timestamp and base_time */ - if (time == -1) - return -1; - ext_rtptime = gst_rtp_buffer_ext_timestamp (&jbuf->ext_rtptime, rtptime); gstrtptime = @@ -217,6 +212,12 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time) /* elapsed time at sender */ send_diff = gstrtptime - jbuf->base_rtptime; + + /* we don't have an arrival timestamp so we can't do skew detection. we + * should still apply a timestamp based on RTP timestamp and base_time */ + if (time == -1) + goto no_skew; + /* elapsed time at receiver, includes the jitter */ recv_diff = time - jbuf->base_time; @@ -297,6 +298,7 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time) pos = 0; jbuf->window_pos = pos; +no_skew: /* the output time is defined as the base timestamp plus the RTP time * adjusted for the clock skew .*/ out_time = jbuf->base_time + send_diff + jbuf->skew; -- cgit v1.2.1