Index: webrtc/video/video_send_stream.cc |
diff --git a/webrtc/video/video_send_stream.cc b/webrtc/video/video_send_stream.cc |
index c7280ed40fa74018eef9018a65917fc7a40c3663..8006580ed8c048796b4c86ec087bc2c9882ea4fd 100644 |
--- a/webrtc/video/video_send_stream.cc |
+++ b/webrtc/video/video_send_stream.cc |
@@ -28,6 +28,7 @@ |
#include "webrtc/video/video_capture_input.h" |
#include "webrtc/video/vie_channel.h" |
#include "webrtc/video/vie_encoder.h" |
+#include "webrtc/video/vie_remb.h" |
#include "webrtc/video_send_stream.h" |
namespace webrtc { |
@@ -125,6 +126,7 @@ VideoSendStream::VideoSendStream( |
ProcessThread* module_process_thread, |
CallStats* call_stats, |
CongestionController* congestion_controller, |
+ VieRemb* remb, |
BitrateAllocator* bitrate_allocator, |
const VideoSendStream::Config& config, |
const VideoEncoderConfig& encoder_config, |
@@ -139,6 +141,7 @@ VideoSendStream::VideoSendStream( |
module_process_thread_(module_process_thread), |
call_stats_(call_stats), |
congestion_controller_(congestion_controller), |
+ remb_(remb), |
overuse_detector_( |
Clock::GetRealTimeClock(), |
GetCpuOveruseOptions(config.encoder_settings.full_overuse_time), |
@@ -148,7 +151,12 @@ VideoSendStream::VideoSendStream( |
encoder_feedback_(new EncoderStateFeedback()), |
use_config_bitrate_(true) { |
LOG(LS_INFO) << "VideoSendStream: " << config_.ToString(); |
+ |
RTC_DCHECK(!config_.rtp.ssrcs.empty()); |
+ RTC_DCHECK(module_process_thread_); |
+ RTC_DCHECK(call_stats_); |
+ RTC_DCHECK(congestion_controller_); |
+ RTC_DCHECK(remb_); |
// Set up Call-wide sequence numbers, if configured for this send stream. |
TransportFeedbackObserver* transport_feedback_observer = nullptr; |
@@ -206,8 +214,9 @@ VideoSendStream::VideoSendStream( |
} |
} |
- congestion_controller_->SetChannelRembStatus(true, false, |
- vie_channel_->rtp_rtcp()); |
+ RtpRtcp* rtp_module = vie_channel_->rtp_rtcp(); |
+ remb_->AddRembSender(rtp_module); |
+ rtp_module->SetREMBStatus(true); |
// Enable NACK, FEC or both. |
const bool enable_protection_nack = config_.rtp.nack.rtp_history_ms > 0; |
@@ -249,7 +258,6 @@ VideoSendStream::VideoSendStream( |
if (config_.suspend_below_min_bitrate) |
vie_encoder_->SuspendBelowMinBitrate(); |
- congestion_controller_->AddEncoder(vie_encoder_.get()); |
encoder_feedback_->AddEncoder(ssrcs, vie_encoder_.get()); |
vie_channel_->RegisterSendChannelRtcpStatisticsCallback(&stats_proxy_); |
@@ -282,12 +290,13 @@ VideoSendStream::~VideoSendStream() { |
config_.encoder_settings.payload_type); |
call_stats_->DeregisterStatsObserver(vie_channel_->GetStatsObserver()); |
- congestion_controller_->SetChannelRembStatus(false, false, |
- vie_channel_->rtp_rtcp()); |
+ |
+ RtpRtcp* rtp_module = vie_channel_->rtp_rtcp(); |
+ rtp_module->SetREMBStatus(false); |
+ remb_->RemoveRembSender(rtp_module); |
// Remove the feedback, stop all encoding threads and processing. This must be |
// done before deleting the channel. |
- congestion_controller_->RemoveEncoder(vie_encoder_.get()); |
encoder_feedback_->RemoveEncoder(vie_encoder_.get()); |
uint32_t remote_ssrc = vie_channel_->GetRemoteSSRC(); |