summaryrefslogtreecommitdiff
path: root/gst/sdp
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2010-10-07 11:59:30 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2010-10-07 12:00:38 +0200
commit161761651667a2580290fb6e7a01b0330954dedf (patch)
treea9ba7ada90df052d4efb5ac21a7068d2e06e673f /gst/sdp
parent77c05b5419eea010b3126a0681d03ff12cd6ccb3 (diff)
downloadgstreamer-plugins-bad-161761651667a2580290fb6e7a01b0330954dedf.tar.gz
sdpdemux: workaround internal rtspsrc failing state change
Fixes #630046.
Diffstat (limited to 'gst/sdp')
-rw-r--r--gst/sdp/gstsdpdemux.c8
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;