rtsp-media: Add/configure transports when completing the pipeline

Otherwise the transports are not set up yet during the PLAY request
handling when unsuspending (and thus unblocking) the media.

In case of live pipelines this then causes the first few packets to go
to the sinks before they know what to do with them, and they simply
discard them which is rather suboptimal in case of keyframes.

For non-live pipelines this is not a problem because the sink will still
be PAUSED and as such not send out the data yet but wait until it goes
to PLAYING, which is late enough.

Adding the transports multiple times is not a problem: if the transport
is already added it won't be added another time and TRUE will be
returned.

This fixes a regression introduced by a7732a68e8
before 1.14.0.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/issues/107

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/merge_requests/135>
This commit is contained in:
Sebastian Dröge 2020-06-15 19:45:38 +03:00
parent 5562656ec0
commit fb8004a6eb

View file

@ -5012,6 +5012,11 @@ gst_rtsp_media_complete_pipeline (GstRTSPMedia * media, GPtrArray * transports)
g_mutex_unlock (&priv->lock);
return FALSE;
}
if (!gst_rtsp_stream_add_transport (stream, transport)) {
g_mutex_unlock (&priv->lock);
return FALSE;
}
}
priv->complete = TRUE;