libdash

libdash is a C++ library that provides an object oriented (OO) interface to the MPEG-DASH standard. It’s the official reference software of the ISO/IEC MPEG-DASH standard and supports the full range of DASH264 test vectors of the DASH Industry Forum.

libdash is a C++ library that provides an object orient (OO) interface to the MPEG-DASH standard

Features

  • Open Source

    Open source available and licensed under the LGPL.
  • MPEG-DASH Reference

    Official reference client library of the ISO/IEC MPEG-DASH standard.
  • MPEG-DASH Compliant

    Implements the full MPEG-DASH standard according to ISO/IEC 23009-1, Information Technology – Dynamic Adaptive Streaming over HTTP (DASH) – Part 1: Media Presentation Description and Segment Formats
  • DASH-AVC/264 Compliant

    libdash is compliant to the DASH-AVC/264 Interoperability Points of the DASH Industry Forum und supports all DASH-264 test vectors.
  • Cross platform

    Cross platform build system based on cmake that includes Windows, Linux and Mac. Mobile platforms (Android, etc.) as well as 64-bit builds available within bitdash.
  • MPD

    Handles the download and xml parsing of the MPD. Based on that it provides an OO based interface to the MPD.
  • Media elements

    Media elements, e.g., SegmentURL, SegmentTemplate, etc., are downloadable in the OO based structure and can be downloaded through libdash.
  • Protocol support

    libdash supports all protocols that libcurl supports, e.g., HTTP, FTP, etc. and provides an external connection interface for any protocol.
  • Interface support

    libdash provides a configurable download interface, which enables the use of external connections that can be implemented by the user of the library for downloading media segments.
  • Extensive Documentation

    Comprehensive Doxygen documentation, various source-code examples and public mailing list for discussion, questions and bug-reports.
  • Sample player

    libdash comes together with a QT-based sample multimedia player that is based on ffmpeg and which uses libdash for the playback of one of our dataset MPD’s.
  • Windows & VS10 support

    For Windows-based development a VS10 solution with additional tests and the QT sample player is provided.


Professional Services

In addition to the public available open source resources and the mailing list support, we provide:

  • Professional development and integration services consulting
  • Relicensing of libdash
  • Webinars and Training (Detailed Description here)
  • bitdash components integrated with libdash
    • Effective DASH adaptation logics, enabling smooth media streaming and Up to 100 % higher effective media throughput, resulting in higher quality for your users
    • Cutting Edge HTML5 + JavaScript and Adobe Flash client implementations
    • Advanced network statistics
    • Advanced HTTP management (HTTP Header Management, HTTP Setting, etc.)
    • Simplified access to advanced DASH concepts for live and on-demand streaming

Feel free to contact us via sales@bitmovin.net so we can discuss your requirements and provide you an offer.


Open-Source License

libdash is open source available and licensed under LGPL.

As libdash is licensed under LGPL, changes to the library have to be published again to the open-source project. As many user and companies do not want to publish their specific changes, libdash can be also relicensed to a commercial license on request. Please contact sales@bitmovin.net to provide you an offer.


Architecture

The general architecture of MPEG-DASH is depicted in the figure below where the orange parts are standardized, i.e., the MPD and segment formats. The delivery of the MPD, the control heuristics and the media player itself, are depicted in blue in the figure. These parts are not standardized and allow the differentiation of industry solutions due to the performance or different features that can be integrated at that level. libdash is also depicted in blue and encapsulates the MPD parsing and HTTP part, which will be handled by the library. Therefore the library provides interfaces for the DASH Streaming Control and the Media Player to access MPDs and downloadable media segments. The download order of such media segments will not be handled by the library this is left to the DASH Streaming Control, which is an own component in this architecture but it could also be included in the Media Player.

In a typical deployment, a DASH server provides segments in several bitrates and resolutions. The client initially receives the MPD through libdash which provides than a convenient object oriented interface to that MPD. The MPD contains the temporal relationships for the various qualities and segments. Based on that information the client can download individual media segments through libdash at any point in time. Therefore varying bandwidth conditions can be handled by switching to the corresponding quality level at segment boundaries in order to provide a smooth streaming experience. This adaptation is not part of libdash and the MPEG-DASH standard and will be left to the application which is using libdash.

Architecture

Mailing List

We offer a public accessible mailing list for discussions, questions, announcements, bug-reports, etc. around libdash. Everybody is invited to join, you can find the registration at:

libdash-dev

There are a lot of things to do! So everybody is invited to contribute, to get involved in and excited about DASH!


Acknowledgements

We specially want to thank our passionate developers at bitmovin as well as the researchers at the Institute for Information Technology (ITEC) of the Alpen Adria Universität Klagenfurt (AAU)!

Furthermore we want to thank the Netidee initiative of the Internet Foundation Austria for partially funding the open source development of libdash.

Netidee 2012