Index: webrtc/call/call.cc |
diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc |
index d2bc153d32765f13d89d1a239b5a17c5e7c15c88..2af817149efec091a6f72622220a9f611ff2dd94 100644 |
--- a/webrtc/call/call.cc |
+++ b/webrtc/call/call.cc |
@@ -213,6 +213,9 @@ class Call : public webrtc::Call, |
std::map<std::string, rtc::NetworkRoute> network_routes_; |
VieRemb remb_; |
+ PacketRouter packet_router_; |
+ // TODO(nisse): Could be a direct member, except for constness |
+ // issues with GetRemoteBitrateEstimator (and maybe others). |
const std::unique_ptr<CongestionController> congestion_controller_; |
const std::unique_ptr<SendDelayStats> video_send_delay_stats_; |
const int64_t start_ms_; |
@@ -267,8 +270,11 @@ Call::Call(const Call::Config& config) |
estimated_send_bitrate_kbps_counter_(clock_, nullptr, true), |
pacer_bitrate_kbps_counter_(clock_, nullptr, true), |
remb_(clock_), |
- congestion_controller_( |
- new CongestionController(clock_, this, &remb_, event_log_)), |
+ congestion_controller_(new CongestionController(clock_, |
+ this, |
+ &remb_, |
+ event_log_, |
+ &packet_router_)), |
video_send_delay_stats_(new SendDelayStats(clock_)), |
start_ms_(clock_->TimeInMilliseconds()), |
worker_queue_("call_worker_queue") { |
@@ -412,8 +418,8 @@ webrtc::AudioSendStream* Call::CreateAudioSendStream( |
RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); |
event_log_->LogAudioSendStreamConfig(config); |
AudioSendStream* send_stream = new AudioSendStream( |
- config, config_.audio_state, &worker_queue_, congestion_controller_.get(), |
- bitrate_allocator_.get(), event_log_); |
+ config, config_.audio_state, &worker_queue_, &packet_router_, |
+ congestion_controller_.get(), bitrate_allocator_.get(), event_log_); |
{ |
WriteLockScoped write_lock(*send_crit_); |
RTC_DCHECK(audio_send_ssrcs_.find(config.rtp.ssrc) == |
@@ -466,7 +472,10 @@ webrtc::AudioReceiveStream* Call::CreateAudioReceiveStream( |
RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); |
event_log_->LogAudioReceiveStreamConfig(config); |
AudioReceiveStream* receive_stream = new AudioReceiveStream( |
- congestion_controller_.get(), config, config_.audio_state, event_log_); |
+ &packet_router_, |
+ // TODO(nisse): Used only when UseSendSideBwe(config) is true. |
+ congestion_controller_->GetRemoteBitrateEstimator(true), config, |
+ config_.audio_state, event_log_); |
{ |
WriteLockScoped write_lock(*receive_crit_); |
RTC_DCHECK(audio_receive_ssrcs_.find(config.rtp.remote_ssrc) == |
@@ -525,9 +534,10 @@ webrtc::VideoSendStream* Call::CreateVideoSendStream( |
std::vector<uint32_t> ssrcs = config.rtp.ssrcs; |
VideoSendStream* send_stream = new VideoSendStream( |
num_cpu_cores_, module_process_thread_.get(), &worker_queue_, |
- call_stats_.get(), congestion_controller_.get(), bitrate_allocator_.get(), |
- video_send_delay_stats_.get(), &remb_, event_log_, std::move(config), |
- std::move(encoder_config), suspended_video_send_ssrcs_); |
+ call_stats_.get(), congestion_controller_.get(), &packet_router_, |
+ bitrate_allocator_.get(), video_send_delay_stats_.get(), &remb_, |
+ event_log_, std::move(config), std::move(encoder_config), |
+ suspended_video_send_ssrcs_); |
{ |
WriteLockScoped write_lock(*send_crit_); |
@@ -583,8 +593,9 @@ webrtc::VideoReceiveStream* Call::CreateVideoReceiveStream( |
TRACE_EVENT0("webrtc", "Call::CreateVideoReceiveStream"); |
RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); |
VideoReceiveStream* receive_stream = new VideoReceiveStream( |
- num_cpu_cores_, congestion_controller_.get(), std::move(configuration), |
- voice_engine(), module_process_thread_.get(), call_stats_.get(), &remb_); |
+ num_cpu_cores_, congestion_controller_.get(), &packet_router_, |
+ std::move(configuration), voice_engine(), module_process_thread_.get(), |
+ call_stats_.get(), &remb_); |
const webrtc::VideoReceiveStream::Config& config = receive_stream->config(); |
{ |