Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d5fddb160c2739f7d90e5a4b9b5ed1d6e30d69eb
https://github.com/WebKit/WebKit/commit/d5fddb160c2739f7d90e5a4b9b5ed1d6e30d69eb
Author: Andy Estes <[email protected]>
Date: 2024-07-11 (Thu, 11 Jul 2024)
Changed paths:
M Source/WebCore/platform/graphics/MediaPlayerEnums.h
M
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h
M
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm
M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h
M Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm
M Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm
Log Message:
-----------
[LinearMediaPlayer] Blank video frames seen before docking and after undocking
https://bugs.webkit.org/show_bug.cgi?id=276453
rdar://130425275
Reviewed by Jer Noble.
Two issues resulted in blank frames briefly appearing in an <video> element in
element fullscreen:
1. Just prior to docking, an LMPlayableViewController is presented that
obscures the web view.
Since this VC's presentationMode is immediately changed to
`.fullscreenFromInline` which hides the
web view's scene and presents a new fullscreen scene, we should hide the view
controller while it's
in `.inline` mode (by setting its root view's alpha to 0).
2. Right after undocking, when committing the staged
AVSampleBufferDisplayLayer, MediaPlayerPrivate
would call renderingModeChanged(), which calls
Element::invalidateStyleAndLayerComposition(). This
results in the <video> element briefly rendering a black frame. To avoid this,
changed
MediaPlayerPrivate to call renderingModeChanged() as soon as the
AVSampleBufferDisplayLayer is
staged, while the LinearMediaKit scene is still occluding the web view.
* Source/WebCore/WebCore.xcodeproj/project.pbxproj:
* Source/WebCore/platform/graphics/MediaPlayerEnums.h:
*
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
*
Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::updateDisplayLayerAndDecompressionSession):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::destroyDecompressionSession):
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::ensureLayerOrVideoRenderer):
* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.h:
* Source/WebCore/platform/graphics/cocoa/MediaPlayerPrivateWebM.mm:
(WebCore::MediaPlayerPrivateWebM::updateDisplayLayerAndDecompressionSession):
(WebCore::MediaPlayerPrivateWebM::destroyDecompressionSession):
(WebCore::MediaPlayerPrivateWebM::ensureLayerOrVideoRenderer):
* Source/WebKit/Platform/ios/VideoPresentationInterfaceLMK.mm:
(WebKit::VideoPresentationInterfaceLMK::ensurePlayableViewController):
Canonical link: https://commits.webkit.org/280848@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