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

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

Issue 2224563004: Add signaling to support ICE renomination. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: . Created 4 years, 3 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
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 613 matching lines...) Expand 10 before | Expand all | Expand 10 after
624 624
625 session_.reset(new WebRtcSession( 625 session_.reset(new WebRtcSession(
626 media_controller_.get(), factory_->network_thread(), 626 media_controller_.get(), factory_->network_thread(),
627 factory_->worker_thread(), factory_->signaling_thread(), 627 factory_->worker_thread(), factory_->signaling_thread(),
628 port_allocator_.get(), 628 port_allocator_.get(),
629 std::unique_ptr<cricket::TransportController>( 629 std::unique_ptr<cricket::TransportController>(
630 factory_->CreateTransportController(port_allocator_.get())))); 630 factory_->CreateTransportController(port_allocator_.get()))));
631 631
632 stats_.reset(new StatsCollector(this)); 632 stats_.reset(new StatsCollector(this));
633 633
634 ice_renomination_ = configuration.ice_renomination;
635
634 // Initialize the WebRtcSession. It creates transport channels etc. 636 // Initialize the WebRtcSession. It creates transport channels etc.
635 if (!session_->Initialize(factory_->options(), std::move(cert_generator), 637 if (!session_->Initialize(factory_->options(), std::move(cert_generator),
636 configuration)) { 638 configuration)) {
637 return false; 639 return false;
638 } 640 }
639 641
640 // Register PeerConnection as receiver of local ice candidates. 642 // Register PeerConnection as receiver of local ice candidates.
641 // All the callbacks will be posted to the application from PeerConnection. 643 // All the callbacks will be posted to the application from PeerConnection.
642 session_->RegisterIceObserver(this); 644 session_->RegisterIceObserver(this);
643 session_->SignalState.connect(this, &PeerConnection::OnSessionStateChange); 645 session_->SignalState.connect(this, &PeerConnection::OnSessionStateChange);
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after
1253 if (!network_thread()->Invoke<bool>( 1255 if (!network_thread()->Invoke<bool>(
1254 RTC_FROM_HERE, 1256 RTC_FROM_HERE,
1255 rtc::Bind(&PeerConnection::ReconfigurePortAllocator_n, this, 1257 rtc::Bind(&PeerConnection::ReconfigurePortAllocator_n, this,
1256 configuration))) { 1258 configuration))) {
1257 return false; 1259 return false;
1258 } 1260 }
1259 } 1261 }
1260 1262
1261 // TODO(deadbeef): Shouldn't have to hop to the worker thread twice... 1263 // TODO(deadbeef): Shouldn't have to hop to the worker thread twice...
1262 session_->SetIceConfig(session_->ParseIceConfig(configuration)); 1264 session_->SetIceConfig(session_->ParseIceConfig(configuration));
1265
1266 ice_renomination_ = configuration.ice_renomination;
1263 return true; 1267 return true;
1264 } 1268 }
1265 1269
1266 bool PeerConnection::AddIceCandidate( 1270 bool PeerConnection::AddIceCandidate(
1267 const IceCandidateInterface* ice_candidate) { 1271 const IceCandidateInterface* ice_candidate) {
1268 TRACE_EVENT0("webrtc", "PeerConnection::AddIceCandidate"); 1272 TRACE_EVENT0("webrtc", "PeerConnection::AddIceCandidate");
1269 if (IsClosed()) { 1273 if (IsClosed()) {
1270 return false; 1274 return false;
1271 } 1275 }
1272 return session_->ProcessIceMessage(ice_candidate); 1276 return session_->ProcessIceMessage(ice_candidate);
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
1606 cricket::MediaSessionOptions* session_options) { 1610 cricket::MediaSessionOptions* session_options) {
1607 // TODO(deadbeef): Once we have transceivers, enumerate them here instead of 1611 // TODO(deadbeef): Once we have transceivers, enumerate them here instead of
1608 // ContentInfos. 1612 // ContentInfos.
1609 if (session_->local_description()) { 1613 if (session_->local_description()) {
1610 for (const cricket::ContentInfo& content : 1614 for (const cricket::ContentInfo& content :
1611 session_->local_description()->description()->contents()) { 1615 session_->local_description()->description()->contents()) {
1612 session_options->transport_options[content.name] = 1616 session_options->transport_options[content.name] =
1613 cricket::TransportOptions(); 1617 cricket::TransportOptions();
1614 } 1618 }
1615 } 1619 }
1620 session_options->ice_renomination = ice_renomination_;
1621
1616 if (!ExtractMediaSessionOptions(rtc_options, true, session_options)) { 1622 if (!ExtractMediaSessionOptions(rtc_options, true, session_options)) {
1617 return false; 1623 return false;
1618 } 1624 }
1619 1625
1620 AddSendStreams(session_options, senders_, rtp_data_channels_); 1626 AddSendStreams(session_options, senders_, rtp_data_channels_);
1621 // Offer to receive audio/video if the constraint is not set and there are 1627 // Offer to receive audio/video if the constraint is not set and there are
1622 // send streams, or we're currently receiving. 1628 // send streams, or we're currently receiving.
1623 if (rtc_options.offer_to_receive_audio == RTCOfferAnswerOptions::kUndefined) { 1629 if (rtc_options.offer_to_receive_audio == RTCOfferAnswerOptions::kUndefined) {
1624 session_options->recv_audio = 1630 session_options->recv_audio =
1625 session_options->HasSendMediaStream(cricket::MEDIA_TYPE_AUDIO) || 1631 session_options->HasSendMediaStream(cricket::MEDIA_TYPE_AUDIO) ||
(...skipping 16 matching lines...) Expand all
1642 // people won't try to use them. 1648 // people won't try to use them.
1643 if (HasDataChannels() && session_->data_channel_type() != cricket::DCT_RTP) { 1649 if (HasDataChannels() && session_->data_channel_type() != cricket::DCT_RTP) {
1644 session_options->data_channel_type = session_->data_channel_type(); 1650 session_options->data_channel_type = session_->data_channel_type();
1645 } 1651 }
1646 1652
1647 session_options->rtcp_cname = rtcp_cname_; 1653 session_options->rtcp_cname = rtcp_cname_;
1648 session_options->crypto_options = factory_->options().crypto_options; 1654 session_options->crypto_options = factory_->options().crypto_options;
1649 return true; 1655 return true;
1650 } 1656 }
1651 1657
1658 void PeerConnection::InitializeOptionsForAnswer(
1659 cricket::MediaSessionOptions* session_options) {
1660 session_options->recv_audio = false;
1661 session_options->recv_video = false;
1662 session_options->ice_renomination = ice_renomination_;
1663 }
1664
1652 void PeerConnection::FinishOptionsForAnswer( 1665 void PeerConnection::FinishOptionsForAnswer(
1653 cricket::MediaSessionOptions* session_options) { 1666 cricket::MediaSessionOptions* session_options) {
1654 // TODO(deadbeef): Once we have transceivers, enumerate them here instead of 1667 // TODO(deadbeef): Once we have transceivers, enumerate them here instead of
1655 // ContentInfos. 1668 // ContentInfos.
1656 if (session_->remote_description()) { 1669 if (session_->remote_description()) {
1657 // Initialize the transport_options map. 1670 // Initialize the transport_options map.
1658 for (const cricket::ContentInfo& content : 1671 for (const cricket::ContentInfo& content :
1659 session_->remote_description()->description()->contents()) { 1672 session_->remote_description()->description()->contents()) {
1660 session_options->transport_options[content.name] = 1673 session_options->transport_options[content.name] =
1661 cricket::TransportOptions(); 1674 cricket::TransportOptions();
(...skipping 14 matching lines...) Expand all
1676 // We want to leave RTP data channels broken, so people won't try to use them. 1689 // We want to leave RTP data channels broken, so people won't try to use them.
1677 if (session_->data_channel_type() != cricket::DCT_RTP) { 1690 if (session_->data_channel_type() != cricket::DCT_RTP) {
1678 session_options->data_channel_type = session_->data_channel_type(); 1691 session_options->data_channel_type = session_->data_channel_type();
1679 } 1692 }
1680 session_options->crypto_options = factory_->options().crypto_options; 1693 session_options->crypto_options = factory_->options().crypto_options;
1681 } 1694 }
1682 1695
1683 bool PeerConnection::GetOptionsForAnswer( 1696 bool PeerConnection::GetOptionsForAnswer(
1684 const MediaConstraintsInterface* constraints, 1697 const MediaConstraintsInterface* constraints,
1685 cricket::MediaSessionOptions* session_options) { 1698 cricket::MediaSessionOptions* session_options) {
1686 session_options->recv_audio = false; 1699 InitializeOptionsForAnswer(session_options);
1687 session_options->recv_video = false;
1688 if (!ParseConstraintsForAnswer(constraints, session_options)) { 1700 if (!ParseConstraintsForAnswer(constraints, session_options)) {
1689 return false; 1701 return false;
1690 } 1702 }
1691 session_options->rtcp_cname = rtcp_cname_; 1703 session_options->rtcp_cname = rtcp_cname_;
1692 1704
1693 FinishOptionsForAnswer(session_options); 1705 FinishOptionsForAnswer(session_options);
1694 return true; 1706 return true;
1695 } 1707 }
1696 1708
1697 bool PeerConnection::GetOptionsForAnswer( 1709 bool PeerConnection::GetOptionsForAnswer(
1698 const RTCOfferAnswerOptions& options, 1710 const RTCOfferAnswerOptions& options,
1699 cricket::MediaSessionOptions* session_options) { 1711 cricket::MediaSessionOptions* session_options) {
1700 session_options->recv_audio = false; 1712 InitializeOptionsForAnswer(session_options);
1701 session_options->recv_video = false;
1702 if (!ExtractMediaSessionOptions(options, false, session_options)) { 1713 if (!ExtractMediaSessionOptions(options, false, session_options)) {
1703 return false; 1714 return false;
1704 } 1715 }
1705 session_options->rtcp_cname = rtcp_cname_; 1716 session_options->rtcp_cname = rtcp_cname_;
1706 1717
1707 FinishOptionsForAnswer(session_options); 1718 FinishOptionsForAnswer(session_options);
1708 return true; 1719 return true;
1709 } 1720 }
1710 1721
1711 void PeerConnection::RemoveTracks(cricket::MediaType media_type) { 1722 void PeerConnection::RemoveTracks(cricket::MediaType media_type) {
(...skipping 611 matching lines...) Expand 10 before | Expand all | Expand 10 after
2323 2334
2324 bool PeerConnection::StartRtcEventLog_w(rtc::PlatformFile file, 2335 bool PeerConnection::StartRtcEventLog_w(rtc::PlatformFile file,
2325 int64_t max_size_bytes) { 2336 int64_t max_size_bytes) {
2326 return media_controller_->call_w()->StartEventLog(file, max_size_bytes); 2337 return media_controller_->call_w()->StartEventLog(file, max_size_bytes);
2327 } 2338 }
2328 2339
2329 void PeerConnection::StopRtcEventLog_w() { 2340 void PeerConnection::StopRtcEventLog_w() {
2330 media_controller_->call_w()->StopEventLog(); 2341 media_controller_->call_w()->StopEventLog();
2331 } 2342 }
2332 } // namespace webrtc 2343 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698