playbin2 -------- 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. * playbin2 - 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 ---------------- playbin2 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.