Changeset 257234 in webkit


Ignore:
Timestamp:
Feb 24, 2020 12:06:24 PM (4 years ago)
Author:
youenn@apple.com
Message:

Add a runtime flag dedicated to WebRTC codecs in GPUProcess
https://bugs.webkit.org/show_bug.cgi?id=208136

Reviewed by Alex Christensen.

Source/WebCore:

Add a runtime flag for WebRTC codecs in GPUProcess.
Enable the flag by default for MacOS.

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::webRTCPlatformCodecsInGPUProcessEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebRTCPlatformCodecsInGPUProcessEnabled):

  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::setUseGPUProcessForWebRTC):

Source/WebKit:

Add a runtime flag dedicated to enabling WebRTC codecs in GPUProcess.
Use this flag instead of the media flag.

  • Shared/WebPreferences.yaml:
  • Shared/WebPreferencesDefaultValues.h:
  • WebProcess/Network/webrtc/LibWebRTCProvider.cpp:

(WebKit::LibWebRTCProvider::createDecoderFactory):

Location:
trunk/Source
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r257215 r257234  
     12020-02-24  Youenn Fablet  <youenn@apple.com>
     2
     3        Add a runtime flag dedicated to WebRTC codecs in GPUProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=208136
     5
     6        Reviewed by Alex Christensen.
     7
     8        Add a runtime flag for WebRTC codecs in GPUProcess.
     9        Enable the flag by default for MacOS.
     10
     11        * page/RuntimeEnabledFeatures.h:
     12        (WebCore::RuntimeEnabledFeatures::webRTCPlatformCodecsInGPUProcessEnabled const):
     13        (WebCore::RuntimeEnabledFeatures::setWebRTCPlatformCodecsInGPUProcessEnabled):
     14        * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
     15        * platform/mediastream/libwebrtc/LibWebRTCProvider.h:
     16        * testing/Internals.cpp:
     17        (WebCore::Internals::resetToConsistentState):
     18        (WebCore::Internals::setUseGPUProcessForWebRTC):
     19
    1202020-02-24  Alex Christensen  <achristensen@webkit.org>
    221
  • trunk/Source/WebCore/page/RuntimeEnabledFeatures.h

    r256697 r257234  
    243243    bool webRTCH264SimulcastEnabled() const { return m_isWebRTCH264SimulcastEnabled; }
    244244    void setWebRTCH264SimulcastEnabled(bool isEnabled) { m_isWebRTCH264SimulcastEnabled = isEnabled; }
     245    bool webRTCPlatformCodecsInGPUProcessEnabled() const { return m_isWebRTCPlatformCodecsInGPUProcessEnabled; }
     246    void setWebRTCPlatformCodecsInGPUProcessEnabled(bool isEnabled) { m_isWebRTCPlatformCodecsInGPUProcessEnabled = isEnabled; }
    245247#endif
    246248
     
    490492    bool m_isWebRTCMDNSICECandidatesEnabled { false };
    491493    bool m_isWebRTCH264SimulcastEnabled { true };
     494    bool m_isWebRTCPlatformCodecsInGPUProcessEnabled { true };
    492495#endif
    493496
  • trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp

    r256745 r257234  
    331331}
    332332
    333 void LibWebRTCProvider::setUseGPUProcess(bool value)
    334 {
    335     if (m_useGPUProcess == value)
    336         return;
    337 
    338     m_useGPUProcess = value;
    339     m_factory = nullptr;
    340 }
    341 
    342333rtc::scoped_refptr<webrtc::PeerConnectionInterface> LibWebRTCProvider::createPeerConnection(webrtc::PeerConnectionObserver& observer, rtc::NetworkManager& networkManager, rtc::PacketSocketFactory& packetSocketFactory, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration, std::unique_ptr<webrtc::AsyncResolverFactory>&& asyncResolveFactory)
    343334{
  • trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h

    r256838 r257234  
    117117    void setEnableWebRTCEncryption(bool);
    118118    void setUseDTLS10(bool);
    119     void setUseGPUProcess(bool);
    120119
    121120    class SuspendableSocketFactory : public rtc::PacketSocketFactory {
     
    145144    bool m_enableLogging { true };
    146145    bool m_useDTLS10 { false };
    147     bool m_useGPUProcess { false };
    148146#endif
    149147};
  • trunk/Source/WebCore/testing/Internals.cpp

    r257074 r257234  
    548548    RuntimeEnabledFeatures::sharedFeatures().setWebRTCVP8CodecEnabled(true);
    549549    page.settings().setWebRTCEncryptionEnabled(true);
    550     rtcProvider.setUseGPUProcess(false);
    551550#endif
    552551
     
    15791578        return;
    15801579
    1581     document->page()->libWebRTCProvider().setUseGPUProcess(useGPUProcess);
    15821580    document->page()->mediaRecorderProvider().setUseGPUProcess(useGPUProcess);
    15831581#endif
  • trunk/Source/WebKit/ChangeLog

    r257225 r257234  
     12020-02-24  Youenn Fablet  <youenn@apple.com>
     2
     3        Add a runtime flag dedicated to WebRTC codecs in GPUProcess
     4        https://bugs.webkit.org/show_bug.cgi?id=208136
     5
     6        Reviewed by Alex Christensen.
     7
     8        Add a runtime flag dedicated to enabling WebRTC codecs in GPUProcess.
     9        Use this flag instead of the media flag.
     10
     11        * Shared/WebPreferences.yaml:
     12        * Shared/WebPreferencesDefaultValues.h:
     13        * WebProcess/Network/webrtc/LibWebRTCProvider.cpp:
     14        (WebKit::LibWebRTCProvider::createDecoderFactory):
     15
    1162020-02-24  Ellie Epskamp-Hunt  <eepskamphunt@apple.com>
    217
  • trunk/Source/WebKit/Shared/WebPreferences.yaml

    r257040 r257234  
    591591  category: internal
    592592
     593WebRTCPlatformCodecsInGPUProcessEnabled:
     594  type: bool
     595  defaultValue: DEFAULT_WEBRTC_CODECS_IN_GPUPROCESS
     596  webcoreBinding: RuntimeEnabledFeatures
     597  condition: ENABLE(WEB_RTC)
     598  humanReadableName: "WebRTC Platform Codecs in GPU Process"
     599  humanReadableDescription: "Enable WebRTC Platform Codecs in GPU Process"
     600  category: experimental
     601
    593602WebRTCDTMFEnabled:
    594603  type: bool
  • trunk/Source/WebKit/Shared/WebPreferencesDefaultValues.h

    r255376 r257234  
    235235#if PLATFORM(MAC)
    236236#define DEFAULT_CAPTURE_AUDIO_IN_UIPROCESS true
     237#define DEFAULT_WEBRTC_CODECS_IN_GPUPROCESS true
    237238#else
    238239#define DEFAULT_CAPTURE_AUDIO_IN_UIPROCESS false
     240#define DEFAULT_WEBRTC_CODECS_IN_GPUPROCESS false
    239241#endif
    240242
  • trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.cpp

    r256838 r257234  
    3535#include "LibWebRTCNetwork.h"
    3636#include "WebProcess.h"
     37#include <WebCore/RuntimeEnabledFeatures.h>
    3738#include <webrtc/api/async_resolver_factory.h>
    3839#include <webrtc/pc/peer_connection_factory.h>
     
    142143    // We only support efficient sending of video frames with IOSURFACE
    143144#if HAVE(IOSURFACE) && !PLATFORM(MACCATALYST)
    144     LibWebRTCCodecs::setCallbacks(m_useGPUProcess);
     145    LibWebRTCCodecs::setCallbacks(RuntimeEnabledFeatures::sharedFeatures().webRTCPlatformCodecsInGPUProcessEnabled());
    145146#endif
    146147#endif
Note: See TracChangeset for help on using the changeset viewer.