This is the general video sink.

1. The VideoSink pull fuction
-----------------------------

Normally an element pushes a gst_buffer to the videosink. This is nice for 
normal operations but can be slow for elements that talk to some kind
of hardware (like the video sink talks to the video card). 
Often these hardware devices can achieve a much higher performance if
the buffers are passed into some reserved area in memory. No other 
element than the element controlling the hardware knows about these
matters best, so there should be a way to get this information. 

The get_pad_pull function was added for this purpose. Before an element
can push a buffer, it can ask the destination for a buffer. The element
requesting the buffer can either:

 1. Query the meta data of the buffer, fill the buffer in the format given
    by the meta data and push it.

 2. If the buffer it receives is not appropriate, it can still generate
    a new buffer and send that one instead.

The videosink will for example generate a buffer with GST_BUFFER_DATA
pointing to an area in X shared memory.


2. VideoSink overlay
--------------------

The VideoSink will also send (in the meta data of the buffer) a pointer
to an overlay structure. The overlay structure contains all the info
needed for DGA and overlay clipping.

If the element can use overlay it has to do the following:

 1. Setup its overlay structures according to the info provided in the
    meta data.

 2. connect a callback function to the "overlay-change-notify" signal of
    the overlay_element of the overlay_info structure.

 3. set the did_overlay flag in the buffer meta data it received and push
    the buffer.

The callback function will be called whenever the overlay clippings 
have changed. The element has to update its clipping regions according
to the new clipping regions provided in the meta data it will receive in
the callback function.

Whenever an element wants to abort the overlay, it has to push a buffer
with the did_overlay flag set to FALSE.

The videosink can also abort the overlay by sending an "overlay-change-notify"
with the overlay_info == NULL


TODO:

- Need a much cleaner way of doing the overlay stuff.

- limit the amount of "overlay-change-notify" events.



