| 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 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |