RESOLVED FIXED162920
[MSE] Expose additional MediaSource methods to MediaSourcePrivate
https://bugs.webkit.org/show_bug.cgi?id=162920
Summary [MSE] Expose additional MediaSource methods to MediaSourcePrivate
Enrique Ocaña
Reported 2016-10-04 10:46:00 PDT
The GStreamer MSE platform implementation needs to report duration changes and trigger monitorSourceBuffers() calls.
Attachments
Patch (3.29 KB, patch)
2016-10-04 10:49 PDT, Enrique Ocaña
no flags
Call sequence of MediaSource duration change from MediaSourceGStreamer::durationChanged() (41.30 KB, image/png)
2016-10-09 09:37 PDT, Enrique Ocaña
no flags
Patch (3.25 KB, patch)
2016-10-16 12:12 PDT, Enrique Ocaña
no flags
Patch (3.25 KB, patch)
2016-10-26 01:24 PDT, Enrique Ocaña
no flags
Enrique Ocaña
Comment 1 2016-10-04 10:49:35 PDT
Xabier Rodríguez Calvar
Comment 2 2016-10-08 09:10:46 PDT
Comment on attachment 290618 [details] Patch For me this is a go unless Eric or Jer say otherwise.
Jer Noble
Comment 3 2016-10-09 08:02:28 PDT
(In reply to comment #2) > Comment on attachment 290618 [details] > Patch > > For me this is a go unless Eric or Jer say otherwise. This is fine with me. But I am curious why the MediaSourcePrivate would want to set the duration rather than its SourceBufferPrivate objects doing so.
Enrique Ocaña
Comment 4 2016-10-09 09:37:21 PDT
Created attachment 291046 [details] Call sequence of MediaSource duration change from MediaSourceGStreamer::durationChanged() (In reply to comment #3) > This is fine with me. But I am curious why the MediaSourcePrivate would want > to set the duration rather than its SourceBufferPrivate objects doing so. MediaSourceGStreamer is our platform implementation of MediaSourcePrivate. MediaSourceGStreamer::durationChanged() is the one reporting the duration change to MediaPlayerPrivateGStreamerMSE (our player private) and the player reports it to MediaSource (seen as MediaSourcePrivateClient by it). See attached call hierarchy snapshot to get it graphically (levels go from callees to callers, two callers at the same level mean they're independent callers). How would the call sequence be for the duration report via SourceBufferPrivate which you suggest?
Jer Noble
Comment 5 2016-10-09 13:47:06 PDT
Aha. I had thought that MediaSource was the only MediaSourcePrivateClient, as the point of the client interface is to avoid having the platform/ have knowledge of dom-level objects. In the Mac port, the MediaSourcePrivate and MediaPlayerPrivate objects talk directly to one another. So when the duration changes, SourceBufferPrivate tells SourceBuffer, who tells MediaSource, who tells MediaSourcePrivate, who tells MediaPlayerPrivate. We did it this way because the duration calculations all happen up in the dom-level MediaSource object. There's no reason why our Private classes have to calculate the duration. So you're welcome to keep using the client interfaces the way you do in this patch, but I'd recommend trying to re-use the dom-level code as much as possible; that way when other ports update that behavior according to newer versions of the spec, your port will. Rendition from that.
Enrique Ocaña
Comment 6 2016-10-16 12:12:56 PDT
Enrique Ocaña
Comment 7 2016-10-26 01:24:19 PDT
Enrique Ocaña
Comment 8 2016-10-26 01:50:01 PDT
Comment on attachment 292902 [details] Patch Clearing flags on attachment: 292902 Committed r207889: <http://trac.webkit.org/changeset/207889>
Enrique Ocaña
Comment 9 2016-10-26 01:50:09 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.