[webkit-changes] [WebKit/WebKit] bf1d50: [MSE] MediaSourcePrivate::buffered() shouldn't cal...

Jean-Yves Avenard noreply at github.com
Fri Dec 8 22:52:54 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bf1d50b780f12c0892b309371ce94423045002a8
      https://github.com/WebKit/WebKit/commit/bf1d50b780f12c0892b309371ce94423045002a8
  Author: Jean-Yves Avenard <jya at apple.com>
  Date:   2023-12-08 (Fri, 08 Dec 2023)

  Changed paths:
    M Source/WebCore/Modules/mediasource/ManagedMediaSource.cpp
    M Source/WebCore/Modules/mediasource/MediaSource.cpp
    M Source/WebCore/Modules/mediasource/MediaSource.h
    M Source/WebCore/platform/graphics/MediaSourcePrivate.cpp
    M Source/WebCore/platform/graphics/MediaSourcePrivate.h
    M Source/WebCore/platform/graphics/MediaSourcePrivateClient.h
    M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp
    M Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h
    M Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp
    M Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h

  Log Message:
  -----------
  [MSE] MediaSourcePrivate::buffered() shouldn't call its client
https://bugs.webkit.org/show_bug.cgi?id=266064
rdar://119369641

Reviewed by Youenn Fablet.

Have MediaSourcePrivate be the owner of the buffered range and have the MediaSource
query its MediaSourcePrivate instead.
By keeping it in the MediaSourcePrivate we can remove a synchronous call which will
no longer be possible once the MediaSourcePrivate runs in a different queue than the MediaSource.

Similarly, also make MediaSource not hold its duration, but have the MediaSourcePrivate do so.

* Source/WebCore/Modules/mediasource/ManagedMediaSource.cpp:
(WebCore::ManagedMediaSource::isBuffered const):
* Source/WebCore/Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::duration const):
(WebCore::MediaSource::buffered const):
(WebCore::MediaSource::seekable):
(WebCore::MediaSource::hasBufferedTime):
(WebCore::MediaSource::monitorSourceBuffers):
(WebCore::MediaSource::setDurationInternal):
(WebCore::MediaSource::detachFromElement):
(WebCore::MediaSource::updateBufferedIfNeeded):
* Source/WebCore/Modules/mediasource/MediaSource.h:
* Source/WebCore/platform/graphics/MediaSourcePrivate.cpp:
(WebCore::MediaSourcePrivate::duration const):
(WebCore::MediaSourcePrivate::bufferedChanged):
(WebCore::MediaSourcePrivate::buffered const):
* Source/WebCore/platform/graphics/MediaSourcePrivate.h:
* Source/WebCore/platform/graphics/MediaSourcePrivateClient.h:
* Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.cpp:
(WebKit::RemoteMediaSourceProxy::bufferedChanged):
(WebKit::RemoteMediaSourceProxy::buffered const): Deleted. Implemented in the base class.
* Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.h:
* Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp:
(WebKit::MediaSourcePrivateRemote::durationChanged): ensure that the base class durationChanged is called.
(WebKit::MediaSourcePrivateRemote::bufferedChanged):
* Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h:

Canonical link: https://commits.webkit.org/271794@main




More information about the webkit-changes mailing list