From c4bf6e8b7e653f29e3c7d702c6cd5dca457df435 Mon Sep 17 00:00:00 2001 From: Alessandro Decina Date: Wed, 5 Mar 2014 11:39:09 +0100 Subject: [PATCH] rtspsrc: fix seeking Call gst_rtspsrc_connection_flush (src, FALSE) to reset connections as non-flushing before sending PAUSE and PLAY with the new npt range. Without this patch, those commands would fail with EINTR as the connections were still flushing. --- gst/rtsp/gstrtspsrc.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 3084087663..8eb39e85a9 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -295,6 +295,7 @@ static gboolean gst_rtspsrc_loop (GstRTSPSrc * src); static gboolean gst_rtspsrc_stream_push_event (GstRTSPSrc * src, GstRTSPStream * stream, GstEvent * event); static gboolean gst_rtspsrc_push_event (GstRTSPSrc * src, GstEvent * event); +static void gst_rtspsrc_connection_flush (GstRTSPSrc * src, gboolean flush); typedef struct { @@ -2239,6 +2240,9 @@ gst_rtspsrc_perform_seek (GstRTSPSrc * src, GstEvent * event) GST_DEBUG_OBJECT (src, "stopped streaming"); + /* stop flushing the rtsp connection so we can send PAUSE/PLAY below */ + gst_rtspsrc_connection_flush (src, FALSE); + /* copy segment, we need this because we still need the old * segment when we close the current segment. */ memcpy (&seeksegment, &src->segment, sizeof (GstSegment));