Removing access to pacer in rtp controller.

Bug: webrt:8415
Change-Id: I1f318c41c3913acb573affb4520e128bef7efa02
Reviewed-on: https://webrtc-review.googlesource.com/53900
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#22049}
This commit is contained in:
Sebastian Jansson
2018-02-15 16:51:58 +01:00
committed by Commit Bot
parent 08ff1733fb
commit 4c1ffb86c0
8 changed files with 29 additions and 18 deletions

View File

@ -19,7 +19,6 @@
#include "audio/conversion.h" #include "audio/conversion.h"
#include "call/rtp_transport_controller_send_interface.h" #include "call/rtp_transport_controller_send_interface.h"
#include "modules/audio_coding/codecs/cng/audio_encoder_cng.h" #include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
#include "modules/pacing/paced_sender.h"
#include "rtc_base/checks.h" #include "rtc_base/checks.h"
#include "rtc_base/event.h" #include "rtc_base/event.h"
#include "rtc_base/function_view.h" #include "rtc_base/function_view.h"

View File

@ -464,7 +464,8 @@ Call::Call(const Call::Config& config,
// We have to attach the pacer to the pacer thread before starting the // We have to attach the pacer to the pacer thread before starting the
// module process thread to avoid a race accessing the process thread // module process thread to avoid a race accessing the process thread
// both from the process thread and the pacer thread. // both from the process thread and the pacer thread.
pacer_thread_->RegisterModule(transport_send_->pacer(), RTC_FROM_HERE); pacer_thread_->RegisterModule(transport_send_->GetPacerModule(),
RTC_FROM_HERE);
pacer_thread_->RegisterModule( pacer_thread_->RegisterModule(
receive_side_cc_.GetRemoteBitrateEstimator(true), RTC_FROM_HERE); receive_side_cc_.GetRemoteBitrateEstimator(true), RTC_FROM_HERE);
pacer_thread_->Start(); pacer_thread_->Start();
@ -491,7 +492,7 @@ Call::~Call() {
// the pacer thread is stopped. // the pacer thread is stopped.
module_process_thread_->DeRegisterModule(transport_send_->GetModule()); module_process_thread_->DeRegisterModule(transport_send_->GetModule());
pacer_thread_->Stop(); pacer_thread_->Stop();
pacer_thread_->DeRegisterModule(transport_send_->pacer()); pacer_thread_->DeRegisterModule(transport_send_->GetPacerModule());
pacer_thread_->DeRegisterModule( pacer_thread_->DeRegisterModule(
receive_side_cc_.GetRemoteBitrateEstimator(true)); receive_side_cc_.GetRemoteBitrateEstimator(true));
module_process_thread_->DeRegisterModule(&receive_side_cc_); module_process_thread_->DeRegisterModule(&receive_side_cc_);

View File

@ -37,8 +37,6 @@ class FakeRtpTransportControllerSend
return send_side_cc_; return send_side_cc_;
} }
PacedSender* pacer() override { return paced_sender_; }
RtpPacketSender* packet_sender() override { return paced_sender_; } RtpPacketSender* packet_sender() override { return paced_sender_; }
const RtpKeepAliveConfig& keepalive_config() const override { const RtpKeepAliveConfig& keepalive_config() const override {
@ -52,6 +50,13 @@ class FakeRtpTransportControllerSend
keepalive_ = keepalive_config; keepalive_ = keepalive_config;
} }
Module* GetPacerModule() override { return paced_sender_; }
void SetPacingFactor(float pacing_factor) override {
paced_sender_->SetPacingFactor(pacing_factor);
}
void SetQueueTimeLimit(int limit_ms) override {
paced_sender_->SetQueueTimeLimit(limit_ms);
}
Module* GetModule() override { return send_side_cc_; } Module* GetModule() override { return send_side_cc_; }
CallStatsObserver* GetCallStatsObserver() override { return send_side_cc_; } CallStatsObserver* GetCallStatsObserver() override { return send_side_cc_; }
void RegisterPacketFeedbackObserver( void RegisterPacketFeedbackObserver(

View File

@ -22,10 +22,6 @@ PacketRouter* RtpTransportControllerSend::packet_router() {
return &packet_router_; return &packet_router_;
} }
PacedSender* RtpTransportControllerSend::pacer() {
return &pacer_;
}
TransportFeedbackObserver* TransportFeedbackObserver*
RtpTransportControllerSend::transport_feedback_observer() { RtpTransportControllerSend::transport_feedback_observer() {
return &send_side_cc_; return &send_side_cc_;
@ -49,6 +45,15 @@ void RtpTransportControllerSend::SetKeepAliveConfig(
const RtpKeepAliveConfig& config) { const RtpKeepAliveConfig& config) {
keepalive_ = config; keepalive_ = config;
} }
Module* RtpTransportControllerSend::GetPacerModule() {
return &pacer_;
}
void RtpTransportControllerSend::SetPacingFactor(float pacing_factor) {
pacer_.SetPacingFactor(pacing_factor);
}
void RtpTransportControllerSend::SetQueueTimeLimit(int limit_ms) {
pacer_.SetQueueTimeLimit(limit_ms);
}
Module* RtpTransportControllerSend::GetModule() { Module* RtpTransportControllerSend::GetModule() {
return &send_side_cc_; return &send_side_cc_;
} }

View File

@ -30,11 +30,7 @@ class RtpTransportControllerSend : public RtpTransportControllerSendInterface {
// Implements RtpTransportControllerSendInterface // Implements RtpTransportControllerSendInterface
PacketRouter* packet_router() override; PacketRouter* packet_router() override;
// TODO(holmer): Temporarily exposed, should be removed and the
// appropriate methods should be added to this class instead.
// In addition the PacedSender should be driven by this class, either
// by owning the process thread, or later by using a task queue.
PacedSender* pacer() override;
TransportFeedbackObserver* transport_feedback_observer() override; TransportFeedbackObserver* transport_feedback_observer() override;
RtpPacketSender* packet_sender() override; RtpPacketSender* packet_sender() override;
const RtpKeepAliveConfig& keepalive_config() const override; const RtpKeepAliveConfig& keepalive_config() const override;
@ -43,6 +39,9 @@ class RtpTransportControllerSend : public RtpTransportControllerSendInterface {
int max_padding_bitrate_bps) override; int max_padding_bitrate_bps) override;
void SetKeepAliveConfig(const RtpKeepAliveConfig& config); void SetKeepAliveConfig(const RtpKeepAliveConfig& config);
Module* GetPacerModule() override;
void SetPacingFactor(float pacing_factor) override;
void SetQueueTimeLimit(int limit_ms) override;
Module* GetModule() override; Module* GetModule() override;
CallStatsObserver* GetCallStatsObserver() override; CallStatsObserver* GetCallStatsObserver() override;
void RegisterPacketFeedbackObserver( void RegisterPacketFeedbackObserver(

View File

@ -58,7 +58,6 @@ class RtpTransportControllerSendInterface {
public: public:
virtual ~RtpTransportControllerSendInterface() {} virtual ~RtpTransportControllerSendInterface() {}
virtual PacketRouter* packet_router() = 0; virtual PacketRouter* packet_router() = 0;
virtual PacedSender* pacer() = 0;
virtual TransportFeedbackObserver* transport_feedback_observer() = 0; virtual TransportFeedbackObserver* transport_feedback_observer() = 0;
virtual RtpPacketSender* packet_sender() = 0; virtual RtpPacketSender* packet_sender() = 0;
@ -76,6 +75,10 @@ class RtpTransportControllerSendInterface {
virtual void SetAllocatedSendBitrateLimits(int min_send_bitrate_bps, virtual void SetAllocatedSendBitrateLimits(int min_send_bitrate_bps,
int max_padding_bitrate_bps) = 0; int max_padding_bitrate_bps) = 0;
virtual Module* GetPacerModule() = 0;
virtual void SetPacingFactor(float pacing_factor) = 0;
virtual void SetQueueTimeLimit(int limit_ms) = 0;
virtual Module* GetModule() = 0; virtual Module* GetModule() = 0;
virtual CallStatsObserver* GetCallStatsObserver() = 0; virtual CallStatsObserver* GetCallStatsObserver() = 0;

View File

@ -838,9 +838,9 @@ VideoSendStreamImpl::VideoSendStreamImpl(
} }
if (alr_settings) { if (alr_settings) {
transport->EnablePeriodicAlrProbing(true); transport->EnablePeriodicAlrProbing(true);
transport->pacer()->SetPacingFactor(alr_settings->pacing_factor); transport->SetPacingFactor(alr_settings->pacing_factor);
configured_pacing_factor_ = alr_settings->pacing_factor; configured_pacing_factor_ = alr_settings->pacing_factor;
transport->pacer()->SetQueueTimeLimit(alr_settings->max_paced_queue_time); transport->SetQueueTimeLimit(alr_settings->max_paced_queue_time);
} }
} }

View File

@ -18,7 +18,6 @@
#include "api/video/i420_buffer.h" #include "api/video/i420_buffer.h"
#include "common_video/include/video_bitrate_allocator.h" #include "common_video/include/video_bitrate_allocator.h"
#include "common_video/include/video_frame.h" #include "common_video/include/video_frame.h"
#include "modules/pacing/paced_sender.h"
#include "modules/video_coding/include/video_codec_initializer.h" #include "modules/video_coding/include/video_codec_initializer.h"
#include "modules/video_coding/include/video_coding.h" #include "modules/video_coding/include/video_coding.h"
#include "modules/video_coding/include/video_coding_defines.h" #include "modules/video_coding/include/video_coding_defines.h"