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

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

Issue 1631703002: Make WebRtcVideoChannel2::WebRtcVideoSendStream implement rtc::VideoRendererInterface. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix PropagatesInputFrameTimestamp and ProducesIncreasingTimestampsWithResetInputSources. 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 72a9114eb4df315dcdbd85e1fdc792ad3ddb704d..293b3600754ee0dd456fa4bea4c44e476376c1f0 100644
--- a/talk/app/webrtc/rtpsender.cc
+++ b/talk/app/webrtc/rtpsender.cc
@@ -268,9 +268,17 @@ bool VideoRtpSender::SetTrack(MediaStreamTrackInterface* track) {
}
VideoTrackInterface* video_track = static_cast<VideoTrackInterface*>(track);
+ // TODO(nisse): To make code a little simpler, ensure that
+ // GetSink(0) returns NULL, and that AddSink and RemoveSink with
+ // NULL is safe.
+ rtc::VideoSinkInterface<cricket::VideoFrame>* sink =
+ provider_->GetSink(ssrc_);
+
// Detach from old track.
if (track_) {
track_->UnregisterObserver(this);
+ if (sink)
+ track_->RemoveSink(sink);
}
// Attach to new track.
@@ -279,6 +287,8 @@ bool VideoRtpSender::SetTrack(MediaStreamTrackInterface* track) {
if (track_) {
cached_track_enabled_ = track_->enabled();
track_->RegisterObserver(this);
+ if (sink)
+ video_track->AddSink(sink);
}
// Update video provider.
@@ -325,6 +335,14 @@ void VideoRtpSender::Stop() {
}
if (track_) {
track_->UnregisterObserver(this);
+
+ rtc::VideoSinkInterface<cricket::VideoFrame>* sink =
+ provider_->GetSink(ssrc_);
+ if (sink)
+ track_->RemoveSink(sink);
+ else
+ LOG(LS_ERROR)
+ << "VideoRtpSender::Stop called with a NULL sink. Too late???";
perkj_webrtc 2016/01/26 15:40:56 Is there ever a case when this is fine? If not- I
nisse-webrtc 2016/01/28 08:24:53 I think track_->RemoveSink(nullptr) will succeed a
}
if (can_send_track()) {
provider_->SetCaptureDevice(ssrc_, nullptr);

Powered by Google App Engine
This is Rietveld 408576698