NEW236755
[compat] seeked event should be fired once the current frame has been displayed.
https://bugs.webkit.org/show_bug.cgi?id=236755
Summary [compat] seeked event should be fired once the current frame has been displayed.
Jean-Yves Avenard [:jya]
Reported 2022-02-16 23:04:07 PST
Consider the following page: ``` <html> <script> async function init() { let canvas = document.getElementsByTagName('canvas')[0]; let ms = new MediaSource(); let v = document.createElement("video"); v.src = URL.createObjectURL(ms); await once(ms, 'sourceopen'); let videosb = ms.addSourceBuffer("video/webm; codecs=vp8"); v.currentTime = 1.0; await Promise.all([fetchAndLoad(videosb, 'content/test-vp8-hiddenframes', [''], '.webm') , once(v, 'loadedmetadata'), once(v, 'seeked')]); canvas.width = v.videoWidth; canvas.height = v.videoHeight; let ctx = canvas.getContext("2d"); ctx.drawImage(v, 0, 0); } </script> <body onload="init();"> <canvas/> </body> ``` This will create a video element, attach media source, seek to 1s and wait for the seek to complete to then copy the video frame to the canvas. With Firefox and Chrome, the frame display in the canvas is the video frame at t=1s as expected However, in Safari, the frame displayed is of t=0s. This makes it difficult to create reftest for checking bug 236754 as you can't ever guarantee which frame is currently displayed on screen.
Attachments
Radar WebKit Bug Importer
Comment 1 2022-02-16 23:04:26 PST
Jean-Yves Avenard [:jya]
Comment 2 2025-01-23 05:42:58 PST
Note that the problem as described (with MSE) has been fixed and now the seeker event will only be fired once the video frame has been painted. Same with WebM. However, the MediaPlayerPrivateAVFObjC doesn't provide this guarantee
Note You need to log in before you can comment on or make changes to this bug.