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.
This commit is contained in:
Mark Nauwelaerts 2011-04-04 11:27:29 +02:00
parent e5bcaa45e6
commit 226a7cb32e

View file

@ -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