| Index: webrtc/call/congestion_controller.cc
|
| diff --git a/webrtc/call/congestion_controller.cc b/webrtc/call/congestion_controller.cc
|
| index e548a96999c844a16bfc36a53ef39e34f6437a17..08cdb11d2fbaf66a385429a66fe6e197cbef4200 100644
|
| --- a/webrtc/call/congestion_controller.cc
|
| +++ b/webrtc/call/congestion_controller.cc
|
| @@ -10,8 +10,11 @@
|
|
|
| #include "webrtc/call/congestion_controller.h"
|
|
|
| +#include <vector>
|
| +
|
| #include "webrtc/base/checks.h"
|
| #include "webrtc/base/logging.h"
|
| +#include "webrtc/base/socket.h"
|
| #include "webrtc/base/thread_annotations.h"
|
| #include "webrtc/modules/bitrate_controller/include/bitrate_controller.h"
|
| #include "webrtc/modules/pacing/paced_sender.h"
|
| @@ -21,14 +24,10 @@
|
| #include "webrtc/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h"
|
| #include "webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy.h"
|
| #include "webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.h"
|
| -#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h"
|
| #include "webrtc/modules/utility/include/process_thread.h"
|
| #include "webrtc/system_wrappers/include/critical_section_wrapper.h"
|
| #include "webrtc/video/call_stats.h"
|
| #include "webrtc/video/payload_router.h"
|
| -#include "webrtc/video/vie_encoder.h"
|
| -#include "webrtc/video/vie_remb.h"
|
| -#include "webrtc/voice_engine/include/voe_video_sync.h"
|
|
|
| namespace webrtc {
|
| namespace {
|
| @@ -131,7 +130,7 @@ class WrappingBitrateEstimator : public RemoteBitrateEstimator {
|
| }
|
|
|
| RemoteBitrateObserver* observer_;
|
| - Clock* clock_;
|
| + Clock* const clock_;
|
| rtc::scoped_ptr<CriticalSectionWrapper> crit_sect_;
|
| rtc::scoped_ptr<RemoteBitrateEstimator> rbe_;
|
| bool using_absolute_send_time_;
|
| @@ -143,30 +142,31 @@ class WrappingBitrateEstimator : public RemoteBitrateEstimator {
|
|
|
| } // namespace
|
|
|
| -CongestionController::CongestionController(ProcessThread* process_thread,
|
| - CallStats* call_stats,
|
| - BitrateObserver* bitrate_observer)
|
| - : remb_(new VieRemb(Clock::GetRealTimeClock())),
|
| +CongestionController::CongestionController(
|
| + Clock* clock,
|
| + ProcessThread* process_thread,
|
| + CallStats* call_stats,
|
| + BitrateObserver* bitrate_observer,
|
| + RemoteBitrateObserver* remote_bitrate_observer)
|
| + : clock_(clock),
|
| packet_router_(new PacketRouter()),
|
| - pacer_(new PacedSender(Clock::GetRealTimeClock(),
|
| + pacer_(new PacedSender(clock_,
|
| packet_router_.get(),
|
| BitrateController::kDefaultStartBitrateKbps,
|
| PacedSender::kDefaultPaceMultiplier *
|
| BitrateController::kDefaultStartBitrateKbps,
|
| 0)),
|
| remote_bitrate_estimator_(
|
| - new WrappingBitrateEstimator(remb_.get(), Clock::GetRealTimeClock())),
|
| + new WrappingBitrateEstimator(remote_bitrate_observer, clock_)),
|
| remote_estimator_proxy_(
|
| - new RemoteEstimatorProxy(Clock::GetRealTimeClock(),
|
| - packet_router_.get())),
|
| + new RemoteEstimatorProxy(clock_, packet_router_.get())),
|
| process_thread_(process_thread),
|
| call_stats_(call_stats),
|
| pacer_thread_(ProcessThread::Create("PacerThread")),
|
| // Constructed last as this object calls the provided callback on
|
| // construction.
|
| bitrate_controller_(
|
| - BitrateController::CreateBitrateController(Clock::GetRealTimeClock(),
|
| - bitrate_observer)),
|
| + BitrateController::CreateBitrateController(clock_, bitrate_observer)),
|
| min_bitrate_bps_(RemoteBitrateEstimator::kDefaultMinBitrateBps) {
|
| call_stats_->RegisterStatsObserver(remote_bitrate_estimator_.get());
|
|
|
| @@ -174,8 +174,8 @@ CongestionController::CongestionController(ProcessThread* process_thread,
|
| pacer_thread_->RegisterModule(remote_estimator_proxy_.get());
|
| pacer_thread_->Start();
|
|
|
| - process_thread->RegisterModule(remote_bitrate_estimator_.get());
|
| - process_thread->RegisterModule(bitrate_controller_.get());
|
| + process_thread_->RegisterModule(remote_bitrate_estimator_.get());
|
| + process_thread_->RegisterModule(bitrate_controller_.get());
|
| }
|
|
|
| CongestionController::~CongestionController() {
|
| @@ -187,24 +187,8 @@ CongestionController::~CongestionController() {
|
| call_stats_->DeregisterStatsObserver(remote_bitrate_estimator_.get());
|
| if (transport_feedback_adapter_.get())
|
| call_stats_->DeregisterStatsObserver(transport_feedback_adapter_.get());
|
| - RTC_DCHECK(!remb_->InUse());
|
| - RTC_DCHECK(encoders_.empty());
|
| -}
|
| -
|
| -void CongestionController::AddEncoder(ViEEncoder* encoder) {
|
| - rtc::CritScope lock(&encoder_crit_);
|
| - encoders_.push_back(encoder);
|
| }
|
|
|
| -void CongestionController::RemoveEncoder(ViEEncoder* encoder) {
|
| - rtc::CritScope lock(&encoder_crit_);
|
| - for (auto it = encoders_.begin(); it != encoders_.end(); ++it) {
|
| - if (*it == encoder) {
|
| - encoders_.erase(it);
|
| - return;
|
| - }
|
| - }
|
| -}
|
|
|
| void CongestionController::SetBweBitrates(int min_bitrate_bps,
|
| int start_bitrate_bps,
|
| @@ -237,10 +221,10 @@ TransportFeedbackObserver*
|
| CongestionController::GetTransportFeedbackObserver() {
|
| if (transport_feedback_adapter_.get() == nullptr) {
|
| transport_feedback_adapter_.reset(new TransportFeedbackAdapter(
|
| - bitrate_controller_.get(), Clock::GetRealTimeClock(), process_thread_));
|
| + bitrate_controller_.get(), clock_, process_thread_));
|
| transport_feedback_adapter_->SetBitrateEstimator(
|
| - new RemoteBitrateEstimatorAbsSendTime(
|
| - transport_feedback_adapter_.get(), Clock::GetRealTimeClock()));
|
| + new RemoteBitrateEstimatorAbsSendTime(transport_feedback_adapter_.get(),
|
| + clock_));
|
| transport_feedback_adapter_->GetBitrateEstimator()->SetMinBitrate(
|
| min_bitrate_bps_);
|
| call_stats_->RegisterStatsObserver(transport_feedback_adapter_.get());
|
| @@ -258,23 +242,6 @@ int64_t CongestionController::GetPacerQueuingDelayMs() const {
|
| return pacer_->QueueInMs();
|
| }
|
|
|
| -// TODO(mflodman): Move out of this class.
|
| -void CongestionController::SetChannelRembStatus(bool sender,
|
| - bool receiver,
|
| - RtpRtcp* rtp_module) {
|
| - rtp_module->SetREMBStatus(sender || receiver);
|
| - if (sender) {
|
| - remb_->AddRembSender(rtp_module);
|
| - } else {
|
| - remb_->RemoveRembSender(rtp_module);
|
| - }
|
| - if (receiver) {
|
| - remb_->AddReceiveChannel(rtp_module);
|
| - } else {
|
| - remb_->RemoveReceiveChannel(rtp_module);
|
| - }
|
| -}
|
| -
|
| void CongestionController::SignalNetworkState(NetworkState state) {
|
| if (state == kNetworkUp) {
|
| pacer_->Resume();
|
|
|