| Currently, when an element wants to push or pull, they call gst_pad_*. These functions then decide what |
| to do based on the selection of pointers in the pad. There are at least 2 options for each, plus some |
| header stuff to do various checking of flags. Unfortunately, because of the selection of pointers in |
| the pad, there is at least one case where scheduling has to be tricked, by providing a pointer to a |
| function with no body. |
| |
| What I propse is that these functionos be replaced with macros that call a function pointer directly. |
| The default functions (provided by GstPad) would be capable of chaining, that's about it. When a |
| schedule is formed, these get replaced with more specific functions, provided by GstBin or a subclass. |
| |
| In the chain case, the pad_push_func might even be replaced brute force with the chain function, since |
| they have the same prototype. In the cothreaded case, various functions would provide the ability to |
| switch, deal with bufpens, etc. |