playbin
--------

The purpose of this element is to decode and render the media contained in a
given generic uri. The element extends GstPipeline and is typically used in
playback situations.

Required features:

 - accept and play any valid uri. This includes
   - rendering video/audio
   - overlaying subtitles on the video
 - optionally read external subtitle files
 - allow for hardware (non raw) sinks
 - selection of audio/video/subtitle streams based on language.
 - perform network buffering/incremental download
 - gapless playback
 - support for visualisations with configurable sizes
 - ability to reject files that are too big, or of a format that would require
   too much CPU/memory usage.
 - be very efficient with adding elements such as converters to reduce the
   amount of negotiation that has to happen.
 - handle chained oggs. This includes having support for dynamic pad add and
   remove from a demuxer.

Components
----------

* decodebin2

 - performs the autoplugging of demuxers/decoders
 - emits signals when for steering the autoplugging
   - to decide if a non-raw media format is acceptable as output
   - to sort the possible decoders for a non-raw format
 - see also decodebin2 design doc

* uridecodebin

 - combination of a source to handle the given uri, an optional queueing element
   and one or more decodebin2 elements to decode the non-raw streams.

* playsink

 - handles display of audio/video/text.
 - has request audio/video/text input pad. There is only one sinkpad per type.
   The requested pads define the configuration of the internal pipeline. 
 - allows for setting audio/video sinks or does automatic sink selection.
 - allows for configuration of visualisation element.
 - allows for enable/disable of visualisation, audio and video.

* playbin

 - combination of one or more uridecodebin elements to read the uri and subtitle
   uri.
 - support for queuing new media to support gapless playback.
 - handles stream selection.
 - uses playsink to display.
 - selection of sinks and configuration of uridecodebin with raw output formats.


Gapless playback
----------------

playbin has an "about-to-finish" signal. The application should configure a new
uri (and optional suburi) in the callback. When the current media finishes, this
new media will be played next.


    
