Index: webrtc/api/rtpsender.cc |
diff --git a/webrtc/api/rtpsender.cc b/webrtc/api/rtpsender.cc |
index a7537867e26f2bb4104e64f4350d52eb7b6bca3f..439a00fd2efe0d8e3f7239b32a5ff676cfe397bf 100644 |
--- a/webrtc/api/rtpsender.cc |
+++ b/webrtc/api/rtpsender.cc |
@@ -276,19 +276,9 @@ bool VideoRtpSender::SetTrack(MediaStreamTrackInterface* track) { |
// Update video provider. |
if (can_send_track()) { |
- VideoTrackSourceInterface* source = track_->GetSource(); |
- // 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 |
- // SetVideoSend |
- // to be combined into one atomic operation, all the way down to |
- // WebRtcVideoSendStream. |
- provider_->SetCaptureDevice(ssrc_, |
- source ? source->GetVideoCapturer() : nullptr); |
SetVideoSend(); |
} else if (prev_can_send_track) { |
- provider_->SetCaptureDevice(ssrc_, nullptr); |
- provider_->SetVideoSend(ssrc_, false, nullptr); |
+ provider_->SetVideoSend(ssrc_, false, nullptr, nullptr); |
} |
return true; |
} |
@@ -299,14 +289,10 @@ void VideoRtpSender::SetSsrc(uint32_t ssrc) { |
} |
// If we are already sending with a particular SSRC, stop sending. |
if (can_send_track()) { |
- provider_->SetCaptureDevice(ssrc_, nullptr); |
- provider_->SetVideoSend(ssrc_, false, nullptr); |
+ provider_->SetVideoSend(ssrc_, false, nullptr, nullptr); |
} |
ssrc_ = ssrc; |
if (can_send_track()) { |
- VideoTrackSourceInterface* source = track_->GetSource(); |
- provider_->SetCaptureDevice(ssrc_, |
- source ? source->GetVideoCapturer() : nullptr); |
SetVideoSend(); |
} |
} |
@@ -320,8 +306,7 @@ void VideoRtpSender::Stop() { |
track_->UnregisterObserver(this); |
} |
if (can_send_track()) { |
- provider_->SetCaptureDevice(ssrc_, nullptr); |
- provider_->SetVideoSend(ssrc_, false, nullptr); |
+ provider_->SetVideoSend(ssrc_, false, nullptr, nullptr); |
} |
stopped_ = true; |
} |
@@ -335,7 +320,8 @@ void VideoRtpSender::SetVideoSend() { |
options.video_noise_reduction = |
rtc::Optional<bool>(source->needs_denoising()); |
} |
- provider_->SetVideoSend(ssrc_, track_->enabled(), &options); |
+ provider_->SetVideoSend(ssrc_, track_->enabled(), &options, |
+ source ? source->GetVideoCapturer() : nullptr); |
} |
RtpParameters VideoRtpSender::GetParameters() const { |