From 6b402ff6b021f98b4eac3b3d99554076e9c04877 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 26 Nov 2008 12:02:21 +0000 Subject: gst/rtpmanager/gstrtpbin.c: Reset the sync parameters when clearing the payload type map too. Original commit message from CVS: * gst/rtpmanager/gstrtpbin.c: (gst_rtp_bin_reset_sync), (gst_rtp_bin_clear_pt_map): Reset the sync parameters when clearing the payload type map too. Fixes #562312. --- gst/rtpmanager/gstrtpbin.c | 51 ++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 24 deletions(-) (limited to 'gst/rtpmanager') diff --git a/gst/rtpmanager/gstrtpbin.c b/gst/rtpmanager/gstrtpbin.c index 801a4b21..a845bbbd 100644 --- a/gst/rtpmanager/gstrtpbin.c +++ b/gst/rtpmanager/gstrtpbin.c @@ -685,6 +685,30 @@ return_true (gpointer key, gpointer value, gpointer user_data) return TRUE; } +static void +gst_rtp_bin_reset_sync (GstRtpBin * rtpbin) +{ + GSList *clients, *streams; + + GST_DEBUG_OBJECT (rtpbin, "Reset sync on all clients"); + + GST_RTP_BIN_LOCK (rtpbin); + for (clients = rtpbin->clients; clients; clients = g_slist_next (clients)) { + GstRtpBinClient *client = (GstRtpBinClient *) clients->data; + + /* reset sync on all streams for this client */ + for (streams = client->streams; streams; streams = g_slist_next (streams)) { + GstRtpBinStream *stream = (GstRtpBinStream *) streams->data; + + /* make use require a new SR packet for this stream before we attempt new + * lip-sync */ + stream->have_sync = FALSE; + stream->unix_delta = 0; + } + } + GST_RTP_BIN_UNLOCK (rtpbin); +} + static void gst_rtp_bin_clear_pt_map (GstRtpBin * bin) { @@ -711,6 +735,9 @@ gst_rtp_bin_clear_pt_map (GstRtpBin * bin) GST_RTP_SESSION_UNLOCK (session); } GST_RTP_BIN_UNLOCK (bin); + + /* reset sync too */ + gst_rtp_bin_reset_sync (bin); } static RTPSession * @@ -794,30 +821,6 @@ free_client (GstRtpBinClient * client) g_free (client); } -static void -gst_rtp_bin_reset_sync (GstRtpBin * rtpbin) -{ - GSList *clients, *streams; - - GST_DEBUG_OBJECT (rtpbin, "Reset sync on all clients"); - - GST_RTP_BIN_LOCK (rtpbin); - for (clients = rtpbin->clients; clients; clients = g_slist_next (clients)) { - GstRtpBinClient *client = (GstRtpBinClient *) clients->data; - - /* reset sync on all streams for this client */ - for (streams = client->streams; streams; streams = g_slist_next (streams)) { - GstRtpBinStream *stream = (GstRtpBinStream *) streams->data; - - /* make use require a new SR packet for this stream before we attempt new - * lip-sync */ - stream->have_sync = FALSE; - stream->unix_delta = 0; - } - } - GST_RTP_BIN_UNLOCK (rtpbin); -} - /* associate a stream to the given CNAME. This will make sure all streams for * that CNAME are synchronized together. * Must be called with GST_RTP_BIN_LOCK */ -- cgit v1.2.1