Chromium Code Reviews| Index: content/renderer/media/rtc_peer_connection_handler.cc |
| diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc |
| index 21792a54db860f09bce7b3b634930adb18a6085e..63606b3993867bd47c01ab4b5a774df0f58446dd 100644 |
| --- a/content/renderer/media/rtc_peer_connection_handler.cc |
| +++ b/content/renderer/media/rtc_peer_connection_handler.cc |
| @@ -1698,6 +1698,43 @@ RTCPeerConnectionHandler::GetReceivers() { |
| return result; |
| } |
| +std::unique_ptr<blink::WebRTCRtpSender> RTCPeerConnectionHandler::AddTrack( |
| + const blink::WebMediaStreamTrack& track, |
| + const blink::WebVector<blink::WebMediaStream>& streams) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + |
| + // Get or create the associated track and stream adapters. |
| + std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter = |
| + track_adapter_map_->GetOrCreateLocalTrackAdapter(track); |
| + std::vector<std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef>> |
| + stream_adapters(streams.size()); |
| + std::vector<webrtc::MediaStreamInterface*> webrtc_streams(streams.size()); |
| + for (size_t i = 0; i < streams.size(); ++i) { |
| + stream_adapters[i] = |
| + stream_adapter_map_->GetOrCreateLocalStreamAdapter(streams[i]); |
| + webrtc_streams[i] = stream_adapters[i]->adapter().webrtc_media_stream(); |
| + } |
| + |
| + rtc::scoped_refptr<webrtc::RtpSenderInterface> webrtc_sender = |
|
Guido Urdaneta
2017/07/05 15:37:06
why rtc::scoped_refptr here, but ::scoped_refptr w
hbos_chromium
2017/07/06 12:31:37
It doesn't matter which one you use, they both do
|
| + native_peer_connection_->AddTrack(track_adapter->webrtc_track(), |
| + webrtc_streams); |
| + if (!webrtc_sender) |
| + return nullptr; |
| + return base::MakeUnique<RTCRtpSender>(webrtc_sender.get(), |
| + std::move(track_adapter), |
| + std::move(stream_adapters)); |
| +} |
| + |
| +bool RTCPeerConnectionHandler::RemoveTrack(blink::WebRTCRtpSender* web_sender) { |
| + DCHECK(thread_checker_.CalledOnValidThread()); |
| + RTCRtpSender* sender = static_cast<RTCRtpSender*>(web_sender); |
| + if (!native_peer_connection_->RemoveTrack(sender->webrtc_rtp_sender())) { |
| + return false; |
| + } |
| + sender->OnRemoved(); |
| + return true; |
| +} |
| + |
| void RTCPeerConnectionHandler::CloseClientPeerConnection() { |
| DCHECK(thread_checker_.CalledOnValidThread()); |
| if (!is_closed_) |