From c0f24fea8381c0d35a4f255edbfd5d53463338bf Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Thu, 6 Oct 2016 11:47:50 -0400 Subject: [PATCH] stream: Fix randomly missing streams from SDP with dynamic elements When using dynamic elements, gst_rtsp_stream_join_bin() is called from "pad-added" signal. In that case priv->srcpad could already have its caps, and they'll be sent to priv->send_src[0] pad. That means that when it connects "notify::caps" signal, that pad could already have received its caps and the signal won't be emitted anymore. In that case priv->caps stay to NULL and when building the SDP that stream gets ignored. Leading to missing video or audio when playing in client side. https://bugzilla.gnome.org/show_bug.cgi?id=772478 --- gst/rtsp-server/rtsp-stream.c | 1 + 1 file changed, 1 insertion(+) diff --git a/gst/rtsp-server/rtsp-stream.c b/gst/rtsp-server/rtsp-stream.c index 9125314d34..9fd3e0037b 100644 --- a/gst/rtsp-server/rtsp-stream.c +++ b/gst/rtsp-server/rtsp-stream.c @@ -2759,6 +2759,7 @@ gst_rtsp_stream_join_bin (GstRTSPStream * stream, GstBin * bin, /* be notified of caps changes */ priv->caps_sig = g_signal_connect (priv->send_src[0], "notify::caps", (GCallback) caps_notify, stream); + priv->caps = gst_pad_get_current_caps (priv->send_src[0]); } priv->joined_bin = bin;