OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/media/rtc_peer_connection_handler.h" | 5 #include "content/renderer/media/rtc_peer_connection_handler.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <utility> | 10 #include <utility> |
(...skipping 1680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1691 // |blink::WebVector|'s size must be known at construction, that is why | 1691 // |blink::WebVector|'s size must be known at construction, that is why |
1692 // |web_vectors| uses |std::vector| and needs to be moved before returning. | 1692 // |web_vectors| uses |std::vector| and needs to be moved before returning. |
1693 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> result( | 1693 blink::WebVector<std::unique_ptr<blink::WebRTCRtpReceiver>> result( |
1694 web_receivers.size()); | 1694 web_receivers.size()); |
1695 for (size_t i = 0; i < web_receivers.size(); ++i) { | 1695 for (size_t i = 0; i < web_receivers.size(); ++i) { |
1696 result[i] = std::move(web_receivers[i]); | 1696 result[i] = std::move(web_receivers[i]); |
1697 } | 1697 } |
1698 return result; | 1698 return result; |
1699 } | 1699 } |
1700 | 1700 |
| 1701 std::unique_ptr<blink::WebRTCRtpSender> RTCPeerConnectionHandler::AddTrack( |
| 1702 const blink::WebMediaStreamTrack& track, |
| 1703 const blink::WebVector<blink::WebMediaStream>& streams) { |
| 1704 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1705 |
| 1706 // Get or create the associated track and stream adapters. |
| 1707 std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter = |
| 1708 track_adapter_map_->GetOrCreateLocalTrackAdapter(track); |
| 1709 std::vector<std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef>> |
| 1710 stream_adapters(streams.size()); |
| 1711 std::vector<webrtc::MediaStreamInterface*> webrtc_streams(streams.size()); |
| 1712 for (size_t i = 0; i < streams.size(); ++i) { |
| 1713 stream_adapters[i] = |
| 1714 stream_adapter_map_->GetOrCreateLocalStreamAdapter(streams[i]); |
| 1715 webrtc_streams[i] = stream_adapters[i]->adapter().webrtc_media_stream(); |
| 1716 } |
| 1717 |
| 1718 rtc::scoped_refptr<webrtc::RtpSenderInterface> webrtc_sender = |
| 1719 native_peer_connection_->AddTrack(track_adapter->webrtc_track(), |
| 1720 webrtc_streams); |
| 1721 if (!webrtc_sender) |
| 1722 return nullptr; |
| 1723 return base::MakeUnique<RTCRtpSender>(std::move(webrtc_sender), |
| 1724 std::move(track_adapter), |
| 1725 std::move(stream_adapters)); |
| 1726 } |
| 1727 |
| 1728 bool RTCPeerConnectionHandler::RemoveTrack(blink::WebRTCRtpSender* web_sender) { |
| 1729 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1730 RTCRtpSender* sender = static_cast<RTCRtpSender*>(web_sender); |
| 1731 if (!native_peer_connection_->RemoveTrack(sender->webrtc_rtp_sender())) { |
| 1732 return false; |
| 1733 } |
| 1734 sender->OnRemoved(); |
| 1735 return true; |
| 1736 } |
| 1737 |
1701 void RTCPeerConnectionHandler::CloseClientPeerConnection() { | 1738 void RTCPeerConnectionHandler::CloseClientPeerConnection() { |
1702 DCHECK(thread_checker_.CalledOnValidThread()); | 1739 DCHECK(thread_checker_.CalledOnValidThread()); |
1703 if (!is_closed_) | 1740 if (!is_closed_) |
1704 client_->ClosePeerConnection(); | 1741 client_->ClosePeerConnection(); |
1705 } | 1742 } |
1706 | 1743 |
1707 void RTCPeerConnectionHandler::StartEventLog(IPC::PlatformFileForTransit file, | 1744 void RTCPeerConnectionHandler::StartEventLog(IPC::PlatformFileForTransit file, |
1708 int64_t max_file_size_bytes) { | 1745 int64_t max_file_size_bytes) { |
1709 DCHECK(thread_checker_.CalledOnValidThread()); | 1746 DCHECK(thread_checker_.CalledOnValidThread()); |
1710 DCHECK(file != IPC::InvalidPlatformFileForTransit()); | 1747 DCHECK(file != IPC::InvalidPlatformFileForTransit()); |
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2070 } | 2107 } |
2071 | 2108 |
2072 void RTCPeerConnectionHandler::ResetUMAStats() { | 2109 void RTCPeerConnectionHandler::ResetUMAStats() { |
2073 DCHECK(thread_checker_.CalledOnValidThread()); | 2110 DCHECK(thread_checker_.CalledOnValidThread()); |
2074 num_local_candidates_ipv6_ = 0; | 2111 num_local_candidates_ipv6_ = 0; |
2075 num_local_candidates_ipv4_ = 0; | 2112 num_local_candidates_ipv4_ = 0; |
2076 ice_connection_checking_start_ = base::TimeTicks(); | 2113 ice_connection_checking_start_ = base::TimeTicks(); |
2077 memset(ice_state_seen_, 0, sizeof(ice_state_seen_)); | 2114 memset(ice_state_seen_, 0, sizeof(ice_state_seen_)); |
2078 } | 2115 } |
2079 } // namespace content | 2116 } // namespace content |
OLD | NEW |