Event "state change" handling from element to element?

Maurer, Marie marie.maurer at zeiss.com
Fri Oct 19 15:41:24 UTC 2018


Hello,

can someone give or point me to some info, how event handling is working internally between two element?

E.g. end of pipeline contains of a queue and an appsink.

... -> queue -> appsink

Appsink does not want to go to PLAYING state, other elements in this pipeline do it without problems.
In result the pipeline itself does not go into PLAYING state.

How are states exchanged between elements? How are the neighbor elements connected?
Is it all going via some common code inside gstreamer?
So queue is sending state to Gstreamer code and Gstreamer code gives state event to appsink?

Or is the queue element directly connected to the appsink element?
So queue is sending state directly to appsink element?

Is there some debugging possibility to see why state event is not running through till the end?
I have a bushandler which logs state changes for each element and I see my queue is going to PLAYING,
but appsink remains in READY, even when pending state is PLAYING.

cameraBusFunc  State changed: MyAppSink, oldState=NULL, newState=READY, pendingState=PLAYING

cameraBusFunc  State changed: MyQueue, oldState=NULL, newState=READY, pendingState=PLAYING
cameraBusFunc  State changed: MyQueue, oldState=READY, newState=PAUSED, pendingState=PLAYING
cameraBusFunc  State changed: MyQueue, oldState=PAUSED, newState=PLAYING, pendingState=VOID_PENDING

After this nothing more happens...

Any idea or hint?

Many thanks!

Best regards,

Marie

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20181019/ba2d2668/attachment.html>


More information about the gstreamer-devel mailing list