Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 284f68f80bbb6d1f192c62f2b33acf0268232657
https://github.com/WebKit/WebKit/commit/284f68f80bbb6d1f192c62f2b33acf0268232657
Author: Jean-Yves Avenard <[email protected]>
Date: 2024-11-22 (Fri, 22 Nov 2024)
Changed paths:
A LayoutTests/media/media-rvfc-paused-mp4-expected.txt
A LayoutTests/media/media-rvfc-paused-mp4.html
A LayoutTests/media/media-rvfc-paused-offscreen-mp4-expected.txt
A LayoutTests/media/media-rvfc-paused-offscreen-mp4.html
A LayoutTests/media/media-rvfc-paused-offscreen-webm-expected.txt
A LayoutTests/media/media-rvfc-paused-offscreen-webm.html
A LayoutTests/media/media-rvfc-paused-webm-expected.txt
A LayoutTests/media/media-rvfc-paused-webm.html
M LayoutTests/media/media-vp8-hiddenframes.html
M LayoutTests/media/utilities.js
M LayoutTests/platform/glib/TestExpectations
M LayoutTests/platform/ios/TestExpectations
M LayoutTests/platform/mac-wk1/TestExpectations
M LayoutTests/platform/mac/TestExpectations
M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm
M Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.h
M Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.mm
Log Message:
-----------
VideoMediaSampleRenderer can resolve its `WhenHasAvailableVideoFrame`
callback with a flushed frame.
https://bugs.webkit.org/show_bug.cgi?id=283443
rdar://140301261
Reviewed by Jer Noble and Youenn Fablet.
If we decoded the video frame while we were in the middle of a flush, we would
continue to notify the client
that a frame was available, even though that frame is flushed.
When we queue the task to notify the client that a frame has been decoded, we
now pass the current flushId value, if it changes when the task runs, drop the
message.
We also add some minimal logging.
Added tests.
* LayoutTests/media/media-rvfc-paused-mp4-expected.txt: Added.
* LayoutTests/media/media-rvfc-paused-mp4.html: Added.
* LayoutTests/media/media-rvfc-paused-offscreen-mp4-expected.txt: Added.
* LayoutTests/media/media-rvfc-paused-offscreen-mp4.html: Added.
* LayoutTests/media/media-rvfc-paused-offscreen-webm-expected.txt: Added.
* LayoutTests/media/media-rvfc-paused-offscreen-webm.html: Added.
* LayoutTests/media/media-rvfc-paused-webm-expected.txt: Added.
* LayoutTests/media/media-rvfc-paused-webm.html: Added.
* LayoutTests/media/media-vp8-hiddenframes.html: Remove FIXME and now use rVFC
promise as the issue preventing its used was fixed in 286853@main
* LayoutTests/media/utilities.js:
(waitForVideoFrame): Promise was incorrectly resolved with two elements. Can
only have one, return an array.
(waitForVideoFrameUntil): Ditto.
* LayoutTests/platform/glib/TestExpectations:
* LayoutTests/platform/mac-wk1/TestExpectations:
* LayoutTests/platform/mac/TestExpectations:
* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm: FlyBy: only
perform a readback if we need to and not whenever a frame is available.
(WebCore::MediaPlayerPrivateWebM::setHasAvailableVideoFrame):
* Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.h:
* Source/WebCore/platform/graphics/cocoa/VideoMediaSampleRenderer.mm:
(WebCore::VideoMediaSampleRenderer::decodeNextSample):
(WebCore::VideoMediaSampleRenderer::decodedFrameAvailable):
(WebCore::VideoMediaSampleRenderer::maybeQueueFrameForDisplay):
(WebCore::VideoMediaSampleRenderer::purgeDecodedSampleQueue):
(WebCore::VideoMediaSampleRenderer::flush): Cancel timer before purging the
compressed queue, to reduce the chance of having a midflight display.
(WebCore::VideoMediaSampleRenderer::notifyHasAvailableVideoFrame):
Canonical link: https://commits.webkit.org/286949@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes