LibWebRTCProvider.h [plain text]
#pragma once
#include "LibWebRTCMacros.h"
#include <wtf/Forward.h>
#if USE(LIBWEBRTC)
#include <webrtc/api/peerconnectioninterface.h>
#include <webrtc/base/scoped_ref_ptr.h>
namespace rtc {
class NetworkManager;
class PacketSocketFactory;
}
namespace webrtc {
class PeerConnectionFactoryInterface;
}
#endif
namespace WebCore {
class WEBCORE_EXPORT LibWebRTCProvider {
public:
LibWebRTCProvider() = default;
virtual ~LibWebRTCProvider() = default;
static bool webRTCAvailable();
#if USE(LIBWEBRTC)
WEBCORE_EXPORT virtual rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, webrtc::PeerConnectionInterface::RTCConfiguration&&);
WEBCORE_EXPORT webrtc::PeerConnectionFactoryInterface* factory();
static WEBCORE_EXPORT void callOnWebRTCNetworkThread(Function<void()>&&);
static WEBCORE_EXPORT void callOnWebRTCSignalingThread(Function<void()>&&);
static WEBCORE_EXPORT void setDecoderFactoryGetter(Function<std::unique_ptr<cricket::WebRtcVideoDecoderFactory>()>&&);
static WEBCORE_EXPORT void setEncoderFactoryGetter(Function<std::unique_ptr<cricket::WebRtcVideoEncoderFactory>()>&&);
static void setPeerConnectionFactory(rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface>&&);
void disableEnumeratingAllNetworkInterfaces() { m_enableEnumeratingAllNetworkInterfaces = false; }
void enableEnumeratingAllNetworkInterfaces() { m_enableEnumeratingAllNetworkInterfaces = true; }
protected:
WEBCORE_EXPORT rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, rtc::NetworkManager&, rtc::PacketSocketFactory&, webrtc::PeerConnectionInterface::RTCConfiguration&&);
bool m_enableEnumeratingAllNetworkInterfaces { false };
bool m_useNetworkThreadWithSocketServer { true };
#endif
};
}