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.
This commit is contained in:
parent
859501af27
commit
3668cfd91e
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
|||||||
|
2007-09-28 Wim Taymans <wim.taymans@gmail.com>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
2007-09-28 Wim Taymans <wim.taymans@gmail.com>
|
2007-09-28 Wim Taymans <wim.taymans@gmail.com>
|
||||||
|
|
||||||
* gst/rtpmanager/gstrtpjitterbuffer.c: (apply_latency),
|
* gst/rtpmanager/gstrtpjitterbuffer.c: (apply_latency),
|
||||||
|
@ -637,9 +637,8 @@ get_client (GstRtpBin * bin, guint8 len, guint8 * data, gboolean * created)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
free_client (GstRtpBinClient * client, GstRtpBin * bin)
|
free_client (GstRtpBinClient * client)
|
||||||
{
|
{
|
||||||
bin->clients = g_slist_remove (bin->clients, client);
|
|
||||||
g_free (client->cname);
|
g_free (client->cname);
|
||||||
g_free (client);
|
g_free (client);
|
||||||
}
|
}
|
||||||
|
@ -199,11 +199,6 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time)
|
|||||||
gint pos, i;
|
gint pos, i;
|
||||||
GstClockTime gstrtptime, out_time;
|
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);
|
ext_rtptime = gst_rtp_buffer_ext_timestamp (&jbuf->ext_rtptime, rtptime);
|
||||||
|
|
||||||
gstrtptime =
|
gstrtptime =
|
||||||
@ -217,6 +212,12 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time)
|
|||||||
|
|
||||||
/* elapsed time at sender */
|
/* elapsed time at sender */
|
||||||
send_diff = gstrtptime - jbuf->base_rtptime;
|
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 */
|
/* elapsed time at receiver, includes the jitter */
|
||||||
recv_diff = time - jbuf->base_time;
|
recv_diff = time - jbuf->base_time;
|
||||||
|
|
||||||
@ -297,6 +298,7 @@ calculate_skew (RTPJitterBuffer * jbuf, guint32 rtptime, GstClockTime time)
|
|||||||
pos = 0;
|
pos = 0;
|
||||||
jbuf->window_pos = pos;
|
jbuf->window_pos = pos;
|
||||||
|
|
||||||
|
no_skew:
|
||||||
/* the output time is defined as the base timestamp plus the RTP time
|
/* the output time is defined as the base timestamp plus the RTP time
|
||||||
* adjusted for the clock skew .*/
|
* adjusted for the clock skew .*/
|
||||||
out_time = jbuf->base_time + send_diff + jbuf->skew;
|
out_time = jbuf->base_time + send_diff + jbuf->skew;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user