GNOME Bugzilla – Bug 668093
baseadativesink: Add new base class for adaptive sinks
Last modified: 2013-04-17 23:41:43 UTC
GstBaseAdaptiveSink is a new base class for sink elements in GStreamer that needs to fragment incoming streams and provide a media representation in the form of manifest or playlist for adaptive streaming formats such as DASH, HLS or Smooth Streaming. This base class use the GstForceKeyUnit events to fragment the incoming data and update the media representation. Subclasses must implement a GstMediaManager that renders the media representation based on the added fragments. The work is beeing done in the following branch: https://github.com/ylatuya/gst-plugins-bad/tree/base_fragmented
I have ported the base class to 1.0 in the following branch https://github.com/ylatuya/gst-plugins-bad/tree/baseadaptive This base class is being used for the DASH and HLS sinks, and it could be reused for Smooth Streaming too. The fragmentation happens with upstream GstForceKeyUnit events and it no longer requires and upstream element sending downstream GstForceKeyUnit as the previous implementation. It supports multibitrate streams, and fragments are handled in the GstFragment object, allowing for an application interface with the signals "new-playlist" and "new-fragment" in case applications need to handle them internally instead of writing them to disk. It also has 2 operating modes for fragments, chunked and not chunked, where fragments can be saved in separate files or in the same file for byterange access, which is used both by DASH and the version 4 of the HLS protocol.
This is for the same code as bug #688310, so let's discuss things there as there is already some comments. *** This bug has been marked as a duplicate of bug 688310 ***