[webkit-changes] [WebKit/WebKit] d5fddb: [LinearMediaPlayer] Blank video frames seen before...
aestes
noreply at github.com
Thu Jul 11 00:23:43 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: d5fddb160c2739f7d90e5a4b9b5ed1d6e30d69eb
https://github.com/WebKit/WebKit/commit/d5fddb160c2739f7d90e5a4b9b5ed1d6e30d69eb
Author: Andy Estes <aestes at apple.com>
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
More information about the webkit-changes
mailing list