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

Unified Diff: third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp

Issue 2972003002: RTCPeerConnection.ontrack event added. (Closed)
Patch Set: Le merge 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: third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
index 63866d30253d725e3f5ecd2e1316ba3f93ab8503..ea2ca61b83382bec9ab05998efaf049707140cef 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
@@ -75,6 +75,7 @@
#include "modules/peerconnection/RTCStatsCallback.h"
#include "modules/peerconnection/RTCStatsReport.h"
#include "modules/peerconnection/RTCStatsRequestImpl.h"
+#include "modules/peerconnection/RTCTrackEvent.h"
#include "modules/peerconnection/RTCVoidRequestImpl.h"
#include "modules/peerconnection/RTCVoidRequestPromiseImpl.h"
#include "platform/RuntimeEnabledFeatures.h"
@@ -1443,7 +1444,8 @@ void RTCPeerConnection::DidChangeICEConnectionState(
}
void RTCPeerConnection::DidAddRemoteStream(
- const WebMediaStream& remote_stream) {
+ const WebMediaStream& remote_stream,
+ WebVector<std::unique_ptr<WebRTCRtpReceiver>>* stream_web_rtp_receivers) {
DCHECK(!closed_);
DCHECK(GetExecutionContext()->IsContextThread());
@@ -1461,6 +1463,35 @@ void RTCPeerConnection::DidAddRemoteStream(
ScheduleDispatchEvent(
MediaStreamEvent::Create(EventTypeNames::addstream, stream));
+
+ // TODO(hbos): ...
+ HeapVector<Member<MediaStream>> streams(1, stream);
+ for (auto& track : stream->getTracks()) {
+ std::unique_ptr<WebRTCRtpReceiver> track_web_rtp_receiver;
+ for (auto& web_rtp_receiver : *stream_web_rtp_receivers) {
+ if (static_cast<String>(web_rtp_receiver->Track().Id()) == track->id()) {
+ track_web_rtp_receiver.reset(web_rtp_receiver.release());
+ break;
+ }
+ }
+ DCHECK(track_web_rtp_receiver);
+ uintptr_t id = track_web_rtp_receiver->Id();
+ RTCRtpReceiver* track_rtp_receiver = nullptr;
+ const auto it = rtp_receivers_.find(id);
+ if (it != rtp_receivers_.end()) {
+ track_rtp_receiver = it->value;
+ } else {
+ // There does not exist a |RTCRtpReceiver| for this |WebRTCRtpReceiver|
+ // yet, create it.
+ MediaStreamTrack* track = GetTrack(track_web_rtp_receiver->Track());
+ DCHECK(track);
+ track_rtp_receiver =
+ new RTCRtpReceiver(std::move(track_web_rtp_receiver), track);
+ rtp_receivers_.insert(id, track_rtp_receiver);
+ }
+ ScheduleDispatchEvent(
+ new RTCTrackEvent(track_rtp_receiver, track, streams));
+ }
}
void RTCPeerConnection::DidRemoveRemoteStream(

Powered by Google App Engine
This is Rietveld 408576698