4 There are four states, NULL, READY, PAUSED, PLAYING. state transitions only
5 happen from once neighbouring state to another.
7 NULL: the element is just being created, the initial state.
9 ! the element creates all of its resources (a thread will create
11 ! - most used by bins to set up thread context for its children
13 READY: the element is ready to start processing.
15 ! the element sets up its state so it can start processing buffers.
18 PAUSED: the element is paused
20 ! the element starts spinning
23 PLAYING: the element is playing
25 ! the element stops spinning
26 ! the element frees resources from other plugins (bufferpools)
30 ! element removes caps from pads
31 ! reset internal state
37 ! the element frees all of its resources (eg: pthread_join)
46 the state of a bin is equal to the maximum state of its children.
49 3) interaction with the scheduler
50 ---------------------------------
52 elements in the !PLAYING state are disabled in the scheduler.
55 4) action that can be performed by the app in the different states
56 ------------------------------------------------------------------
58 PLAYING: nothing, only iterate on the pipeline, some properties can
61 PAUSED: elements can be connected, removed, disconnected. some
62 properties can be changed
64 READY: as in PAUSED but *all* properties can be changed.