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

Unified Diff: content/renderer/media/rtc_peer_connection_handler.cc

Issue 14200016: Added implementation of RemoteMediaStreams. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits Created 7 years, 8 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 c14e48be23fd1d8b3f93bd7642f2038395c16e58..80daec0fdc16b209dcd3756a46a7276dd65bcbe8 100644
--- a/content/renderer/media/rtc_peer_connection_handler.cc
+++ b/content/renderer/media/rtc_peer_connection_handler.cc
@@ -10,9 +10,11 @@
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
+#include "base/stl_util.h"
#include "base/utf_string_conversions.h"
#include "content/renderer/media/media_stream_dependency_factory.h"
#include "content/renderer/media/peer_connection_tracker.h"
+#include "content/renderer/media/remote_media_stream_impl.h"
#include "content/renderer/media/rtc_data_channel_handler.h"
#include "content/renderer/media/rtc_dtmf_sender_handler.h"
#include "content/renderer/media/rtc_media_constraints.h"
@@ -323,6 +325,7 @@ RTCPeerConnectionHandler::RTCPeerConnectionHandler(
RTCPeerConnectionHandler::~RTCPeerConnectionHandler() {
if (peer_connection_tracker_)
peer_connection_tracker_->UnregisterPeerConnection(this);
+ STLDeleteValues(&remote_streams_);
}
void RTCPeerConnectionHandler::associateWithFrame(WebKit::WebFrame* frame) {
@@ -660,17 +663,19 @@ void RTCPeerConnectionHandler::OnAddStream(
webrtc::MediaStreamInterface* stream_interface) {
DCHECK(stream_interface);
DCHECK(remote_streams_.find(stream_interface) == remote_streams_.end());
- WebKit::WebMediaStream stream =
- CreateRemoteWebKitMediaStream(stream_interface);
+
+ RemoteMediaStreamImpl* remote_stream =
+ new RemoteMediaStreamImpl(stream_interface);
+ remote_streams_.insert(
+ std::pair<webrtc::MediaStreamInterface*, RemoteMediaStreamImpl*> (
+ stream_interface, remote_stream));
if (peer_connection_tracker_)
peer_connection_tracker_->TrackAddStream(
- this, stream, PeerConnectionTracker::SOURCE_REMOTE);
+ this, remote_stream->webkit_stream(),
+ PeerConnectionTracker::SOURCE_REMOTE);
- remote_streams_.insert(
- std::pair<webrtc::MediaStreamInterface*,
- WebKit::WebMediaStream>(stream_interface, stream));
- client_->didAddRemoteStream(stream);
+ client_->didAddRemoteStream(remote_stream->webkit_stream());
}
void RTCPeerConnectionHandler::OnRemoveStream(
@@ -681,15 +686,17 @@ void RTCPeerConnectionHandler::OnRemoveStream(
NOTREACHED() << "Stream not found";
return;
}
- WebKit::WebMediaStream stream = it->second;
- DCHECK(!stream.isNull());
+
+ scoped_ptr<RemoteMediaStreamImpl> remote_stream(it->second);
+ const WebKit::WebMediaStream& webkit_stream = remote_stream->webkit_stream();
+ DCHECK(!webkit_stream.isNull());
remote_streams_.erase(it);
if (peer_connection_tracker_)
peer_connection_tracker_->TrackRemoveStream(
- this, stream, PeerConnectionTracker::SOURCE_REMOTE);
+ this, webkit_stream, PeerConnectionTracker::SOURCE_REMOTE);
- client_->didRemoveRemoteStream(stream);
+ client_->didRemoveRemoteStream(webkit_stream);
}
void RTCPeerConnectionHandler::OnIceCandidate(

Powered by Google App Engine
This is Rietveld 408576698