Pipeline never reaches NULL state, calls to set_state hang

Tyler Compton xaviosx at gmail.com
Wed Oct 7 23:57:04 UTC 2020


Hi everyone,

I have a pipeline that looks like this, although I'm building it manually
instead of using `Gst.parse_launch`.

rtspsrc location=[url] ! rtph265depay ! queue ! decodebin ! videoconvert !
video/x-raw,format=(string)BGR ! appsink max-buffers=60 drop=true
emit-signals=true

After I start this pipeline, I spin up a thread that routinely queries the
state of the pipeline with `pipeline.get_state` and sets the pipeline to
NULL if the pipeline appears to be stuck in the READY or PAUSED state, or
if it's been a suspiciously long time since the last frame has been
produced. If the pipeline is in a NULL state, a new pipeline will be
created to replace it.

I'm seeing behavior where, when I call
`pipeline.set_state(Gst.State.NULL)`, the call occasionally appears to
block forever. I tried sending a request to change the state on the bus,
which unsurprisingly doesn't block, but the pipeline still never reaches
the NULL state.

What might cause a pipeline to deadlock on a state change like this?

Thanks,
Tyler
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20201007/be100ff7/attachment.htm>


More information about the gstreamer-devel mailing list