From 226a7cb32e10cf057035348b616772bf539d2dc4 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Mon, 4 Apr 2011 11:27:29 +0200 Subject: [PATCH] rtspsrc: distribute new base_time to manager children following flush seek ... by forcing a state changed to PLAYING, which should otherwise be a no-op as elements should already be in that state. In particular, jitterbuffer needs new base_time as soon as possible to perform proper timing (e.g. eos timeout handling) and can't wait for the new base_time that will be distributed when the whole pipeline returns to PLAYING. See bug #646397. --- gst/rtsp/gstrtspsrc.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index e1c8f9b404..f2ef722d6b 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -1680,8 +1680,13 @@ gst_rtspsrc_flush (GstRTSPSrc * src, gboolean flush) if (base_time != -1) gst_element_set_base_time (GST_ELEMENT_CAST (src), base_time); /* to manage jitterbuffer buffer mode */ - if (src->manager) + if (src->manager) { gst_element_set_base_time (GST_ELEMENT_CAST (src->manager), base_time); + /* and to have base_time trickle further down, + * e.g. to jitterbuffer for its timeout handling */ + if (base_time != -1) + gst_element_set_state (GST_ELEMENT_CAST (src->manager), state); + } } static GstRTSPResult