The problem about gst_element_set_state.
t.i.m at zen.co.uk
Sat Jan 7 04:12:09 PST 2012
On Wed, 2011-12-28 at 01:29 -0800, forestzhu wrote:
> Sometimes the program will crash
> when I use the " gst_element_set_state" to set the pipeline to NULL .
> my code likes below:
> if (player->pipeline)
> while(GST_STATE_CHANGE_FAILURE == gst_element_set_state (player->pipeline,
> DEBUG_LOG("fail to change pipeline state...");
> DEBUG_LOG("after set state");
> g_object_unref (player->pipeline);
> player->pipeline = NULL;
Why the while loop? Just do a single _set_state (pipeline,
GST_STATE_NULL). If that fails (*extremely* unlikely), it will most
likely also fail the next time. I wouldn't bother checking the return
value of a downward _set_state() to GST_STATE_NULL. It will not be
async, and you can just assume it worked. (If it didn't work for some
reason, there's not much else you can do anyway).
> I confirmed before set_state the player->pipeline 's mem_address is correct
> And the "DEBUG_LOG("fail to change pipeline state...");" and
> "DEBUG_LOG("after set state");" will not run.
> Anyone can give me some informations?
> Thanks for any hint!
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/The-problem-about-gst-element-set-state-tp4239421p4239421.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
More information about the gstreamer-devel