Changeset 254499 in webkit


Ignore:
Timestamp:
Jan 14, 2020 12:16:00 AM (4 years ago)
Author:
eric.carlson@apple.com
Message:

Expose video tracks for media files in the GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=206209
<rdar://problem/58553026>

Reviewed by Jer Noble.

Source/WebCore:

No new tests, un-skipped existing tests that pass because of this change.

  • platform/graphics/VideoTrackPrivate.h:

Source/WebKit:

  • GPUProcess/media/RemoteAudioTrackProxy.cpp:

(WebKit::RemoteAudioTrackProxy::configuration):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::videoTrackSetSelected):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerDidAddVideoTrack):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerDidRemoveVideoTrack):
(WebKit::RemoteMediaPlayerProxy::videoTrackSetSelected):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:
  • GPUProcess/media/RemoteVideoTrackProxy.cpp: Copied from Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.cpp.

(WebKit::RemoteVideoTrackProxy::RemoteVideoTrackProxy):
(WebKit::RemoteVideoTrackProxy::configuration):
(WebKit::RemoteVideoTrackProxy::configurationChanged):
(WebKit::RemoteVideoTrackProxy::willRemove):
(WebKit::RemoteVideoTrackProxy::selectedChanged):
(WebKit::RemoteVideoTrackProxy::idChanged):
(WebKit::RemoteVideoTrackProxy::labelChanged):
(WebKit::RemoteVideoTrackProxy::languageChanged):

  • GPUProcess/media/RemoteVideoTrackProxy.h: Added.
  • GPUProcess/media/TrackPrivateRemoteConfiguration.h:

(WebKit::TrackPrivateRemoteConfiguration::encode const):
(WebKit::TrackPrivateRemoteConfiguration::decode):

  • NetworkProcess/cache/CacheStorageEngine.cpp:

(WebKit::CacheStorage::Engine::clearCachesForOriginFromDirectories):

  • Sources.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/AudioTrackPrivateRemote.cpp:

(WebKit::AudioTrackPrivateRemote::updateConfiguration):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:

(WebKit::MediaPlayerPrivateRemote::addRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::removeRemoteVideoTrack):
(WebKit::MediaPlayerPrivateRemote::remoteVideoTrackConfigurationChanged):

  • WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::addRemoteVideoTrack):
(WebKit::RemoteMediaPlayerManager::removeRemoteVideoTrack):
(WebKit::RemoteMediaPlayerManager::remoteVideoTrackConfigurationChanged):

  • WebProcess/GPU/media/RemoteMediaPlayerManager.h:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in:
  • WebProcess/GPU/media/RemoteVideoTrackProxy.cpp: Copied from Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.cpp.

(WebKit::RemoteVideoTrackProxy::RemoteVideoTrackProxy):
(WebKit::RemoteVideoTrackProxy::configuration):
(WebKit::RemoteVideoTrackProxy::configurationChanged):
(WebKit::RemoteVideoTrackProxy::willRemove):
(WebKit::RemoteVideoTrackProxy::selectedChanged):
(WebKit::RemoteVideoTrackProxy::idChanged):
(WebKit::RemoteVideoTrackProxy::labelChanged):
(WebKit::RemoteVideoTrackProxy::languageChanged):

  • WebProcess/GPU/media/RemoteVideoTrackProxy.h: Added.
  • WebProcess/GPU/media/VideoTrackPrivateRemote.cpp: Copied from Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.cpp.

(WebKit::VideoTrackPrivateRemote::VideoTrackPrivateRemote):
(WebKit::VideoTrackPrivateRemote::setSelected):
(WebKit::VideoTrackPrivateRemote::updateConfiguration):

  • WebProcess/GPU/media/VideoTrackPrivateRemote.h: Added.

(WebKit::VideoTrackPrivateRemote::create):

LayoutTests:

  • gpu-process/TestExpectations:
