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

Side by Side Diff: content/renderer/media/rtc_peer_connection_handler.cc

Issue 2951713002: RTCPeerConnection.addTrack and removeTrack added (behind flag) (Closed)
Patch Set: Addressed deadbeef's comments Created 3 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
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « content/renderer/media/rtc_peer_connection_handler.h ('k') | content/renderer/media/webrtc/rtc_rtp_sender.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698