rtspsrc: set the right state on rtpbin
authorWim Taymans <wim.taymans@collabora.co.uk>
Thu, 4 Jun 2009 13:19:05 +0000 (15:19 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Thu, 4 Jun 2009 13:19:05 +0000 (15:19 +0200)
We need to set the state of gstrtpbin to the same state as our source elements.
This fixes fallback to TCP again.

gst/rtsp/gstrtspsrc.c

index 82bbfd1..210e142 100644 (file)
@@ -1903,6 +1903,8 @@ gst_rtspsrc_stream_configure_manager (GstRTSPSrc * src, GstRTSPStream * stream,
 
     /* configure the manager */
     if (src->session == NULL) {
+      GstState target;
+
       if (!(src->session = gst_element_factory_make (manager, NULL))) {
         /* fallback */
         if (gst_rtsp_transport_get_manager (transport->trans, &manager, 1) < 0)
@@ -1918,7 +1920,11 @@ gst_rtspsrc_stream_configure_manager (GstRTSPSrc * src, GstRTSPStream * stream,
       /* we manage this element */
       gst_bin_add (GST_BIN_CAST (src), src->session);
 
-      ret = gst_element_set_state (src->session, GST_STATE_PAUSED);
+      GST_OBJECT_LOCK (src);
+      target = GST_STATE_TARGET (src);
+      GST_OBJECT_UNLOCK (src);
+
+      ret = gst_element_set_state (src->session, target);
       if (ret == GST_STATE_CHANGE_FAILURE)
         goto start_session_failure;