[Webkit-unassigned] [Bug 99065] [GStreamer] Add support for Media Source API

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu Mar 28 16:46:15 PDT 2013


https://bugs.webkit.org/show_bug.cgi?id=99065





--- Comment #3 from Nadia Hilario <mnhilario at bluestreaktech.com>  2013-03-28 16:44:24 PST ---
Created an attachment (id=195677)
 --> (https://bugs.webkit.org/attachment.cgi?id=195677&action=review)
Media Source Player for the GStreamer Backend (prototype architecture)

Hi Philippe,

I'm sorry for not following up earlier.  The reason is that we did start implementing a Media Source player prototype for the GStreamer backend, but had to put it on hold indefinitely as we changed to a proprietary solution that is still in progress.  Unfortunately, a proposal for the GStreamer Media Source implementation had not yet been prepared.

To summarize the work done, our prototype was implemented in QtWebKit1 (Qt 4.8) and was based on the Media Source specification version 0.5.  We referenced the Chromium implementation to help us understand how Media Source should work.

We know there have been many updates to the spec and to WebKit since then, including the recently added MediaSourcePrivate interface.  In general though, our approach was the following (please also see attached for a diagram of the implemented architecture) :

  *   The existing MediaPlayerPrivateGStreamer engine was modified to support Media Source URIs, in addition to the existing support for web (http/https) URIs.

  *   Similar to the existing WebKitWebSrc gstreamer element that handles web URIs, a new gstreamer element named WebKitMediaSourceSrc was implemented to handle Media Source URIs.

  *   WebKitMediaSourceSrc registers its URI protocol handler, allowing uridecodebin to dynamically create the appropriate source element, either WebKitMediaSourceSrc or WebKitWebSrc, based on the provided URI.

  *   A new class MediaSourceGStreamer was also added to encapsulate the Media Source API implementation.  If a Media Source URI is loaded, MediaPlayerPrivateGStreamer creates a MediaSourceGStreamer object,  to which it forwards Media Source API calls.

  *   Similar to the existing WebKitWebSrc element that uses a StreamingClient object to interface with WebKit's network layer and receive media data,  the WebKitMediaSourceSrc element uses a new MediaSourceClientGStreamer object to interface with MediaSourceGStreamer and receive media segments.

  *   The WebKitMediaSourceSrc element has “sometimes” source pads and creates one appsrc per Source Buffer, when the Media Source API function sourceAddId() is called.

  *   The GStreamer Source Buffer model was not fully analyzed.  For the prototype, a Source Buffer was simply implemented as a struct named WebKitSourceBuffer that is associated with an appsrc.

With this approach, we were able to play simple Media Source examples that append one or many non-overlapping media segments, but we did not finish implementing the full API, nor operations such as pause, seek or getting the buffered time ranges.

Unfortunately, this is all the news we have available at this time.  We were not able to prepare a proper proposal for sharing before changing our approach.

Thanks and best regards.

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


More information about the webkit-unassigned mailing list