From 161761651667a2580290fb6e7a01b0330954dedf Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Thu, 7 Oct 2010 11:59:30 +0200 Subject: [PATCH] sdpdemux: workaround internal rtspsrc failing state change Fixes #630046. --- gst/sdp/gstsdpdemux.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c index 4b27832162..04d006744b 100644 --- a/gst/sdp/gstsdpdemux.c +++ b/gst/sdp/gstsdpdemux.c @@ -1403,6 +1403,14 @@ gst_sdp_demux_start (GstSDPDemux * demux) } /* set target state on session manager */ + /* setting rtspsrc to PLAYING may cause it to loose it that target state + * along the way due to no-preroll udpsrc elements, so ... + * do it in two stages here (similar to other elements) */ + if (demux->target > GST_STATE_PAUSED) { + ret = gst_element_set_state (demux->session, GST_STATE_PAUSED); + if (ret == GST_STATE_CHANGE_FAILURE) + goto start_session_failure; + } ret = gst_element_set_state (demux->session, demux->target); if (ret == GST_STATE_CHANGE_FAILURE) goto start_session_failure;