rtspsrc: only EOS when our source sends BYE
authorWim Taymans <wim.taymans@collabora.co.uk>
Wed, 6 Feb 2013 12:52:26 +0000 (13:52 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 6 Feb 2013 13:01:16 +0000 (14:01 +0100)
Only EOS when we receive a BYE event from the SSRC of our stream.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=675453

gst/rtsp/gstrtspsrc.c

index 16b1358..22f10d1 100644 (file)
@@ -2403,20 +2403,30 @@ static void
 on_bye_ssrc (GObject * session, GObject * source, GstRTSPStream * stream)
 {
   GstRTSPSrc *src = stream->parent;
+  guint ssrc;
 
-  GST_DEBUG_OBJECT (src, "source in session %u received BYE", stream->id);
+  g_object_get (source, "ssrc", &ssrc, NULL);
 
-  gst_rtspsrc_do_stream_eos (src, stream);
+  GST_DEBUG_OBJECT (src, "source %08x, stream %08x, session %u received BYE",
+      ssrc, stream->ssrc, stream->id);
+
+  if (ssrc == stream->ssrc)
+    gst_rtspsrc_do_stream_eos (src, stream);
 }
 
 static void
 on_timeout (GObject * session, GObject * source, GstRTSPStream * stream)
 {
   GstRTSPSrc *src = stream->parent;
+  guint ssrc;
 
-  GST_DEBUG_OBJECT (src, "source in session %u timed out", stream->id);
+  g_object_get (source, "ssrc", &ssrc, NULL);
 
-  gst_rtspsrc_do_stream_eos (src, stream);
+  GST_WARNING_OBJECT (src, "source %08x, stream %08x in session %u timed out",
+      ssrc, stream->ssrc, stream->id);
+
+  if (ssrc == stream->ssrc)
+    gst_rtspsrc_do_stream_eos (src, stream);
 }
 
 static void