[Bug 675625] New: [dashbin] a streaming client supporting the new MPEG DASH standard

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Mon May 7 10:08:31 PDT 2012


https://bugzilla.gnome.org/show_bug.cgi?id=675625
  GStreamer | gst-plugins-bad | 0.10.36

           Summary: [dashbin] a streaming client supporting the new MPEG
                    DASH standard
    Classification: Platform
           Product: GStreamer
           Version: 0.10.36
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: Normal
         Component: gst-plugins-bad
        AssignedTo: gstreamer-bugs at lists.freedesktop.org
        ReportedBy: gennarone at gmail.com
         QAContact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---


Created an attachment (id=213609)
 View: https://bugzilla.gnome.org/attachment.cgi?id=213609
 Review: https://bugzilla.gnome.org/review?bug=675625&attachment=213609

[dashbin] a streaming client supporting the new MPEG DASH standard

In attachment: DASHBIN-initial-release.patch

DASH is the new Dynamic Adaptive Streaming over HTTP standard from MPEG.
This patch adds the support for DASH in GStreamer, through the new bin element
DASHBIN. 

More in detail, the patch adds 3 new elements to the gst-plugins-bad-0.10.23
plugin package:

1) mpdcommon: an helper library to browse and manage the DASH MPD manifest
files;
2) mpdparse: the mpdparse plugin, that detects and parses the MPD manifest
files;
3) dashbin: the DASH client, implemented as a src bin;

A simple usage example is:
gst-launch \
dashbin location=http://example.com/dash_manifest.mpd \
! qtdemux ! queue ! ffdec_h264 ! xvimagesink

In the initial state, DASHBIN creates a simple 2 elements pipeline:

souphttpsrc ! mpdparse --> src pad

whenever the mpdparse element detects a valid DASH MPD manifest file (or if a
local MPD file is passed to mpdparse through the "input-mpd-file" property),
it parses it and then it fires the "on-new-mpd" signal.
DASHBIN catches the signal and creates from 1 to 3 new download pipelines,
depending on the content of the MPD file.

The maximum configuration of the bin is the following:

# MPD manifest file download pipeline
souphttpsrc ! mpdparse ! fakesink

# video download pipeline
souphttpsrc ! queue --> src pad

# audio download pipeline
souphttpsrc ! queue --> src_1 pad

# subtitles download pipeline
souphttpsrc ! queue --> src_2 pad

Often, only the video pipeline is present (and the stream will contain several
video/audio/subtitles tracks), but the DASH standard supports also separate
delivery of video/audio/subtitles tracks.

Each of the pipelines has a 3-states buffer control mechanism based on
thresholds. The 3 states are PREFETCHING (during preroll, or when we are
re-buffering after a buffer under-run), NORMAL (downloading new data and
playing buffered data at the same time) and WAITING (after a buffer overrun, we
delay the download of new segments while we consume some buffered data).
The buffer thresholds can be specified by the user (in bytes or seconds)
through several properties. By default, DASHBIN uses the initial buffering time
from the MPD file.

Automatic adaptation to the available bandwidth is not included in this
release. It will be provided in a future update, probably in the form of an
external library.
The max-video-bw and max-audio-bw properties allow the user (or the controlling
application) to select the appropriate bandwidth of the video and audio
representations.
The change is effective starting from the next data segment.

DASHBIN wraps all the properties of the souphttpsrc element and also it exposes
an URIHandler interface. Setting a RANK above GST_RANK_PRIMARY, it will
overtake the souphttpsrc element as the default handler for HTTP links,
enabling DASH support on all playbin2 based applications. If no MPD manifest
file is detected, the mpdparse plugin will work in pass-through mode (like a
typefind element) keeping full compatibility with the plain souphttpsrc
element.

DASHBIN partially supports the MPD syntax from the first published version of
the standard (ISO/IEC 23009-1 2012-04-01), together with some syntax elements
from older versions of the standard, in order to keep compatibility with all
the currently available test material. In a future update, legacy support will
be dropped and the support for the published version of the standard will be
completed.

DASHBIN currently supports the "ISO media file format On Demand" profile and
the "MPEG-2 TS simple" profile.
Support for more advanced profiles (starting from the Live profile) will be
implemented in the future, as DASHBIN is still under heavy development.

Here you can find a few test sequences (provided by Klagenfurt University):

# Big Buck Bunny
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/BigBuckBunny/MPDs/BigBuckBunnyNonSeg_1s_isoffmain_DIS_23009_1_v_2_1c2_2011_08_30.mpd
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/BigBuckBunny/MPDs/BigBuckBunny_1s_isoffmain_DIS_23009_1_v_2_1c2_2011_08_30.mpd
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/BigBuckBunny/MPDs/test-dashjs.mpd

# Elephants Dream
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/ElephantsDream/MPDs/ElephantsDreamNonSeg_1s_isoffmain_DIS_23009_1_v_2_1c2_2011_08_30.mpd
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/ElephantsDream/MPDs/ElephantsDream_1s_isoffmain_DIS_23009_1_v_2_1c2_2011_08_30.mpd

# Of Forest And Men
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/OfForestAndMen/forest_15s/OfForestAndMen_15s_isoffmain_DIS_23009_1_v_2_1c2_2011_08_30.mpd

# Red Bull Play Streets
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/RedBullPlayStreets/redbull_4s/RedBullPlayStreets_4s_isoffmain_DIS_23009_1_v_2_1c2_2011_08_30.mpd

# The Swiss Account
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/TheSwissAccount/MPDs/TheSwissAccount_4s_isoffmain_DIS_23009_1_v_2_1c2_2011_08_30.mpd

# Valkaama
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/Valkaama/MPDs/Valkaama_1s_act_isoffmain_DIS_23009_1_v_2_1c2_2011_08_30.mpd

# Old Syntax:
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/Selected_VLC_Plugin_MPDs/BigBuckBunny_15s_DASH_VLC_Compatible_4-Representations_720p.mpd
http://www-itec.uni-klu.ac.at/ftp/datasets/mmsys12/Selected_VLC_Plugin_MPDs/RedBullPlayStreets_4s_DASH_VLC_Compatible_3-Representatins_720p.mpd

Best regards,
Gianluca Gennari

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list