[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