why does gst_element_set_state(PAUSED) block after EOS?

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

why does gst_element_set_state(PAUSED) block after EOS?

Andres Gonzalez
I have a simple pipeline:    filesrc   ! decodebin  ...  ->  ...  appsink
that is working fine playing a media file in my application.  While the file is playing, I can call gst_element_set_state(PAUSED) and gst_element_set_state(PLAYING) and the pipeline works fine as expected: it pauses and starts up again. On the appsink, I have an EOS callback registered which works as expected so it is called when the filesrc reached the end of the file.

After I get the EOS from the appsink, I cannot control the state of the pipeline. After EOS, if I call gst_element_set_state(PAUSED) that routine blocks and hangs my thread.

Question: Does an EOS event from the appsink change the state of the pipeline?

Question: What is the proper way to handle the EOS event for a filesrc?

Question: Are there any restrictions on what I can call inside the callback when I get the EOS event from appsink?