| Index: webrtc/api/peerconnectionfactory.cc
|
| diff --git a/webrtc/api/peerconnectionfactory.cc b/webrtc/api/peerconnectionfactory.cc
|
| index c05cd852f605faada5dbd47e68e7b2ec8afd94e8..eb89b4083b02d2031a3e9049fb09a5c2595bfd94 100644
|
| --- a/webrtc/api/peerconnectionfactory.cc
|
| +++ b/webrtc/api/peerconnectionfactory.cc
|
| @@ -14,6 +14,7 @@
|
|
|
| #include "webrtc/api/audiotrack.h"
|
| #include "webrtc/api/localaudiosource.h"
|
| +#include "webrtc/api/mediaconstraintsinterface.h"
|
| #include "webrtc/api/mediastream.h"
|
| #include "webrtc/api/mediastreamproxy.h"
|
| #include "webrtc/api/mediastreamtrackproxy.h"
|
| @@ -198,6 +199,14 @@ PeerConnectionFactory::CreateAudioSource(
|
| return source;
|
| }
|
|
|
| +rtc::scoped_refptr<AudioSourceInterface>
|
| +PeerConnectionFactory::CreateAudioSource(const cricket::AudioOptions& options) {
|
| + RTC_DCHECK(signaling_thread_->IsCurrent());
|
| + rtc::scoped_refptr<LocalAudioSource> source(
|
| + LocalAudioSource::Create(options_, &options));
|
| + return source;
|
| +}
|
| +
|
| rtc::scoped_refptr<VideoSourceInterface>
|
| PeerConnectionFactory::CreateVideoSource(
|
| cricket::VideoCapturer* capturer,
|
| @@ -208,6 +217,14 @@ PeerConnectionFactory::CreateVideoSource(
|
| return VideoSourceProxy::Create(signaling_thread_, source);
|
| }
|
|
|
| +rtc::scoped_refptr<VideoSourceInterface>
|
| +PeerConnectionFactory::CreateVideoSource(cricket::VideoCapturer* capturer) {
|
| + RTC_DCHECK(signaling_thread_->IsCurrent());
|
| + rtc::scoped_refptr<VideoSource> source(
|
| + VideoSource::Create(channel_manager_.get(), capturer, false));
|
| + return VideoSourceProxy::Create(signaling_thread_, source);
|
| +}
|
| +
|
| bool PeerConnectionFactory::StartAecDump(rtc::PlatformFile file,
|
| int64_t max_size_bytes) {
|
| RTC_DCHECK(signaling_thread_->IsCurrent());
|
| @@ -231,13 +248,29 @@ void PeerConnectionFactory::StopRtcEventLog() {
|
|
|
| rtc::scoped_refptr<PeerConnectionInterface>
|
| PeerConnectionFactory::CreatePeerConnection(
|
| - const PeerConnectionInterface::RTCConfiguration& configuration,
|
| + const PeerConnectionInterface::RTCConfiguration& configuration_in,
|
| const MediaConstraintsInterface* constraints,
|
| rtc::scoped_ptr<cricket::PortAllocator> allocator,
|
| rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
|
| PeerConnectionObserver* observer) {
|
| RTC_DCHECK(signaling_thread_->IsCurrent());
|
|
|
| + // We merge constraints and configuration into a single configuration.
|
| + PeerConnectionInterface::RTCConfiguration configuration = configuration_in;
|
| + CopyConstraintsIntoRtcConfiguration(constraints, &configuration);
|
| +
|
| + return CreatePeerConnection(configuration, std::move(allocator),
|
| + std::move(dtls_identity_store), observer);
|
| +}
|
| +
|
| +rtc::scoped_refptr<PeerConnectionInterface>
|
| +PeerConnectionFactory::CreatePeerConnection(
|
| + const PeerConnectionInterface::RTCConfiguration& configuration,
|
| + rtc::scoped_ptr<cricket::PortAllocator> allocator,
|
| + rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
|
| + PeerConnectionObserver* observer) {
|
| + RTC_DCHECK(signaling_thread_->IsCurrent());
|
| +
|
| if (!dtls_identity_store.get()) {
|
| // Because |pc|->Initialize takes ownership of the store we need a new
|
| // wrapper object that can be deleted without deleting the underlying
|
| @@ -254,7 +287,20 @@ PeerConnectionFactory::CreatePeerConnection(
|
|
|
| rtc::scoped_refptr<PeerConnection> pc(
|
| new rtc::RefCountedObject<PeerConnection>(this));
|
| - if (!pc->Initialize(configuration, constraints, std::move(allocator),
|
| + // We rely on default values when constraints aren't found.
|
| + cricket::MediaConfig media_config;
|
| +
|
| + media_config.disable_prerenderer_smoothing =
|
| + configuration.disable_prerenderer_smoothing;
|
| + if (configuration.enable_dscp) {
|
| + media_config.enable_dscp = *(configuration.enable_dscp);
|
| + }
|
| + if (configuration.cpu_overuse_detection) {
|
| + media_config.enable_cpu_overuse_detection =
|
| + *(configuration.cpu_overuse_detection);
|
| + }
|
| +
|
| + if (!pc->Initialize(media_config, configuration, std::move(allocator),
|
| std::move(dtls_identity_store), observer)) {
|
| return nullptr;
|
| }
|
|
|