Location:
trunk
Files:
2 added
20 edited
2 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r254497 r254499  
     12020-01-14  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Expose video tracks for media files in the GPUProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=206209
     5        <rdar://problem/58553026>
     6
     7        Reviewed by Jer Noble.
     8
     9        * gpu-process/TestExpectations:
     10
    1112020-01-13  Simon Fraser  <simon.fraser@apple.com>
    212
  • trunk/LayoutTests/gpu-process/TestExpectations

    r254454 r254499  
    221221media/track/audio-track.html [ Pass ]
    222222media/audio-track-add-remove.html [ Pass ]
     223media/track/video-track-add-remove.html [ Pass ]
     224media/track/video-track-alternate-groups.html [ Pass ]
     225media/track/video-track-addition-and-frame-removal.html [ Pass ]
     226media/track/video-track.html [ Pass ]
    223227
    224228accessibility/media-element.html [ Skip ]
  • trunk/Source/WebCore/ChangeLog

    r254498 r254499  
     12020-01-14  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Expose video tracks for media files in the GPUProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=206209
     5        <rdar://problem/58553026>
     6
     7        Reviewed by Jer Noble.
     8
     9        No new tests, un-skipped existing tests that pass because of this change.
     10
     11        * platform/graphics/VideoTrackPrivate.h:
     12
    1132020-01-13  Alexey Shvayka  <shvaikalesh@gmail.com>
    214
  • trunk/Source/WebCore/platform/graphics/VideoTrackPrivate.h

    r222091 r254499  
    6969} // namespace WebCore
    7070
     71namespace WTF {
     72
     73template<> struct EnumTraits<WebCore::VideoTrackPrivate::Kind> {
     74    using values = EnumValues<
     75        WebCore::VideoTrackPrivate::Kind,
     76        WebCore::VideoTrackPrivate::Kind::Alternative,
     77        WebCore::VideoTrackPrivate::Kind::Captions,
     78        WebCore::VideoTrackPrivate::Kind::Main,
     79        WebCore::VideoTrackPrivate::Kind::Sign,
     80        WebCore::VideoTrackPrivate::Kind::Subtitles,
     81        WebCore::VideoTrackPrivate::Kind::Commentary,
     82        WebCore::VideoTrackPrivate::Kind::None
     83    >;
     84};
     85
     86} // namespace WTF
     87
    7188#endif
  • trunk/Source/WebKit/ChangeLog

    r254495 r254499  
     12020-01-14  Eric Carlson  <eric.carlson@apple.com>
     2
     3        Expose video tracks for media files in the GPUProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=206209
     5        <rdar://problem/58553026>
     6
     7        Reviewed by Jer Noble.
     8
     9        * GPUProcess/media/RemoteAudioTrackProxy.cpp:
     10        (WebKit::RemoteAudioTrackProxy::configuration):
     11        * GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
     12        (WebKit::RemoteMediaPlayerManagerProxy::videoTrackSetSelected):
     13        * GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
     14        * GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
     15        * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
     16        (WebKit::RemoteMediaPlayerProxy::mediaPlayerDidAddVideoTrack):
     17        (WebKit::RemoteMediaPlayerProxy::mediaPlayerDidRemoveVideoTrack):
     18        (WebKit::RemoteMediaPlayerProxy::videoTrackSetSelected):
     19        * GPUProcess/media/RemoteMediaPlayerProxy.h:
     20        * GPUProcess/media/RemoteVideoTrackProxy.cpp: Copied from Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.cpp.
     21        (WebKit::RemoteVideoTrackProxy::RemoteVideoTrackProxy):
     22        (WebKit::RemoteVideoTrackProxy::configuration):
     23        (WebKit::RemoteVideoTrackProxy::configurationChanged):
     24        (WebKit::RemoteVideoTrackProxy::willRemove):
     25        (WebKit::RemoteVideoTrackProxy::selectedChanged):
     26        (WebKit::RemoteVideoTrackProxy::idChanged):
     27        (WebKit::RemoteVideoTrackProxy::labelChanged):
     28        (WebKit::RemoteVideoTrackProxy::languageChanged):
     29        * GPUProcess/media/RemoteVideoTrackProxy.h: Added.
     30        * GPUProcess/media/TrackPrivateRemoteConfiguration.h:
     31        (WebKit::TrackPrivateRemoteConfiguration::encode const):
     32        (WebKit::TrackPrivateRemoteConfiguration::decode):
     33        * NetworkProcess/cache/CacheStorageEngine.cpp:
     34        (WebKit::CacheStorage::Engine::clearCachesForOriginFromDirectories):
     35        * Sources.txt:
     36        * WebKit.xcodeproj/project.pbxproj:
     37        * WebProcess/GPU/media/AudioTrackPrivateRemote.cpp:
     38        (WebKit::AudioTrackPrivateRemote::updateConfiguration):
     39        * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
     40        (WebKit::MediaPlayerPrivateRemote::addRemoteVideoTrack):
     41        (WebKit::MediaPlayerPrivateRemote::removeRemoteVideoTrack):
     42        (WebKit::MediaPlayerPrivateRemote::remoteVideoTrackConfigurationChanged):
     43        * WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
     44        * WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:
     45        (WebKit::RemoteMediaPlayerManager::addRemoteVideoTrack):
     46        (WebKit::RemoteMediaPlayerManager::removeRemoteVideoTrack):
     47        (WebKit::RemoteMediaPlayerManager::remoteVideoTrackConfigurationChanged):
     48        * WebProcess/GPU/media/RemoteMediaPlayerManager.h:
     49        * WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in:
     50        * WebProcess/GPU/media/RemoteVideoTrackProxy.cpp: Copied from Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.cpp.
     51        (WebKit::RemoteVideoTrackProxy::RemoteVideoTrackProxy):
     52        (WebKit::RemoteVideoTrackProxy::configuration):
     53        (WebKit::RemoteVideoTrackProxy::configurationChanged):
     54        (WebKit::RemoteVideoTrackProxy::willRemove):
     55        (WebKit::RemoteVideoTrackProxy::selectedChanged):
     56        (WebKit::RemoteVideoTrackProxy::idChanged):
     57        (WebKit::RemoteVideoTrackProxy::labelChanged):
     58        (WebKit::RemoteVideoTrackProxy::languageChanged):
     59        * WebProcess/GPU/media/RemoteVideoTrackProxy.h: Added.
     60        * WebProcess/GPU/media/VideoTrackPrivateRemote.cpp: Copied from Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.cpp.
     61        (WebKit::VideoTrackPrivateRemote::VideoTrackPrivateRemote):
     62        (WebKit::VideoTrackPrivateRemote::setSelected):
     63        (WebKit::VideoTrackPrivateRemote::updateConfiguration):
     64        * WebProcess/GPU/media/VideoTrackPrivateRemote.h: Added.
     65        (WebKit::VideoTrackPrivateRemote::create):
     66
    1672020-01-13  Don Olmstead  <don.olmstead@sony.com>
    268
  • trunk/Source/WebKit/GPUProcess/media/RemoteAudioTrackProxy.cpp

    r254454 r254499  
    5656    configuration->startTimeVariance = m_trackPrivate->startTimeVariance();
    5757    configuration->enabled = m_trackPrivate->enabled();
    58     configuration->kind = m_trackPrivate->kind();
     58    configuration->audioKind = m_trackPrivate->kind();
    5959
    6060    return configuration.get();
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp

    r254454 r254499  
    336336}
    337337
     338void RemoteMediaPlayerManagerProxy::videoTrackSetSelected(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, bool selected)
     339{
     340    if (auto player = m_proxies.get(playerID))
     341        player->videoTrackSetSelected(trackID, selected);
     342}
     343
    338344#if !RELEASE_LOG_DISABLED
    339345const Logger& RemoteMediaPlayerManagerProxy::logger() const
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h

    r254454 r254499  
    114114
    115115    void audioTrackSetEnabled(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, bool);
     116    void videoTrackSetSelected(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, bool);
    116117
    117118    HashMap<MediaPlayerPrivateRemoteIdentifier, std::unique_ptr<RemoteMediaPlayerProxy>> m_proxies;
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in

    r254454 r254499  
    6767
    6868    AudioTrackSetEnabled(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID, bool enabled)
     69    VideoTrackSetSelected(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID, bool enabled)
    6970}
    7071
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp

    r254454 r254499  
    3030
    3131#include "GPUConnectionToWebProcess.h"
     32#include "RemoteAudioTrackProxy.h"
    3233#include "RemoteMediaPlayerManagerMessages.h"
    3334#include "RemoteMediaPlayerManagerProxy.h"
     
    3839#include "RemoteMediaResourceLoader.h"
    3940#include "RemoteMediaResourceManager.h"
     41#include "RemoteVideoTrackProxy.h"
    4042#include "WebCoreArgumentCoders.h"
    4143#include <WebCore/MediaPlayer.h>
     
    388390}
    389391
     392void RemoteMediaPlayerProxy::mediaPlayerDidAddVideoTrack(WebCore::VideoTrackPrivate& track)
     393{
     394    m_videoTracks.set(&track, RemoteVideoTrackProxy::create(*this, TrackPrivateRemoteIdentifier::generate(), m_webProcessConnection.copyRef(), track));
     395}
     396
     397void RemoteMediaPlayerProxy::mediaPlayerDidRemoveVideoTrack(WebCore::VideoTrackPrivate& track)
     398{
     399    ASSERT(m_videoTracks.contains(&track));
     400    m_videoTracks.remove(&track);
     401}
     402
     403void RemoteMediaPlayerProxy::videoTrackSetSelected(TrackPrivateRemoteIdentifier trackID, bool selected)
     404{
     405    for (auto& track : m_videoTracks.values()) {
     406        if (track->identifier() == trackID) {
     407            track->setSelected(selected);
     408            return;
     409        }
     410    }
     411
     412    ASSERT_NOT_REACHED();
     413}
     414
    390415// FIXME: Unimplemented
    391416void RemoteMediaPlayerProxy::mediaPlayerResourceNotSupported()
     
    521546}
    522547
    523 void RemoteMediaPlayerProxy::mediaPlayerDidAddVideoTrack(VideoTrackPrivate&)
    524 {
    525     notImplemented();
    526 }
    527 
    528548void RemoteMediaPlayerProxy::mediaPlayerDidRemoveTextTrack(InbandTextTrackPrivate&)
    529 {
    530     notImplemented();
    531 }
    532 
    533 void RemoteMediaPlayerProxy::mediaPlayerDidRemoveVideoTrack(VideoTrackPrivate&)
    534549{
    535550    notImplemented();
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h

    r254454 r254499  
    5050namespace WebKit {
    5151
     52class RemoteAudioTrackProxy;
    5253class RemoteMediaPlayerManagerProxy;
     54class RemoteVideoTrackProxy;
    5355
    5456class RemoteMediaPlayerProxy final
     
    9698
    9799    void audioTrackSetEnabled(TrackPrivateRemoteIdentifier, bool);
     100    void videoTrackSetSelected(TrackPrivateRemoteIdentifier, bool);
    98101
    99102    Ref<WebCore::PlatformMediaResource> requestResource(WebCore::ResourceRequest&&, WebCore::PlatformMediaResourceLoader::LoadOptions);
     
    117120    void mediaPlayerDidAddAudioTrack(WebCore::AudioTrackPrivate&) final;
    118121    void mediaPlayerDidRemoveAudioTrack(WebCore::AudioTrackPrivate&) final;
     122    void mediaPlayerDidAddVideoTrack(WebCore::VideoTrackPrivate&) final;
     123    void mediaPlayerDidRemoveVideoTrack(WebCore::VideoTrackPrivate&) final;
    119124
    120125    // Not implemented
     
    159164
    160165    void mediaPlayerDidAddTextTrack(WebCore::InbandTextTrackPrivate&) final;
    161     void mediaPlayerDidAddVideoTrack(WebCore::VideoTrackPrivate&) final;
    162166    void mediaPlayerDidRemoveTextTrack(WebCore::InbandTextTrackPrivate&) final;
    163     void mediaPlayerDidRemoveVideoTrack(WebCore::VideoTrackPrivate&) final;
    164167
    165168    void textTrackRepresentationBoundsChanged(const WebCore::IntRect&) final;
     
    196199
    197200    HashMap<AudioTrackPrivate*, Ref<RemoteAudioTrackProxy>> m_audioTracks;
     201    HashMap<VideoTrackPrivate*, Ref<RemoteVideoTrackProxy>> m_videoTracks;
    198202    MediaPlayerPrivateRemoteIdentifier m_id;
    199203    RefPtr<SandboxExtension> m_sandboxExtension;
  • trunk/Source/WebKit/GPUProcess/media/RemoteVideoTrackProxy.cpp

    r254498 r254499  
    2626
    2727#include "config.h"
    28 #include "RemoteAudioTrackProxy.h"
     28#include "RemoteVideoTrackProxy.h"
    2929
    3030#if ENABLE(GPU_PROCESS)
     
    3636namespace WebKit {
    3737
    38 RemoteAudioTrackProxy::RemoteAudioTrackProxy(RemoteMediaPlayerProxy& player, TrackPrivateRemoteIdentifier id, Ref<IPC::Connection>&& connection, AudioTrackPrivate& trackPrivate)
     38RemoteVideoTrackProxy::RemoteVideoTrackProxy(RemoteMediaPlayerProxy& player, TrackPrivateRemoteIdentifier id, Ref<IPC::Connection>&& connection, VideoTrackPrivate& trackPrivate)
    3939    : m_player(player)
    4040    , m_identifier(id)
     
    4343{
    4444    m_trackPrivate->setClient(this);
    45     m_webProcessConnection->send(Messages::RemoteMediaPlayerManager::AddRemoteAudioTrack(m_player.idendifier(), m_identifier, configuration()), 0);
     45    m_webProcessConnection->send(Messages::RemoteMediaPlayerManager::AddRemoteVideoTrack(m_player.idendifier(), m_identifier, configuration()), 0);
    4646}
    4747
    48 TrackPrivateRemoteConfiguration& RemoteAudioTrackProxy::configuration()
     48TrackPrivateRemoteConfiguration& RemoteVideoTrackProxy::configuration()
    4949{
    5050    static NeverDestroyed<TrackPrivateRemoteConfiguration> configuration;
     
    5555    configuration->trackIndex = m_trackPrivate->trackIndex();
    5656    configuration->startTimeVariance = m_trackPrivate->startTimeVariance();
    57     configuration->enabled = m_trackPrivate->enabled();
    58     configuration->kind = m_trackPrivate->kind();
     57    configuration->selected = m_trackPrivate->selected();
     58    configuration->videoKind = m_trackPrivate->kind();
    5959
    6060    return configuration.get();
    6161}
    6262
    63 void RemoteAudioTrackProxy::configurationChanged()
     63void RemoteVideoTrackProxy::configurationChanged()
    6464{
    65     m_webProcessConnection->send(Messages::RemoteMediaPlayerManager::RemoteAudioTrackConfigurationChanged(m_player.idendifier(), m_identifier, configuration()), 0);
     65    m_webProcessConnection->send(Messages::RemoteMediaPlayerManager::RemoteVideoTrackConfigurationChanged(m_player.idendifier(), m_identifier, configuration()), 0);
    6666}
    6767
    68 void RemoteAudioTrackProxy::willRemove()
     68void RemoteVideoTrackProxy::willRemove()
    6969{
    70     m_webProcessConnection->send(Messages::RemoteMediaPlayerManager::RemoveRemoteAudioTrack(m_player.idendifier(), m_identifier), 0);
     70    m_webProcessConnection->send(Messages::RemoteMediaPlayerManager::RemoveRemoteVideoTrack(m_player.idendifier(), m_identifier), 0);
    7171}
    7272
    73 void RemoteAudioTrackProxy::enabledChanged(bool)
     73void RemoteVideoTrackProxy::selectedChanged(bool)
    7474{
    7575    configurationChanged();
    7676}
    7777
    78 void RemoteAudioTrackProxy::idChanged(const AtomString&)
     78void RemoteVideoTrackProxy::idChanged(const AtomString&)
    7979{
    8080    configurationChanged();
    8181}
    8282
    83 void RemoteAudioTrackProxy::labelChanged(const AtomString&)
     83void RemoteVideoTrackProxy::labelChanged(const AtomString&)
    8484{
    8585    configurationChanged();
    8686}
    8787
    88 void RemoteAudioTrackProxy::languageChanged(const AtomString&)
     88void RemoteVideoTrackProxy::languageChanged(const AtomString&)
    8989{
    9090    configurationChanged();
  • trunk/Source/WebKit/GPUProcess/media/TrackPrivateRemoteConfiguration.h

    r254454 r254499  
    2828#if ENABLE(GPU_PROCESS)
    2929
     30#include <WebCore/AudioTrackPrivate.h>
     31#include <WebCore/VideoTrackPrivate.h>
    3032#include <wtf/MediaTime.h>
    3133
     
    3840    MediaTime startTimeVariance { MediaTime::zeroTime() };
    3941    int trackIndex;
     42
    4043    bool enabled;
    41     WebCore::AudioTrackPrivate::Kind kind { WebCore::AudioTrackPrivate::Kind::None };
     44    WebCore::AudioTrackPrivate::Kind audioKind { WebCore::AudioTrackPrivate::Kind::None };
     45
     46    bool selected;
     47    WebCore::VideoTrackPrivate::Kind videoKind { WebCore::VideoTrackPrivate::Kind::None };
    4248
    4349    template<class Encoder>
     
    5056        encoder << trackIndex;
    5157        encoder << enabled;
    52         encoder.encodeEnum(kind);
     58        encoder.encodeEnum(audioKind);
     59        encoder << selected;
     60        encoder.encodeEnum(videoKind);
    5361    }
    5462
     
    8694            return WTF::nullopt;
    8795
    88         Optional<WebCore::AudioTrackPrivate::Kind> kind;
    89         decoder >> kind;
    90         if (!kind)
     96        Optional<WebCore::AudioTrackPrivate::Kind> audioKind;
     97        decoder >> audioKind;
     98        if (!audioKind)
     99            return WTF::nullopt;
     100
     101        Optional<bool> selected;
     102        decoder >> selected;
     103        if (!selected)
     104            return WTF::nullopt;
     105
     106        Optional<WebCore::VideoTrackPrivate::Kind> videoKind;
     107        decoder >> videoKind;
     108        if (!videoKind)
    91109            return WTF::nullopt;
    92110
     
    98116            *trackIndex,
    99117            *enabled,
    100             *kind,
     118            *audioKind,
     119            *selected,
     120            *videoKind,
    101121        }};
    102122    }
  • trunk/Source/WebKit/Sources.txt

    r254454 r254499  
    3333GPUProcess/media/RemoteMediaResourceLoader.cpp
    3434GPUProcess/media/RemoteMediaResourceManager.cpp
     35GPUProcess/media/RemoteVideoTrackProxy.cpp
    3536
    3637NetworkProcess/AdClickAttributionManager.cpp
     
    517518WebProcess/GPU/media/RemoteMediaPlayerMIMETypeCache.cpp @no-unify
    518519WebProcess/GPU/media/RemoteMediaResourceProxy.cpp
     520WebProcess/GPU/media/VideoTrackPrivateRemote.cpp
    519521WebProcess/GPU/webrtc/LibWebRTCCodecs.cpp
    520522WebProcess/GPU/webrtc/MediaRecorderPrivate.cpp
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r254489 r254499  
    20582058                071BC57E23CA5DB100680D7C /* RemoteAudioTrackProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteAudioTrackProxy.cpp; sourceTree = "<group>"; };
    20592059                071BC57F23CA5DB100680D7C /* RemoteAudioTrackProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteAudioTrackProxy.h; sourceTree = "<group>"; };
     2060                071BC58223CC2BD300680D7C /* VideoTrackPrivateRemote.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VideoTrackPrivateRemote.h; sourceTree = "<group>"; };
     2061                071BC58323CC2BD500680D7C /* VideoTrackPrivateRemote.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = VideoTrackPrivateRemote.cpp; sourceTree = "<group>"; };
     2062                071BC58423CC2C0900680D7C /* RemoteVideoTrackProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteVideoTrackProxy.cpp; sourceTree = "<group>"; };
     2063                071BC58523CC2C0900680D7C /* RemoteVideoTrackProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteVideoTrackProxy.h; sourceTree = "<group>"; };
    20602064                0725EFAB239AE38400A538A9 /* RemoteMediaPlayerManagerProxy.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = RemoteMediaPlayerManagerProxy.messages.in; sourceTree = "<group>"; };
    20612065                0725EFAC239AE38500A538A9 /* RemoteMediaPlayerManagerProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaPlayerManagerProxy.h; sourceTree = "<group>"; };
     
    51905194                                1D32F89D23A84C5B00B1EA6A /* RemoteMediaResourceProxy.cpp */,
    51915195                                1D32F89B23A84BA600B1EA6A /* RemoteMediaResourceProxy.h */,
     5196                                071BC58323CC2BD500680D7C /* VideoTrackPrivateRemote.cpp */,
     5197                                071BC58223CC2BD300680D7C /* VideoTrackPrivateRemote.h */,
    51925198                        );
    51935199                        path = media;
     
    52135219                                1DA4089423A80A3E0058C950 /* RemoteMediaResourceManager.h */,
    52145220                                1D32F8A623A8601900B1EA6A /* RemoteMediaResourceManager.messages.in */,
     5221                                071BC58423CC2C0900680D7C /* RemoteVideoTrackProxy.cpp */,
     5222                                071BC58523CC2C0900680D7C /* RemoteVideoTrackProxy.h */,
    52155223                                071BC57B23CA532400680D7C /* TrackPrivateRemoteConfiguration.h */,
    52165224                                071BC57D23CA56D200680D7C /* TrackPrivateRemoteIdentifier.h */,
  • trunk/Source/WebKit/WebProcess/GPU/media/AudioTrackPrivateRemote.cpp

    r254454 r254499  
    6464        m_label = configuration.label;
    6565        if (changed && client())
    66             client()->idChanged(m_label);
     66            client()->labelChanged(m_label);
    6767    }
    6868
     
    7171        m_language = configuration.language;
    7272        if (changed && client())
    73             client()->idChanged(m_language);
     73            client()->languageChanged(m_language);
    7474    }
    7575
    7676    m_trackIndex = configuration.trackIndex;
    7777    m_startTimeVariance = configuration.startTimeVariance;
    78     m_kind = configuration.kind;
     78    m_kind = configuration.audioKind;
    7979    setEnabled(configuration.enabled);
    8080}
  • trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp

    r254454 r254499  
    3333#include "RemoteMediaPlayerManagerProxyMessages.h"
    3434#include "SandboxExtension.h"
     35#include "VideoTrackPrivateRemote.h"
    3536#include "WebCoreArgumentCoders.h"
    3637#include "WebProcess.h"
     
    387388void MediaPlayerPrivateRemote::addRemoteAudioTrack(TrackPrivateRemoteIdentifier identifier, TrackPrivateRemoteConfiguration&& configuration)
    388389{
    389     ASSERT(!m_audioTracks.contains(identifier));
    390     if (m_audioTracks.contains(identifier))
     390    auto addResult = m_audioTracks.ensure(identifier, [&] {
     391        return AudioTrackPrivateRemote::create(*this, identifier, WTFMove(configuration));
     392    });
     393    ASSERT(addResult.isNewEntry);
     394
     395    if (!addResult.isNewEntry)
    391396        return;
    392397
    393     auto track = AudioTrackPrivateRemote::create(*this, identifier, WTFMove(configuration));
    394     m_player->addAudioTrack(m_audioTracks.add(identifier, WTFMove(track)).iterator->value);
     398    m_player->addAudioTrack(addResult.iterator->value);
    395399}
    396400
     
    410414
    411415    if (const auto& track = m_audioTracks.get(id))
     416        track->updateConfiguration(WTFMove(configuration));
     417}
     418
     419void MediaPlayerPrivateRemote::addRemoteVideoTrack(TrackPrivateRemoteIdentifier identifier, TrackPrivateRemoteConfiguration&& configuration)
     420{
     421    auto addResult = m_videoTracks.ensure(identifier, [&] {
     422        return VideoTrackPrivateRemote::create(*this, identifier, WTFMove(configuration));
     423    });
     424    ASSERT(addResult.isNewEntry);
     425
     426    if (!addResult.isNewEntry)
     427        return;
     428
     429    m_player->addVideoTrack(addResult.iterator->value);
     430}
     431
     432void MediaPlayerPrivateRemote::removeRemoteVideoTrack(TrackPrivateRemoteIdentifier id)
     433{
     434    ASSERT(m_videoTracks.contains(id));
     435
     436    if (auto* track = m_videoTracks.get(id)) {
     437        m_player->removeVideoTrack(*track);
     438        m_videoTracks.remove(id);
     439    }
     440}
     441
     442void MediaPlayerPrivateRemote::remoteVideoTrackConfigurationChanged(TrackPrivateRemoteIdentifier id, TrackPrivateRemoteConfiguration&& configuration)
     443{
     444    ASSERT(m_videoTracks.contains(id));
     445
     446    if (const auto& track = m_videoTracks.get(id))
    412447        track->updateConfiguration(WTFMove(configuration));
    413448}
  • trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h

    r254454 r254499  
    4242
    4343class AudioTrackPrivateRemote;
     44class VideoTrackPrivateRemote;
    4445struct TrackPrivateRemoteConfiguration;
    4546
     
    8384    void remoteAudioTrackConfigurationChanged(TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&);
    8485
     86    void addRemoteVideoTrack(TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&);
     87    void removeRemoteVideoTrack(TrackPrivateRemoteIdentifier);
     88    void remoteVideoTrackConfigurationChanged(TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&);
     89
    8590    void requestResource(RemoteMediaResourceIdentifier, WebCore::ResourceRequest&&, WebCore::PlatformMediaResourceLoader::LoadOptions);
    8691    void removeResource(RemoteMediaResourceIdentifier);
     
    322327    HashMap<RemoteMediaResourceIdentifier, RefPtr<WebCore::PlatformMediaResource>> m_mediaResources;
    323328    HashMap<TrackPrivateRemoteIdentifier, Ref<AudioTrackPrivateRemote>> m_audioTracks;
     329    HashMap<TrackPrivateRemoteIdentifier, Ref<VideoTrackPrivateRemote>> m_videoTracks;
    324330
    325331    double m_volume { 1 };
  • trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp

    r254454 r254499  
    322322}
    323323
     324void RemoteMediaPlayerManager::addRemoteVideoTrack(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, TrackPrivateRemoteConfiguration&& configuration)
     325{
     326    if (auto player = m_players.get(playerID))
     327        player->addRemoteVideoTrack(trackID, WTFMove(configuration));
     328}
     329
     330void RemoteMediaPlayerManager::removeRemoteVideoTrack(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID)
     331{
     332    if (auto player = m_players.get(playerID))
     333        player->removeRemoteVideoTrack(trackID);
     334}
     335
     336void RemoteMediaPlayerManager::remoteVideoTrackConfigurationChanged(MediaPlayerPrivateRemoteIdentifier playerID, TrackPrivateRemoteIdentifier trackID, TrackPrivateRemoteConfiguration&& configuration)
     337{
     338    if (auto player = m_players.get(playerID))
     339        player->remoteVideoTrackConfigurationChanged(trackID, WTFMove(configuration));
     340}
     341
    324342void RemoteMediaPlayerManager::requestResource(MediaPlayerPrivateRemoteIdentifier id, RemoteMediaResourceIdentifier remoteMediaResourceIdentifier, ResourceRequest&& request, PlatformMediaResourceLoader::LoadOptions options, CompletionHandler<void()>&& completionHandler)
    325343{
  • trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h

    r254454 r254499  
    9090    void characteristicChanged(MediaPlayerPrivateRemoteIdentifier, bool hasAudio, bool hasVideo, WebCore::MediaPlayerEnums::MovieLoadType);
    9191    void sizeChanged(MediaPlayerPrivateRemoteIdentifier, WebCore::FloatSize);
     92
    9293    void addRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&);
    9394    void removeRemoteAudioTrack(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier);
    9495    void remoteAudioTrackConfigurationChanged(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&);
     96
     97    void addRemoteVideoTrack(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&);
     98    void removeRemoteVideoTrack(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier);
     99    void remoteVideoTrackConfigurationChanged(MediaPlayerPrivateRemoteIdentifier, TrackPrivateRemoteIdentifier, TrackPrivateRemoteConfiguration&&);
    95100
    96101    void requestResource(MediaPlayerPrivateRemoteIdentifier, RemoteMediaResourceIdentifier, WebCore::ResourceRequest&&, WebCore::PlatformMediaResourceLoader::LoadOptions, CompletionHandler<void()>&&);
  • trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in

    r254454 r254499  
    4242    RemoteAudioTrackConfigurationChanged(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID, struct WebKit::TrackPrivateRemoteConfiguration configuration)
    4343
     44    AddRemoteVideoTrack(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID, struct WebKit::TrackPrivateRemoteConfiguration configuration)
     45    RemoveRemoteVideoTrack(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID)
     46    RemoteVideoTrackConfigurationChanged(WebKit::MediaPlayerPrivateRemoteIdentifier playerID, WebKit::TrackPrivateRemoteIdentifier trackID, struct WebKit::TrackPrivateRemoteConfiguration configuration)
     47
    4448    RequestResource(WebKit::MediaPlayerPrivateRemoteIdentifier mediaPlayerPrivateRemoteIdentifier, WebKit::RemoteMediaResourceIdentifier remoteMediaResourceIdentifier, WebCore::ResourceRequest request, enum:uint8_t WebCore::PlatformMediaResourceLoader::LoadOptions options) -> () Async
    4549    RemoveResource(WebKit::MediaPlayerPrivateRemoteIdentifier mediaPlayerPrivateRemoteIdentifier, WebKit::RemoteMediaResourceIdentifier remoteMediaResourceIdentifier)
  • trunk/Source/WebKit/WebProcess/GPU/media/VideoTrackPrivateRemote.cpp

    r254498 r254499  
    2626
    2727#include "config.h"
    28 #include "AudioTrackPrivateRemote.h"
     28#include "VideoTrackPrivateRemote.h"
    2929
    3030#if ENABLE(GPU_PROCESS)
     
    3232#include "MediaPlayerPrivateRemote.h"
    3333#include "RemoteMediaPlayerManagerProxyMessages.h"
    34 #include "TrackPrivateRemoteConfiguration.h"
    3534
    3635namespace WebKit {
    3736
    38 AudioTrackPrivateRemote::AudioTrackPrivateRemote(MediaPlayerPrivateRemote& player, TrackPrivateRemoteIdentifier idendifier, TrackPrivateRemoteConfiguration&& configuration)
     37VideoTrackPrivateRemote::VideoTrackPrivateRemote(MediaPlayerPrivateRemote& player, TrackPrivateRemoteIdentifier idendifier, TrackPrivateRemoteConfiguration&& configuration)
    3938    : m_player(player)
    4039    , m_idendifier(idendifier)
     
    4342}
    4443
    45 void AudioTrackPrivateRemote::setEnabled(bool enabled)
     44void VideoTrackPrivateRemote::setSelected(bool selected)
    4645{
    47     if (enabled != this->enabled())
    48         m_player.connection().send(Messages::RemoteMediaPlayerManagerProxy::AudioTrackSetEnabled(m_player.itentifier(), m_idendifier, enabled), 0);
     46    if (selected != this->selected())
     47        m_player.connection().send(Messages::RemoteMediaPlayerManagerProxy::VideoTrackSetSelected(m_player.itentifier(), m_idendifier, selected), 0);
    4948
    50     AudioTrackPrivate::setEnabled(enabled);
     49    VideoTrackPrivate::setSelected(selected);
    5150}
    5251
    53 void AudioTrackPrivateRemote::updateConfiguration(TrackPrivateRemoteConfiguration&& configuration)
     52void VideoTrackPrivateRemote::updateConfiguration(TrackPrivateRemoteConfiguration&& configuration)
    5453{
    5554    if (configuration.id != m_id) {
     
    6463        m_label = configuration.label;
    6564        if (changed && client())
    66             client()->idChanged(m_label);
     65            client()->labelChanged(m_label);
    6766    }
    6867
     
    7170        m_language = configuration.language;
    7271        if (changed && client())
    73             client()->idChanged(m_language);
     72            client()->languageChanged(m_language);
    7473    }
    7574
    7675    m_trackIndex = configuration.trackIndex;
    7776    m_startTimeVariance = configuration.startTimeVariance;
    78     m_kind = configuration.kind;
    79     setEnabled(configuration.enabled);
     77    m_kind = configuration.videoKind;
     78    setSelected(configuration.selected);
    8079}
    8180
Note: See TracChangeset for help on using the changeset viewer.