WebPlatformForEmbedded / WPEWebKit

WPE WebKit port (downstream)
210 stars 135 forks source link

[MSE][GStreamer] allow fallback to seeked position on seek finish #1338

Closed emutavchi closed 3 weeks ago

emutavchi commented 1 month ago

MediaPlayerPrivateGStreamer may report incorrect position (last cached) immediately after seek. This can happen when didPreroll is called on async-done with pipeline still in async transition to playing state: current: PAUSED, pending: PLAYING, result: ASYNC. 40cfa6a6170658709d2eafdc10657bc67a6ec207 disables querying position from the sinks in this case resulting in last cached value (before seek) to be returned. Which confuses some tests from YouTube WV SFR/HFR suite, and makes it trigger multiple seeks one after another.

The proposed change works around the problem by allowing fall back to last seeked position until pipeline preroll completes. Similar to MediaPlayerPrivateGStreamer::finishSeek().

calvaris commented 1 month ago

Can you please provide an html that reproduces the issue, please?

emutavchi commented 1 month ago

@calvaris it is reproducible with YouTube test suite:

calvaris commented 1 month ago

Ok, that helps but what I need is that you craft an html, because I need to add my own traces to that HTML, etc.

modeveci commented 1 month ago

Hi @calvaris, Can't these pages help as those are open source YT MSE conformance tests?

calvaris commented 1 month ago

No, managing those nowadays is not easy so please, provide a simple HTML example.

calvaris commented 1 month ago

I guess I have to try it.

calvaris commented 3 weeks ago

After landing https://github.com/WebKit/WebKit/pull/29670 , I backported it to 2.38 as eb6ae0a7f8ba and in 2.42 as 8cead0543c8b. Closing.