Bug 248217
Summary: | [GStreamer] Fix readyState calculations | ||
---|---|---|---|
Product: | WebKit | Reporter: | Vivienne Watermeier <vwatermeier> |
Component: | Media | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | webkit-bug-importer |
Priority: | P2 | Keywords: | InRadar |
Version: | WebKit Nightly Build | ||
Hardware: | Unspecified | ||
OS: | Unspecified |
Vivienne Watermeier
On some platforms, the audio sink is acting as a fake sink while the decoder fetches data from the pipeline and transfers it to the SoC drivers, removing it from the gstreamer pipeline. This is done even in READY and PAUSED states.
Now, in webkit, if the progressive playback player is in a READY or PAUSED state, we're assuming the queue2 element (or multiqueue in AV pipelines) is very much the only place which accumulates the data and thus we treat it like a reliable source of information on whether we have enough data to play or not.
What happens is the following: for pipelines with very low download speed (like e.g. livestreams) we're slowly feeding the queue2 element with data (regardless the READY/PAUSED/PLAYING state) while the decoder is consuming the data very fast from the very same queue2 element at the same time. So, generally speaking, in that situation (on that platform) we cannot really relay on buffering messages anymore - regardless the state a player is in.
Additionally, since the buffering query is issued to the entire pipeline, on some platforms it may yield misleading results if some random element implements buffering query and receives that query first.
See: https://github.com/WebPlatformForEmbedded/WPEWebKit/pull/975
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Vivienne Watermeier
I forgot to mention, on that platform the audio sink implements buffering queries, so that could be used to get accurate information, which is why the mentioned buffering query[1] is relevant.
[1]: https://github.com/WebKit/WebKit/blob/9ba628e9a29dbe1c7519f925f8e3f1ce94e73076/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp#L2340
Vivienne Watermeier
Pull request: https://github.com/WebKit/WebKit/pull/6732
EWS
Committed 257066@main (738525821b03): <https://commits.webkit.org/257066@main>
Reviewed commits have been landed. Closing PR #6732 and removing active labels.
Radar WebKit Bug Importer
<rdar://problem/102711776>