[webkit-changes] [WebKit/WebKit] e994c1: Actively evict content in ManagedSourceBuffer unde...
Jean-Yves Avenard
noreply at github.com
Fri Feb 24 18:21:24 PST 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: e994c1218d752469951b880e4c2ca6021cfc79f9
https://github.com/WebKit/WebKit/commit/e994c1218d752469951b880e4c2ca6021cfc79f9
Author: Jean-Yves Avenard <jya at apple.com>
Date: 2023-02-24 (Fri, 24 Feb 2023)
Changed paths:
A LayoutTests/media/media-source/media-managedmse-memorypressure-expected.txt
A LayoutTests/media/media-source/media-managedmse-memorypressure.html
M LayoutTests/platform/glib/TestExpectations
M Source/WebCore/Modules/mediasource/MediaSource.cpp
M Source/WebCore/Modules/mediasource/MediaSource.h
M Source/WebCore/Modules/mediasource/SourceBuffer.cpp
M Source/WebCore/Modules/mediasource/SourceBuffer.h
M Source/WebCore/dom/EventTargetFactory.in
M Source/WebCore/html/HTMLMediaElement.cpp
M Source/WebCore/platform/graphics/PlatformTimeRanges.cpp
M Source/WebCore/platform/graphics/PlatformTimeRanges.h
M Source/WebCore/platform/graphics/SourceBufferPrivate.cpp
M Source/WebCore/platform/graphics/SourceBufferPrivate.h
M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp
M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h
M Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.messages.in
M Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp
M Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h
Log Message:
-----------
Actively evict content in ManagedSourceBuffer under memory pressure.
https://bugs.webkit.org/show_bug.cgi?id=252735
rdar://105769723
Reviewed by Jer Noble.
We call the Coded Frame Eviction algorithm when the content process receives
a memory pressure signal.
The eviction algorithm used is identical as the non-managed SourceBuffer's one.
Where the SourceBuffer will stop the eviction process as soon as sufficient
memory has been freed, with a ManagedSourceBuffer we evict as much as we
can over the entire source buffered range.
If an eviction occurred, the bufferedchange event will be fired on the
ManagedSourceBuffer.
* LayoutTests/platform/glib/TestExpectations: Test is failing as no WebProcess memory pressure handler is installed.
* LayoutTests/media/media-source/media-managedmse-memorypressure-expected.txt: Added.
* LayoutTests/media/media-source/media-managedmse-memorypressure.html: Added.
* Source/WebCore/Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::memoryPressure):
* Source/WebCore/Modules/mediasource/MediaSource.h:
* Source/WebCore/Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::memoryPressure):
* Source/WebCore/Modules/mediasource/SourceBuffer.h:
* Source/WebCore/dom/EventTargetFactory.in:
* Source/WebCore/html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::setBufferingPolicy):
* Source/WebCore/platform/graphics/PlatformTimeRanges.cpp:
(WebCore::PlatformTimeRanges::operator== const):
(WebCore::PlatformTimeRanges::operator!= const):
* Source/WebCore/platform/graphics/PlatformTimeRanges.h: Add operator== and operator!= support.
* Source/WebCore/platform/graphics/SourceBufferPrivate.cpp:
(WebCore::SourceBufferPrivate::evictCodedFrames):
(WebCore::SourceBufferPrivate::memoryPressure):
(WebCore::SourceBufferPrivate::evictFrames):
* Source/WebCore/platform/graphics/SourceBufferPrivate.h:
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.cpp:
(WebKit::RemoteSourceBufferProxy::memoryPressure):
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.h:
* Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.messages.in:
* Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.cpp:
(WebKit::SourceBufferPrivateRemote::memoryPressure):
* Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h:
Canonical link: https://commits.webkit.org/260825@main
More information about the webkit-changes
mailing list