Changeset 269907 in webkit


Ignore:
Timestamp:
Nov 17, 2020 9:25:27 AM (3 years ago)
Author:
Peng Liu
Message:

[Media In GPU Process][MSE] Add infrastructure needed to run MediaPlayerPrivateMediaSourceAVFObjC in the GPU process
https://bugs.webkit.org/show_bug.cgi?id=218912

Reviewed by Eric Carlson.

Source/WebCore:

This patch makes the MSE version of MediaPlayer::load() the same as the one in MediaPlayerPrivate
to support running MSE MediaPlayerPrivate(s) in the GPU process.

No new tests, no functional change yet.

  • Headers.cmake:
  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::createSourceBufferPrivate):

  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::appendBufferTimerFired):
(WebCore::SourceBuffer::sourceBufferPrivateAppendComplete):

  • WebCore.xcodeproj/project.pbxproj:
  • platform/ContentType.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::load):
(WebCore::MediaPlayer::loadWithNextMediaEngine):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:
  • platform/graphics/MediaSourcePrivate.h:
  • platform/graphics/SourceBufferPrivateClient.h:
  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::load):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::load):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::load):

  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:

(WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):

  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

(WebCore::SourceBufferPrivateAVFObjC::appendCompleted):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::load):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::load):

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
  • platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:

(WebCore::PlaybackPipeline::addSourceBuffer):

  • platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:

(WebCore::SourceBufferPrivateGStreamer::didReceiveAllPendingSamples):
(WebCore::SourceBufferPrivateGStreamer::appendParsingFailed):

  • platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:

(WebCore::MockMediaPlayerMediaSource::load):

  • platform/mock/mediasource/MockMediaPlayerMediaSource.h:
  • platform/mock/mediasource/MockMediaSourcePrivate.cpp:

(WebCore::MockMediaSourcePrivate::addSourceBuffer):

  • platform/mock/mediasource/MockSourceBufferPrivate.cpp:

(WebCore::MockSourceBufferPrivate::append):

Source/WebKit:

Add MediaSourcePrivateRemote/RemoteMediaSourceProxy and SourceBufferPrivateRemote/RemoteSourceBufferProxy,
and setup IPC connections for them.

  • CMakeLists.txt:
  • DerivedSources-input.xcfilelist:
  • DerivedSources-output.xcfilelist:
  • DerivedSources.make:
  • GPUProcess/GPUProcessSessionParameters.h:
  • GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::loadMediaSource):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
  • GPUProcess/media/RemoteMediaSourceProxy.cpp: Added.

(WebKit::RemoteMediaSourceProxy::RemoteMediaSourceProxy):
(WebKit::RemoteMediaSourceProxy::~RemoteMediaSourceProxy):
(WebKit::RemoteMediaSourceProxy::setPrivateAndOpen):
(WebKit::RemoteMediaSourceProxy::duration const):
(WebKit::RemoteMediaSourceProxy::buffered const):
(WebKit::RemoteMediaSourceProxy::seekToTime):
(WebKit::RemoteMediaSourceProxy::monitorSourceBuffers):
(WebKit::RemoteMediaSourceProxy::setLogIdentifier):
(WebKit::RemoteMediaSourceProxy::failedToCreateRenderer):
(WebKit::RemoteMediaSourceProxy::addSourceBuffer):

  • GPUProcess/media/RemoteMediaSourceProxy.h: Added.
  • GPUProcess/media/RemoteMediaSourceProxy.messages.in: Added.
  • GPUProcess/media/RemoteSourceBufferIdentifier.h: Added.
  • GPUProcess/media/RemoteSourceBufferProxy.cpp: Added.

(WebKit::RemoteSourceBufferProxy::create):
(WebKit::RemoteSourceBufferProxy::RemoteSourceBufferProxy):
(WebKit::RemoteSourceBufferProxy::~RemoteSourceBufferProxy):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveInitializationSegment):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveSample):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateHasAudio const):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateHasVideo const):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateReenqueSamples):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidBecomeReadyForMoreSamples):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateFastSeekTimeForMediaTime):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateAppendComplete):
(WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveRenderingError):
(WebKit::RemoteSourceBufferProxy::append):

  • GPUProcess/media/RemoteSourceBufferProxy.h: Added.
  • GPUProcess/media/RemoteSourceBufferProxy.messages.in: Added.
  • GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp:
  • Scripts/webkit/messages.py:
  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::load):
(WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load): Deleted.

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/MediaSourcePrivateRemote.cpp: Added.

(WebKit::MediaSourcePrivateRemote::create):
(WebKit::MediaSourcePrivateRemote::MediaSourcePrivateRemote):
(WebKit::MediaSourcePrivateRemote::~MediaSourcePrivateRemote):
(WebKit::MediaSourcePrivateRemote::addSourceBuffer):
(WebKit::MediaSourcePrivateRemote::durationChanged):
(WebKit::MediaSourcePrivateRemote::markEndOfStream):
(WebKit::MediaSourcePrivateRemote::unmarkEndOfStream):
(WebKit::MediaSourcePrivateRemote::readyState const):
(WebKit::MediaSourcePrivateRemote::setReadyState):
(WebKit::MediaSourcePrivateRemote::waitForSeekCompleted):
(WebKit::MediaSourcePrivateRemote::seekCompleted):
(WebKit::MediaSourcePrivateRemote::logChannel const):

  • WebProcess/GPU/media/MediaSourcePrivateRemote.h: Added.
  • WebProcess/GPU/media/RemoteCDMConfiguration.h:
  • WebProcess/GPU/media/RemoteCDMInstanceConfiguration.h:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.h:
  • WebProcess/GPU/media/RemoteMediaSourceIdentifier.h: Added.
  • WebProcess/GPU/media/SourceBufferPrivateRemote.cpp: Added.

(WebKit::SourceBufferPrivateRemote::create):
(WebKit::SourceBufferPrivateRemote::SourceBufferPrivateRemote):
(WebKit::SourceBufferPrivateRemote::~SourceBufferPrivateRemote):
(WebKit::SourceBufferPrivateRemote::setClient):
(WebKit::SourceBufferPrivateRemote::append):
(WebKit::SourceBufferPrivateRemote::abort):
(WebKit::SourceBufferPrivateRemote::resetParserState):
(WebKit::SourceBufferPrivateRemote::removedFromMediaSource):
(WebKit::SourceBufferPrivateRemote::readyState const):
(WebKit::SourceBufferPrivateRemote::setReadyState):
(WebKit::SourceBufferPrivateRemote::flush):
(WebKit::SourceBufferPrivateRemote::enqueueSample):
(WebKit::SourceBufferPrivateRemote::isReadyForMoreSamples):
(WebKit::SourceBufferPrivateRemote::setActive):
(WebKit::SourceBufferPrivateRemote::notifyClientWhenReadyForMoreSamples):
(WebKit::SourceBufferPrivateRemote::canSetMinimumUpcomingPresentationTime const):
(WebKit::SourceBufferPrivateRemote::setMinimumUpcomingPresentationTime):
(WebKit::SourceBufferPrivateRemote::clearMinimumUpcomingPresentationTime):
(WebKit::SourceBufferPrivateRemote::canSwitchToType):
(WebKit::SourceBufferPrivateRemote::sourceBufferPrivateAppendComplete):
(WebKit::SourceBufferPrivateRemote::logChannel const):

  • WebProcess/GPU/media/SourceBufferPrivateRemote.h: Added.
  • WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in: Added.
