Strange issues with setting states for dynamic pipelines.

Stirling Westrup swestrup at
Thu Jun 18 12:33:42 PDT 2015

Right now I'm dealing with an issue in my dynamic pipelines. As part of a
robustness check, I've been adding and removing one leg of an output tee
to/from a playing pipeline as fast as I can, to ensure all of my locks and
such are solid.

What I'm finding is happening is that gst_element_sync_to_parent is
returning TRUE before the actual synchronization is finished. I've also
tried with gst_element_set_state and gst_element_get_state but I'm finding
that what is happening is that I'm getting a 'successful' return before the
state change is finalized!

In fact, what seems to happen is that the parent bin which was in state
PLAYING when I started the sync, is in state PAUSED (pending PLAYING) as is
the bin which I am attempting to sync.

What I was expecting, of course, is for the two of them to be in state

What is worse, when I go to remove the bin again, my attempt to transition
to NULL state fails, as its still in transition to PLAYING state. And so I
get this mysterious error:

(vaal:2751): GStreamer-CRITICAL **:
Trying to dispose element xvsink_04, but it is in PAUSED instead of the
NULL state.
You need to explicitly set elements to the NULL state before
dropping the final reference, to allow them to clean up.
This problem may also be caused by a refcounting bug in the
application or some element.

I'm fairly sure this is not how GStreamer 1.2.0 behaved, but I've yet to go
back and check.

Stirling Westrup
Programmer, Entrepreneur.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list