Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: talk/app/webrtc/peerconnectionfactory.cc

Issue 1462253002: Adding CreatePeerConnection method that uses new PC Initialize method. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fixing Windows compile errors. Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « talk/app/webrtc/peerconnectionfactory.h ('k') | talk/app/webrtc/peerconnectionfactoryproxy.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2004--2011 Google Inc. 3 * Copyright 2004--2011 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
(...skipping 26 matching lines...) Expand all
37 #include "talk/app/webrtc/peerconnectionproxy.h" 37 #include "talk/app/webrtc/peerconnectionproxy.h"
38 #include "talk/app/webrtc/portallocatorfactory.h" 38 #include "talk/app/webrtc/portallocatorfactory.h"
39 #include "talk/app/webrtc/videosource.h" 39 #include "talk/app/webrtc/videosource.h"
40 #include "talk/app/webrtc/videosourceproxy.h" 40 #include "talk/app/webrtc/videosourceproxy.h"
41 #include "talk/app/webrtc/videotrack.h" 41 #include "talk/app/webrtc/videotrack.h"
42 #include "talk/media/webrtc/webrtcmediaengine.h" 42 #include "talk/media/webrtc/webrtcmediaengine.h"
43 #include "talk/media/webrtc/webrtcvideodecoderfactory.h" 43 #include "talk/media/webrtc/webrtcvideodecoderfactory.h"
44 #include "talk/media/webrtc/webrtcvideoencoderfactory.h" 44 #include "talk/media/webrtc/webrtcvideoencoderfactory.h"
45 #include "webrtc/base/bind.h" 45 #include "webrtc/base/bind.h"
46 #include "webrtc/modules/audio_device/include/audio_device.h" 46 #include "webrtc/modules/audio_device/include/audio_device.h"
47 #include "webrtc/p2p/base/basicpacketsocketfactory.h"
48 #include "webrtc/p2p/client/basicportallocator.h"
47 49
48 namespace webrtc { 50 namespace webrtc {
49 51
50 namespace { 52 namespace {
51 53
52 // Passes down the calls to |store_|. See usage in CreatePeerConnection. 54 // Passes down the calls to |store_|. See usage in CreatePeerConnection.
53 class DtlsIdentityStoreWrapper : public DtlsIdentityStoreInterface { 55 class DtlsIdentityStoreWrapper : public DtlsIdentityStoreInterface {
54 public: 56 public:
55 DtlsIdentityStoreWrapper( 57 DtlsIdentityStoreWrapper(
56 const rtc::scoped_refptr<RefCountedDtlsIdentityStore>& store) 58 const rtc::scoped_refptr<RefCountedDtlsIdentityStore>& store)
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 // libjingle source tree. So we can 't currently assert if this is NULL. 151 // libjingle source tree. So we can 't currently assert if this is NULL.
150 // ASSERT(default_adm != NULL); 152 // ASSERT(default_adm != NULL);
151 } 153 }
152 154
153 PeerConnectionFactory::~PeerConnectionFactory() { 155 PeerConnectionFactory::~PeerConnectionFactory() {
154 RTC_DCHECK(signaling_thread_->IsCurrent()); 156 RTC_DCHECK(signaling_thread_->IsCurrent());
155 channel_manager_.reset(nullptr); 157 channel_manager_.reset(nullptr);
156 default_allocator_factory_ = nullptr; 158 default_allocator_factory_ = nullptr;
157 159
158 // Make sure |worker_thread_| and |signaling_thread_| outlive 160 // Make sure |worker_thread_| and |signaling_thread_| outlive
159 // |dtls_identity_store_|. 161 // |dtls_identity_store_|, |default_socket_factory_| and
162 // |default_network_manager_|.
160 dtls_identity_store_ = nullptr; 163 dtls_identity_store_ = nullptr;
164 default_socket_factory_ = nullptr;
165 default_network_manager_ = nullptr;
161 166
162 if (owns_ptrs_) { 167 if (owns_ptrs_) {
163 if (wraps_current_thread_) 168 if (wraps_current_thread_)
164 rtc::ThreadManager::Instance()->UnwrapCurrentThread(); 169 rtc::ThreadManager::Instance()->UnwrapCurrentThread();
165 delete worker_thread_; 170 delete worker_thread_;
166 } 171 }
167 } 172 }
168 173
169 bool PeerConnectionFactory::Initialize() { 174 bool PeerConnectionFactory::Initialize() {
170 RTC_DCHECK(signaling_thread_->IsCurrent()); 175 RTC_DCHECK(signaling_thread_->IsCurrent());
171 rtc::InitRandom(rtc::Time()); 176 rtc::InitRandom(rtc::Time());
172 177
173 default_allocator_factory_ = PortAllocatorFactory::Create(worker_thread_); 178 default_allocator_factory_ = PortAllocatorFactory::Create(worker_thread_);
174 if (!default_allocator_factory_) 179 if (!default_allocator_factory_) {
175 return false; 180 return false;
181 }
182
183 default_network_manager_.reset(new rtc::BasicNetworkManager());
184 if (!default_network_manager_) {
185 return false;
186 }
187
188 default_socket_factory_.reset(
189 new rtc::BasicPacketSocketFactory(worker_thread_));
190 if (!default_socket_factory_) {
191 return false;
192 }
176 193
177 // TODO: Need to make sure only one VoE is created inside 194 // TODO: Need to make sure only one VoE is created inside
178 // WebRtcMediaEngine. 195 // WebRtcMediaEngine.
179 cricket::MediaEngineInterface* media_engine = 196 cricket::MediaEngineInterface* media_engine =
180 worker_thread_->Invoke<cricket::MediaEngineInterface*>(rtc::Bind( 197 worker_thread_->Invoke<cricket::MediaEngineInterface*>(rtc::Bind(
181 &PeerConnectionFactory::CreateMediaEngine_w, this)); 198 &PeerConnectionFactory::CreateMediaEngine_w, this));
182 199
183 channel_manager_.reset( 200 channel_manager_.reset(
184 new cricket::ChannelManager(media_engine, worker_thread_)); 201 new cricket::ChannelManager(media_engine, worker_thread_));
185 202
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 configuration, 278 configuration,
262 constraints, 279 constraints,
263 chosen_allocator_factory, 280 chosen_allocator_factory,
264 dtls_identity_store.Pass(), 281 dtls_identity_store.Pass(),
265 observer)) { 282 observer)) {
266 return NULL; 283 return NULL;
267 } 284 }
268 return PeerConnectionProxy::Create(signaling_thread(), pc); 285 return PeerConnectionProxy::Create(signaling_thread(), pc);
269 } 286 }
270 287
288 rtc::scoped_refptr<PeerConnectionInterface>
289 PeerConnectionFactory::CreatePeerConnection(
290 const PeerConnectionInterface::RTCConfiguration& configuration,
291 const MediaConstraintsInterface* constraints,
292 rtc::scoped_ptr<cricket::PortAllocator> allocator,
293 rtc::scoped_ptr<DtlsIdentityStoreInterface> dtls_identity_store,
294 PeerConnectionObserver* observer) {
295 RTC_DCHECK(signaling_thread_->IsCurrent());
296
297 if (!dtls_identity_store.get()) {
298 // Because |pc|->Initialize takes ownership of the store we need a new
299 // wrapper object that can be deleted without deleting the underlying
300 // |dtls_identity_store_|, protecting it from being deleted multiple times.
301 dtls_identity_store.reset(
302 new DtlsIdentityStoreWrapper(dtls_identity_store_));
303 }
304
305 if (!allocator) {
306 allocator.reset(new cricket::BasicPortAllocator(
307 default_network_manager_.get(), default_socket_factory_.get()));
308 }
309 default_network_manager_->set_network_ignore_mask(
310 options_.network_ignore_mask);
311
312 rtc::scoped_refptr<PeerConnection> pc(
313 new rtc::RefCountedObject<PeerConnection>(this));
314 if (!pc->Initialize(configuration, constraints, std::move(allocator),
315 std::move(dtls_identity_store), observer)) {
316 return nullptr;
317 }
318 return PeerConnectionProxy::Create(signaling_thread(), pc);
319 }
320
271 rtc::scoped_refptr<MediaStreamInterface> 321 rtc::scoped_refptr<MediaStreamInterface>
272 PeerConnectionFactory::CreateLocalMediaStream(const std::string& label) { 322 PeerConnectionFactory::CreateLocalMediaStream(const std::string& label) {
273 RTC_DCHECK(signaling_thread_->IsCurrent()); 323 RTC_DCHECK(signaling_thread_->IsCurrent());
274 return MediaStreamProxy::Create(signaling_thread_, 324 return MediaStreamProxy::Create(signaling_thread_,
275 MediaStream::Create(label)); 325 MediaStream::Create(label));
276 } 326 }
277 327
278 rtc::scoped_refptr<VideoTrackInterface> 328 rtc::scoped_refptr<VideoTrackInterface>
279 PeerConnectionFactory::CreateVideoTrack( 329 PeerConnectionFactory::CreateVideoTrack(
280 const std::string& id, 330 const std::string& id,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 } 363 }
314 364
315 cricket::MediaEngineInterface* PeerConnectionFactory::CreateMediaEngine_w() { 365 cricket::MediaEngineInterface* PeerConnectionFactory::CreateMediaEngine_w() {
316 ASSERT(worker_thread_ == rtc::Thread::Current()); 366 ASSERT(worker_thread_ == rtc::Thread::Current());
317 return cricket::WebRtcMediaEngineFactory::Create( 367 return cricket::WebRtcMediaEngineFactory::Create(
318 default_adm_.get(), video_encoder_factory_.get(), 368 default_adm_.get(), video_encoder_factory_.get(),
319 video_decoder_factory_.get()); 369 video_decoder_factory_.get());
320 } 370 }
321 371
322 } // namespace webrtc 372 } // namespace webrtc
OLDNEW
« no previous file with comments | « talk/app/webrtc/peerconnectionfactory.h ('k') | talk/app/webrtc/peerconnectionfactoryproxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698