Location:
trunk/Source
Files:
8 added
48 edited
5 copied

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r269902 r269907  
     12020-11-17  Peng Liu  <peng.liu6@apple.com>
     2
     3        [Media In GPU Process][MSE] Add infrastructure needed to run MediaPlayerPrivateMediaSourceAVFObjC in the GPU process
     4        https://bugs.webkit.org/show_bug.cgi?id=218912
     5
     6        Reviewed by Eric Carlson.
     7
     8        This patch makes the MSE version of MediaPlayer::load() the same as the one in MediaPlayerPrivate
     9        to support running MSE MediaPlayerPrivate(s) in the GPU process.
     10
     11        No new tests, no functional change yet.
     12
     13        * Headers.cmake:
     14        * Modules/mediasource/MediaSource.cpp:
     15        (WebCore::MediaSource::createSourceBufferPrivate):
     16        * Modules/mediasource/SourceBuffer.cpp:
     17        (WebCore::SourceBuffer::appendBufferTimerFired):
     18        (WebCore::SourceBuffer::sourceBufferPrivateAppendComplete):
     19        * WebCore.xcodeproj/project.pbxproj:
     20        * platform/ContentType.h:
     21        * platform/graphics/MediaPlayer.cpp:
     22        (WebCore::MediaPlayer::load):
     23        (WebCore::MediaPlayer::loadWithNextMediaEngine):
     24        * platform/graphics/MediaPlayer.h:
     25        * platform/graphics/MediaPlayerPrivate.h:
     26        * platform/graphics/MediaSourcePrivate.h:
     27        * platform/graphics/SourceBufferPrivateClient.h:
     28        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
     29        (WebCore::MediaPlayerPrivateAVFoundation::load):
     30        * platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
     31        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
     32        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
     33        (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::load):
     34        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
     35        * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:
     36        (WebCore::MediaPlayerPrivateMediaStreamAVFObjC::load):
     37        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
     38        * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
     39        (WebCore::MediaSourcePrivateAVFObjC::addSourceBuffer):
     40        * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
     41        (WebCore::SourceBufferPrivateAVFObjC::appendCompleted):
     42        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
     43        (WebCore::MediaPlayerPrivateGStreamer::load):
     44        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
     45        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
     46        (WebCore::MediaPlayerPrivateGStreamerMSE::load):
     47        * platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:
     48        * platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
     49        (WebCore::PlaybackPipeline::addSourceBuffer):
     50        * platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
     51        (WebCore::SourceBufferPrivateGStreamer::didReceiveAllPendingSamples):
     52        (WebCore::SourceBufferPrivateGStreamer::appendParsingFailed):
     53        * platform/mock/mediasource/MockMediaPlayerMediaSource.cpp:
     54        (WebCore::MockMediaPlayerMediaSource::load):
     55        * platform/mock/mediasource/MockMediaPlayerMediaSource.h:
     56        * platform/mock/mediasource/MockMediaSourcePrivate.cpp:
     57        (WebCore::MockMediaSourcePrivate::addSourceBuffer):
     58        * platform/mock/mediasource/MockSourceBufferPrivate.cpp:
     59        (WebCore::MockSourceBufferPrivate::append):
     60
    1612020-11-17  Rob Buis  <rbuis@igalia.com>
    262
  • trunk/Source/WebCore/Headers.cmake

    r269888 r269907  
    12241224    platform/graphics/MediaPlayerIdentifier.h
    12251225    platform/graphics/MediaPlayerPrivate.h
     1226    platform/graphics/MediaSourcePrivate.h
     1227    platform/graphics/MediaSourcePrivateClient.h
    12261228    platform/graphics/MediaUsageInfo.h
    12271229    platform/graphics/NativeImage.h
     
    12451247    platform/graphics/RenderingMode.h
    12461248    platform/graphics/RoundedRect.h
     1249    platform/graphics/SourceBufferPrivate.h
     1250    platform/graphics/SourceBufferPrivateClient.h
    12471251    platform/graphics/StringTruncator.h
    12481252    platform/graphics/TabSize.h
  • trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp

    r265167 r269907  
    10841084    RefPtr<SourceBufferPrivate> sourceBufferPrivate;
    10851085    switch (m_private->addSourceBuffer(type, sourceBufferPrivate)) {
    1086     case MediaSourcePrivate::Ok:
     1086    case MediaSourcePrivate::AddStatus::Ok:
    10871087        return sourceBufferPrivate.releaseNonNull();
    1088     case MediaSourcePrivate::NotSupported:
     1088    case MediaSourcePrivate::AddStatus::NotSupported:
    10891089        // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type
    10901090        // Step 2: If type contains a MIME type ... that is not supported with the types
     
    10921092        // a NotSupportedError exception and abort these steps.
    10931093        return Exception { NotSupportedError };
    1094     case MediaSourcePrivate::ReachedIdLimit:
     1094    case MediaSourcePrivate::AddStatus::ReachedIdLimit:
    10951095        // 2.2 https://dvcs.w3.org/hg/html-media/raw-file/default/media-source/media-source.html#widl-MediaSource-addSourceBuffer-SourceBuffer-DOMString-type
    10961096        // Step 3: If the user agent can't handle any more SourceBuffer objects then throw
  • trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp

    r269121 r269907  
    633633    // 1. Loop Top: If the input buffer is empty, then jump to the need more data step below.
    634634    if (!m_pendingAppendData.size()) {
    635         sourceBufferPrivateAppendComplete(AppendSucceeded);
     635        sourceBufferPrivateAppendComplete(AppendResult::AppendSucceeded);
    636636        return;
    637637    }
     
    659659    // 2. If the input buffer contains bytes that violate the SourceBuffer byte stream format specification,
    660660    // then run the append error algorithm with the decode error parameter set to true and abort this algorithm.
    661     if (result == ParsingFailed) {
     661    if (result == AppendResult::ParsingFailed) {
    662662        ERROR_LOG(LOGIDENTIFIER, "ParsingFailed");
    663663        appendError(true);
     
    672672    // NOTE: return to Section 3.5.5
    673673    // 2.If the segment parser loop algorithm in the previous step was aborted, then abort this algorithm.
    674     if (result != AppendSucceeded)
     674    if (result != AppendResult::AppendSucceeded)
    675675        return;
    676676
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r269888 r269907  
    42414241                CD5FF49E2162E4E8004BD86F /* ISOOriginalFormatBox.h in Headers */ = {isa = PBXBuildFile; fileRef = CD871C671FB52B6800F0B965 /* ISOOriginalFormatBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
    42424242                CD62FB961AF018E70012ED7D /* GenericTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CD62FB941AF018E70012ED7D /* GenericTaskQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
    4243                 CD641EB31818F5ED00EE4C41 /* MediaSourcePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CD641EB11818F5ED00EE4C41 /* MediaSourcePrivate.h */; };
    4244                 CD641EB41818F5ED00EE4C41 /* SourceBufferPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CD641EB21818F5ED00EE4C41 /* SourceBufferPrivate.h */; };
     4243                CD641EB31818F5ED00EE4C41 /* MediaSourcePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CD641EB11818F5ED00EE4C41 /* MediaSourcePrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
     4244                CD641EB41818F5ED00EE4C41 /* SourceBufferPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CD641EB21818F5ED00EE4C41 /* SourceBufferPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    42454245                CD720B4F2268B51300047FDE /* ISOFairPlayStreamingPsshBox.h in Headers */ = {isa = PBXBuildFile; fileRef = CD720B4922682C7F00047FDE /* ISOFairPlayStreamingPsshBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
    42464246                CD7D33441C7A123F00041293 /* PixelBufferConformerCV.h in Headers */ = {isa = PBXBuildFile; fileRef = CD7D33421C7A123F00041293 /* PixelBufferConformerCV.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    43194319                CDCFABBD18C0AF78006F8450 /* HighlightData.h in Headers */ = {isa = PBXBuildFile; fileRef = CDCFABBB18C0AE31006F8450 /* HighlightData.h */; settings = {ATTRIBUTES = (Private, ); }; };
    43204320                CDD7089718359F6F002B3DC6 /* SampleMap.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD7089518359F6F002B3DC6 /* SampleMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
    4321                 CDDC1E7A18A952F30027A9D4 /* MediaSourcePrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CDDC1E7918A952F30027A9D4 /* MediaSourcePrivateClient.h */; };
     4321                CDDC1E7A18A952F30027A9D4 /* MediaSourcePrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CDDC1E7918A952F30027A9D4 /* MediaSourcePrivateClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
    43224322                CDDE02ED18B3ED6D00CF7FF1 /* CDMSessionAVFoundationObjC.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDDE02EB18B3ED6D00CF7FF1 /* CDMSessionAVFoundationObjC.mm */; };
    43234323                CDDE02F018B5651300CF7FF1 /* CDMSessionAVStreamSession.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDDE02EF18B5651200CF7FF1 /* CDMSessionAVStreamSession.mm */; };
  • trunk/Source/WebCore/platform/ContentType.h

    r261014 r269907  
    4848    bool isEmpty() const { return m_type.isEmpty(); }
    4949
    50     String toJSONString() const;
     50    WEBCORE_EXPORT String toJSONString() const;
    5151
    5252    template<class Encoder>
  • trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp

    r269850 r269907  
    9797    void load(const String&) final { }
    9898#if ENABLE(MEDIA_SOURCE)
    99     void load(const String&, MediaSourcePrivateClient*) final { }
     99    void load(const URL&, const ContentType&, MediaSourcePrivateClient*) final { }
    100100#endif
    101101#if ENABLE(MEDIA_STREAM)
     
    587587#if ENABLE(MEDIA_SOURCE)
    588588        if (m_mediaSource)
    589             m_private->load(m_url.string(), m_mediaSource.get());
     589            m_private->load(m_url, m_contentType, m_mediaSource.get());
    590590        else
    591591#endif
  • trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h

    r269850 r269907  
    4444
    4545#if ENABLE(MEDIA_SOURCE)
    46     virtual void load(const String& url, MediaSourcePrivateClient*) = 0;
     46    virtual void load(const URL&, const ContentType&, MediaSourcePrivateClient*) = 0;
    4747#endif
    4848#if ENABLE(MEDIA_STREAM)
  • trunk/Source/WebCore/platform/graphics/MediaSourcePrivate.h

    r241148 r269907  
    2828 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2929 */
    30 #ifndef MediaSourcePrivate_h
    31 #define MediaSourcePrivate_h
     30
     31#pragma once
    3232
    3333#if ENABLE(MEDIA_SOURCE)
     
    5050    virtual ~MediaSourcePrivate() = default;
    5151
    52     enum AddStatus { Ok, NotSupported, ReachedIdLimit };
     52    enum class AddStatus : uint8_t {
     53        Ok,
     54        NotSupported,
     55        ReachedIdLimit
     56    };
    5357    virtual AddStatus addSourceBuffer(const ContentType&, RefPtr<SourceBufferPrivate>&) = 0;
    5458    virtual void durationChanged() = 0;
     
    8993};
    9094
     95template<> struct EnumTraits<WebCore::MediaSourcePrivate::AddStatus> {
     96    using values = EnumValues<
     97        WebCore::MediaSourcePrivate::AddStatus,
     98        WebCore::MediaSourcePrivate::AddStatus::Ok,
     99        WebCore::MediaSourcePrivate::AddStatus::NotSupported,
     100        WebCore::MediaSourcePrivate::AddStatus::ReachedIdLimit
     101    >;
     102};
     103
    91104} // namespace WTF
    92105
    93106#endif
    94 #endif
  • trunk/Source/WebCore/platform/graphics/SourceBufferPrivateClient.h

    r246490 r269907  
    7474    virtual MediaTime sourceBufferPrivateFastSeekTimeForMediaTime(const MediaTime&, const MediaTime&, const MediaTime&) = 0;
    7575
    76     enum AppendResult { AppendSucceeded, ReadStreamFailed, ParsingFailed };
     76    enum class AppendResult : uint8_t {
     77        AppendSucceeded,
     78        ReadStreamFailed,
     79        ParsingFailed
     80    };
    7781    virtual void sourceBufferPrivateAppendComplete(AppendResult) = 0;
    7882    virtual void sourceBufferPrivateDidReceiveRenderingError(int errorCode) = 0;
    7983};
    8084
    81 }
     85} // namespace WebCore
     86
     87namespace WTF {
     88
     89template<> struct EnumTraits<WebCore::SourceBufferPrivateClient::AppendResult> {
     90    using values = EnumValues<
     91        WebCore::SourceBufferPrivateClient::AppendResult,
     92        WebCore::SourceBufferPrivateClient::AppendResult::AppendSucceeded,
     93        WebCore::SourceBufferPrivateClient::AppendResult::ReadStreamFailed,
     94        WebCore::SourceBufferPrivateClient::AppendResult::ParsingFailed
     95    >;
     96};
     97
     98} // namespace WTF
    8299
    83100#endif // ENABLE(MEDIA_SOURCE)
  • trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp

    r268970 r269907  
    182182
    183183#if ENABLE(MEDIA_SOURCE)
    184 void MediaPlayerPrivateAVFoundation::load(const String&, MediaSourcePrivateClient*)
     184void MediaPlayerPrivateAVFoundation::load(const URL&, const ContentType&, MediaSourcePrivateClient*)
    185185{
    186186    setNetworkState(MediaPlayer::NetworkState::FormatError);
  • trunk/Source/WebCore/platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h

    r268607 r269907  
    159159    void load(const String& url) override;
    160160#if ENABLE(MEDIA_SOURCE)
    161     void load(const String&, MediaSourcePrivateClient*) override;
     161    void load(const URL&, const ContentType&, MediaSourcePrivateClient*) override;
    162162#endif
    163163#if ENABLE(MEDIA_STREAM)
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h

    r269850 r269907  
    149149    bool shouldCheckHardwareSupport() const;
    150150
     151#if !RELEASE_LOG_DISABLED
    151152    const Logger& logger() const final { return m_logger.get(); }
    152153    const char* logClassName() const override { return "MediaPlayerPrivateMediaSourceAVFObjC"; }
     
    156157    const void* mediaPlayerLogIdentifier() { return logIdentifier(); }
    157158    const Logger& mediaPlayerLogger() { return logger(); }
     159#endif
    158160
    159161    enum SeekState {
     
    166168    // MediaPlayerPrivateInterface
    167169    void load(const String& url) override;
    168     void load(const String& url, MediaSourcePrivateClient*) override;
     170    void load(const URL&, const ContentType&, MediaSourcePrivateClient*) override;
    169171#if ENABLE(MEDIA_STREAM)
    170172    void load(MediaStreamPrivate&) override;
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm

    r269850 r269907  
    267267}
    268268
    269 void MediaPlayerPrivateMediaSourceAVFObjC::load(const String&, MediaSourcePrivateClient* client)
     269void MediaPlayerPrivateMediaSourceAVFObjC::load(const URL&, const ContentType&, MediaSourcePrivateClient* client)
    270270{
    271271    ALWAYS_LOG(LOGIDENTIFIER);
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h

    r269614 r269907  
    9999    void load(const String&) override;
    100100#if ENABLE(MEDIA_SOURCE)
    101     void load(const String&, MediaSourcePrivateClient*) override;
     101    void load(const URL&, const ContentType&, MediaSourcePrivateClient*) override;
    102102#endif
    103103    void load(MediaStreamPrivate&) override;
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm

    r269614 r269907  
    404404
    405405#if ENABLE(MEDIA_SOURCE)
    406 void MediaPlayerPrivateMediaStreamAVFObjC::load(const String&, MediaSourcePrivateClient*)
     406void MediaPlayerPrivateMediaStreamAVFObjC::load(const URL&, const ContentType&, MediaSourcePrivateClient*)
    407407{
    408408    // This media engine only supports MediaStream URLs.
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h

    r259363 r269907  
    2424 */
    2525
    26 #ifndef MediaSourcePrivateAVFObjC_h
    27 #define MediaSourcePrivateAVFObjC_h
     26#pragma once
    2827
    2928#if ENABLE(MEDIA_SOURCE) && USE(AVFOUNDATION)
     
    150149
    151150#endif // ENABLE(MEDIA_SOURCE) && USE(AVFOUNDATION)
    152 
    153 #endif
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm

    r269711 r269907  
    8585    parameters.type = contentType;
    8686    if (MediaPlayerPrivateMediaSourceAVFObjC::supportsTypeAndCodecs(parameters) == MediaPlayer::SupportsType::IsNotSupported)
    87         return NotSupported;
     87        return AddStatus::NotSupported;
    8888
    8989    auto parser = SourceBufferParser::create(contentType);
    9090    if (!parser)
    91         return NotSupported;
     91        return AddStatus::NotSupported;
    9292
    9393    auto newSourceBuffer = SourceBufferPrivateAVFObjC::create(this, parser.releaseNonNull());
     
    9898    m_sourceBuffers.append(WTFMove(newSourceBuffer));
    9999
    100     return Ok;
     100    return AddStatus::Ok;
    101101}
    102102
  • trunk/Source/WebCore/platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm

    r269711 r269907  
    4343#import "MediaSampleAVFObjC.h"
    4444#import "MediaSourcePrivateAVFObjC.h"
    45 #import "NotImplemented.h"
    4645#import "SharedBuffer.h"
    4746#import "SourceBufferParserAVFObjC.h"
     
    587586
    588587    if (m_client)
    589         m_client->sourceBufferPrivateAppendComplete(m_parsingSucceeded ? SourceBufferPrivateClient::AppendSucceeded : SourceBufferPrivateClient::ParsingFailed);
     588        m_client->sourceBufferPrivateAppendComplete(m_parsingSucceeded ? SourceBufferPrivateClient::AppendResult::AppendSucceeded : SourceBufferPrivateClient::AppendResult::ParsingFailed);
    590589}
    591590
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

    r269850 r269907  
    392392
    393393#if ENABLE(MEDIA_SOURCE)
    394 void MediaPlayerPrivateGStreamer::load(const String&, MediaSourcePrivateClient*)
     394void MediaPlayerPrivateGStreamer::load(const URL&, const ContentType&, MediaSourcePrivateClient*)
    395395{
    396396    // Properly fail so the global MediaPlayer tries to fallback to the next MediaPlayerPrivate.
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h

    r269850 r269907  
    143143    void load(const String &url) override;
    144144#if ENABLE(MEDIA_SOURCE)
    145     void load(const String& url, MediaSourcePrivateClient*) override;
     145    void load(const URL&, const ContentType&, MediaSourcePrivateClient*) override;
    146146#endif
    147147#if ENABLE(MEDIA_STREAM)
  • trunk/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp

    r268576 r269907  
    139139}
    140140
    141 void MediaPlayerPrivateGStreamerMSE::load(const String& url, MediaSourcePrivateClient* mediaSource)
     141void MediaPlayerPrivateGStreamerMSE::load(const URL& url, const ContentType&, MediaSourcePrivateClient* mediaSource)
    142142{
    143143    m_mediaSource = mediaSource;
    144     load(makeString("mediasource", url));
     144    load(makeString("mediasource", url.string()));
    145145}
    146146
  • trunk/Source/WebCore/platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h

    r264211 r269907  
    4848
    4949    void load(const String&) override;
    50     void load(const String&, MediaSourcePrivateClient*) override;
     50    void load(const URL&, const ContentType&, MediaSourcePrivateClient*) override;
    5151
    5252    void updateDownloadBufferingFlag() override { };
  • trunk/Source/WebCore/platform/graphics/gstreamer/mse/PlaybackPipeline.cpp

    r251365 r269907  
    108108    if (priv->allTracksConfigured) {
    109109        GST_ERROR_OBJECT(m_webKitMediaSrc.get(), "Adding new source buffers after first data not supported yet");
    110         return MediaSourcePrivate::NotSupported;
     110        return MediaSourcePrivate::AddStatus::NotSupported;
    111111    }
    112112
     
    141141    gst_element_sync_state_with_parent(stream->appsrc);
    142142
    143     return MediaSourcePrivate::Ok;
     143    return MediaSourcePrivate::AddStatus::Ok;
    144144}
    145145
  • trunk/Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp

    r265494 r269907  
    195195void SourceBufferPrivateGStreamer::didReceiveAllPendingSamples()
    196196{
    197     m_sourceBufferPrivateClient->sourceBufferPrivateAppendComplete(SourceBufferPrivateClient::AppendSucceeded);
     197    m_sourceBufferPrivateClient->sourceBufferPrivateAppendComplete(SourceBufferPrivateClient::AppendResult::AppendSucceeded);
    198198}
    199199
    200200void SourceBufferPrivateGStreamer::appendParsingFailed()
    201201{
    202     m_sourceBufferPrivateClient->sourceBufferPrivateAppendComplete(SourceBufferPrivateClient::ParsingFailed);
     202    m_sourceBufferPrivateClient->sourceBufferPrivateAppendComplete(SourceBufferPrivateClient::AppendResult::ParsingFailed);
    203203}
    204204
  • trunk/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.cpp

    r253482 r269907  
    112112}
    113113
    114 void MockMediaPlayerMediaSource::load(const String&, MediaSourcePrivateClient* source)
     114void MockMediaPlayerMediaSource::load(const URL&, const ContentType&, MediaSourcePrivateClient* source)
    115115{
    116116    m_mediaSourcePrivate = MockMediaSourcePrivate::create(*this, *source);
  • trunk/Source/WebCore/platform/mock/mediasource/MockMediaPlayerMediaSource.h

    r241148 r269907  
    6666    // MediaPlayerPrivate Overrides
    6767    void load(const String& url) override;
    68     void load(const String& url, MediaSourcePrivateClient*) override;
     68    void load(const URL&, const ContentType&, MediaSourcePrivateClient*) override;
    6969#if ENABLE(MEDIA_STREAM)
    7070    void load(MediaStreamPrivate&) override { }
  • trunk/Source/WebCore/platform/mock/mediasource/MockMediaSourcePrivate.cpp

    r253397 r269907  
    6464    parameters.type = contentType;
    6565    if (MockMediaPlayerMediaSource::supportsType(parameters) == MediaPlayer::SupportsType::IsNotSupported)
    66         return NotSupported;
     66        return AddStatus::NotSupported;
    6767
    6868    m_sourceBuffers.append(MockSourceBufferPrivate::create(this));
    6969    outPrivate = m_sourceBuffers.last();
    7070
    71     return Ok;
     71    return AddStatus::Ok;
    7272}
    7373
  • trunk/Source/WebCore/platform/mock/mediasource/MockSourceBufferPrivate.cpp

    r260415 r269907  
    140140{
    141141    m_inputBuffer.appendVector(data);
    142     SourceBufferPrivateClient::AppendResult result = SourceBufferPrivateClient::AppendSucceeded;
    143 
    144     while (m_inputBuffer.size() && result == SourceBufferPrivateClient::AppendSucceeded) {
     142    SourceBufferPrivateClient::AppendResult result = SourceBufferPrivateClient::AppendResult::AppendSucceeded;
     143
     144    while (m_inputBuffer.size() && result == SourceBufferPrivateClient::AppendResult::AppendSucceeded) {
    145145        auto buffer = ArrayBuffer::create(m_inputBuffer.data(), m_inputBuffer.size());
    146146        size_t boxLength = MockBox::peekLength(buffer.ptr());
     
    156156            didReceiveSample(sampleBox);
    157157        } else
    158             result = SourceBufferPrivateClient::ParsingFailed;
     158            result = SourceBufferPrivateClient::AppendResult::ParsingFailed;
    159159
    160160        m_inputBuffer.remove(0, boxLength);
  • trunk/Source/WebKit/CMakeLists.txt

    r269348 r269907  
    138138    GPUProcess/media/RemoteMediaPlayerProxy
    139139    GPUProcess/media/RemoteMediaResourceManager
     140    GPUProcess/media/RemoteMediaSourceProxy
     141    GPUProcess/media/RemoteSourceBufferProxy
    140142
    141143    GPUProcess/webrtc/LibWebRTCCodecsProxy
     
    225227    WebProcess/GPU/media/RemoteCDMInstanceSession
    226228    WebProcess/GPU/media/RemoteLegacyCDMSession
     229    WebProcess/GPU/media/SourceBufferPrivateRemote
    227230
    228231    WebProcess/GPU/webrtc/LibWebRTCCodecs
  • trunk/Source/WebKit/ChangeLog

    r269906 r269907  
     12020-11-17  Peng Liu  <peng.liu6@apple.com>
     2
     3        [Media In GPU Process][MSE] Add infrastructure needed to run MediaPlayerPrivateMediaSourceAVFObjC in the GPU process
     4        https://bugs.webkit.org/show_bug.cgi?id=218912
     5
     6        Reviewed by Eric Carlson.
     7
     8        Add MediaSourcePrivateRemote/RemoteMediaSourceProxy and SourceBufferPrivateRemote/RemoteSourceBufferProxy,
     9        and setup IPC connections for them.
     10
     11        * CMakeLists.txt:
     12        * DerivedSources-input.xcfilelist:
     13        * DerivedSources-output.xcfilelist:
     14        * DerivedSources.make:
     15        * GPUProcess/GPUProcessSessionParameters.h:
     16        * GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp:
     17        * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
     18        (WebKit::RemoteMediaPlayerProxy::loadMediaSource):
     19        * GPUProcess/media/RemoteMediaPlayerProxy.h:
     20        * GPUProcess/media/RemoteMediaPlayerProxy.messages.in:
     21        * GPUProcess/media/RemoteMediaSourceProxy.cpp: Added.
     22        (WebKit::RemoteMediaSourceProxy::RemoteMediaSourceProxy):
     23        (WebKit::RemoteMediaSourceProxy::~RemoteMediaSourceProxy):
     24        (WebKit::RemoteMediaSourceProxy::setPrivateAndOpen):
     25        (WebKit::RemoteMediaSourceProxy::duration const):
     26        (WebKit::RemoteMediaSourceProxy::buffered const):
     27        (WebKit::RemoteMediaSourceProxy::seekToTime):
     28        (WebKit::RemoteMediaSourceProxy::monitorSourceBuffers):
     29        (WebKit::RemoteMediaSourceProxy::setLogIdentifier):
     30        (WebKit::RemoteMediaSourceProxy::failedToCreateRenderer):
     31        (WebKit::RemoteMediaSourceProxy::addSourceBuffer):
     32        * GPUProcess/media/RemoteMediaSourceProxy.h: Added.
     33        * GPUProcess/media/RemoteMediaSourceProxy.messages.in: Added.
     34        * GPUProcess/media/RemoteSourceBufferIdentifier.h: Added.
     35        * GPUProcess/media/RemoteSourceBufferProxy.cpp: Added.
     36        (WebKit::RemoteSourceBufferProxy::create):
     37        (WebKit::RemoteSourceBufferProxy::RemoteSourceBufferProxy):
     38        (WebKit::RemoteSourceBufferProxy::~RemoteSourceBufferProxy):
     39        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveInitializationSegment):
     40        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveSample):
     41        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateHasAudio const):
     42        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateHasVideo const):
     43        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateReenqueSamples):
     44        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidBecomeReadyForMoreSamples):
     45        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateFastSeekTimeForMediaTime):
     46        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateAppendComplete):
     47        (WebKit::RemoteSourceBufferProxy::sourceBufferPrivateDidReceiveRenderingError):
     48        (WebKit::RemoteSourceBufferProxy::append):
     49        * GPUProcess/media/RemoteSourceBufferProxy.h: Added.
     50        * GPUProcess/media/RemoteSourceBufferProxy.messages.in: Added.
     51        * GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp:
     52        * Scripts/webkit/messages.py:
     53        * Sources.txt:
     54        * WebKit.xcodeproj/project.pbxproj:
     55        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
     56        (WebKit::MediaPlayerPrivateRemote::load):
     57        (WebKit::MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load): Deleted.
     58        * WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
     59        * WebProcess/GPU/media/MediaSourcePrivateRemote.cpp: Added.
     60        (WebKit::MediaSourcePrivateRemote::create):
     61        (WebKit::MediaSourcePrivateRemote::MediaSourcePrivateRemote):
     62        (WebKit::MediaSourcePrivateRemote::~MediaSourcePrivateRemote):
     63        (WebKit::MediaSourcePrivateRemote::addSourceBuffer):
     64        (WebKit::MediaSourcePrivateRemote::durationChanged):
     65        (WebKit::MediaSourcePrivateRemote::markEndOfStream):
     66        (WebKit::MediaSourcePrivateRemote::unmarkEndOfStream):
     67        (WebKit::MediaSourcePrivateRemote::readyState const):
     68        (WebKit::MediaSourcePrivateRemote::setReadyState):
     69        (WebKit::MediaSourcePrivateRemote::waitForSeekCompleted):
     70        (WebKit::MediaSourcePrivateRemote::seekCompleted):
     71        (WebKit::MediaSourcePrivateRemote::logChannel const):
     72        * WebProcess/GPU/media/MediaSourcePrivateRemote.h: Added.
     73        * WebProcess/GPU/media/RemoteCDMConfiguration.h:
     74        * WebProcess/GPU/media/RemoteCDMInstanceConfiguration.h:
     75        * WebProcess/GPU/media/RemoteMediaPlayerManager.h:
     76        * WebProcess/GPU/media/RemoteMediaSourceIdentifier.h: Added.
     77        * WebProcess/GPU/media/SourceBufferPrivateRemote.cpp: Added.
     78        (WebKit::SourceBufferPrivateRemote::create):
     79        (WebKit::SourceBufferPrivateRemote::SourceBufferPrivateRemote):
     80        (WebKit::SourceBufferPrivateRemote::~SourceBufferPrivateRemote):
     81        (WebKit::SourceBufferPrivateRemote::setClient):
     82        (WebKit::SourceBufferPrivateRemote::append):
     83        (WebKit::SourceBufferPrivateRemote::abort):
     84        (WebKit::SourceBufferPrivateRemote::resetParserState):
     85        (WebKit::SourceBufferPrivateRemote::removedFromMediaSource):
     86        (WebKit::SourceBufferPrivateRemote::readyState const):
     87        (WebKit::SourceBufferPrivateRemote::setReadyState):
     88        (WebKit::SourceBufferPrivateRemote::flush):
     89        (WebKit::SourceBufferPrivateRemote::enqueueSample):
     90        (WebKit::SourceBufferPrivateRemote::isReadyForMoreSamples):
     91        (WebKit::SourceBufferPrivateRemote::setActive):
     92        (WebKit::SourceBufferPrivateRemote::notifyClientWhenReadyForMoreSamples):
     93        (WebKit::SourceBufferPrivateRemote::canSetMinimumUpcomingPresentationTime const):
     94        (WebKit::SourceBufferPrivateRemote::setMinimumUpcomingPresentationTime):
     95        (WebKit::SourceBufferPrivateRemote::clearMinimumUpcomingPresentationTime):
     96        (WebKit::SourceBufferPrivateRemote::canSwitchToType):
     97        (WebKit::SourceBufferPrivateRemote::sourceBufferPrivateAppendComplete):
     98        (WebKit::SourceBufferPrivateRemote::logChannel const):
     99        * WebProcess/GPU/media/SourceBufferPrivateRemote.h: Added.
     100        * WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in: Added.
     101
    11022020-11-17  Per Arne Vollan  <pvollan@apple.com>
    2103
  • trunk/Source/WebKit/DerivedSources-input.xcfilelist

    r269701 r269907  
    3636$(PROJECT_DIR)/GPUProcess/media/RemoteMediaPlayerProxy.messages.in
    3737$(PROJECT_DIR)/GPUProcess/media/RemoteMediaResourceManager.messages.in
     38$(PROJECT_DIR)/GPUProcess/media/RemoteMediaSourceProxy.messages.in
     39$(PROJECT_DIR)/GPUProcess/media/RemoteSourceBufferProxy.messages.in
    3840$(PROJECT_DIR)/GPUProcess/media/ios/RemoteMediaSessionHelperProxy.messages.in
    3941$(PROJECT_DIR)/GPUProcess/webrtc/LibWebRTCCodecsProxy.messages.in
     
    9698$(PROJECT_DIR)/UIProcess/GPU/GPUProcessProxy.messages.in
    9799$(PROJECT_DIR)/UIProcess/Inspector/RemoteWebInspectorProxy.messages.in
     100$(PROJECT_DIR)/UIProcess/Inspector/WebInspectorProxy.messages.in
    98101$(PROJECT_DIR)/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.messages.in
    99 $(PROJECT_DIR)/UIProcess/Inspector/WebInspectorProxy.messages.in
    100102$(PROJECT_DIR)/UIProcess/Media/AudioSessionRoutingArbitratorProxy.messages.in
    101103$(PROJECT_DIR)/UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.messages.in
     
    137139$(PROJECT_DIR)/WebProcess/GPU/media/RemoteCDMInstanceSession.messages.in
    138140$(PROJECT_DIR)/WebProcess/GPU/media/RemoteLegacyCDMSession.messages.in
     141$(PROJECT_DIR)/WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in
    139142$(PROJECT_DIR)/WebProcess/GPU/media/ios/RemoteMediaSessionHelper.messages.in
    140143$(PROJECT_DIR)/WebProcess/GPU/webrtc/LibWebRTCCodecs.messages.in
     
    144147$(PROJECT_DIR)/WebProcess/Inspector/RemoteWebInspectorUI.messages.in
    145148$(PROJECT_DIR)/WebProcess/Inspector/WebInspector.messages.in
    146 $(PROJECT_DIR)/WebProcess/Inspector/WebInspectorUIExtensionController.messages.in
    147149$(PROJECT_DIR)/WebProcess/Inspector/WebInspectorInterruptDispatcher.messages.in
    148150$(PROJECT_DIR)/WebProcess/Inspector/WebInspectorUI.messages.in
     151$(PROJECT_DIR)/WebProcess/Inspector/WebInspectorUIExtensionController.messages.in
    149152$(PROJECT_DIR)/WebProcess/Network/NetworkProcessConnection.messages.in
    150153$(PROJECT_DIR)/WebProcess/Network/WebResourceLoader.messages.in
  • trunk/Source/WebKit/DerivedSources-output.xcfilelist

    r269701 r269907  
    216216$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteMediaSessionHelperProxyMessages.h
    217217$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteMediaSessionHelperProxyMessagesReplies.h
     218$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteMediaSourceProxyMessageReceiver.cpp
     219$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteMediaSourceProxyMessages.h
     220$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteMediaSourceProxyMessagesReplies.h
    218221$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteObjectRegistryMessageReceiver.cpp
    219222$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteObjectRegistryMessages.h
     
    234237$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteScrollingCoordinatorMessages.h
    235238$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteScrollingCoordinatorMessagesReplies.h
     239$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteSourceBufferProxyMessageReceiver.cpp
     240$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteSourceBufferProxyMessages.h
     241$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteSourceBufferProxyMessagesReplies.h
    236242$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteWebInspectorProxyMessageReceiver.cpp
    237243$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/RemoteWebInspectorProxyMessages.h
     
    252258$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/SmartMagnificationControllerMessages.h
    253259$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/SmartMagnificationControllerMessagesReplies.h
     260$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/SourceBufferPrivateRemoteMessageReceiver.cpp
     261$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/SourceBufferPrivateRemoteMessages.h
     262$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/SourceBufferPrivateRemoteMessagesReplies.h
    254263$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/SpeechRecognitionServerMessageReceiver.cpp
    255264$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/SpeechRecognitionServerMessages.h
     
    349358$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebIDBServerMessages.h
    350359$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebIDBServerMessagesReplies.h
    351 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorUIExtensionControllerMessageReceiver.cpp
    352 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorUIExtensionControllerMessages.h
    353 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorUIExtensionControllerMessagesReplies.h
    354360$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorInterruptDispatcherMessageReceiver.cpp
    355361$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorInterruptDispatcherMessages.h
     
    361367$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorProxyMessages.h
    362368$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorProxyMessagesReplies.h
     369$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorUIExtensionControllerMessageReceiver.cpp
     370$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorUIExtensionControllerMessages.h
     371$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorUIExtensionControllerMessagesReplies.h
    363372$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorUIMessageReceiver.cpp
    364373$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebInspectorUIMessages.h
  • trunk/Source/WebKit/DerivedSources.make

    r269701 r269907  
    175175        WebProcess/GPU/webrtc/SampleBufferDisplayLayer \
    176176        WebProcess/GPU/media/MediaPlayerPrivateRemote \
    177         WebProcess/GPU/media/RemoteCDMInstanceSession \
    178         WebProcess/GPU/media/RemoteLegacyCDMSession \
    179         WebProcess/GPU/media/ios/RemoteMediaSessionHelper \
    180177        WebProcess/GPU/media/RemoteAudioDestinationProxy \
    181178        WebProcess/GPU/media/RemoteAudioSession \
    182179        WebProcess/GPU/media/RemoteAudioSourceProviderManager \
     180        WebProcess/GPU/media/RemoteCDMInstanceSession \
     181        WebProcess/GPU/media/RemoteLegacyCDMSession \
     182        WebProcess/GPU/media/SourceBufferPrivateRemote \
     183        WebProcess/GPU/media/ios/RemoteMediaSessionHelper \
    183184        WebProcess/WebStorage/StorageAreaMap \
    184185        WebProcess/UserContent/WebUserContentController \
     
    241242        GPUProcess/media/RemoteCDMProxy \
    242243        GPUProcess/media/ios/RemoteMediaSessionHelperProxy \
    243         GPUProcess/media/RemoteMediaPlayerProxy \
     244        GPUProcess/media/RemoteAudioDestinationManager \
    244245        GPUProcess/media/RemoteCDMFactoryProxy \
    245         GPUProcess/media/RemoteMediaResourceManager \
    246246        GPUProcess/media/RemoteCDMInstanceProxy \
    247247        GPUProcess/media/RemoteLegacyCDMProxy \
    248248        GPUProcess/media/RemoteMediaPlayerManagerProxy \
    249         GPUProcess/media/RemoteAudioDestinationManager \
     249        GPUProcess/media/RemoteMediaPlayerProxy \
     250        GPUProcess/media/RemoteMediaResourceManager \
     251        GPUProcess/media/RemoteMediaSourceProxy \
     252        GPUProcess/media/RemoteSourceBufferProxy \
    250253        WebAuthnProcess/WebAuthnConnectionToWebProcess \
    251254        WebAuthnProcess/WebAuthnProcess \
  • trunk/Source/WebKit/GPUProcess/GPUProcessSessionParameters.h

    r255346 r269907  
    2929
    3030#include "SandboxExtension.h"
    31 #include <WebCore/ContentType.h>
    3231#include <wtf/text/WTFString.h>
    3332
  • trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMFactoryProxy.cpp

    r268118 r269907  
    137137}
    138138
    139 
    140139}
    141140
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp

    r268608 r269907  
    132132}
    133133
     134#if ENABLE(MEDIA_SOURCE)
     135void RemoteMediaPlayerProxy::loadMediaSource(URL&& url, const WebCore::ContentType& contentType, RemoteMediaSourceIdentifier mediaSourceIdentifier)
     136{
     137    m_mediaSourceProxy = adoptRef(*new RemoteMediaSourceProxy(mediaSourceIdentifier, m_manager.gpuConnectionToWebProcess()));
     138    m_player->load(url, contentType, m_mediaSourceProxy.get());
     139}
     140#endif
     141
    134142void RemoteMediaPlayerProxy::cancelLoad()
    135143{
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h

    r268608 r269907  
    5353#endif
    5454
     55#if ENABLE(MEDIA_SOURCE)
     56#include "RemoteMediaSourceIdentifier.h"
     57#include "RemoteMediaSourceProxy.h"
     58#endif
     59
    5560#if PLATFORM(COCOA)
    5661#include "SharedRingBufferStorage.h"
     
    110115
    111116    void load(URL&&, Optional<SandboxExtension::Handle>&&, const WebCore::ContentType&, const String&, CompletionHandler<void(RemoteMediaPlayerConfiguration&&)>&&);
     117#if ENABLE(MEDIA_SOURCE)
     118    void loadMediaSource(URL&&, const WebCore::ContentType&, RemoteMediaSourceIdentifier);
     119#endif
    112120    void cancelLoad();
    113121
     
    301309    RemoteMediaPlayerProxyConfiguration m_configuration;
    302310    CompletionHandler<void(Optional<MediaTime>)> m_performTaskAtMediaTimeCompletionHandler;
     311#if ENABLE(MEDIA_SOURCE)
     312    RefPtr<RemoteMediaSourceProxy> m_mediaSourceProxy;
     313#endif
    303314
    304315    WebCore::LayoutRect m_videoContentBoxRect;
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.messages.in

    r268608 r269907  
    2828
    2929    Load(URL url, Optional<WebKit::SandboxExtension::Handle> sandboxExtension, WebCore::ContentType contentType, String keySystem) -> (struct WebKit::RemoteMediaPlayerConfiguration playerConfiguration) Async
     30#if ENABLE(MEDIA_SOURCE)
     31    LoadMediaSource(URL url, WebCore::ContentType contentType, WebKit::RemoteMediaSourceIdentifier mediaSourceIdentifier) Synchronous
     32#endif
    3033    CancelLoad()
    3134
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaSourceProxy.messages.in

    r269906 r269907  
    2424 */
    2525
    26 #pragma once
     26#if ENABLE(GPU_PROCESS) && ENABLE(MEDIA_SOURCE)
    2727
    28 #if ENABLE(GPU_PROCESS) && ENABLE(ENCRYPTED_MEDIA)
    29 
    30 #include <WebCore/ContentType.h>
    31 #include <wtf/text/WTFString.h>
    32 
    33 namespace WebKit {
    34 
    35 struct RemoteCDMInstanceConfiguration {
    36     String keySystem;
    37 
    38     template<class Encoder>
    39     void encode(Encoder& encoder) const
    40     {
    41         encoder << keySystem;
    42     }
    43 
    44     template <class Decoder>
    45     static Optional<RemoteCDMInstanceConfiguration> decode(Decoder& decoder)
    46     {
    47         Optional<String> keySystem;
    48         decoder >> keySystem;
    49         if (!keySystem)
    50             return WTF::nullopt;
    51 
    52         return {{
    53             WTFMove(*keySystem),
    54         }};
    55     }
    56 };
    57 
    58 } // namespace WebKit
     28messages -> RemoteMediaSourceProxy NotRefCounted {
     29    AddSourceBuffer(WebCore::ContentType contentType) -> (enum:uint8_t WebCore::MediaSourcePrivate::AddStatus status, Optional<WebKit::RemoteSourceBufferIdentifier> remoteSourceBufferIdentifier) Synchronous
     30}
    5931
    6032#endif
  • trunk/Source/WebKit/GPUProcess/media/RemoteSourceBufferIdentifier.h

    r269906 r269907  
    2626#pragma once
    2727
    28 #if ENABLE(GPU_PROCESS) && ENABLE(ENCRYPTED_MEDIA)
     28#if ENABLE(GPU_PROCESS) && ENABLE(MEDIA_SOURCE)
    2929
    30 #include <WebCore/ContentType.h>
    31 #include <wtf/text/WTFString.h>
     30#include <wtf/ObjectIdentifier.h>
    3231
    3332namespace WebKit {
    3433
    35 struct RemoteCDMInstanceConfiguration {
    36     String keySystem;
    37 
    38     template<class Encoder>
    39     void encode(Encoder& encoder) const
    40     {
    41         encoder << keySystem;
    42     }
    43 
    44     template <class Decoder>
    45     static Optional<RemoteCDMInstanceConfiguration> decode(Decoder& decoder)
    46     {
    47         Optional<String> keySystem;
    48         decoder >> keySystem;
    49         if (!keySystem)
    50             return WTF::nullopt;
    51 
    52         return {{
    53             WTFMove(*keySystem),
    54         }};
    55     }
    56 };
     34enum RemoteSourceBufferIdentifierType { };
     35using RemoteSourceBufferIdentifier = ObjectIdentifier<RemoteSourceBufferIdentifierType>;
    5736
    5837} // namespace WebKit
  • trunk/Source/WebKit/GPUProcess/media/RemoteSourceBufferProxy.messages.in

    r269906 r269907  
    2424 */
    2525
    26 #pragma once
     26#if ENABLE(GPU_PROCESS) && ENABLE(MEDIA_SOURCE)
    2727
    28 #if ENABLE(GPU_PROCESS) && ENABLE(ENCRYPTED_MEDIA)
    29 
    30 #include <WebCore/ContentType.h>
    31 #include <wtf/text/WTFString.h>
    32 
    33 namespace WebKit {
    34 
    35 struct RemoteCDMInstanceConfiguration {
    36     String keySystem;
    37 
    38     template<class Encoder>
    39     void encode(Encoder& encoder) const
    40     {
    41         encoder << keySystem;
    42     }
    43 
    44     template <class Decoder>
    45     static Optional<RemoteCDMInstanceConfiguration> decode(Decoder& decoder)
    46     {
    47         Optional<String> keySystem;
    48         decoder >> keySystem;
    49         if (!keySystem)
    50             return WTF::nullopt;
    51 
    52         return {{
    53             WTFMove(*keySystem),
    54         }};
    55     }
    56 };
    57 
    58 } // namespace WebKit
     28messages -> RemoteSourceBufferProxy NotRefCounted {
     29    Append(IPC::DataReference data)
     30}
    5931
    6032#endif
  • trunk/Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayerManager.cpp

    r267156 r269907  
    3131#include "Decoder.h"
    3232#include "GPUConnectionToWebProcess.h"
     33#include "GPUProcess.h"
    3334#include "RemoteSampleBufferDisplayLayer.h"
    3435#include "RemoteSampleBufferDisplayLayerManagerMessages.h"
  • trunk/Source/WebKit/Scripts/webkit/messages.py

    r269785 r269907  
    260260        'WebKit::RemoteLegacyCDMSessionIdentifier',
    261261        'WebKit::RemoteMediaResourceIdentifier',
     262        'WebKit::RemoteMediaSourceIdentifier',
     263        'WebKit::RemoteSourceBufferIdentifier',
    262264        'WebKit::RenderingBackendIdentifier',
    263265        'WebKit::RTCDecoderIdentifier',
  • trunk/Source/WebKit/Sources.txt

    r269810 r269907  
    4343GPUProcess/media/RemoteMediaResourceLoader.cpp
    4444GPUProcess/media/RemoteMediaResourceManager.cpp
     45GPUProcess/media/RemoteMediaSourceProxy.cpp
     46GPUProcess/media/RemoteSourceBufferProxy.cpp
    4547GPUProcess/media/RemoteTextTrackProxy.cpp
    4648GPUProcess/media/RemoteVideoTrackProxy.cpp
     
    571573WebProcess/GPU/media/AudioTrackPrivateRemote.cpp
    572574WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp
     575WebProcess/GPU/media/MediaSourcePrivateRemote.cpp
    573576WebProcess/GPU/media/RemoteAudioDestinationProxy.cpp
    574577WebProcess/GPU/media/RemoteAudioSession.cpp
     
    583586WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.cpp @no-unify
    584587WebProcess/GPU/media/RemoteMediaResourceProxy.cpp
     588WebProcess/GPU/media/SourceBufferPrivateRemote.cpp
    585589WebProcess/GPU/media/TextTrackPrivateRemote.cpp
    586590WebProcess/GPU/media/VideoTrackPrivateRemote.cpp
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r269810 r269907  
    422422                1DB01943211CF002009FB3E8 /* WKShareSheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DE0D095211CC21300439B5F /* WKShareSheet.h */; };
    423423                1DB01944211CF005009FB3E8 /* WKShareSheet.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1DBBB061211CC3CB00502ECC /* WKShareSheet.mm */; };
     424                1DD2A6632561246F00FF7B6F /* RemoteMediaSourceProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DD2A662256122F100FF7B6F /* RemoteMediaSourceProxyMessageReceiver.cpp */; };
     425                1DD2A66E2562021E00FF7B6F /* RemoteSourceBufferProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DD2A66B2562021E00FF7B6F /* RemoteSourceBufferProxyMessageReceiver.cpp */; };
     426                1DD2A674256232A100FF7B6F /* SourceBufferPrivateRemoteMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DD2A6722562324F00FF7B6F /* SourceBufferPrivateRemoteMessageReceiver.cpp */; };
     427                1DD2A68525633C6700FF7B6F /* RemoteMediaSourceProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DD2A660256122F100FF7B6F /* RemoteMediaSourceProxyMessages.h */; };
     428                1DD2A68625633C7200FF7B6F /* RemoteSourceBufferProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DD2A6692562021E00FF7B6F /* RemoteSourceBufferProxyMessages.h */; };
     429                1DD2A68725633C8700FF7B6F /* RemoteSourceBufferProxyMessagesReplies.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DD2A66A2562021E00FF7B6F /* RemoteSourceBufferProxyMessagesReplies.h */; };
     430                1DD2A68825633C9500FF7B6F /* RemoteMediaSourceProxyMessagesReplies.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DD2A661256122F100FF7B6F /* RemoteMediaSourceProxyMessagesReplies.h */; };
    424431                1F335BC0185B84F0001A201A /* WKWebProcessPlugInLoadDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F335BBF185B84D8001A201A /* WKWebProcessPlugInLoadDelegate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    425432                1F604BAA1889FBB800EE0395 /* _WKRenderingProgressEventsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F604BA71889FA7400EE0395 /* _WKRenderingProgressEventsInternal.h */; };
     
    28152822                1DA4089E23A827780058C950 /* RemoteMediaResourceManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteMediaResourceManager.cpp; sourceTree = "<group>"; };
    28162823                1DBBB061211CC3CB00502ECC /* WKShareSheet.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKShareSheet.mm; sourceTree = "<group>"; };
     2824                1DD2A636255DE67500FF7B6F /* MediaSourcePrivateRemote.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MediaSourcePrivateRemote.cpp; path = /Volumes/Data/webkit/OpenSource/Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.cpp; sourceTree = "<absolute>"; };
     2825                1DD2A637255DE67500FF7B6F /* MediaSourcePrivateRemote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaSourcePrivateRemote.h; sourceTree = "<group>"; };
     2826                1DD2A639255DE6D100FF7B6F /* SourceBufferPrivateRemote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SourceBufferPrivateRemote.h; sourceTree = "<group>"; };
     2827                1DD2A63A255DE6D100FF7B6F /* SourceBufferPrivateRemote.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SourceBufferPrivateRemote.cpp; sourceTree = "<group>"; };
     2828                1DD2A63E255E3F1F00FF7B6F /* RemoteMediaSourceProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaSourceProxy.h; sourceTree = "<group>"; };
     2829                1DD2A63F255E3F1F00FF7B6F /* RemoteMediaSourceProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteMediaSourceProxy.cpp; sourceTree = "<group>"; };
     2830                1DD2A642255E3F3D00FF7B6F /* RemoteSourceBufferProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteSourceBufferProxy.h; sourceTree = "<group>"; };
     2831                1DD2A643255E3F3D00FF7B6F /* RemoteSourceBufferProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteSourceBufferProxy.cpp; sourceTree = "<group>"; };
     2832                1DD2A646255F32B100FF7B6F /* RemoteMediaSourceIdentifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaSourceIdentifier.h; sourceTree = "<group>"; };
     2833                1DD2A64A2560F54C00FF7B6F /* RemoteMediaSourceProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = RemoteMediaSourceProxy.messages.in; sourceTree = "<group>"; };
     2834                1DD2A660256122F100FF7B6F /* RemoteMediaSourceProxyMessages.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RemoteMediaSourceProxyMessages.h; path = DerivedSources/WebKit2/RemoteMediaSourceProxyMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
     2835                1DD2A661256122F100FF7B6F /* RemoteMediaSourceProxyMessagesReplies.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RemoteMediaSourceProxyMessagesReplies.h; path = DerivedSources/WebKit2/RemoteMediaSourceProxyMessagesReplies.h; sourceTree = BUILT_PRODUCTS_DIR; };
     2836                1DD2A662256122F100FF7B6F /* RemoteMediaSourceProxyMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = RemoteMediaSourceProxyMessageReceiver.cpp; path = DerivedSources/WebKit2/RemoteMediaSourceProxyMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
     2837                1DD2A6662561ED0400FF7B6F /* RemoteSourceBufferProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = RemoteSourceBufferProxy.messages.in; sourceTree = "<group>"; };
     2838                1DD2A6682561F68400FF7B6F /* RemoteSourceBufferIdentifier.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteSourceBufferIdentifier.h; sourceTree = "<group>"; };
     2839                1DD2A6692562021E00FF7B6F /* RemoteSourceBufferProxyMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteSourceBufferProxyMessages.h; path = DerivedSources/WebKit2/RemoteSourceBufferProxyMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
     2840                1DD2A66A2562021E00FF7B6F /* RemoteSourceBufferProxyMessagesReplies.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RemoteSourceBufferProxyMessagesReplies.h; path = DerivedSources/WebKit2/RemoteSourceBufferProxyMessagesReplies.h; sourceTree = BUILT_PRODUCTS_DIR; };
     2841                1DD2A66B2562021E00FF7B6F /* RemoteSourceBufferProxyMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RemoteSourceBufferProxyMessageReceiver.cpp; path = DerivedSources/WebKit2/RemoteSourceBufferProxyMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
     2842                1DD2A66F25622F1100FF7B6F /* SourceBufferPrivateRemote.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = SourceBufferPrivateRemote.messages.in; sourceTree = "<group>"; };
     2843                1DD2A6712562324F00FF7B6F /* SourceBufferPrivateRemoteMessagesReplies.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceBufferPrivateRemoteMessagesReplies.h; path = DerivedSources/WebKit2/SourceBufferPrivateRemoteMessagesReplies.h; sourceTree = BUILT_PRODUCTS_DIR; };
     2844                1DD2A6722562324F00FF7B6F /* SourceBufferPrivateRemoteMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = SourceBufferPrivateRemoteMessageReceiver.cpp; path = DerivedSources/WebKit2/SourceBufferPrivateRemoteMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
     2845                1DD2A6732562324F00FF7B6F /* SourceBufferPrivateRemoteMessages.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SourceBufferPrivateRemoteMessages.h; path = DerivedSources/WebKit2/SourceBufferPrivateRemoteMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
    28172846                1DE076D92460CCBD00B211E8 /* WebPreferencesDefaultValuesCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebPreferencesDefaultValuesCocoa.mm; sourceTree = "<group>"; };
    28182847                1DE0D095211CC21300439B5F /* WKShareSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKShareSheet.h; sourceTree = "<group>"; };
     
    56345663                                07923132239B3B0C009598E2 /* MediaPlayerPrivateRemote.h */,
    56355664                                07B1D04B23D38FCE00399A6E /* MediaPlayerPrivateRemote.messages.in */,
     5665                                1DD2A636255DE67500FF7B6F /* MediaSourcePrivateRemote.cpp */,
     5666                                1DD2A637255DE67500FF7B6F /* MediaSourcePrivateRemote.h */,
    56365667                                9B5BEC29240101580070C6EF /* RemoteAudioDestinationProxy.cpp */,
    56375668                                9B5BEC28240101580070C6EF /* RemoteAudioDestinationProxy.h */,
     
    56785709                                1D32F89D23A84C5B00B1EA6A /* RemoteMediaResourceProxy.cpp */,
    56795710                                1D32F89B23A84BA600B1EA6A /* RemoteMediaResourceProxy.h */,
     5711                                1DD2A646255F32B100FF7B6F /* RemoteMediaSourceIdentifier.h */,
     5712                                1DD2A63A255DE6D100FF7B6F /* SourceBufferPrivateRemote.cpp */,
     5713                                1DD2A639255DE6D100FF7B6F /* SourceBufferPrivateRemote.h */,
     5714                                1DD2A66F25622F1100FF7B6F /* SourceBufferPrivateRemote.messages.in */,
    56805715                                07E19F0823D533B90094FFB4 /* TextTrackPrivateRemote.cpp */,
    56815716                                07E19F0923D533BA0094FFB4 /* TextTrackPrivateRemote.h */,
     
    57425777                                1DA4089423A80A3E0058C950 /* RemoteMediaResourceManager.h */,
    57435778                                1D32F8A623A8601900B1EA6A /* RemoteMediaResourceManager.messages.in */,
     5779                                1DD2A63F255E3F1F00FF7B6F /* RemoteMediaSourceProxy.cpp */,
     5780                                1DD2A63E255E3F1F00FF7B6F /* RemoteMediaSourceProxy.h */,
     5781                                1DD2A64A2560F54C00FF7B6F /* RemoteMediaSourceProxy.messages.in */,
     5782                                1DD2A6682561F68400FF7B6F /* RemoteSourceBufferIdentifier.h */,
     5783                                1DD2A643255E3F3D00FF7B6F /* RemoteSourceBufferProxy.cpp */,
     5784                                1DD2A642255E3F3D00FF7B6F /* RemoteSourceBufferProxy.h */,
     5785                                1DD2A6662561ED0400FF7B6F /* RemoteSourceBufferProxy.messages.in */,
    57445786                                07E19F0723D4DC880094FFB4 /* RemoteTextTrackProxy.cpp */,
    57455787                                07E19F0623D4DC880094FFB4 /* RemoteTextTrackProxy.h */,
     
    1034710389                                1D4D736C23A9DF6000717A25 /* RemoteMediaResourceManagerMessages.h */,
    1034810390                                1D4D737523A9EB6800717A25 /* RemoteMediaResourceManagerMessagesReplies.h */,
     10391                                1DD2A662256122F100FF7B6F /* RemoteMediaSourceProxyMessageReceiver.cpp */,
     10392                                1DD2A660256122F100FF7B6F /* RemoteMediaSourceProxyMessages.h */,
     10393                                1DD2A661256122F100FF7B6F /* RemoteMediaSourceProxyMessagesReplies.h */,
    1034910394                                1AC1338318590C4600F3EC05 /* RemoteObjectRegistryMessageReceiver.cpp */,
    1035010395                                1AC1338418590C4600F3EC05 /* RemoteObjectRegistryMessages.h */,
    1035110396                                0F5947A5187B517600437857 /* RemoteScrollingCoordinatorMessageReceiver.cpp */,
    1035210397                                0F5947A6187B517600437857 /* RemoteScrollingCoordinatorMessages.h */,
     10398                                1DD2A66B2562021E00FF7B6F /* RemoteSourceBufferProxyMessageReceiver.cpp */,
     10399                                1DD2A6692562021E00FF7B6F /* RemoteSourceBufferProxyMessages.h */,
     10400                                1DD2A66A2562021E00FF7B6F /* RemoteSourceBufferProxyMessagesReplies.h */,
    1035310401                                A55BA8211BA25BB8007CD33D /* RemoteWebInspectorProxyMessageReceiver.cpp */,
    1035410402                                A55BA8221BA25BB8007CD33D /* RemoteWebInspectorProxyMessages.h */,
     
    1035810406                                2DE6943B18BD2A68005C15E5 /* SmartMagnificationControllerMessageReceiver.cpp */,
    1035910407                                2DE6943C18BD2A68005C15E5 /* SmartMagnificationControllerMessages.h */,
     10408                                1DD2A6722562324F00FF7B6F /* SourceBufferPrivateRemoteMessageReceiver.cpp */,
     10409                                1DD2A6732562324F00FF7B6F /* SourceBufferPrivateRemoteMessages.h */,
     10410                                1DD2A6712562324F00FF7B6F /* SourceBufferPrivateRemoteMessagesReplies.h */,
    1036010411                                93D6B781254CCABC0058DD3A /* SpeechRecognitionServerMessageReceiver.cpp */,
    1036110412                                93D6B780254CCABC0058DD3A /* SpeechRecognitionServerMessages.h */,
     
    1134611397                                1D4D737123A9E56200717A25 /* RemoteMediaResourceManagerMessages.h in Headers */,
    1134711398                                1D4D737623A9ED1800717A25 /* RemoteMediaResourceManagerMessagesReplies.h in Headers */,
     11399                                1DD2A68525633C6700FF7B6F /* RemoteMediaSourceProxyMessages.h in Headers */,
     11400                                1DD2A68825633C9500FF7B6F /* RemoteMediaSourceProxyMessagesReplies.h in Headers */,
    1134811401                                E1B78471163F24690007B692 /* RemoteNetworkingContext.h in Headers */,
    1134911402                                1A5704FC1BE1751100874AF1 /* RemoteObjectInvocation.h in Headers */,
     
    1135511408                                0F5947A4187B3B7D00437857 /* RemoteScrollingCoordinatorTransaction.h in Headers */,
    1135611409                                0F59479D187B3B6000437857 /* RemoteScrollingTree.h in Headers */,
     11410                                1DD2A68625633C7200FF7B6F /* RemoteSourceBufferProxyMessages.h in Headers */,
     11411                                1DD2A68725633C8700FF7B6F /* RemoteSourceBufferProxyMessagesReplies.h in Headers */,
    1135711412                                A55BA81F1BA25B27007CD33D /* RemoteWebInspectorProxy.h in Headers */,
    1135811413                                A55BA8251BA25CFB007CD33D /* RemoteWebInspectorProxyMessages.h in Headers */,
     
    1314113196                                071BC58F23CE1EAA00680D7C /* RemoteMediaPlayerProxyMessageReceiver.cpp in Sources */,
    1314213197                                1D4D737023A9E54700717A25 /* RemoteMediaResourceManagerMessageReceiver.cpp in Sources */,
     13198                                1DD2A6632561246F00FF7B6F /* RemoteMediaSourceProxyMessageReceiver.cpp in Sources */,
    1314313199                                1AC1338518590C4600F3EC05 /* RemoteObjectRegistryMessageReceiver.cpp in Sources */,
    1314413200                                0F5947A7187B517600437857 /* RemoteScrollingCoordinatorMessageReceiver.cpp in Sources */,
     13201                                1DD2A66E2562021E00FF7B6F /* RemoteSourceBufferProxyMessageReceiver.cpp in Sources */,
    1314513202                                A55BA8261BA25CFD007CD33D /* RemoteWebInspectorProxyMessageReceiver.cpp in Sources */,
    1314613203                                1BBBE4A019B66C53006B7D81 /* RemoteWebInspectorUIMessageReceiver.cpp in Sources */,
     
    1315313210                                575B1BB923CE9C0B0020639A /* SimulatedInputDispatcher.cpp in Sources */,
    1315413211                                2DE6943D18BD2A68005C15E5 /* SmartMagnificationControllerMessageReceiver.cpp in Sources */,
     13212                                1DD2A674256232A100FF7B6F /* SourceBufferPrivateRemoteMessageReceiver.cpp in Sources */,
    1315513213                                93D6B782254CCCF40058DD3A /* SpeechRecognitionServerMessageReceiver.cpp in Sources */,
    1315613214                                1A334DED16DE8F88006A8E38 /* StorageAreaMapMessageReceiver.cpp in Sources */,
  • trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp

    r269850 r269907  
    7272#endif
    7373
     74#if ENABLE(MEDIA_SOURCE)
     75#include "RemoteMediaSourceIdentifier.h"
     76#endif
     77
    7478namespace WebCore {
    7579#if !RELEASE_LOG_DISABLED
     
    149153}
    150154
    151 void MediaPlayerPrivateRemote::MediaPlayerPrivateRemote::load(const URL& url, const ContentType& contentType, const String& keySystem)
     155void MediaPlayerPrivateRemote::load(const URL& url, const ContentType& contentType, const String& keySystem)
    152156{
    153157    Optional<SandboxExtension::Handle> sandboxExtensionHandle;
     
    625629
    626630#if ENABLE(MEDIA_SOURCE)
    627 void MediaPlayerPrivateRemote::load(const String&, MediaSourcePrivateClient*)
    628 {
     631void MediaPlayerPrivateRemote::load(const URL& url, const ContentType& contentType, MediaSourcePrivateClient* client)
     632{
     633    if (m_remoteEngineIdentifier == MediaPlayerEnums::MediaEngineIdentifier::AVFoundationMSE) {
     634        auto identifier = RemoteMediaSourceIdentifier::generate();
     635        connection().send(Messages::RemoteMediaPlayerProxy::LoadMediaSource(url, contentType, identifier), m_id);
     636        m_mediaSourcePrivate = MediaSourcePrivateRemote::create(m_manager.gpuProcessConnection(), identifier, m_manager.typeCache(m_remoteEngineIdentifier), *this, client);
     637
     638        return;
     639    }
     640
    629641    callOnMainThread([weakThis = makeWeakPtr(*this), this] {
    630642        if (!weakThis)
  • trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h

    r269850 r269907  
    4444#include <wtf/WeakPtr.h>
    4545
     46#if ENABLE(MEDIA_SOURCE)
     47#include "MediaSourcePrivateRemote.h"
     48#endif
     49
    4650namespace WTF {
    4751class MachSendRight;
     
    8892    IPC::Connection& connection() const { return m_manager.gpuProcessConnection().connection(); }
    8993    WebCore::MediaPlayer* player() const { return m_player; }
     94
     95    WebCore::MediaPlayer::ReadyState readyState() const final { return m_cachedState.readyState; }
    9096
    9197    void networkStateChanged(RemoteMediaPlayerState&&);
     
    155161#endif
    156162
     163#if !RELEASE_LOG_DISABLED
     164    const void* mediaPlayerLogIdentifier() { return logIdentifier(); }
     165    const Logger& mediaPlayerLogger() { return logger(); }
     166#endif
     167
    157168private:
    158169
     
    171182
    172183#if ENABLE(MEDIA_SOURCE)
    173     void load(const String&, WebCore::MediaSourcePrivateClient*) final;
     184    void load(const URL&, const WebCore::ContentType&, WebCore::MediaSourcePrivateClient*) final;
    174185#endif
    175186#if ENABLE(MEDIA_STREAM)
     
    251262
    252263    WebCore::MediaPlayer::NetworkState networkState() const final { return m_cachedState.networkState; }
    253     WebCore::MediaPlayer::ReadyState readyState() const final { return m_cachedState.readyState; }
    254264
    255265    MediaTime maxMediaTimeSeekable() const final;
     
    383393#if ENABLE(WEB_AUDIO) && PLATFORM(COCOA)
    384394    RefPtr<RemoteAudioSourceProvider> m_audioSourceProvider;
     395#endif
     396
     397#if ENABLE(MEDIA_SOURCE)
     398    RefPtr<MediaSourcePrivateRemote> m_mediaSourcePrivate;
    385399#endif
    386400
  • trunk/Source/WebKit/WebProcess/GPU/media/RemoteCDMConfiguration.h

    r257867 r269907  
    2828#if ENABLE(GPU_PROCESS) && ENABLE(ENCRYPTED_MEDIA)
    2929
    30 #include <WebCore/ContentType.h>
    3130#include <wtf/text/WTFString.h>
    3231
  • trunk/Source/WebKit/WebProcess/GPU/media/RemoteCDMInstanceConfiguration.h

    r257867 r269907  
    2828#if ENABLE(GPU_PROCESS) && ENABLE(ENCRYPTED_MEDIA)
    2929
    30 #include <WebCore/ContentType.h>
    3130#include <wtf/text/WTFString.h>
    3231
  • trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h

    r269750 r269907  
    6767    WebCore::MediaPlayerIdentifier findRemotePlayerId(const WebCore::MediaPlayerPrivateInterface*);
    6868
     69    RemoteMediaPlayerMIMETypeCache& typeCache(WebCore::MediaPlayerEnums::MediaEngineIdentifier);
     70
    6971private:
    7072    std::unique_ptr<WebCore::MediaPlayerPrivateInterface> createRemoteMediaPlayer(WebCore::MediaPlayer*, WebCore::MediaPlayerEnums::MediaEngineIdentifier);
     
    8486    void clearMediaCacheForOrigins(WebCore::MediaPlayerEnums::MediaEngineIdentifier, const String&, const HashSet<RefPtr<WebCore::SecurityOrigin>>&);
    8587
    86     RemoteMediaPlayerMIMETypeCache& typeCache(WebCore::MediaPlayerEnums::MediaEngineIdentifier);
    87 
    8888    HashMap<WebCore::MediaPlayerIdentifier, WeakPtr<MediaPlayerPrivateRemote>> m_players;
    8989    WebProcess& m_process;
  • trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaSourceIdentifier.h

    r269906 r269907  
    2626#pragma once
    2727
    28 #if ENABLE(GPU_PROCESS) && ENABLE(ENCRYPTED_MEDIA)
     28#if ENABLE(GPU_PROCESS) && ENABLE(MEDIA_SOURCE)
    2929
    30 #include <WebCore/ContentType.h>
    31 #include <wtf/text/WTFString.h>
     30#include <wtf/ObjectIdentifier.h>
    3231
    3332namespace WebKit {
    3433
    35 struct RemoteCDMInstanceConfiguration {
    36     String keySystem;
    37 
    38     template<class Encoder>
    39     void encode(Encoder& encoder) const
    40     {
    41         encoder << keySystem;
    42     }
    43 
    44     template <class Decoder>
    45     static Optional<RemoteCDMInstanceConfiguration> decode(Decoder& decoder)
    46     {
    47         Optional<String> keySystem;
    48         decoder >> keySystem;
    49         if (!keySystem)
    50             return WTF::nullopt;
    51 
    52         return {{
    53             WTFMove(*keySystem),
    54         }};
    55     }
    56 };
     34enum RemoteMediaSourceIdentifierType { };
     35using RemoteMediaSourceIdentifier = ObjectIdentifier<RemoteMediaSourceIdentifierType>;
    5736
    5837} // namespace WebKit
  • trunk/Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.messages.in

    r269906 r269907  
    2424 */
    2525
    26 #pragma once
     26#if ENABLE(GPU_PROCESS) && ENABLE(MEDIA_SOURCE)
    2727
    28 #if ENABLE(GPU_PROCESS) && ENABLE(ENCRYPTED_MEDIA)
    29 
    30 #include <WebCore/ContentType.h>
    31 #include <wtf/text/WTFString.h>
    32 
    33 namespace WebKit {
    34 
    35 struct RemoteCDMInstanceConfiguration {
    36     String keySystem;
    37 
    38     template<class Encoder>
    39     void encode(Encoder& encoder) const
    40     {
    41         encoder << keySystem;
    42     }
    43 
    44     template <class Decoder>
    45     static Optional<RemoteCDMInstanceConfiguration> decode(Decoder& decoder)
    46     {
    47         Optional<String> keySystem;
    48         decoder >> keySystem;
    49         if (!keySystem)
    50             return WTF::nullopt;
    51 
    52         return {{
    53             WTFMove(*keySystem),
    54         }};
    55     }
    56 };
    57 
    58 } // namespace WebKit
     28messages -> SourceBufferPrivateRemote NotRefCounted {
     29    SourceBufferPrivateAppendComplete(WebCore::SourceBufferPrivateClient::AppendResult appendResult)
     30}
    5931
    6032#endif
Note: See TracChangeset for help on using the changeset viewer.