WebRTC Congestion Control

Abstract

WebRTC Congestion Control

Authors

Walter Fan

Status

WIP

Updated

2021-12-29

Code

enum class BandwidthUsage {
   kBwNormal = 0,
   kBwUnderusing = 1,
   kBwOverusing = 2,
   kLast
};

main classes

class DelayBasedBwe {
   public:
   struct Result {
      Result();
      ~Result() = default;
      bool updated;
      bool probe;
      DataRate target_bitrate = DataRate::Zero();
      bool recovered_from_overuse;
      bool backoff_in_alr;
   };

   explicit DelayBasedBwe(const WebRtcKeyValueConfig* key_value_config,
                           RtcEventLog* event_log,
                           NetworkStatePredictor* network_state_predictor);

   DelayBasedBwe() = delete;
   DelayBasedBwe(const DelayBasedBwe&) = delete;
   DelayBasedBwe& operator=(const DelayBasedBwe&) = delete;

   virtual ~DelayBasedBwe();

   Result IncomingPacketFeedbackVector(
         const TransportPacketsFeedback& msg,
         absl::optional<DataRate> acked_bitrate,
         absl::optional<DataRate> probe_bitrate,
         absl::optional<NetworkStateEstimate> network_estimate,
         bool in_alr);

   //...


   }