From 1c5c49a94ccf180295e7d40bbbdc9fe28ace291f Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 21 Apr 2014 15:35:32 +0200 Subject: [PATCH] play: Improve pipeline states First set the pipeline to the PAUSED state to check if we are dealing with a live pipeline or not. Then move to the desired state. If we don't do this, it is possible that we receive a BUFFERING message before we know that the pipeline is live and we would set the pipeline to PAUSED and deadlock. --- tools/gst-play.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/gst-play.c b/tools/gst-play.c index c3e0167f5f..b2afb5dc9a 100644 --- a/tools/gst-play.c +++ b/tools/gst-play.c @@ -396,7 +396,7 @@ play_uri (GstPlay * play, const gchar * next_uri) g_object_set (play->playbin, "uri", next_uri, NULL); - sret = gst_element_set_state (play->playbin, play->desired_state); + sret = gst_element_set_state (play->playbin, GST_STATE_PAUSED); switch (sret) { case GST_STATE_CHANGE_FAILURE: /* ignore, we should get an error message posted on the bus */ @@ -411,6 +411,8 @@ play_uri (GstPlay * play, const gchar * next_uri) default: break; } + if (play->desired_state != GST_STATE_PAUSED) + sret = gst_element_set_state (play->playbin, play->desired_state); } /* returns FALSE if we have reached the end of the playlist */