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

Unified 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 side-by-side diff with in-line comments
Download patch
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..1fb95e1bceb7114a4ff9657bf0fa29063e3b206e 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 =
+ native_peer_connection_->AddTrack(track_adapter->webrtc_track(),
+ webrtc_streams);
+ if (!webrtc_sender)
+ return nullptr;
+ return base::MakeUnique<RTCRtpSender>(std::move(webrtc_sender),
+ 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_)
« 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