<html>
<head>
<base href="https://bugs.webkit.org/" />
</head>
<body><span class="vcard"><a class="email" href="mailto:eocanha@igalia.com" title="Enrique Ocaña <eocanha@igalia.com>"> <span class="fn">Enrique Ocaña</span></a>
</span> changed
<a class="bz_bug_link
bz_status_NEW "
title="NEW - [GStreamer] FillTimer/buffering logic is not correct"
href="https://bugs.webkit.org/show_bug.cgi?id=166525">bug 166525</a>
<br>
<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>What</th>
<th>Removed</th>
<th>Added</th>
</tr>
<tr>
<td style="text-align:right;">CC</td>
<td>
</td>
<td>eocanha@igalia.com
</td>
</tr></table>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - [GStreamer] FillTimer/buffering logic is not correct"
href="https://bugs.webkit.org/show_bug.cgi?id=166525#c2">Comment # 2</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - [GStreamer] FillTimer/buffering logic is not correct"
href="https://bugs.webkit.org/show_bug.cgi?id=166525">bug 166525</a>
from <span class="vcard"><a class="email" href="mailto:eocanha@igalia.com" title="Enrique Ocaña <eocanha@igalia.com>"> <span class="fn">Enrique Ocaña</span></a>
</span></b>
<pre>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 <a href="https://download.blender.org/durian/trailer/sintel_trailer-1080p.mp4">https://download.blender.org/durian/trailer/sintel_trailer-1080p.mp4</a> (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?</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>