Some more random thoughts

Original commit message from CVS:
Some more random thoughts
This commit is contained in:
Wim Taymans 2002-11-02 14:01:51 +00:00
parent f330cdb86c
commit d18ed58ee4
3 changed files with 143 additions and 0 deletions

View file

@ -0,0 +1,88 @@
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 !-^

View file

@ -0,0 +1,41 @@
blocking wait
-------------
- allocate a new clock entry
- add to list of pending sync waits
- do {
wait on entry
} while (entry != restart)
- free entry/remove from list
async wait
----------
- if no thread, start thread
- alloc a new clock entry
- add to list of pending async waits
- signal thread to restart timeouts
async thread
------------
while (true) {
if (no entry) wait for restart
do {
take first entry
wait on it
} while (entry != restart)
call entry signal function
free entry/remove from list
}
clock adjust
------------
- loop over sync/async entries
- restart all entries

View file

@ -0,0 +1,14 @@
PadProbes
---------
Required functionality
- get notification of data passing on arbitrary pad
- posibility to drop data
- posibility to change/inspect data
- single shot probe
- filter on events/buffers?
- filter on timestamp?
- filter on types of events?