[Webkit-unassigned] [Bug 166525] [GStreamer] FillTimer/buffering logic is not correct
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Thu Dec 29 08:39:58 PST 2016
https://bugs.webkit.org/show_bug.cgi?id=166525
Enrique Ocaña <eocanha at igalia.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |eocanha at igalia.com
--- Comment #2 from Enrique Ocaña <eocanha at igalia.com> ---
There are two cases here: on-disk buffering enabled and on-disk buffering disabled.
I've done several tests in WebKit with some code to force on-disk buffering. A ${HOME}/.cache/WebKitWebProcess-XXXXXX file is created by the GstDownloadBuffer element while the video is shown, and automatically deleted when the player is destroyed. See the pipeline dump in PAUSED state I'm attaching.
I can confirm that in such a scenario, the "buffer size" is actually the whole media size, so it makes sense to correlate "100% buffered" with "all the media has been downloaded". See some logs obtained for a video tag configured with https://download.blender.org/durian/trailer/sintel_trailer-1080p.mp4 (14621544 bytes). The {start,stop} values are in percentage with fixed comma (eg: 123456 is 12.3456%), and the b{start,stop,total} values are in bytes:
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): Percent buffering query failed
...
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): Percent buffering query failed
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): start: 0, stop: 1120, fillStatus: 0.112000
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): bstart: 0, bstop: 16384, btotal: 133988
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): start: 0, stop: 4482, fillStatus: 0.448200
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): bstart: 0, bstop: 65536, btotal: 135568
...
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): start: 0, stop: 962542, fillStatus: 96.254200
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): bstart: 0, bstop: 14073856, btotal: 579
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): start: 0, stop: 984953, fillStatus: 98.495300
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): bstart: 0, bstop: 14401536, btotal: 223
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): start: 0, stop: 1000000, fillStatus: 100.000000
### void WebCore::MediaPlayerPrivateGStreamer::fillTimerFired(): bstart: 0, bstop: 14621544, btotal: 0
For this reason I think that the current code seems right.
If on-disk buffering is disabled, the fillTimer isn't ever started and nothing related to buffering is reported.
Can you clarify your use case and provide some data which contradicts this analysis?
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.webkit.org/pipermail/webkit-unassigned/attachments/20161229/543094f4/attachment-0001.html>
More information about the webkit-unassigned
mailing list