blob: 1c51f69b743254f8f2cc4cd5d3891112714b431b [file] [log] [blame]
The clock
---------
The clock always returns reference time
Element State change
--------------------
Each element receives the current clock reference time
in the state change function.
On PAUSED to PLAYING
An element starts sending buffers with timestamp
reftime + internal counter
After a seek, the element sets internal counters to 0
Bin state change
----------------
PAUSED to PLAYING
bin propagates clock time to children
Toplevel bin state change
-------------------------
PAUSED to PLAYING
start time is set to ref time
stream time is thus 0
start time is sent to state change of children
use case 1
----------
filesrc ! mad ! osssink
pipeline PAUSED to PLAYING:
start time = ref time
filesrc state change gets starttime
mad state change gets starttime
osssink state change gets starttime
mad sends buffers with timestamp starttime + internal counter
osssink syncs these samples against the clock with starttime + timestamp
PLAYING to PAUSED
nothing happens
use case 2
----------
{ filesrc ! mad ! queue } ! osssink
let it play for a while
PAUSE the thread
PLAY the thread
thread is not the toplevel bin, use same starttime as when
it first started.
do state change on elements with same starttime
use case 3
----------
filesrc ! mad ! mixer ! osssink
!
filesrc ! mad !-^