WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
NEW
280069
[WebVTT][GStreamer] WPT webvtt/api/VTTRegion/non-visible-cue-with-region.html isn't actually passing
https://bugs.webkit.org/show_bug.cgi?id=280069
Summary
[WebVTT][GStreamer] WPT webvtt/api/VTTRegion/non-visible-cue-with-region.html...
Enrique Ocaña
Reported
2024-09-20 09:15:51 PDT
Test LayoutTests/imported/w3c/web-platform-tests/webvtt/api/VTTRegion/non-visible-cue-with-region.html is currently passing, but just by sheer luck. The test performs an initial seek to 0.8s on a live video, and our current MediaPlayerPrivateGStreamer implementation ignores that kind of seeks[1]. The result is that the webpage and the HTMLMediaElement still thinks that it's seeking, but no seek has happened at all. currentTime is always 0.8s, as if a seek was in place. In the end, playback starts internally (from the begining instead of from 0.8s) and eventually reaches the end of the video (6s) on its own. At that moment, a defined video duration is set (it was infinity before), timeChanged() is called, and that notifies HTMLMediaElement about having traversed the cue end time (so oncueexit is triggered) and having reached the end (so onend is triggered). This is an excerpt of the backtrace of the call that generates oncueexit: WebCore::HTMLMediaElement::updateActiveTextTrackCues(WTF::MediaTime const&) WebCore::HTMLMediaElement::setReadyState(WebCore::MediaPlayerReadyState) WebCore::HTMLMediaElement::mediaPlayerReadyStateChanged() WebCore::MediaPlayer::readyStateChanged() WebCore::MediaPlayerPrivateGStreamer::updateStates() WebCore::MediaPlayerPrivateGStreamer::timeChanged(WTF::MediaTime const&) WebCore::MediaPlayerPrivateGStreamer::didEnd() WebCore::MediaPlayerPrivateGStreamer::handleMessage(_GstMessage*) And this is an excerpt of the backtrace of the call that generates onend: WebCore::HTMLMediaElement::mediaPlayerTimeChanged() WebCore::MediaPlayerPrivateGStreamer::timeChanged(WTF::MediaTime const&) WebCore::MediaPlayerPrivateGStreamer::didEnd() WebCore::MediaPlayerPrivateGStreamer::handleMessage(_GstMessage*) In the current implementation, a lucky management of the ReadyState causes oncueexit to happen before onend, making the test pass, but it's just luck. Bug
https://bugs.webkit.org/show_bug.cgi?id=275683
/ PR
https://github.com/WebKit/WebKit/pull/29998
intend to change the buffering implementation, and this test is the only regression remaining to have the patch ready. My point is that it shouldn't actually be considered a regression, since the test was actually passing by chance. I'm creating this bug to track the debugging of this bug and the proper implementation of seek on live streams (if that's ever possible) in the future. Low priority by now, I guess. [1]
https://github.com/WebKit/WebKit/blob/4f4db5aea9b8871ed9daff946b54bf200c84e193/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp#L579
Attachments
Add attachment
proposed patch, testcase, etc.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug