#include "modules/remote_bitrate_estimator/aimd_rate_control.h"
#include <inttypes.h>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <string>
#include "absl/strings/match.h"
#include "api/transport/network_types.h"
#include "api/units/data_rate.h"
#include "modules/remote_bitrate_estimator/include/bwe_defines.h"
#include "modules/remote_bitrate_estimator/overuse_detector.h"
#include "rtc_base/checks.h"
#include "rtc_base/experiments/field_trial_parser.h"
#include "rtc_base/logging.h"
#include "rtc_base/numerics/safe_minmax.h"
namespace webrtc {
namespace {
constexpr TimeDelta kDefaultRtt = …;
constexpr double kDefaultBackoffFactor = …;
constexpr char kBweBackOffFactorExperiment[] = …;
double ReadBackoffFactor(const FieldTrialsView& key_value_config) { … }
}
AimdRateControl::AimdRateControl(const FieldTrialsView& key_value_config)
: … { … }
AimdRateControl::AimdRateControl(const FieldTrialsView& key_value_config,
bool send_side)
: … { … }
AimdRateControl::~AimdRateControl() { … }
void AimdRateControl::SetStartBitrate(DataRate start_bitrate) { … }
void AimdRateControl::SetMinBitrate(DataRate min_bitrate) { … }
bool AimdRateControl::ValidEstimate() const { … }
TimeDelta AimdRateControl::GetFeedbackInterval() const { … }
bool AimdRateControl::TimeToReduceFurther(Timestamp at_time,
DataRate estimated_throughput) const { … }
bool AimdRateControl::InitialTimeToReduceFurther(Timestamp at_time) const { … }
DataRate AimdRateControl::LatestEstimate() const { … }
void AimdRateControl::SetRtt(TimeDelta rtt) { … }
DataRate AimdRateControl::Update(const RateControlInput& input,
Timestamp at_time) { … }
void AimdRateControl::SetInApplicationLimitedRegion(bool in_alr) { … }
void AimdRateControl::SetEstimate(DataRate bitrate, Timestamp at_time) { … }
void AimdRateControl::SetNetworkStateEstimate(
const absl::optional<NetworkStateEstimate>& estimate) { … }
double AimdRateControl::GetNearMaxIncreaseRateBpsPerSecond() const { … }
TimeDelta AimdRateControl::GetExpectedBandwidthPeriod() const { … }
void AimdRateControl::ChangeBitrate(const RateControlInput& input,
Timestamp at_time) { … }
DataRate AimdRateControl::ClampBitrate(DataRate new_bitrate) const { … }
DataRate AimdRateControl::MultiplicativeRateIncrease(
Timestamp at_time,
Timestamp last_time,
DataRate current_bitrate) const { … }
DataRate AimdRateControl::AdditiveRateIncrease(Timestamp at_time,
Timestamp last_time) const { … }
void AimdRateControl::ChangeState(const RateControlInput& input,
Timestamp at_time) { … }
}