GNOME Bugzilla – Bug 794966
rtsp-stream: avoid deadlock when playing a media where some streams are inactive
Last modified: 2018-11-03 15:41:48 UTC
If playing a media with multiple streams, all originating from the same single threaded source, such as a a matroska demuxer, the streaming will be blocked when the inactive parts of the pipeline are filled. This is because there are blocking probes attached to those streams. We can avoid that by letting the probes drop buffers when playing.
Created attachment 370516 [details] [review] Drop buffers in blocking probe attached to inactive streams
Instead of keeping the pad probe and dropping buffers, why don't we just unblock and let buffers disappear by themselves?
Also if the stream is already blocked, setting it to drop buffers won't have any effect because the probe would not be called again, or am I missing something?
Review of attachment 370516 [details] [review]: ::: gst/rtsp-server/rtsp-media.c @@ +4385,2 @@ + /* a stream transport is connected to a stream from it's creation to it's + * destruction and thus it must be possible to obtain "it's" stream while its not it's :) ::: gst/rtsp-server/rtsp-stream.c @@ +4686,3 @@ + g_mutex_lock (&priv->lock); + if (!priv->is_complete) { + priv->drop_buffers = TRUE; This seems a bit unintuitive. If setting it to dropping it should probably always do that.
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/issues/39.