diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2008-11-26 12:02:21 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-11-26 12:02:21 +0000 |
commit | 6b402ff6b021f98b4eac3b3d99554076e9c04877 (patch) | |
tree | 605d4c78b648398d328fea20a9a49621893ee130 /gst | |
parent | b51514fc266d8477aced8e99ffc9408729ada8de (diff) | |
download | gst-plugins-bad-6b402ff6b021f98b4eac3b3d99554076e9c04877.tar.gz gst-plugins-bad-6b402ff6b021f98b4eac3b3d99554076e9c04877.tar.bz2 gst-plugins-bad-6b402ff6b021f98b4eac3b3d99554076e9c04877.zip |
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.
Diffstat (limited to 'gst')
-rw-r--r-- | gst/rtpmanager/gstrtpbin.c | 51 |
1 files changed, 27 insertions, 24 deletions
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 @@ -686,6 +686,30 @@ return_true (gpointer key, gpointer value, gpointer user_data) } 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) { GSList *sessions, *streams; @@ -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 */ |