diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2010-10-07 11:59:30 +0200 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2010-10-07 12:00:38 +0200 |
commit | 161761651667a2580290fb6e7a01b0330954dedf (patch) | |
tree | a9ba7ada90df052d4efb5ac21a7068d2e06e673f /gst/sdp | |
parent | 77c05b5419eea010b3126a0681d03ff12cd6ccb3 (diff) |
sdpdemux: workaround internal rtspsrc failing state change
Fixes #630046.
Diffstat (limited to 'gst/sdp')
-rw-r--r-- | gst/sdp/gstsdpdemux.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c index 4b2783216..04d006744 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; |