| Index: webrtc/modules/congestion_controller/include/congestion_controller.h
|
| diff --git a/webrtc/modules/congestion_controller/include/congestion_controller.h b/webrtc/modules/congestion_controller/include/congestion_controller.h
|
| index 284070cc21ced91971fd7a08a04aeb2a7acd9cce..a3b672e3bc8887a203427f88a62edcb41390155a 100644
|
| --- a/webrtc/modules/congestion_controller/include/congestion_controller.h
|
| +++ b/webrtc/modules/congestion_controller/include/congestion_controller.h
|
| @@ -19,6 +19,7 @@
|
| #include "webrtc/modules/include/module.h"
|
| #include "webrtc/modules/include/module_common_types.h"
|
| #include "webrtc/modules/pacing/packet_router.h"
|
| +#include "webrtc/modules/pacing/paced_sender.h"
|
| #include "webrtc/modules/remote_bitrate_estimator/remote_estimator_proxy.h"
|
| #include "webrtc/modules/remote_bitrate_estimator/transport_feedback_adapter.h"
|
|
|
| @@ -31,7 +32,6 @@ namespace webrtc {
|
| class BitrateController;
|
| class BitrateObserver;
|
| class Clock;
|
| -class PacedSender;
|
| class ProcessThread;
|
| class RemoteBitrateEstimator;
|
| class RemoteBitrateObserver;
|
| @@ -39,9 +39,33 @@ class TransportFeedbackObserver;
|
|
|
| class CongestionController : public CallStatsObserver, public Module {
|
| public:
|
| + // Observer class for bitrate changes announced due to change in bandwidth
|
| + // estimate or due to that the send pacer is full. Fraction loss and rtt is
|
| + // also part of this callback to allow the observer to optimize its settings
|
| + // for different types of network environments. The bitrate does not include
|
| + // packet headers and is measured in bits per second.
|
| + class Observer {
|
| + public:
|
| + virtual void OnNetworkChanged(uint32_t bitrate_bps,
|
| + uint8_t fraction_loss, // 0 - 255.
|
| + int64_t rtt_ms) = 0;
|
| +
|
| + protected:
|
| + virtual ~Observer() {}
|
| + };
|
| + // Deprecated
|
| + // TODO(perkj): Remove once no other clients use this ctor.
|
| CongestionController(Clock* clock,
|
| BitrateObserver* bitrate_observer,
|
| RemoteBitrateObserver* remote_bitrate_observer);
|
| + CongestionController(Clock* clock,
|
| + Observer* observer,
|
| + RemoteBitrateObserver* remote_bitrate_observer);
|
| + CongestionController(Clock* clock,
|
| + Observer* observer,
|
| + RemoteBitrateObserver* remote_bitrate_observer,
|
| + std::unique_ptr<PacketRouter> packet_router,
|
| + std::unique_ptr<PacedSender> pacer);
|
| virtual ~CongestionController();
|
|
|
| virtual void SetBweBitrates(int min_bitrate_bps,
|
| @@ -53,12 +77,11 @@ class CongestionController : public CallStatsObserver, public Module {
|
| bool send_side_bwe);
|
| virtual int64_t GetPacerQueuingDelayMs() const;
|
| virtual PacedSender* pacer() { return pacer_.get(); }
|
| - virtual PacketRouter* packet_router() { return &packet_router_; }
|
| + virtual PacketRouter* packet_router() { return packet_router_.get(); }
|
| virtual TransportFeedbackObserver* GetTransportFeedbackObserver();
|
|
|
| - virtual void UpdatePacerBitrate(int bitrate_kbps,
|
| - int max_bitrate_kbps,
|
| - int min_bitrate_kbps);
|
| + void SetAllocatedSendBitrate(int allocated_bitrate_bps,
|
| + int padding_bitrate_bps);
|
|
|
| virtual void OnSentPacket(const rtc::SentPacket& sent_packet);
|
|
|
| @@ -70,14 +93,23 @@ class CongestionController : public CallStatsObserver, public Module {
|
| void Process() override;
|
|
|
| private:
|
| + void Init();
|
| + void MaybeTriggerOnNetworkChanged();
|
| + // Updates |send_queue_is_full_|. Returns true if |send_queue_is_full_|
|
| + // has changed.
|
| + bool UpdateSendQueueStatus(bool send_queue_is_full);
|
| +
|
| Clock* const clock_;
|
| + Observer* const observer_;
|
| + const std::unique_ptr<PacketRouter> packet_router_;
|
| const std::unique_ptr<PacedSender> pacer_;
|
| const std::unique_ptr<RemoteBitrateEstimator> remote_bitrate_estimator_;
|
| const std::unique_ptr<BitrateController> bitrate_controller_;
|
| - PacketRouter packet_router_;
|
| RemoteEstimatorProxy remote_estimator_proxy_;
|
| TransportFeedbackAdapter transport_feedback_adapter_;
|
| int min_bitrate_bps_;
|
| + rtc::CriticalSection critsect_;
|
| + bool send_queue_is_full_ GUARDED_BY(critsect_);
|
|
|
| RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(CongestionController);
|
| };
|
|
|