LibWebRTCProviderCocoa.cpp [plain text]
#include "config.h"
#include "LibWebRTCProviderCocoa.h"
#if USE(LIBWEBRTC)
#include "RuntimeEnabledFeatures.h"
ALLOW_UNUSED_PARAMETERS_BEGIN
#include <webrtc/sdk/WebKit/WebKitUtilities.h>
ALLOW_UNUSED_PARAMETERS_END
#include <webrtc/sdk/WebKit/WebKitVP9Decoder.h>
#include <wtf/MainThread.h>
#include <wtf/darwin/WeakLinking.h>
WTF_WEAK_LINK_FORCE_IMPORT(webrtc::setApplicationStatus);
namespace WebCore {
UniqueRef<LibWebRTCProvider> LibWebRTCProvider::create()
{
return makeUniqueRef<LibWebRTCProviderCocoa>();
}
LibWebRTCProviderCocoa::~LibWebRTCProviderCocoa()
{
}
void LibWebRTCProviderCocoa::setH264HardwareEncoderAllowed(bool allowed)
{
webrtc::setH264HardwareEncoderAllowed(allowed);
}
std::unique_ptr<webrtc::VideoDecoderFactory> LibWebRTCProviderCocoa::createDecoderFactory()
{
ASSERT(isMainThread());
return webrtc::createWebKitDecoderFactory(isSupportingH265() ? webrtc::WebKitH265::On : webrtc::WebKitH265::Off, isSupportingVP9() ? webrtc::WebKitVP9::On : webrtc::WebKitVP9::Off);
}
std::unique_ptr<webrtc::VideoEncoderFactory> LibWebRTCProviderCocoa::createEncoderFactory()
{
ASSERT(isMainThread());
webrtc::setH264LowLatencyEncoderEnabled(RuntimeEnabledFeatures::sharedFeatures().webRTCH264LowLatencyEncoderEnabled());
return webrtc::createWebKitEncoderFactory(isSupportingH265() ? webrtc::WebKitH265::On : webrtc::WebKitH265::Off, isSupportingVP9() ? webrtc::WebKitVP9::On : webrtc::WebKitVP9::Off);
}
void LibWebRTCProviderCocoa::setActive(bool value)
{
webrtc::setApplicationStatus(value);
}
bool LibWebRTCProvider::webRTCAvailable()
{
#if PLATFORM(IOS)
return true;
#else
return !!webrtc::setApplicationStatus;
#endif
}
void LibWebRTCProvider::registerWebKitVP9Decoder()
{
if (webRTCAvailable())
webrtc::registerWebKitVP9Decoder();
}
}
#endif // USE(LIBWEBRTC)