Explicit injection of rate limiter in VideoSendStream.

Injecting the retransmission rate limiter used in video send stream
directly rather than using the transport controller reference.
This prepares for removing ownership of the retransmission rate limiter
from the congestion controller.

Bug: webrtc:8415
Change-Id: Iee8af53e62f407ee430625008f2d2b0cabb1f369
Reviewed-on: https://webrtc-review.googlesource.com/58800
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22251}
This commit is contained in:
Sebastian Jansson 2018-03-01 15:56:47 +01:00 committed by Commit Bot
parent 2cb26a6a84
commit 25e5110ab0
3 changed files with 24 additions and 20 deletions

View File

@ -703,7 +703,8 @@ webrtc::VideoSendStream* Call::CreateVideoSendStream(
call_stats_.get(), transport_send_.get(), bitrate_allocator_.get(),
video_send_delay_stats_.get(), event_log_, std::move(config),
std::move(encoder_config), suspended_video_send_ssrcs_,
suspended_video_payload_states_, std::move(fec_controller));
suspended_video_payload_states_, std::move(fec_controller),
transport_send_->GetRetransmissionRateLimiter());
{
WriteLockScoped write_lock(*send_crit_);

View File

@ -283,7 +283,8 @@ class VideoSendStreamImpl : public webrtc::BitrateAllocatorObserver,
std::map<uint32_t, RtpState> suspended_ssrcs,
std::map<uint32_t, RtpPayloadState> suspended_payload_states,
VideoEncoderConfig::ContentType content_type,
std::unique_ptr<FecController> fec_controller);
std::unique_ptr<FecController> fec_controller,
RateLimiter* retransmission_limiter);
~VideoSendStreamImpl() override;
// RegisterProcessThread register |module_process_thread| with those objects
@ -534,7 +535,8 @@ VideoSendStream::VideoSendStream(
VideoEncoderConfig encoder_config,
const std::map<uint32_t, RtpState>& suspended_ssrcs,
const std::map<uint32_t, RtpPayloadState>& suspended_payload_states,
std::unique_ptr<FecController> fec_controller)
std::unique_ptr<FecController> fec_controller,
RateLimiter* retransmission_limiter)
: worker_queue_(worker_queue),
thread_sync_event_(false /* manual_reset */, false),
stats_proxy_(Clock::GetRealTimeClock(),
@ -554,14 +556,14 @@ VideoSendStream::VideoSendStream(
worker_queue_->PostTask(rtc::NewClosure(
[this, call_stats, transport, bitrate_allocator, send_delay_stats,
event_log, &suspended_ssrcs, &encoder_config, &suspended_payload_states,
&fec_controller]() {
&fec_controller, retransmission_limiter]() {
send_stream_.reset(new VideoSendStreamImpl(
&stats_proxy_, worker_queue_, call_stats, transport,
bitrate_allocator, send_delay_stats, video_stream_encoder_.get(),
event_log, &config_, encoder_config.max_bitrate_bps,
encoder_config.bitrate_priority, suspended_ssrcs,
suspended_payload_states, encoder_config.content_type,
std::move(fec_controller)));
std::move(fec_controller), retransmission_limiter));
},
[this]() { thread_sync_event_.Set(); }));
@ -702,7 +704,8 @@ VideoSendStreamImpl::VideoSendStreamImpl(
std::map<uint32_t, RtpState> suspended_ssrcs,
std::map<uint32_t, RtpPayloadState> suspended_payload_states,
VideoEncoderConfig::ContentType content_type,
std::unique_ptr<FecController> fec_controller)
std::unique_ptr<FecController> fec_controller,
RateLimiter* retransmission_limiter)
: send_side_bwe_with_overhead_(
webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")),
stats_proxy_(stats_proxy),
@ -726,19 +729,18 @@ VideoSendStreamImpl::VideoSendStreamImpl(
config_->rtp.ssrcs,
video_stream_encoder),
bandwidth_observer_(transport->GetBandwidthObserver()),
rtp_rtcp_modules_(CreateRtpRtcpModules(
*config_,
&encoder_feedback_,
bandwidth_observer_,
transport,
call_stats_->rtcp_rtt_stats(),
flexfec_sender_.get(),
stats_proxy_,
send_delay_stats,
event_log,
transport->GetRetransmissionRateLimiter(),
this,
transport->keepalive_config())),
rtp_rtcp_modules_(CreateRtpRtcpModules(*config_,
&encoder_feedback_,
bandwidth_observer_,
transport,
call_stats_->rtcp_rtt_stats(),
flexfec_sender_.get(),
stats_proxy_,
send_delay_stats,
event_log,
retransmission_limiter,
this,
transport->keepalive_config())),
payload_router_(rtp_rtcp_modules_,
config_->rtp.ssrcs,
config_->encoder_settings.payload_type,

View File

@ -65,7 +65,8 @@ class VideoSendStream : public webrtc::VideoSendStream {
VideoEncoderConfig encoder_config,
const std::map<uint32_t, RtpState>& suspended_ssrcs,
const std::map<uint32_t, RtpPayloadState>& suspended_payload_states,
std::unique_ptr<FecController> fec_controller);
std::unique_ptr<FecController> fec_controller,
RateLimiter* retransmission_limiter);
~VideoSendStream() override;