Revert "rtspsrc: Only EOS on timeout if all streams are timed out/EOS"

This reverts commit d186e19568.

This unearthed a whole bunch of other issues for which lots of
other fixes all over the place were required, so let's revert
the backport into the stable branch for now.

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1530
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3271

Fixes #1532

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3422>
This commit is contained in:
Tim-Philipp Müller 2022-11-16 10:36:32 +00:00
parent f74e856255
commit 989ac0f0c0

View file

@ -3620,39 +3620,8 @@ on_timeout_common (GObject * session, GObject * source, GstRTSPStream * stream)
GST_WARNING_OBJECT (src, "source %08x, stream %08x in session %u timed out",
ssrc, stream->ssrc, stream->id);
if (ssrc == stream->ssrc) {
GList *walk;
gboolean all_eos = TRUE;
GST_DEBUG_OBJECT (src, "setting stream for session %u to EOS", stream->id);
stream->eos = TRUE;
/* Only EOS all streams at once if they're all EOS. Otherwise it is
* possible for timed out streams to reappear at a later time time: they
* might just be inactive currently.
*/
for (walk = src->streams; walk; walk = g_list_next (walk)) {
GstRTSPStream *stream = (GstRTSPStream *) walk->data;
/* Skip streams that were not set up at all */
if (!stream->setup)
continue;
if (!stream->eos) {
all_eos = FALSE;
break;
}
}
if (all_eos) {
GST_DEBUG_OBJECT (src, "sending EOS on all streams");
for (walk = src->streams; walk; walk = g_list_next (walk)) {
GstRTSPStream *stream = (GstRTSPStream *) walk->data;
gst_rtspsrc_stream_push_event (src, stream, gst_event_new_eos ());
}
}
}
if (ssrc == stream->ssrc)
gst_rtspsrc_do_stream_eos (src, stream);
}
static void
@ -3693,8 +3662,6 @@ on_ssrc_active (GObject * session, GObject * source, GstRTSPStream * stream)
{
GST_DEBUG_OBJECT (stream->parent, "source in session %u is active",
stream->id);
stream->eos = FALSE;
}
static void