changing state to paused hangs

Thomas Green TGreen2 at Sorenson.com
Wed Feb 4 15:34:11 PST 2015


All,

I've the following pipeline

                                                                                                                                           _ alsasink1
                                                                                                                                        /
appsrc->capsfilter->queue->volume->audiorate->output-selector
                                                                                                                                        \_ alsasink2

I select one of the sinks, start playing, and everything goes well.  I decide to go from PLAYING->PAUSED.  My routine does the pause like this:

gst_element_send_event(pipeline, gst_event_new_flush_start());    // flush any data that might be there'
gst_element_send_event(pipeline, gst_event_new_flush_stop()); // make things start accepting data again
gst_element_set_state(pipeline, GST_STATE_PAUSED);

The set_state call hangs and never returns.  As I run it with GST_DEBUG=3 I watch each element successfully change from playing to paused in this order:
alsasink2, alsasink1, output-selector, audiorate, volume, queue, capsfilter.  And that is it.  The appsrc never tells me it is attempting to change state, let alone successfully making the state change.  Is there a property that I have either set (or neglected to set) that would prevent the appsrc from changing state? I've also tried to do the set_state before flushing the pipeline, and there is no difference.

Tom


More information about the gstreamer-devel mailing list