Understanding schedulers
The scheduler is responsible for managing the plugins at runtime. The
main responsabilities are:
Preparing the plugins so they can be scheduled.
Monitoring state changes and enabling/disabling the element in the
chain.
Choosing an element as the entry point for the pipeline.
Selecting and distributing the global clock.
The scheduler is a plugable component, this means that alternative
schedulers can be written and plugged into GStreamer. The default scheduler
uses cothreads to schedule the plugins in a pipeline. Cothreads are fast
and lightweight user-space threads.
There is usually no need to interact with the scheduler directly, however
it some cases it is feasable to set a specific clock or force a specific
plugin as the entry point in the pipeline.