[gst-devel] Example of a non-obvious bin scheduler

Erik Walthinsen omega at cse.ogi.edu
Mon Dec 4 10:11:31 CET 2000


A common optimization is to try to keep stuff in cache.  The current
scheduler ignores this.  A higher performance version (possibly a later
generation of the primary one) might attempt to optimize certain cases by
ignoring the standard execution flow in order to force all the elements of
the same type to run one after another.

In the mixer example, that means having the alsasrc run all in one go
without actually switching, putting 16 buffers in the 16 output pens. 
Then it would switch to the first EQ, then the second and third, etc. 
Next it runs all 16 gains through, and finally gets the end mixer
involved.

This optimizes code cache footprint within the timespan of one iteration
(typically a millisecond, so a rather significant amount of time
cache-wise).  This is especially useful when you really do have elements
with large cache footprints, like a complex filter with a large dataset. 

         Erik Walthinsen <omega at cse.ogi.edu> - Staff Programmer @ OGI
        Quasar project - http://www.cse.ogi.edu/DISC/projects/quasar/
   Video4Linux Two drivers and stuff - http://www.cse.ogi.edu/~omega/v4l2/
        __
       /  \             SEUL: Simple End-User Linux - http://www.seul.org/
      |    | M E G A           Helping Linux become THE choice
      _\  /_                          for the home or office user




More information about the gstreamer-devel mailing list