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

Unified Diff: talk/app/webrtc/rtpsender.cc

Issue 1655793003: Make cricket::VideoCapturer implement VideoSourceInterface (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Adding VideoSourceInterface and letting cricket::VideoCapturer implement it Created 4 years, 11 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: talk/app/webrtc/rtpsender.cc
diff --git a/talk/app/webrtc/rtpsender.cc b/talk/app/webrtc/rtpsender.cc
index a30bf0b163616f7022530f7c993d9ad153561969..5e627a9fbbe61a0af25e57d5a64053418542a2c8 100644
--- a/talk/app/webrtc/rtpsender.cc
+++ b/talk/app/webrtc/rtpsender.cc
@@ -273,6 +273,8 @@ bool VideoRtpSender::SetTrack(MediaStreamTrackInterface* track) {
// Detach from old track.
if (track_) {
track_->UnregisterObserver(this);
+ track_->RemoveSink(sink_);
+ sink_ = nullptr;
}
// Attach to new track.
@@ -286,6 +288,8 @@ bool VideoRtpSender::SetTrack(MediaStreamTrackInterface* track) {
// Update video provider.
if (can_send_track()) {
VideoSourceInterface* source = track_->GetSource();
+ sink_ = provider_->GetSink(ssrc_);
+ RTC_CHECK(sink_);
// TODO(deadbeef): If SetTrack is called with a disabled track, and the
// previous track was enabled, this could cause a frame from the new track
// to slip out. Really, what we need is for SetCaptureDevice and
@@ -295,6 +299,7 @@ bool VideoRtpSender::SetTrack(MediaStreamTrackInterface* track) {
provider_->SetCaptureDevice(ssrc_,
source ? source->GetVideoCapturer() : nullptr);
SetVideoSend();
+ track_->AddSink(sink_);
} else if (prev_can_send_track) {
provider_->SetCaptureDevice(ssrc_, nullptr);
provider_->SetVideoSend(ssrc_, false, nullptr);
@@ -310,6 +315,8 @@ void VideoRtpSender::SetSsrc(uint32_t ssrc) {
if (can_send_track()) {
provider_->SetCaptureDevice(ssrc_, nullptr);
provider_->SetVideoSend(ssrc_, false, nullptr);
+ track_->RemoveSink(sink_);
+ sink_ = nullptr;
}
ssrc_ = ssrc;
if (can_send_track()) {
@@ -317,6 +324,8 @@ void VideoRtpSender::SetSsrc(uint32_t ssrc) {
provider_->SetCaptureDevice(ssrc_,
source ? source->GetVideoCapturer() : nullptr);
SetVideoSend();
+ sink_ = provider_->GetSink(ssrc_);
+ track_->AddSink(sink_);
}
}
@@ -327,6 +336,9 @@ void VideoRtpSender::Stop() {
}
if (track_) {
track_->UnregisterObserver(this);
+ RTC_DCHECK(sink_);
+ RTC_DCHECK(sink_ == provider_->GetSink(ssrc_));
+ track_->RemoveSink(sink_);
}
if (can_send_track()) {
provider_->SetCaptureDevice(ssrc_, nullptr);

Powered by Google App Engine
This is Rietveld 408576698