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

Reply via email to