Move PacedSender ownership to RtpTransportControllerSend.
BUG=webrtc:8089
R=nisse@webrtc.org, terelius@webrtc.org
Review-Url: https://codereview.webrtc.org/3000773002 .
Cr-Original-Commit-Position: refs/heads/master@{#19451}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 5c8942aee1f2003bd43c8e4427fb74e6f1015fc1
diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc
index bec696b..1308657 100644
--- a/audio/audio_send_stream_unittest.cc
+++ b/audio/audio_send_stream_unittest.cc
@@ -22,7 +22,7 @@
#include "webrtc/modules/audio_processing/include/mock_audio_processing.h"
#include "webrtc/modules/congestion_controller/include/mock/mock_congestion_observer.h"
#include "webrtc/modules/congestion_controller/include/send_side_congestion_controller.h"
-#include "webrtc/modules/pacing/paced_sender.h"
+#include "webrtc/modules/pacing/mock/mock_paced_sender.h"
#include "webrtc/modules/rtp_rtcp/mocks/mock_rtcp_rtt_stats.h"
#include "webrtc/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h"
#include "webrtc/rtc_base/ptr_util.h"
@@ -139,8 +139,8 @@
&simulated_clock_,
nullptr /* observer */,
&event_log_,
- &packet_router_)),
- fake_transport_(&packet_router_, send_side_cc_.get()),
+ &pacer_)),
+ fake_transport_(&packet_router_, &pacer_, send_side_cc_.get()),
bitrate_allocator_(&limit_observer_),
worker_queue_("ConfigHelper_worker_queue"),
audio_encoder_(nullptr) {
@@ -335,6 +335,7 @@
AudioProcessing::AudioProcessingStatistics audio_processing_stats_;
SimulatedClock simulated_clock_;
PacketRouter packet_router_;
+ testing::NiceMock<MockPacedSender> pacer_;
std::unique_ptr<SendSideCongestionController> send_side_cc_;
FakeRtpTransportControllerSend fake_transport_;
MockRtcEventLog event_log_;
diff --git a/call/call.cc b/call/call.cc
index 1b5bc45..16ee1cd 100644
--- a/call/call.cc
+++ b/call/call.cc
@@ -30,7 +30,6 @@
#include "webrtc/logging/rtc_event_log/rtc_event_log.h"
#include "webrtc/modules/bitrate_controller/include/bitrate_controller.h"
#include "webrtc/modules/congestion_controller/include/receive_side_congestion_controller.h"
-#include "webrtc/modules/pacing/paced_sender.h"
#include "webrtc/modules/rtp_rtcp/include/flexfec_receiver.h"
#include "webrtc/modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h"
@@ -438,8 +437,7 @@
// We have to attach the pacer to the pacer thread before starting the
// module process thread to avoid a race accessing the process thread
// both from the process thread and the pacer thread.
- pacer_thread_->RegisterModule(transport_send_->send_side_cc()->pacer(),
- RTC_FROM_HERE);
+ pacer_thread_->RegisterModule(transport_send_->pacer(), RTC_FROM_HERE);
pacer_thread_->RegisterModule(
receive_side_cc_.GetRemoteBitrateEstimator(true), RTC_FROM_HERE);
pacer_thread_->Start();
@@ -466,7 +464,7 @@
// the pacer thread is stopped.
module_process_thread_->DeRegisterModule(transport_send_->send_side_cc());
pacer_thread_->Stop();
- pacer_thread_->DeRegisterModule(transport_send_->send_side_cc()->pacer());
+ pacer_thread_->DeRegisterModule(transport_send_->pacer());
pacer_thread_->DeRegisterModule(
receive_side_cc_.GetRemoteBitrateEstimator(true));
module_process_thread_->DeRegisterModule(&receive_side_cc_);
@@ -1198,8 +1196,8 @@
void Call::OnAllocationLimitsChanged(uint32_t min_send_bitrate_bps,
uint32_t max_padding_bitrate_bps) {
- transport_send_->send_side_cc()->SetAllocatedSendBitrateLimits(
- min_send_bitrate_bps, max_padding_bitrate_bps);
+ transport_send_->SetAllocatedSendBitrateLimits(min_send_bitrate_bps,
+ max_padding_bitrate_bps);
rtc::CritScope lock(&bitrate_crit_);
min_allocated_send_bitrate_bps_ = min_send_bitrate_bps;
configured_max_padding_bitrate_bps_ = max_padding_bitrate_bps;
diff --git a/call/call_unittest.cc b/call/call_unittest.cc
index 75e5008..e342dfa 100644
--- a/call/call_unittest.cc
+++ b/call/call_unittest.cc
@@ -21,6 +21,7 @@
#include "webrtc/modules/audio_device/include/mock_audio_device.h"
#include "webrtc/modules/audio_mixer/audio_mixer_impl.h"
#include "webrtc/modules/congestion_controller/include/mock/mock_send_side_congestion_controller.h"
+#include "webrtc/modules/pacing/mock/mock_paced_sender.h"
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
#include "webrtc/rtc_base/ptr_util.h"
#include "webrtc/test/fake_encoder.h"
@@ -324,12 +325,12 @@
CallBitrateHelper() : CallBitrateHelper(Call::Config::BitrateConfig()) {}
explicit CallBitrateHelper(const Call::Config::BitrateConfig& bitrate_config)
- : mock_cc_(Clock::GetRealTimeClock(), &event_log_, &packet_router_) {
+ : mock_cc_(Clock::GetRealTimeClock(), &event_log_, &pacer_) {
Call::Config config(&event_log_);
config.bitrate_config = bitrate_config;
call_.reset(
Call::Create(config, rtc::MakeUnique<FakeRtpTransportControllerSend>(
- &packet_router_, &mock_cc_)));
+ &packet_router_, &pacer_, &mock_cc_)));
}
webrtc::Call* operator->() { return call_.get(); }
@@ -340,6 +341,7 @@
private:
webrtc::RtcEventLogNullImpl event_log_;
PacketRouter packet_router_;
+ testing::NiceMock<MockPacedSender> pacer_;
testing::NiceMock<test::MockSendSideCongestionController> mock_cc_;
std::unique_ptr<Call> call_;
};
diff --git a/call/fake_rtp_transport_controller_send.h b/call/fake_rtp_transport_controller_send.h
index ac612ce..6cff173 100644
--- a/call/fake_rtp_transport_controller_send.h
+++ b/call/fake_rtp_transport_controller_send.h
@@ -23,8 +23,11 @@
public:
explicit FakeRtpTransportControllerSend(
PacketRouter* packet_router,
+ PacedSender* paced_sender,
SendSideCongestionController* send_side_cc)
- : packet_router_(packet_router), send_side_cc_(send_side_cc) {
+ : packet_router_(packet_router),
+ paced_sender_(paced_sender),
+ send_side_cc_(send_side_cc) {
RTC_DCHECK(send_side_cc);
}
@@ -38,18 +41,24 @@
return send_side_cc_;
}
- RtpPacketSender* packet_sender() override { return send_side_cc_->pacer(); }
+ PacedSender* pacer() override { return paced_sender_; }
+
+ RtpPacketSender* packet_sender() override { return paced_sender_; }
const RtpKeepAliveConfig& keepalive_config() const override {
return keepalive_;
}
+ void SetAllocatedSendBitrateLimits(int min_send_bitrate_bps,
+ int max_padding_bitrate_bps) override {}
+
void set_keepalive_config(const RtpKeepAliveConfig& keepalive_config) {
keepalive_ = keepalive_config;
}
private:
PacketRouter* packet_router_;
+ PacedSender* paced_sender_;
SendSideCongestionController* send_side_cc_;
RtpKeepAliveConfig keepalive_;
};
diff --git a/call/rtp_transport_controller_send.cc b/call/rtp_transport_controller_send.cc
index b8b65a0..ec061d0 100644
--- a/call/rtp_transport_controller_send.cc
+++ b/call/rtp_transport_controller_send.cc
@@ -15,13 +15,17 @@
RtpTransportControllerSend::RtpTransportControllerSend(
Clock* clock,
webrtc::RtcEventLog* event_log)
- : send_side_cc_(clock, nullptr /* observer */, event_log, &packet_router_) {
-}
+ : pacer_(clock, &packet_router_, event_log),
+ send_side_cc_(clock, nullptr /* observer */, event_log, &pacer_) {}
PacketRouter* RtpTransportControllerSend::packet_router() {
return &packet_router_;
}
+PacedSender* RtpTransportControllerSend::pacer() {
+ return &pacer_;
+}
+
SendSideCongestionController* RtpTransportControllerSend::send_side_cc() {
return &send_side_cc_;
}
@@ -32,13 +36,19 @@
}
RtpPacketSender* RtpTransportControllerSend::packet_sender() {
- return send_side_cc_.pacer();
+ return &pacer_;
}
const RtpKeepAliveConfig& RtpTransportControllerSend::keepalive_config() const {
return keepalive_;
}
+void RtpTransportControllerSend::SetAllocatedSendBitrateLimits(
+ int min_send_bitrate_bps,
+ int max_padding_bitrate_bps) {
+ pacer_.SetSendBitrateLimits(min_send_bitrate_bps, max_padding_bitrate_bps);
+}
+
void RtpTransportControllerSend::SetKeepAliveConfig(
const RtpKeepAliveConfig& config) {
keepalive_ = config;
diff --git a/call/rtp_transport_controller_send.h b/call/rtp_transport_controller_send.h
index 28e0b2d..766a2e3 100644
--- a/call/rtp_transport_controller_send.h
+++ b/call/rtp_transport_controller_send.h
@@ -29,15 +29,24 @@
// Implements RtpTransportControllerSendInterface
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;
SendSideCongestionController* send_side_cc() override;
TransportFeedbackObserver* transport_feedback_observer() override;
RtpPacketSender* packet_sender() override;
const RtpKeepAliveConfig& keepalive_config() const override;
+ void SetAllocatedSendBitrateLimits(int min_send_bitrate_bps,
+ int max_padding_bitrate_bps) override;
+
void SetKeepAliveConfig(const RtpKeepAliveConfig& config);
private:
PacketRouter packet_router_;
+ PacedSender pacer_;
SendSideCongestionController send_side_cc_;
RtpKeepAliveConfig keepalive_;
diff --git a/call/rtp_transport_controller_send_interface.h b/call/rtp_transport_controller_send_interface.h
index bd71da0..b580421 100644
--- a/call/rtp_transport_controller_send_interface.h
+++ b/call/rtp_transport_controller_send_interface.h
@@ -13,6 +13,7 @@
namespace webrtc {
+class PacedSender;
class PacketRouter;
class RtpPacketSender;
struct RtpKeepAliveConfig;
@@ -46,12 +47,25 @@
public:
virtual ~RtpTransportControllerSendInterface() {}
virtual PacketRouter* packet_router() = 0;
+ virtual PacedSender* pacer() = 0;
// Currently returning the same pointer, but with different types.
virtual SendSideCongestionController* send_side_cc() = 0;
virtual TransportFeedbackObserver* transport_feedback_observer() = 0;
virtual RtpPacketSender* packet_sender() = 0;
virtual const RtpKeepAliveConfig& keepalive_config() const = 0;
+
+ // SetAllocatedSendBitrateLimits sets bitrates limits imposed by send codec
+ // settings.
+ // |min_send_bitrate_bps| is the total minimum send bitrate required by all
+ // sending streams. This is the minimum bitrate the PacedSender will use.
+ // Note that SendSideCongestionController::OnNetworkChanged can still be
+ // called with a lower bitrate estimate. |max_padding_bitrate_bps| is the max
+ // bitrate the send streams request for padding. This can be higher than the
+ // current network estimate and tells the PacedSender how much it should max
+ // pad unless there is real packets to send.
+ virtual void SetAllocatedSendBitrateLimits(int min_send_bitrate_bps,
+ int max_padding_bitrate_bps) = 0;
};
} // namespace webrtc
diff --git a/modules/congestion_controller/include/mock/mock_send_side_congestion_controller.h b/modules/congestion_controller/include/mock/mock_send_side_congestion_controller.h
index e71ec8f..899a960 100644
--- a/modules/congestion_controller/include/mock/mock_send_side_congestion_controller.h
+++ b/modules/congestion_controller/include/mock/mock_send_side_congestion_controller.h
@@ -21,11 +21,11 @@
public:
MockSendSideCongestionController(const Clock* clock,
RtcEventLog* event_log,
- PacketRouter* packet_router)
+ PacedSender* paced_sender)
: SendSideCongestionController(clock,
nullptr /* observer */,
event_log,
- packet_router) {}
+ paced_sender) {}
MOCK_METHOD3(SetBweBitrates,
void(int min_bitrate_bps,
diff --git a/modules/congestion_controller/include/send_side_congestion_controller.h b/modules/congestion_controller/include/send_side_congestion_controller.h
index 1d576aa..490711f 100644
--- a/modules/congestion_controller/include/send_side_congestion_controller.h
+++ b/modules/congestion_controller/include/send_side_congestion_controller.h
@@ -58,16 +58,17 @@
protected:
virtual ~Observer() {}
};
+ // TODO(holmer): Delete after fixing upstream projects.
+ RTC_DEPRECATED SendSideCongestionController(const Clock* clock,
+ Observer* observer,
+ RtcEventLog* event_log,
+ PacketRouter* packet_router);
// TODO(nisse): Consider deleting the |observer| argument to constructors
// once CongestionController is deleted.
SendSideCongestionController(const Clock* clock,
Observer* observer,
RtcEventLog* event_log,
- PacketRouter* packet_router);
- SendSideCongestionController(const Clock* clock,
- Observer* observer,
- RtcEventLog* event_log,
- std::unique_ptr<PacedSender> pacer);
+ PacedSender* pacer);
~SendSideCongestionController() override;
void RegisterPacketFeedbackObserver(PacketFeedbackObserver* observer);
@@ -91,26 +92,12 @@
virtual BitrateController* GetBitrateController() const;
virtual int64_t GetPacerQueuingDelayMs() const;
virtual int64_t GetFirstPacketTimeMs() const;
- // TODO(nisse): Delete this accessor function. The pacer should be
- // internal to the congestion controller.
- virtual PacedSender* pacer();
+
virtual TransportFeedbackObserver* GetTransportFeedbackObserver();
RateLimiter* GetRetransmissionRateLimiter();
void EnablePeriodicAlrProbing(bool enable);
- // SetAllocatedSendBitrateLimits sets bitrates limits imposed by send codec
- // settings.
- // |min_send_bitrate_bps| is the total minimum send bitrate required by all
- // sending streams. This is the minimum bitrate the PacedSender will use.
- // Note that SendSideCongestionController::OnNetworkChanged can still be
- // called with a lower bitrate estimate. |max_padding_bitrate_bps| is the max
- // bitrate the send streams request for padding. This can be higher than the
- // current network estimate and tells the PacedSender how much it should max
- // pad unless there is real packets to send.
- void SetAllocatedSendBitrateLimits(int min_send_bitrate_bps,
- int max_padding_bitrate_bps);
-
virtual void OnSentPacket(const rtc::SentPacket& sent_packet);
// Implements CallStatsObserver.
@@ -141,7 +128,8 @@
rtc::CriticalSection observer_lock_;
Observer* observer_ GUARDED_BY(observer_lock_);
RtcEventLog* const event_log_;
- const std::unique_ptr<PacedSender> pacer_;
+ std::unique_ptr<PacedSender> owned_pacer_;
+ PacedSender* pacer_;
const std::unique_ptr<BitrateController> bitrate_controller_;
std::unique_ptr<AcknowledgedBitrateEstimator> acknowledged_bitrate_estimator_;
const std::unique_ptr<ProbeController> probe_controller_;
diff --git a/modules/congestion_controller/send_side_congestion_controller.cc b/modules/congestion_controller/send_side_congestion_controller.cc
index 77203d6..c8fc990 100644
--- a/modules/congestion_controller/send_side_congestion_controller.cc
+++ b/modules/congestion_controller/send_side_congestion_controller.cc
@@ -98,27 +98,54 @@
Observer* observer,
RtcEventLog* event_log,
PacketRouter* packet_router)
- : SendSideCongestionController(
- clock,
- observer,
- event_log,
- std::unique_ptr<PacedSender>(
- new PacedSender(clock, packet_router, event_log))) {}
+ : clock_(clock),
+ observer_(observer),
+ event_log_(event_log),
+ owned_pacer_(
+ rtc::MakeUnique<PacedSender>(clock, packet_router, event_log)),
+ pacer_(owned_pacer_.get()),
+ bitrate_controller_(
+ BitrateController::CreateBitrateController(clock_, event_log)),
+ acknowledged_bitrate_estimator_(
+ rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
+ probe_controller_(new ProbeController(pacer_, clock_)),
+ retransmission_rate_limiter_(
+ new RateLimiter(clock, kRetransmitWindowSizeMs)),
+ transport_feedback_adapter_(clock_),
+ last_reported_bitrate_bps_(0),
+ last_reported_fraction_loss_(0),
+ last_reported_rtt_(0),
+ network_state_(kNetworkUp),
+ pause_pacer_(false),
+ pacer_paused_(false),
+ min_bitrate_bps_(congestion_controller::GetMinBitrateBps()),
+ delay_based_bwe_(new DelayBasedBwe(event_log_, clock_)),
+ in_cwnd_experiment_(CwndExperimentEnabled()),
+ accepted_queue_ms_(kDefaultAcceptedQueueMs),
+ was_in_alr_(0) {
+ delay_based_bwe_->SetMinBitrate(min_bitrate_bps_);
+ if (in_cwnd_experiment_ &&
+ !ReadCwndExperimentParameter(&accepted_queue_ms_)) {
+ LOG(LS_WARNING) << "Failed to parse parameters for CwndExperiment "
+ "from field trial string. Experiment disabled.";
+ in_cwnd_experiment_ = false;
+ }
+}
SendSideCongestionController::SendSideCongestionController(
const Clock* clock,
Observer* observer,
RtcEventLog* event_log,
- std::unique_ptr<PacedSender> pacer)
+ PacedSender* pacer)
: clock_(clock),
observer_(observer),
event_log_(event_log),
- pacer_(std::move(pacer)),
+ pacer_(pacer),
bitrate_controller_(
BitrateController::CreateBitrateController(clock_, event_log)),
acknowledged_bitrate_estimator_(
rtc::MakeUnique<AcknowledgedBitrateEstimator>()),
- probe_controller_(new ProbeController(pacer_.get(), clock_)),
+ probe_controller_(new ProbeController(pacer_, clock_)),
retransmission_rate_limiter_(
new RateLimiter(clock, kRetransmitWindowSizeMs)),
transport_feedback_adapter_(clock_),
@@ -229,12 +256,6 @@
probe_controller_->EnablePeriodicAlrProbing(enable);
}
-void SendSideCongestionController::SetAllocatedSendBitrateLimits(
- int min_send_bitrate_bps,
- int max_padding_bitrate_bps) {
- pacer_->SetSendBitrateLimits(min_send_bitrate_bps, max_padding_bitrate_bps);
-}
-
int64_t SendSideCongestionController::GetPacerQueuingDelayMs() const {
return IsNetworkDown() ? 0 : pacer_->QueueInMs();
}
@@ -243,10 +264,6 @@
return pacer_->FirstSentPacketTimeMs();
}
-PacedSender* SendSideCongestionController::pacer() {
- return pacer_.get();
-}
-
TransportFeedbackObserver*
SendSideCongestionController::GetTransportFeedbackObserver() {
return this;
diff --git a/modules/congestion_controller/send_side_congestion_controller_unittest.cc b/modules/congestion_controller/send_side_congestion_controller_unittest.cc
index f3f09f3..07c0e39 100644
--- a/modules/congestion_controller/send_side_congestion_controller_unittest.cc
+++ b/modules/congestion_controller/send_side_congestion_controller_unittest.cc
@@ -54,10 +54,9 @@
~SendSideCongestionControllerTest() override {}
void SetUp() override {
- pacer_ = new NiceMock<MockPacedSender>();
- std::unique_ptr<PacedSender> pacer(pacer_); // Passes ownership.
+ pacer_.reset(new NiceMock<MockPacedSender>());
controller_.reset(new SendSideCongestionController(
- &clock_, &observer_, &event_log_, std::move(pacer)));
+ &clock_, &observer_, &event_log_, pacer_.get()));
bandwidth_observer_.reset(
controller_->GetBitrateController()->CreateRtcpBandwidthObserver());
@@ -73,9 +72,9 @@
// Custom setup - use an observer that tracks the target bitrate, without
// prescribing on which iterations it must change (like a mock would).
void TargetBitrateTrackingSetup() {
- std::unique_ptr<PacedSender> pacer(new NiceMock<MockPacedSender>());
+ pacer_.reset(new NiceMock<MockPacedSender>());
controller_.reset(new SendSideCongestionController(
- &clock_, &target_bitrate_observer_, &event_log_, std::move(pacer)));
+ &clock_, &target_bitrate_observer_, &event_log_, pacer_.get()));
controller_->SetBweBitrates(0, kInitialBitrateBps, 5 * kInitialBitrateBps);
}
@@ -138,9 +137,10 @@
SimulatedClock clock_;
StrictMock<MockCongestionObserver> observer_;
TargetBitrateObserver target_bitrate_observer_;
- NiceMock<MockPacedSender>* pacer_;
NiceMock<MockRtcEventLog> event_log_;
std::unique_ptr<RtcpBandwidthObserver> bandwidth_observer_;
+ PacketRouter packet_router_;
+ std::unique_ptr<NiceMock<MockPacedSender>> pacer_;
std::unique_ptr<SendSideCongestionController> controller_;
rtc::Optional<uint32_t> target_bitrate_bps_;
@@ -216,7 +216,7 @@
TEST_F(SendSideCongestionControllerTest, OnNetworkRouteChanged) {
int new_bitrate = 200000;
- testing::Mock::VerifyAndClearExpectations(pacer_);
+ testing::Mock::VerifyAndClearExpectations(pacer_.get());
EXPECT_CALL(observer_, OnNetworkChanged(new_bitrate, _, _, _));
EXPECT_CALL(*pacer_, SetEstimatedBitrate(new_bitrate));
rtc::NetworkRoute route;
@@ -236,7 +236,7 @@
TEST_F(SendSideCongestionControllerTest, OldFeedback) {
int new_bitrate = 200000;
- testing::Mock::VerifyAndClearExpectations(pacer_);
+ testing::Mock::VerifyAndClearExpectations(pacer_.get());
EXPECT_CALL(observer_, OnNetworkChanged(new_bitrate, _, _, _));
EXPECT_CALL(*pacer_, SetEstimatedBitrate(new_bitrate));
@@ -334,7 +334,7 @@
}
TEST_F(SendSideCongestionControllerTest, ProbeOnRouteChange) {
- testing::Mock::VerifyAndClearExpectations(pacer_);
+ testing::Mock::VerifyAndClearExpectations(pacer_.get());
EXPECT_CALL(*pacer_, CreateProbeCluster(kInitialBitrateBps * 6));
EXPECT_CALL(*pacer_, CreateProbeCluster(kInitialBitrateBps * 12));
EXPECT_CALL(observer_, OnNetworkChanged(kInitialBitrateBps * 2, _, _, _));
diff --git a/modules/pacing/mock/mock_paced_sender.h b/modules/pacing/mock/mock_paced_sender.h
index aad58c7..d6587b4 100644
--- a/modules/pacing/mock/mock_paced_sender.h
+++ b/modules/pacing/mock/mock_paced_sender.h
@@ -36,6 +36,7 @@
MOCK_CONST_METHOD0(ExpectedQueueTimeMs, int64_t());
MOCK_CONST_METHOD0(GetApplicationLimitedRegionStartTime,
rtc::Optional<int64_t>());
+ MOCK_METHOD0(Process, void());
};
} // namespace webrtc
diff --git a/rtc_tools/DEPS b/rtc_tools/DEPS
index 40fe3cc..c55eb59 100644
--- a/rtc_tools/DEPS
+++ b/rtc_tools/DEPS
@@ -9,6 +9,7 @@
"+webrtc/modules/audio_processing",
"+webrtc/modules/bitrate_controller",
"+webrtc/modules/congestion_controller",
+ "+webrtc/modules/pacing",
"+webrtc/modules/rtp_rtcp",
"+webrtc/system_wrappers",
"+webrtc/p2p",
diff --git a/rtc_tools/event_log_visualizer/analyzer.cc b/rtc_tools/event_log_visualizer/analyzer.cc
index 49be16d..4d485c7 100644
--- a/rtc_tools/event_log_visualizer/analyzer.cc
+++ b/rtc_tools/event_log_visualizer/analyzer.cc
@@ -1126,8 +1126,8 @@
BitrateObserver observer;
RtcEventLogNullImpl null_event_log;
PacketRouter packet_router;
- SendSideCongestionController cc(&clock, &observer, &null_event_log,
- &packet_router);
+ PacedSender pacer(&clock, &packet_router, &null_event_log);
+ SendSideCongestionController cc(&clock, &observer, &null_event_log, &pacer);
// TODO(holmer): Log the call config and use that here instead.
static const uint32_t kDefaultStartBitrateBps = 300000;
cc.SetBweBitrates(0, kDefaultStartBitrateBps, -1);
diff --git a/video/video_send_stream.cc b/video/video_send_stream.cc
index 253d11c..e1afdf0 100644
--- a/video/video_send_stream.cc
+++ b/video/video_send_stream.cc
@@ -715,10 +715,8 @@
}
if (alr_settings) {
transport->send_side_cc()->EnablePeriodicAlrProbing(true);
- transport->send_side_cc()->pacer()->SetPacingFactor(
- alr_settings->pacing_factor);
- transport->send_side_cc()->pacer()->SetQueueTimeLimit(
- alr_settings->max_paced_queue_time);
+ transport->pacer()->SetPacingFactor(alr_settings->pacing_factor);
+ transport->pacer()->SetQueueTimeLimit(alr_settings->max_paced_queue_time);
}
if (config_->periodic_alr_bandwidth_probing) {