urisourcebin: Call do_async_done when source state change returns NO_PREROLL
authorThibault Saunier <thibault.saunier@osg.samsung.com>
Wed, 14 Jun 2017 21:04:18 +0000 (17:04 -0400)
committerThibault Saunier <thibault.saunier@osg.samsung.com>
Thu, 15 Jun 2017 18:53:19 +0000 (14:53 -0400)
Otherwise for RTSP streams for example, the pipeline will never go to
PLAYING as it will be missing an ASYNC_DONE message.

https://bugzilla.gnome.org/show_bug.cgi?id=780099

gst/playback/gsturisourcebin.c

index c5f151c41854635669e16bfda6c7996cad51377c..d0563c65a0293d79a49c3edd10881f54148b0eb5 100644 (file)
@@ -2945,8 +2945,11 @@ gst_uri_source_bin_change_state (GstElement * element,
         ret = gst_element_set_state (urisrc->source, GST_STATE_PAUSED);
       if (ret == GST_STATE_CHANGE_FAILURE)
         goto setup_failed;
+
       if (ret == GST_STATE_CHANGE_SUCCESS)
         ret = GST_STATE_CHANGE_ASYNC;
+      else if (ret == GST_STATE_CHANGE_NO_PREROLL)
+        do_async_done (urisrc);
 
       break;
     case GST_STATE_CHANGE_PAUSED_TO_READY: