2016-12-08 22:58:08 +00:00
|
|
|
# playbin
|
|
|
|
|
|
|
|
The purpose of this element is to decode and render the media contained
|
2016-12-19 22:04:31 +00:00
|
|
|
in a given generic uri. The element extends `GstPipeline` and is typically
|
2016-12-08 22:58:08 +00:00
|
|
|
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
|
|
|
|
|
|
|
|
### decodebin
|
|
|
|
|
|
|
|
- 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 feature
|
|
|
|
|
|
|
|
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.
|