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

Side by Side Diff: webrtc/api/peerconnection.cc

Issue 2046173002: Use VoiceChannel/VideoChannel directly from RtpSender/RtpReceiver. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Moving code that needs to execute out of RTC_DCHECKs. Created 4 years, 5 months 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 | « webrtc/api/peerconnection.h ('k') | webrtc/api/remoteaudiosource.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 * Copyright 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 case PeerConnectionInterface::kNoHost: 389 case PeerConnectionInterface::kNoHost:
390 return (cricket::CF_ALL & ~cricket::CF_HOST); 390 return (cricket::CF_ALL & ~cricket::CF_HOST);
391 case PeerConnectionInterface::kAll: 391 case PeerConnectionInterface::kAll:
392 return cricket::CF_ALL; 392 return cricket::CF_ALL;
393 default: 393 default:
394 ASSERT(false); 394 ASSERT(false);
395 } 395 }
396 return cricket::CF_NONE; 396 return cricket::CF_NONE;
397 } 397 }
398 398
399 // Helper method to set a voice/video channel on all applicable senders
400 // and receivers when one is created/destroyed by WebRtcSession.
401 //
402 // Used by On(Voice|Video)Channel(Created|Destroyed)
403 template <class SENDER,
404 class RECEIVER,
405 class CHANNEL,
406 class SENDERS,
407 class RECEIVERS>
408 void SetChannelOnSendersAndReceivers(CHANNEL* channel,
409 SENDERS& senders,
410 RECEIVERS& receivers,
411 cricket::MediaType media_type) {
412 for (auto& sender : senders) {
413 if (sender->media_type() == media_type) {
414 static_cast<SENDER*>(sender->internal())->SetChannel(channel);
415 }
416 }
417 for (auto& receiver : receivers) {
418 if (receiver->media_type() == media_type) {
419 if (!channel) {
420 receiver->internal()->Stop();
421 }
422 static_cast<RECEIVER*>(receiver->internal())->SetChannel(channel);
423 }
424 }
425 }
426
399 } // namespace 427 } // namespace
400 428
401 namespace webrtc { 429 namespace webrtc {
402 430
403 // Generate a RTCP CNAME when a PeerConnection is created. 431 // Generate a RTCP CNAME when a PeerConnection is created.
404 std::string GenerateRtcpCname() { 432 std::string GenerateRtcpCname() {
405 std::string cname; 433 std::string cname;
406 if (!rtc::CreateRandomString(kRtcpCnameLength, &cname)) { 434 if (!rtc::CreateRandomString(kRtcpCnameLength, &cname)) {
407 LOG(LS_ERROR) << "Failed to generate CNAME."; 435 LOG(LS_ERROR) << "Failed to generate CNAME.";
408 RTC_DCHECK(false); 436 RTC_DCHECK(false);
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 // Initialize the WebRtcSession. It creates transport channels etc. 629 // Initialize the WebRtcSession. It creates transport channels etc.
602 if (!session_->Initialize(factory_->options(), std::move(cert_generator), 630 if (!session_->Initialize(factory_->options(), std::move(cert_generator),
603 configuration)) { 631 configuration)) {
604 return false; 632 return false;
605 } 633 }
606 634
607 // Register PeerConnection as receiver of local ice candidates. 635 // Register PeerConnection as receiver of local ice candidates.
608 // All the callbacks will be posted to the application from PeerConnection. 636 // All the callbacks will be posted to the application from PeerConnection.
609 session_->RegisterIceObserver(this); 637 session_->RegisterIceObserver(this);
610 session_->SignalState.connect(this, &PeerConnection::OnSessionStateChange); 638 session_->SignalState.connect(this, &PeerConnection::OnSessionStateChange);
639 session_->SignalVoiceChannelCreated.connect(
640 this, &PeerConnection::OnVoiceChannelCreated);
611 session_->SignalVoiceChannelDestroyed.connect( 641 session_->SignalVoiceChannelDestroyed.connect(
612 this, &PeerConnection::OnVoiceChannelDestroyed); 642 this, &PeerConnection::OnVoiceChannelDestroyed);
643 session_->SignalVideoChannelCreated.connect(
644 this, &PeerConnection::OnVideoChannelCreated);
613 session_->SignalVideoChannelDestroyed.connect( 645 session_->SignalVideoChannelDestroyed.connect(
614 this, &PeerConnection::OnVideoChannelDestroyed); 646 this, &PeerConnection::OnVideoChannelDestroyed);
615 session_->SignalDataChannelCreated.connect( 647 session_->SignalDataChannelCreated.connect(
616 this, &PeerConnection::OnDataChannelCreated); 648 this, &PeerConnection::OnDataChannelCreated);
617 session_->SignalDataChannelDestroyed.connect( 649 session_->SignalDataChannelDestroyed.connect(
618 this, &PeerConnection::OnDataChannelDestroyed); 650 this, &PeerConnection::OnDataChannelDestroyed);
619 session_->SignalDataChannelOpenMessage.connect( 651 session_->SignalDataChannelOpenMessage.connect(
620 this, &PeerConnection::OnDataChannelOpenMessage); 652 this, &PeerConnection::OnDataChannelOpenMessage);
621 return true; 653 return true;
622 } 654 }
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 LOG(LS_ERROR) << "Sender for track " << track->id() << " already exists."; 738 LOG(LS_ERROR) << "Sender for track " << track->id() << " already exists.";
707 return nullptr; 739 return nullptr;
708 } 740 }
709 741
710 // TODO(deadbeef): Support adding a track to multiple streams. 742 // TODO(deadbeef): Support adding a track to multiple streams.
711 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender; 743 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender;
712 if (track->kind() == MediaStreamTrackInterface::kAudioKind) { 744 if (track->kind() == MediaStreamTrackInterface::kAudioKind) {
713 new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create( 745 new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
714 signaling_thread(), 746 signaling_thread(),
715 new AudioRtpSender(static_cast<AudioTrackInterface*>(track), 747 new AudioRtpSender(static_cast<AudioTrackInterface*>(track),
716 session_.get(), stats_.get())); 748 session_->voice_channel(), stats_.get()));
717 if (!streams.empty()) { 749 if (!streams.empty()) {
718 new_sender->internal()->set_stream_id(streams[0]->label()); 750 new_sender->internal()->set_stream_id(streams[0]->label());
719 } 751 }
720 const TrackInfo* track_info = FindTrackInfo( 752 const TrackInfo* track_info = FindTrackInfo(
721 local_audio_tracks_, new_sender->internal()->stream_id(), track->id()); 753 local_audio_tracks_, new_sender->internal()->stream_id(), track->id());
722 if (track_info) { 754 if (track_info) {
723 new_sender->internal()->SetSsrc(track_info->ssrc); 755 new_sender->internal()->SetSsrc(track_info->ssrc);
724 } 756 }
725 } else if (track->kind() == MediaStreamTrackInterface::kVideoKind) { 757 } else if (track->kind() == MediaStreamTrackInterface::kVideoKind) {
726 new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create( 758 new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
727 signaling_thread(), 759 signaling_thread(),
728 new VideoRtpSender(static_cast<VideoTrackInterface*>(track), 760 new VideoRtpSender(static_cast<VideoTrackInterface*>(track),
729 session_.get())); 761 session_->video_channel()));
730 if (!streams.empty()) { 762 if (!streams.empty()) {
731 new_sender->internal()->set_stream_id(streams[0]->label()); 763 new_sender->internal()->set_stream_id(streams[0]->label());
732 } 764 }
733 const TrackInfo* track_info = FindTrackInfo( 765 const TrackInfo* track_info = FindTrackInfo(
734 local_video_tracks_, new_sender->internal()->stream_id(), track->id()); 766 local_video_tracks_, new_sender->internal()->stream_id(), track->id());
735 if (track_info) { 767 if (track_info) {
736 new_sender->internal()->SetSsrc(track_info->ssrc); 768 new_sender->internal()->SetSsrc(track_info->ssrc);
737 } 769 }
738 } else { 770 } else {
739 LOG(LS_ERROR) << "CreateSender called with invalid kind: " << track->kind(); 771 LOG(LS_ERROR) << "CreateSender called with invalid kind: " << track->kind();
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
784 return DtmfSenderProxy::Create(signaling_thread(), sender.get()); 816 return DtmfSenderProxy::Create(signaling_thread(), sender.get());
785 } 817 }
786 818
787 rtc::scoped_refptr<RtpSenderInterface> PeerConnection::CreateSender( 819 rtc::scoped_refptr<RtpSenderInterface> PeerConnection::CreateSender(
788 const std::string& kind, 820 const std::string& kind,
789 const std::string& stream_id) { 821 const std::string& stream_id) {
790 TRACE_EVENT0("webrtc", "PeerConnection::CreateSender"); 822 TRACE_EVENT0("webrtc", "PeerConnection::CreateSender");
791 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender; 823 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender;
792 if (kind == MediaStreamTrackInterface::kAudioKind) { 824 if (kind == MediaStreamTrackInterface::kAudioKind) {
793 new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create( 825 new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
794 signaling_thread(), new AudioRtpSender(session_.get(), stats_.get())); 826 signaling_thread(),
827 new AudioRtpSender(session_->voice_channel(), stats_.get()));
795 } else if (kind == MediaStreamTrackInterface::kVideoKind) { 828 } else if (kind == MediaStreamTrackInterface::kVideoKind) {
796 new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create( 829 new_sender = RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
797 signaling_thread(), new VideoRtpSender(session_.get())); 830 signaling_thread(), new VideoRtpSender(session_->video_channel()));
798 } else { 831 } else {
799 LOG(LS_ERROR) << "CreateSender called with invalid kind: " << kind; 832 LOG(LS_ERROR) << "CreateSender called with invalid kind: " << kind;
800 return new_sender; 833 return new_sender;
801 } 834 }
802 if (!stream_id.empty()) { 835 if (!stream_id.empty()) {
803 new_sender->internal()->set_stream_id(stream_id); 836 new_sender->internal()->set_stream_id(stream_id);
804 } 837 }
805 senders_.push_back(new_sender); 838 senders_.push_back(new_sender);
806 return new_sender; 839 return new_sender;
807 } 840 }
(...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 RTC_DCHECK(false && "Not implemented"); 1348 RTC_DCHECK(false && "Not implemented");
1316 break; 1349 break;
1317 } 1350 }
1318 } 1351 }
1319 1352
1320 void PeerConnection::CreateAudioReceiver(MediaStreamInterface* stream, 1353 void PeerConnection::CreateAudioReceiver(MediaStreamInterface* stream,
1321 const std::string& track_id, 1354 const std::string& track_id,
1322 uint32_t ssrc) { 1355 uint32_t ssrc) {
1323 receivers_.push_back( 1356 receivers_.push_back(
1324 RtpReceiverProxyWithInternal<RtpReceiverInternal>::Create( 1357 RtpReceiverProxyWithInternal<RtpReceiverInternal>::Create(
1325 signaling_thread(), 1358 signaling_thread(), new AudioRtpReceiver(stream, track_id, ssrc,
1326 new AudioRtpReceiver(stream, track_id, ssrc, session_.get()))); 1359 session_->voice_channel())));
1327 } 1360 }
1328 1361
1329 void PeerConnection::CreateVideoReceiver(MediaStreamInterface* stream, 1362 void PeerConnection::CreateVideoReceiver(MediaStreamInterface* stream,
1330 const std::string& track_id, 1363 const std::string& track_id,
1331 uint32_t ssrc) { 1364 uint32_t ssrc) {
1332 receivers_.push_back( 1365 receivers_.push_back(
1333 RtpReceiverProxyWithInternal<RtpReceiverInternal>::Create( 1366 RtpReceiverProxyWithInternal<RtpReceiverInternal>::Create(
1334 signaling_thread(), 1367 signaling_thread(),
1335 new VideoRtpReceiver(stream, track_id, factory_->worker_thread(), 1368 new VideoRtpReceiver(stream, track_id, factory_->worker_thread(),
1336 ssrc, session_.get()))); 1369 ssrc, session_->video_channel())));
1337 } 1370 }
1338 1371
1339 // TODO(deadbeef): Keep RtpReceivers around even if track goes away in remote 1372 // TODO(deadbeef): Keep RtpReceivers around even if track goes away in remote
1340 // description. 1373 // description.
1341 void PeerConnection::DestroyReceiver(const std::string& track_id) { 1374 void PeerConnection::DestroyReceiver(const std::string& track_id) {
1342 auto it = FindReceiverForTrack(track_id); 1375 auto it = FindReceiverForTrack(track_id);
1343 if (it == receivers_.end()) { 1376 if (it == receivers_.end()) {
1344 LOG(LS_WARNING) << "RtpReceiver for track with id " << track_id 1377 LOG(LS_WARNING) << "RtpReceiver for track with id " << track_id
1345 << " doesn't exist."; 1378 << " doesn't exist.";
1346 } else { 1379 } else {
1347 (*it)->internal()->Stop(); 1380 (*it)->internal()->Stop();
1348 receivers_.erase(it); 1381 receivers_.erase(it);
1349 } 1382 }
1350 } 1383 }
1351 1384
1352 void PeerConnection::StopReceivers(cricket::MediaType media_type) {
1353 TrackInfos* current_tracks = GetRemoteTracks(media_type);
1354 for (const auto& track_info : *current_tracks) {
1355 auto it = FindReceiverForTrack(track_info.track_id);
1356 if (it == receivers_.end()) {
1357 LOG(LS_WARNING) << "RtpReceiver for track with id " << track_info.track_id
1358 << " doesn't exist.";
1359 } else {
1360 (*it)->internal()->Stop();
1361 }
1362 }
1363 }
1364
1365 void PeerConnection::OnIceConnectionChange( 1385 void PeerConnection::OnIceConnectionChange(
1366 PeerConnectionInterface::IceConnectionState new_state) { 1386 PeerConnectionInterface::IceConnectionState new_state) {
1367 RTC_DCHECK(signaling_thread()->IsCurrent()); 1387 RTC_DCHECK(signaling_thread()->IsCurrent());
1368 // After transitioning to "closed", ignore any additional states from 1388 // After transitioning to "closed", ignore any additional states from
1369 // WebRtcSession (such as "disconnected"). 1389 // WebRtcSession (such as "disconnected").
1370 if (IsClosed()) { 1390 if (IsClosed()) {
1371 return; 1391 return;
1372 } 1392 }
1373 ice_connection_state_ = new_state; 1393 ice_connection_state_ = new_state;
1374 observer_->OnIceConnectionChange(ice_connection_state_); 1394 observer_->OnIceConnectionChange(ice_connection_state_);
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1420 if (sender != senders_.end()) { 1440 if (sender != senders_.end()) {
1421 // We already have a sender for this track, so just change the stream_id 1441 // We already have a sender for this track, so just change the stream_id
1422 // so that it's correct in the next call to CreateOffer. 1442 // so that it's correct in the next call to CreateOffer.
1423 (*sender)->internal()->set_stream_id(stream->label()); 1443 (*sender)->internal()->set_stream_id(stream->label());
1424 return; 1444 return;
1425 } 1445 }
1426 1446
1427 // Normal case; we've never seen this track before. 1447 // Normal case; we've never seen this track before.
1428 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender = 1448 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender =
1429 RtpSenderProxyWithInternal<RtpSenderInternal>::Create( 1449 RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
1430 signaling_thread(), new AudioRtpSender(track, stream->label(), 1450 signaling_thread(),
1431 session_.get(), stats_.get())); 1451 new AudioRtpSender(track, stream->label(), session_->voice_channel(),
1452 stats_.get()));
1432 senders_.push_back(new_sender); 1453 senders_.push_back(new_sender);
1433 // If the sender has already been configured in SDP, we call SetSsrc, 1454 // If the sender has already been configured in SDP, we call SetSsrc,
1434 // which will connect the sender to the underlying transport. This can 1455 // which will connect the sender to the underlying transport. This can
1435 // occur if a local session description that contains the ID of the sender 1456 // occur if a local session description that contains the ID of the sender
1436 // is set before AddStream is called. It can also occur if the local 1457 // is set before AddStream is called. It can also occur if the local
1437 // session description is not changed and RemoveStream is called, and 1458 // session description is not changed and RemoveStream is called, and
1438 // later AddStream is called again with the same stream. 1459 // later AddStream is called again with the same stream.
1439 const TrackInfo* track_info = 1460 const TrackInfo* track_info =
1440 FindTrackInfo(local_audio_tracks_, stream->label(), track->id()); 1461 FindTrackInfo(local_audio_tracks_, stream->label(), track->id());
1441 if (track_info) { 1462 if (track_info) {
(...skipping 21 matching lines...) Expand all
1463 if (sender != senders_.end()) { 1484 if (sender != senders_.end()) {
1464 // We already have a sender for this track, so just change the stream_id 1485 // We already have a sender for this track, so just change the stream_id
1465 // so that it's correct in the next call to CreateOffer. 1486 // so that it's correct in the next call to CreateOffer.
1466 (*sender)->internal()->set_stream_id(stream->label()); 1487 (*sender)->internal()->set_stream_id(stream->label());
1467 return; 1488 return;
1468 } 1489 }
1469 1490
1470 // Normal case; we've never seen this track before. 1491 // Normal case; we've never seen this track before.
1471 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender = 1492 rtc::scoped_refptr<RtpSenderProxyWithInternal<RtpSenderInternal>> new_sender =
1472 RtpSenderProxyWithInternal<RtpSenderInternal>::Create( 1493 RtpSenderProxyWithInternal<RtpSenderInternal>::Create(
1473 signaling_thread(), 1494 signaling_thread(), new VideoRtpSender(track, stream->label(),
1474 new VideoRtpSender(track, stream->label(), session_.get())); 1495 session_->video_channel()));
1475 senders_.push_back(new_sender); 1496 senders_.push_back(new_sender);
1476 const TrackInfo* track_info = 1497 const TrackInfo* track_info =
1477 FindTrackInfo(local_video_tracks_, stream->label(), track->id()); 1498 FindTrackInfo(local_video_tracks_, stream->label(), track->id());
1478 if (track_info) { 1499 if (track_info) {
1479 new_sender->internal()->SetSsrc(track_info->ssrc); 1500 new_sender->internal()->SetSsrc(track_info->ssrc);
1480 } 1501 }
1481 } 1502 }
1482 1503
1483 void PeerConnection::OnVideoTrackRemoved(VideoTrackInterface* track, 1504 void PeerConnection::OnVideoTrackRemoved(VideoTrackInterface* track,
1484 MediaStreamInterface* stream) { 1505 MediaStreamInterface* stream) {
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
2006 // we can't free it directly here; we need to free it asynchronously. 2027 // we can't free it directly here; we need to free it asynchronously.
2007 sctp_data_channels_to_free_.push_back(*it); 2028 sctp_data_channels_to_free_.push_back(*it);
2008 sctp_data_channels_.erase(it); 2029 sctp_data_channels_.erase(it);
2009 signaling_thread()->Post(RTC_FROM_HERE, this, MSG_FREE_DATACHANNELS, 2030 signaling_thread()->Post(RTC_FROM_HERE, this, MSG_FREE_DATACHANNELS,
2010 nullptr); 2031 nullptr);
2011 return; 2032 return;
2012 } 2033 }
2013 } 2034 }
2014 } 2035 }
2015 2036
2037 void PeerConnection::OnVoiceChannelCreated() {
2038 SetChannelOnSendersAndReceivers<AudioRtpSender, AudioRtpReceiver>(
2039 session_->voice_channel(), senders_, receivers_,
2040 cricket::MEDIA_TYPE_AUDIO);
2041 }
2042
2016 void PeerConnection::OnVoiceChannelDestroyed() { 2043 void PeerConnection::OnVoiceChannelDestroyed() {
2017 StopReceivers(cricket::MEDIA_TYPE_AUDIO); 2044 SetChannelOnSendersAndReceivers<AudioRtpSender, AudioRtpReceiver,
2045 cricket::VoiceChannel>(
2046 nullptr, senders_, receivers_, cricket::MEDIA_TYPE_AUDIO);
2047 }
2048
2049 void PeerConnection::OnVideoChannelCreated() {
2050 SetChannelOnSendersAndReceivers<VideoRtpSender, VideoRtpReceiver>(
2051 session_->video_channel(), senders_, receivers_,
2052 cricket::MEDIA_TYPE_VIDEO);
2018 } 2053 }
2019 2054
2020 void PeerConnection::OnVideoChannelDestroyed() { 2055 void PeerConnection::OnVideoChannelDestroyed() {
2021 StopReceivers(cricket::MEDIA_TYPE_VIDEO); 2056 SetChannelOnSendersAndReceivers<VideoRtpSender, VideoRtpReceiver,
2057 cricket::VideoChannel>(
2058 nullptr, senders_, receivers_, cricket::MEDIA_TYPE_VIDEO);
2022 } 2059 }
2023 2060
2024 void PeerConnection::OnDataChannelCreated() { 2061 void PeerConnection::OnDataChannelCreated() {
2025 for (const auto& channel : sctp_data_channels_) { 2062 for (const auto& channel : sctp_data_channels_) {
2026 channel->OnTransportChannelCreated(); 2063 channel->OnTransportChannelCreated();
2027 } 2064 }
2028 } 2065 }
2029 2066
2030 void PeerConnection::OnDataChannelDestroyed() { 2067 void PeerConnection::OnDataChannelDestroyed() {
2031 // Use a temporary copy of the RTP/SCTP DataChannel list because the 2068 // Use a temporary copy of the RTP/SCTP DataChannel list because the
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
2187 port_allocator_->set_candidate_filter( 2224 port_allocator_->set_candidate_filter(
2188 ConvertIceTransportTypeToCandidateFilter(configuration.type)); 2225 ConvertIceTransportTypeToCandidateFilter(configuration.type));
2189 // Call this last since it may create pooled allocator sessions using the 2226 // Call this last since it may create pooled allocator sessions using the
2190 // candidate filter set above. 2227 // candidate filter set above.
2191 port_allocator_->SetConfiguration(stun_servers, turn_servers, 2228 port_allocator_->SetConfiguration(stun_servers, turn_servers,
2192 configuration.ice_candidate_pool_size); 2229 configuration.ice_candidate_pool_size);
2193 return true; 2230 return true;
2194 } 2231 }
2195 2232
2196 } // namespace webrtc 2233 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/api/peerconnection.h ('k') | webrtc/api/remoteaudiosource.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698