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

Unified Diff: content/renderer/media/webrtc/rtc_rtp_sender.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/webrtc/rtc_rtp_sender.cc
diff --git a/content/renderer/media/webrtc/rtc_rtp_sender.cc b/content/renderer/media/webrtc/rtc_rtp_sender.cc
index 26b15b8e4f11c1ab773420ca842568afe27598d1..01244482de63cdf5d0fa6c8f684a308047d53cbc 100644
--- a/content/renderer/media/webrtc/rtc_rtp_sender.cc
+++ b/content/renderer/media/webrtc/rtc_rtp_sender.cc
@@ -5,7 +5,6 @@
#include "content/renderer/media/webrtc/rtc_rtp_sender.h"
#include "base/logging.h"
-#include "third_party/webrtc/rtc_base/scoped_ref_ptr.h"
namespace content {
@@ -15,8 +14,13 @@ inline bool operator==(
const std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef>&
track_adapter,
const webrtc::MediaStreamTrackInterface* webrtc_track) {
- if (!track_adapter)
- return !webrtc_track;
+ if (!track_adapter) {
+ // TODO(hbos): See TODO in |OnRemoved|. Because we can't set a stopped
+ // sender's track to null any |webrtc_track| could be correct. When this is
+ // fixed this line should be: return !webrtc_track;
+ // https://crbug.com/webrtc/7945
+ return true;
+ }
return track_adapter->webrtc_track() == webrtc_track;
}
@@ -28,10 +32,22 @@ uintptr_t RTCRtpSender::getId(
}
RTCRtpSender::RTCRtpSender(
- scoped_refptr<webrtc::RtpSenderInterface> webrtc_rtp_sender,
+ rtc::scoped_refptr<webrtc::RtpSenderInterface> webrtc_rtp_sender,
std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter)
+ : RTCRtpSender(
+ std::move(webrtc_rtp_sender),
+ std::move(track_adapter),
+ std::vector<
+ std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef>>()) {}
+
+RTCRtpSender::RTCRtpSender(
+ rtc::scoped_refptr<webrtc::RtpSenderInterface> webrtc_rtp_sender,
+ std::unique_ptr<WebRtcMediaStreamTrackAdapterMap::AdapterRef> track_adapter,
+ std::vector<std::unique_ptr<WebRtcMediaStreamAdapterMap::AdapterRef>>
+ stream_adapters)
: webrtc_rtp_sender_(std::move(webrtc_rtp_sender)),
- track_adapter_(std::move(track_adapter)) {
+ track_adapter_(std::move(track_adapter)),
+ stream_adapters_(std::move(stream_adapters)) {
DCHECK(webrtc_rtp_sender_);
DCHECK(track_adapter_ == webrtc_rtp_sender_->track());
}
@@ -47,6 +63,16 @@ const blink::WebMediaStreamTrack* RTCRtpSender::Track() const {
return track_adapter_ ? &track_adapter_->web_track() : nullptr;
}
+void RTCRtpSender::OnRemoved() {
+ // TODO(hbos): We should do |webrtc_rtp_sender_->SetTrack(null)| but that is
+ // not allowed on a stopped sender. https://crbug.com/webrtc/7945
+ track_adapter_.reset();
+}
+
+webrtc::RtpSenderInterface* RTCRtpSender::webrtc_rtp_sender() {
+ return webrtc_rtp_sender_.get();
+}
+
const webrtc::MediaStreamTrackInterface* RTCRtpSender::webrtc_track() const {
DCHECK(track_adapter_ == webrtc_rtp_sender_->track());
return track_adapter_ ? track_adapter_->webrtc_track() : nullptr;
« no previous file with comments | « content/renderer/media/webrtc/rtc_rtp_sender.h ('k') | content/shell/test_runner/mock_webrtc_peer_connection_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698