From d22ec496328e6ba8edbf2d071d5608b2af2831e8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 25 Mar 2015 15:27:34 +0100 Subject: [PATCH] rtpsession: Also report internal sources in on-new-ssrc and on-ssrc-active Without this it seems impossible for an application to easily get notified about the internal ssrcs that are created, e.g. sender sources, and also to know when they are active and produce RTCP packets. https://bugzilla.gnome.org/show_bug.cgi?id=746747 --- gst/rtpmanager/rtpsession.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gst/rtpmanager/rtpsession.c b/gst/rtpmanager/rtpsession.c index 0acac15..9bee269 100644 --- a/gst/rtpmanager/rtpsession.c +++ b/gst/rtpmanager/rtpsession.c @@ -2699,6 +2699,9 @@ rtp_session_update_send_caps (RTPSession * sess, GstCaps * caps) if (source) { rtp_source_update_caps (source, caps); g_object_unref (source); + + if (created) + on_new_ssrc (sess, source); } if (gst_structure_get_uint (s, "rtx-ssrc", &ssrc)) { @@ -2749,6 +2752,9 @@ rtp_session_send_rtp (RTPSession * sess, gpointer data, gboolean is_list, source = obtain_internal_source (sess, pinfo.ssrc, &created, current_time); + if (created) + on_new_ssrc (sess, source); + prevsender = RTP_SOURCE_IS_SENDER (source); oldrate = source->bitrate; @@ -3739,6 +3745,9 @@ rtp_session_on_timeout (RTPSession * sess, GstClockTime current_time, source = obtain_internal_source (sess, sess->suggested_ssrc, &created, current_time); + + if (created) + on_new_ssrc (sess, source); g_object_unref (source); } @@ -3817,6 +3826,10 @@ done: sess->callbacks.send_rtcp (sess, source, buffer, output->is_bye, sess->send_rtcp_user_data); sess->stats.nacks_sent += data.nacked_seqnums; + + RTP_SESSION_LOCK (sess); + on_ssrc_active (sess, source); + RTP_SESSION_UNLOCK (sess); } else { GST_DEBUG ("freeing packet callback: %p" " do_not_suppress: %d may_suppress: %d", -- 2.7.4