playbin2 Introduction

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

playbin2 Introduction

playbin2 Introduction

pastedImage_0.png

Playbin2 provides a stand-alone everything-in-one abstraction for an audio and/or video player.

Audio sink and video sink can be specified by application

Supports subtitle for video files

Adjustable A/V offset

Selects audio/video/subtitle streams by input selector

Audio post-processing by audio convert, audio resample and volume

The pipeline is created by playbin2 dynamically:

Typefind checks the source type

Demuxer parses the source data and create pads for all the streams, respectively

Playbin2 searches for and creates decoders in element factory who have capability to decode specific format of audio/video

Playbin2 creates and connects audio sink chain and video sink chain

Playbin2: interaction with application

Set/get properties of playbin2

“audio-sink”, “video-sink”

“current-audio”, “current-video”, “current-text”

“n-audio”, “n-video”, “n-text” (read only)

uri”, “suburi”, “av-offset”, “volume”, “mute”

Events

Bidirectional: flush start, flush end

Downstream: eos, new segment, tag

Upstream: qos, seek

Queries

Position, duration, latency, rate, seeking, segment

Messages

Eos, error, warning, info, tag, buffering, state changed, duration, latency,

Signals

“video-changed”, “audio-changed”, “text-changed”

“video-tags-changed”, “audio-tags-changed”, “text-tags-changed”

Playback: track selection

                                             

Pipeline for audio/video/subtitle multi-track file

Demuxer creates src pads for all the tracks, respectively

Each track has its own decoder and sink pad of input selector

One sink pad in input selector is activated to play corresponding track

Audio, video and subtitle have separated input selectors.

Take audio for example:

                                                 

                                                                                                      pastedImage_17.png

pastedImage_12.png

Input selector

Only push the data from active sink pad to its src pad

The data from all the sink pads shall be synchronized, so that timestamps can be consecutive when switch to another track. Otherwise, there will be no sound or video for a long time after switching track.

If demuxer gets samples in file mode (need a large queue before decoder):

             A lock is set for each inactive tracks to synchronize tracks. Otherwise, the inactive tracks would be decoded in full speed (usually much more faster than active track).

             The lock compares the received timestamp with the last timestamp of active track. If larger, waits until the next timestamp (buffer) of acitived track arrives; if smaller, drop this buffer and get the next buffer.

pastedImage_19.png

If demuxer gets samples in track mode and the queue is small:

            All tracks is synchronized by demuxer

No ratings
Version history
Last update:
‎10-08-2015 01:56 AM
Updated by: