Bug 292951
| Summary: | [WPE][GStreamer][WebGL] Many video webgl tests timing out with "no valid frames" vorbis error | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Lauro Moura <lmoura> |
| Component: | WebGL | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | djg, kbr, kkinnunen, philn |
| Priority: | P2 | ||
| Version: | WebKit Nightly Build | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=296026 | ||
| Bug Depends on: | 236884 | ||
| Bug Blocks: | |||
Lauro Moura
Recently, a number of revisions enable new WebGL tests:
294256@main (cec6beae58bc) Enable newer WebGL CTS conformance2/renderbuffers tests https://bugs.webkit.org/show_bug.cgi?id=292260 rdar://150266920
294255@main (1aea2ca66680) Enable newer WebGL CTS conformance2/query tests https://bugs.webkit.org/show_bug.cgi?id=292258 rdar://150266311
294254@main (bce8dcf1b26e) Enable newer WebGL CTS conformance2/programs tests https://bugs.webkit.org/show_bug.cgi?id=292256 rdar://150266030
294253@main (2b4165eb3474) Enable newer WebGL CTS conformance2/misc tests https://bugs.webkit.org/show_bug.cgi?id=292255 rdar://150265421
294252@main (f63a060f377f) Enable newer WebGL CTS conformance2/extensions tests https://bugs.webkit.org/show_bug.cgi?id=292252 rdar://150264779
294251@main (7c0815ca4646) Enable newer WebGL CTS conformance/ tests https://bugs.webkit.org/show_bug.cgi?id=292183 rdar://150188705
294250@main (6a0a3c1da347) Enable newer WebGL CTS conformance2/vertex_arrays tests https://bugs.webkit.org/show_bug.cgi?id=292251 rdar://150262933
Since the WPE-Release post-commit job 20755 (294257@main), lots of webgl video tests are timing out, making the bot reach the early exit threshold.
I gardened a number of tests in 294773@main and 294786@main, but it was not enough.
Quite a majority of the tests timing out have this stderr output:
0:00:00.608145741 13036 0x5a71d095f290 ERROR webkitdisplay PlatformDisplayGStreamer.cpp:82:gstGLContext: Failed to fill in GStreamer context: glGetString error: 0x500
0:00:01.051327332 13036 0x5a71d095f290 ERROR webkitcommon GStreamerCommon.cpp:952:operator():<media-player-1> Got message: error message: 0x7ee394050400, time 99:99:99.999999999, seq-num 1389, element 'vorbisdec0', GstMessageError, gerror=(GError)NULL, debug=(string)"../gst-libs/gst/audio/gstaudiodecoder.c\(2506\):\ gst_audio_decoder_sink_eventfunc\ \(\):\ /GstPlayBin:media-player-1/GstURIDecodeBin:uridecodebin1/GstDecodeBin:decodebin1/GstVorbisDec:vorbisdec0:\012no\ valid\ frames\ found";
0:00:01.051354180 13036 0x5a71d095f290 ERROR webkitmediaplayer MediaPlayerPrivateGStreamer.cpp:2044:handleMessage:<media-player-1> No valid frames decoded before end of stream (url=file:///app/webkit/LayoutTests/webgl/resources/webgl_test_files/resources/red-green.webmvp8.webm) (code=7)
:q
Looks like related to the gstreamer version, as the error appears with GST 1.26.1, but not with 1.26.0
For the given input file: LayoutTests/webgl/resources/webgl_test_files/resources/red-green.webmvp8.webm:
- Flatpak: gst-play-1.0 - 1.26.1 - Same error message
- Wkdev SDK: gst-play-1.0 - 1.26.1 - Same error message
- Ubuntu 24.04: gst-play-1.0 - 1.24.1 - Plays normally
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Lauro Moura
And while 1.26.1 gst-discoverer-1.0 is able to extract information about the streams, it also shows the same error message.
gst-discoverer output:
An error was encountered while discovering the file
No valid frames decoded before end of stream
Properties:
Duration: 0:00:05.038000000
Seekable: yes
Live: no
container #0: WebM
video #1: VP8
Stream ID: c6ec7f15f6ce1f66cc108706167b84bc1e435a51f866ba4faf67a014faab85f8/001:001
Width: 80
Height: 128
Depth: 24
Frame rate: 30000/1001
Pixel aspect ratio: 1/1
Interlaced: false
Bitrate: 0
Max bitrate: 0
audio #2: Vorbis
Stream ID: c6ec7f15f6ce1f66cc108706167b84bc1e435a51f866ba4faf67a014faab85f8/002:002
Language: en
Channels: 2 (front-left, front-right)
Sample rate: 48000
Depth: 32
Bitrate: 0
Max bitrate: 0
For comparison, fprobe output:
Input #0, matroska,webm, from 'LayoutTests/webgl/resources/webgl_test_files/resources/red-green.webmvp8.webm':
Metadata:
encoder : Lavf52.68.0
Duration: 00:00:05.04, start: 0.067000, bitrate: 17 kb/s
Stream #0:0(eng): Video: vp8, yuv420p(progressive), 80x128, SAR 1:1 DAR 5:8, 29.97 fps, 29.97 tbr, 1k tbn (default)
Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)
Lauro Moura
Looks like it's related to this GStreamer issue: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4067
Philippe Normand
So, the audio tracks without samples were removed in https://bugs.webkit.org/show_bug.cgi?id=226078 which was then lost at the next WebGL conformance tests sync (https://github.com/WebKit/WebKit/commit/e890d7c23afacd25de033815741ab74f5c421aaa) because apparently the modified webm files were never upstreamed.
Philippe Normand
> Ubuntu 24.04: gst-play-1.0 - 1.24.1 - Plays normally
really?
Here in 24.04.2, gst 1.24.2 plays the file only for half a second, the audio decoder error is emitted.
Lauro Moura
(In reply to Philippe Normand from comment #4)
> > Ubuntu 24.04: gst-play-1.0 - 1.24.1 - Plays normally
>
> really?
>
> Here in 24.04.2, gst 1.24.2 plays the file only for half a second, the audio
> decoder error is emitted.
Sorry, I meant 1.24.2 on my side. And indeed the error indeed also appears, but only after 5 seconds, when exiting:
gst-play-1.0 LayoutTests/webgl/resources/webgl_test_files/resources/red-green.webmvp8.webm
Press 'k' to see a list of keyboard shortcuts.
Now playing /home/lauro/dev/WebKit/LayoutTests/webgl/resources/webgl_test_files/resources/red-green.webmvp8.webm
Redistribute latency...
Redistribute latency...
Redistribute latency...
ERROR No valid frames decoded before end of stream for file:///home/lauro/dev/WebKit/LayoutTests/webgl/resources/webgl_test_files/resources/red-green.webmvp8.webm
ERROR debug information: ../gst-libs/gst/audio/gstaudiodecoder.c(2506): gst_audio_decoder_sink_eventfunc (): /GstPlayBin3:playbin/GstURIDecodeBin3:uridecodebin3/GstDecodebin3:decodebin3-0/GstVorbisDec:vorbisdec0:
no valid frames found
Reached end of play list.
Philippe Normand
We're both correct ;)
- gst-play-1.0 starting from 1.24 uses playbin3 by default
- the issue doesn't happen when playbin3 is used
- the issue happens when playbin is used.
Philippe Normand
We'd need to switch to playbin3 and have this MR merged: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8434 and then the tests will no longer timeout.
For legacy/playbin we would need a similar patch, but I'm not sure this is worth.
So I'd keep this bug open until we switch to playbin3 and have the issue fixed upstream.
Lauro Moura
Gardened a number of related failures in bug281932 / 297460@main