OLD | NEW |
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 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
629 factory_->worker_thread(), factory_->signaling_thread(), | 629 factory_->worker_thread(), factory_->signaling_thread(), |
630 port_allocator_.get(), | 630 port_allocator_.get(), |
631 std::unique_ptr<cricket::TransportController>( | 631 std::unique_ptr<cricket::TransportController>( |
632 factory_->CreateTransportController( | 632 factory_->CreateTransportController( |
633 port_allocator_.get(), | 633 port_allocator_.get(), |
634 configuration.redetermine_role_on_ice_restart)))); | 634 configuration.redetermine_role_on_ice_restart)))); |
635 | 635 |
636 stats_.reset(new StatsCollector(this)); | 636 stats_.reset(new StatsCollector(this)); |
637 stats_collector_ = RTCStatsCollector::Create(this); | 637 stats_collector_ = RTCStatsCollector::Create(this); |
638 | 638 |
639 enable_ice_renomination_ = configuration.enable_ice_renomination; | |
640 | |
641 // Initialize the WebRtcSession. It creates transport channels etc. | 639 // Initialize the WebRtcSession. It creates transport channels etc. |
642 if (!session_->Initialize(factory_->options(), std::move(cert_generator), | 640 if (!session_->Initialize(factory_->options(), std::move(cert_generator), |
643 configuration)) { | 641 configuration)) { |
644 return false; | 642 return false; |
645 } | 643 } |
646 | 644 |
647 // Register PeerConnection as receiver of local ice candidates. | 645 // Register PeerConnection as receiver of local ice candidates. |
648 // All the callbacks will be posted to the application from PeerConnection. | 646 // All the callbacks will be posted to the application from PeerConnection. |
649 session_->RegisterIceObserver(this); | 647 session_->RegisterIceObserver(this); |
650 session_->SignalState.connect(this, &PeerConnection::OnSessionStateChange); | 648 session_->SignalState.connect(this, &PeerConnection::OnSessionStateChange); |
651 session_->SignalVoiceChannelCreated.connect( | 649 session_->SignalVoiceChannelCreated.connect( |
652 this, &PeerConnection::OnVoiceChannelCreated); | 650 this, &PeerConnection::OnVoiceChannelCreated); |
653 session_->SignalVoiceChannelDestroyed.connect( | 651 session_->SignalVoiceChannelDestroyed.connect( |
654 this, &PeerConnection::OnVoiceChannelDestroyed); | 652 this, &PeerConnection::OnVoiceChannelDestroyed); |
655 session_->SignalVideoChannelCreated.connect( | 653 session_->SignalVideoChannelCreated.connect( |
656 this, &PeerConnection::OnVideoChannelCreated); | 654 this, &PeerConnection::OnVideoChannelCreated); |
657 session_->SignalVideoChannelDestroyed.connect( | 655 session_->SignalVideoChannelDestroyed.connect( |
658 this, &PeerConnection::OnVideoChannelDestroyed); | 656 this, &PeerConnection::OnVideoChannelDestroyed); |
659 session_->SignalDataChannelCreated.connect( | 657 session_->SignalDataChannelCreated.connect( |
660 this, &PeerConnection::OnDataChannelCreated); | 658 this, &PeerConnection::OnDataChannelCreated); |
661 session_->SignalDataChannelDestroyed.connect( | 659 session_->SignalDataChannelDestroyed.connect( |
662 this, &PeerConnection::OnDataChannelDestroyed); | 660 this, &PeerConnection::OnDataChannelDestroyed); |
663 session_->SignalDataChannelOpenMessage.connect( | 661 session_->SignalDataChannelOpenMessage.connect( |
664 this, &PeerConnection::OnDataChannelOpenMessage); | 662 this, &PeerConnection::OnDataChannelOpenMessage); |
| 663 |
| 664 configuration_ = configuration; |
665 return true; | 665 return true; |
666 } | 666 } |
667 | 667 |
668 rtc::scoped_refptr<StreamCollectionInterface> | 668 rtc::scoped_refptr<StreamCollectionInterface> |
669 PeerConnection::local_streams() { | 669 PeerConnection::local_streams() { |
670 return local_streams_; | 670 return local_streams_; |
671 } | 671 } |
672 | 672 |
673 rtc::scoped_refptr<StreamCollectionInterface> | 673 rtc::scoped_refptr<StreamCollectionInterface> |
674 PeerConnection::remote_streams() { | 674 PeerConnection::remote_streams() { |
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1248 rtc::scoped_refptr<MediaStreamInterface>(new_stream)); | 1248 rtc::scoped_refptr<MediaStreamInterface>(new_stream)); |
1249 } | 1249 } |
1250 | 1250 |
1251 UpdateEndedRemoteMediaStreams(); | 1251 UpdateEndedRemoteMediaStreams(); |
1252 | 1252 |
1253 SetSessionDescriptionMsg* msg = new SetSessionDescriptionMsg(observer); | 1253 SetSessionDescriptionMsg* msg = new SetSessionDescriptionMsg(observer); |
1254 signaling_thread()->Post(RTC_FROM_HERE, this, | 1254 signaling_thread()->Post(RTC_FROM_HERE, this, |
1255 MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg); | 1255 MSG_SET_SESSIONDESCRIPTION_SUCCESS, msg); |
1256 } | 1256 } |
1257 | 1257 |
| 1258 PeerConnectionInterface::RTCConfiguration PeerConnection::GetConfiguration() { |
| 1259 return configuration_; |
| 1260 } |
| 1261 |
1258 bool PeerConnection::SetConfiguration(const RTCConfiguration& configuration) { | 1262 bool PeerConnection::SetConfiguration(const RTCConfiguration& configuration) { |
1259 TRACE_EVENT0("webrtc", "PeerConnection::SetConfiguration"); | 1263 TRACE_EVENT0("webrtc", "PeerConnection::SetConfiguration"); |
| 1264 // TODO(deadbeef): Return false and log an error if there are any unsupported |
| 1265 // modifications. |
1260 if (port_allocator_) { | 1266 if (port_allocator_) { |
1261 if (!network_thread()->Invoke<bool>( | 1267 if (!network_thread()->Invoke<bool>( |
1262 RTC_FROM_HERE, | 1268 RTC_FROM_HERE, |
1263 rtc::Bind(&PeerConnection::ReconfigurePortAllocator_n, this, | 1269 rtc::Bind(&PeerConnection::ReconfigurePortAllocator_n, this, |
1264 configuration))) { | 1270 configuration))) { |
1265 return false; | 1271 return false; |
1266 } | 1272 } |
1267 } | 1273 } |
1268 | 1274 |
1269 // TODO(deadbeef): Shouldn't have to hop to the worker thread twice... | 1275 // TODO(deadbeef): Shouldn't have to hop to the worker thread twice... |
1270 session_->SetIceConfig(session_->ParseIceConfig(configuration)); | 1276 session_->SetIceConfig(session_->ParseIceConfig(configuration)); |
1271 | 1277 |
1272 enable_ice_renomination_ = configuration.enable_ice_renomination; | 1278 configuration_ = configuration; |
1273 return true; | 1279 return true; |
1274 } | 1280 } |
1275 | 1281 |
1276 bool PeerConnection::AddIceCandidate( | 1282 bool PeerConnection::AddIceCandidate( |
1277 const IceCandidateInterface* ice_candidate) { | 1283 const IceCandidateInterface* ice_candidate) { |
1278 TRACE_EVENT0("webrtc", "PeerConnection::AddIceCandidate"); | 1284 TRACE_EVENT0("webrtc", "PeerConnection::AddIceCandidate"); |
1279 if (IsClosed()) { | 1285 if (IsClosed()) { |
1280 return false; | 1286 return false; |
1281 } | 1287 } |
1282 return session_->ProcessIceMessage(ice_candidate); | 1288 return session_->ProcessIceMessage(ice_candidate); |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1617 cricket::MediaSessionOptions* session_options) { | 1623 cricket::MediaSessionOptions* session_options) { |
1618 // TODO(deadbeef): Once we have transceivers, enumerate them here instead of | 1624 // TODO(deadbeef): Once we have transceivers, enumerate them here instead of |
1619 // ContentInfos. | 1625 // ContentInfos. |
1620 if (session_->local_description()) { | 1626 if (session_->local_description()) { |
1621 for (const cricket::ContentInfo& content : | 1627 for (const cricket::ContentInfo& content : |
1622 session_->local_description()->description()->contents()) { | 1628 session_->local_description()->description()->contents()) { |
1623 session_options->transport_options[content.name] = | 1629 session_options->transport_options[content.name] = |
1624 cricket::TransportOptions(); | 1630 cricket::TransportOptions(); |
1625 } | 1631 } |
1626 } | 1632 } |
1627 session_options->enable_ice_renomination = enable_ice_renomination_; | 1633 session_options->enable_ice_renomination = |
| 1634 configuration_.enable_ice_renomination; |
1628 | 1635 |
1629 if (!ExtractMediaSessionOptions(rtc_options, true, session_options)) { | 1636 if (!ExtractMediaSessionOptions(rtc_options, true, session_options)) { |
1630 return false; | 1637 return false; |
1631 } | 1638 } |
1632 | 1639 |
1633 AddSendStreams(session_options, senders_, rtp_data_channels_); | 1640 AddSendStreams(session_options, senders_, rtp_data_channels_); |
1634 // Offer to receive audio/video if the constraint is not set and there are | 1641 // Offer to receive audio/video if the constraint is not set and there are |
1635 // send streams, or we're currently receiving. | 1642 // send streams, or we're currently receiving. |
1636 if (rtc_options.offer_to_receive_audio == RTCOfferAnswerOptions::kUndefined) { | 1643 if (rtc_options.offer_to_receive_audio == RTCOfferAnswerOptions::kUndefined) { |
1637 session_options->recv_audio = | 1644 session_options->recv_audio = |
(...skipping 22 matching lines...) Expand all Loading... |
1660 | 1667 |
1661 session_options->rtcp_cname = rtcp_cname_; | 1668 session_options->rtcp_cname = rtcp_cname_; |
1662 session_options->crypto_options = factory_->options().crypto_options; | 1669 session_options->crypto_options = factory_->options().crypto_options; |
1663 return true; | 1670 return true; |
1664 } | 1671 } |
1665 | 1672 |
1666 void PeerConnection::InitializeOptionsForAnswer( | 1673 void PeerConnection::InitializeOptionsForAnswer( |
1667 cricket::MediaSessionOptions* session_options) { | 1674 cricket::MediaSessionOptions* session_options) { |
1668 session_options->recv_audio = false; | 1675 session_options->recv_audio = false; |
1669 session_options->recv_video = false; | 1676 session_options->recv_video = false; |
1670 session_options->enable_ice_renomination = enable_ice_renomination_; | 1677 session_options->enable_ice_renomination = |
| 1678 configuration_.enable_ice_renomination; |
1671 } | 1679 } |
1672 | 1680 |
1673 void PeerConnection::FinishOptionsForAnswer( | 1681 void PeerConnection::FinishOptionsForAnswer( |
1674 cricket::MediaSessionOptions* session_options) { | 1682 cricket::MediaSessionOptions* session_options) { |
1675 // TODO(deadbeef): Once we have transceivers, enumerate them here instead of | 1683 // TODO(deadbeef): Once we have transceivers, enumerate them here instead of |
1676 // ContentInfos. | 1684 // ContentInfos. |
1677 if (session_->remote_description()) { | 1685 if (session_->remote_description()) { |
1678 // Initialize the transport_options map. | 1686 // Initialize the transport_options map. |
1679 for (const cricket::ContentInfo& content : | 1687 for (const cricket::ContentInfo& content : |
1680 session_->remote_description()->description()->contents()) { | 1688 session_->remote_description()->description()->contents()) { |
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2342 | 2350 |
2343 bool PeerConnection::StartRtcEventLog_w(rtc::PlatformFile file, | 2351 bool PeerConnection::StartRtcEventLog_w(rtc::PlatformFile file, |
2344 int64_t max_size_bytes) { | 2352 int64_t max_size_bytes) { |
2345 return event_log_->StartLogging(file, max_size_bytes); | 2353 return event_log_->StartLogging(file, max_size_bytes); |
2346 } | 2354 } |
2347 | 2355 |
2348 void PeerConnection::StopRtcEventLog_w() { | 2356 void PeerConnection::StopRtcEventLog_w() { |
2349 event_log_->StopLogging(); | 2357 event_log_->StopLogging(); |
2350 } | 2358 } |
2351 } // namespace webrtc | 2359 } // namespace webrtc |
OLD | NEW |