Replace DataSize and DataRate factories with newer versions
This is search and replace change: find . -type f \( -name "*.h" -o -name "*.cc" \) | xargs sed -i -e "s/DataSize::Bytes<\(.*\)>()/DataSize::Bytes(\1)/g" find . -type f \( -name "*.h" -o -name "*.cc" \) | xargs sed -i -e "s/DataSize::bytes/DataSize::Bytes/g" find . -type f \( -name "*.h" -o -name "*.cc" \) | xargs sed -i -e "s/DataRate::BitsPerSec<\(.*\)>()/DataRate::BitsPerSec(\1)/g" find . -type f \( -name "*.h" -o -name "*.cc" \) | xargs sed -i -e "s/DataRate::BytesPerSec<\(.*\)>()/DataRate::BytesPerSec(\1)/g" find . -type f \( -name "*.h" -o -name "*.cc" \) | xargs sed -i -e "s/DataRate::KilobitsPerSec<\(.*\)>()/DataRate::KilobitsPerSec(\1)/g" find . -type f \( -name "*.h" -o -name "*.cc" \) | xargs sed -i -e "s/DataRate::bps/DataRate::BitsPerSec/g" find . -type f \( -name "*.h" -o -name "*.cc" \) | xargs sed -i -e "s/DataRate::kbps/DataRate::KilobitsPerSec/g" git cl format Bug: webrtc:9709 Change-Id: I65aaca69474ba038c1fe2dd8dc30d3f8e7b94c29 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168647 Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30545}
This commit is contained in:
committed by
Commit Bot
parent
701bd172d8
commit
cad3e0e2fa
@ -65,14 +65,14 @@ std::vector<PacketResult> CreateFeedbackVector() {
|
||||
packet_feedback_vector[0].sent_packet.send_time =
|
||||
Timestamp::Millis(kFirstSendTimeMs);
|
||||
packet_feedback_vector[0].sent_packet.sequence_number = kSequenceNumber;
|
||||
packet_feedback_vector[0].sent_packet.size = DataSize::bytes(kPayloadSize);
|
||||
packet_feedback_vector[0].sent_packet.size = DataSize::Bytes(kPayloadSize);
|
||||
packet_feedback_vector[1].receive_time =
|
||||
Timestamp::Millis(kFirstArrivalTimeMs + 10);
|
||||
packet_feedback_vector[1].sent_packet.send_time =
|
||||
Timestamp::Millis(kFirstSendTimeMs + 10);
|
||||
packet_feedback_vector[1].sent_packet.sequence_number = kSequenceNumber;
|
||||
packet_feedback_vector[1].sent_packet.size =
|
||||
DataSize::bytes(kPayloadSize + 10);
|
||||
DataSize::Bytes(kPayloadSize + 10);
|
||||
return packet_feedback_vector;
|
||||
}
|
||||
|
||||
@ -124,7 +124,7 @@ TEST(TestAcknowledgedBitrateEstimator, ExpectFastRateChangeWhenLeftAlr) {
|
||||
|
||||
TEST(TestAcknowledgedBitrateEstimator, ReturnBitrate) {
|
||||
auto states = CreateTestStates();
|
||||
absl::optional<DataRate> return_value = DataRate::kbps(42);
|
||||
absl::optional<DataRate> return_value = DataRate::KilobitsPerSec(42);
|
||||
EXPECT_CALL(*states.mock_bitrate_estimator, bitrate())
|
||||
.Times(1)
|
||||
.WillOnce(Return(return_value));
|
||||
|
||||
@ -148,12 +148,12 @@ float BitrateEstimator::UpdateWindow(int64_t now_ms,
|
||||
absl::optional<DataRate> BitrateEstimator::bitrate() const {
|
||||
if (bitrate_estimate_kbps_ < 0.f)
|
||||
return absl::nullopt;
|
||||
return DataRate::kbps(bitrate_estimate_kbps_);
|
||||
return DataRate::KilobitsPerSec(bitrate_estimate_kbps_);
|
||||
}
|
||||
|
||||
absl::optional<DataRate> BitrateEstimator::PeekRate() const {
|
||||
if (current_window_ms_ > 0)
|
||||
return DataSize::bytes(sum_) / TimeDelta::Millis(current_window_ms_);
|
||||
return DataSize::Bytes(sum_) / TimeDelta::Millis(current_window_ms_);
|
||||
return absl::nullopt;
|
||||
}
|
||||
|
||||
|
||||
@ -37,20 +37,20 @@ class CongestionWindowPushbackControllerTest : public ::testing::Test {
|
||||
|
||||
TEST_F(CongestionWindowPushbackControllerTest, FullCongestionWindow) {
|
||||
cwnd_controller_->UpdateOutstandingData(100000);
|
||||
cwnd_controller_->SetDataWindow(DataSize::bytes(50000));
|
||||
cwnd_controller_->SetDataWindow(DataSize::Bytes(50000));
|
||||
|
||||
uint32_t bitrate_bps = 80000;
|
||||
bitrate_bps = cwnd_controller_->UpdateTargetBitrate(bitrate_bps);
|
||||
EXPECT_EQ(72000u, bitrate_bps);
|
||||
|
||||
cwnd_controller_->SetDataWindow(DataSize::bytes(50000));
|
||||
cwnd_controller_->SetDataWindow(DataSize::Bytes(50000));
|
||||
bitrate_bps = cwnd_controller_->UpdateTargetBitrate(bitrate_bps);
|
||||
EXPECT_EQ(static_cast<uint32_t>(72000 * 0.9 * 0.9), bitrate_bps);
|
||||
}
|
||||
|
||||
TEST_F(CongestionWindowPushbackControllerTest, NormalCongestionWindow) {
|
||||
cwnd_controller_->UpdateOutstandingData(199999);
|
||||
cwnd_controller_->SetDataWindow(DataSize::bytes(200000));
|
||||
cwnd_controller_->SetDataWindow(DataSize::Bytes(200000));
|
||||
|
||||
uint32_t bitrate_bps = 80000;
|
||||
bitrate_bps = cwnd_controller_->UpdateTargetBitrate(bitrate_bps);
|
||||
@ -59,13 +59,13 @@ TEST_F(CongestionWindowPushbackControllerTest, NormalCongestionWindow) {
|
||||
|
||||
TEST_F(CongestionWindowPushbackControllerTest, LowBitrate) {
|
||||
cwnd_controller_->UpdateOutstandingData(100000);
|
||||
cwnd_controller_->SetDataWindow(DataSize::bytes(50000));
|
||||
cwnd_controller_->SetDataWindow(DataSize::Bytes(50000));
|
||||
|
||||
uint32_t bitrate_bps = 35000;
|
||||
bitrate_bps = cwnd_controller_->UpdateTargetBitrate(bitrate_bps);
|
||||
EXPECT_EQ(static_cast<uint32_t>(35000 * 0.9), bitrate_bps);
|
||||
|
||||
cwnd_controller_->SetDataWindow(DataSize::bytes(20000));
|
||||
cwnd_controller_->SetDataWindow(DataSize::Bytes(20000));
|
||||
bitrate_bps = cwnd_controller_->UpdateTargetBitrate(bitrate_bps);
|
||||
EXPECT_EQ(30000u, bitrate_bps);
|
||||
}
|
||||
@ -94,7 +94,7 @@ TEST_F(CongestionWindowPushbackControllerTest, PushbackDropFrame) {
|
||||
cwnd_controller_.reset(
|
||||
new CongestionWindowPushbackController(&field_trial_config_));
|
||||
cwnd_controller_->UpdateOutstandingData(1e8); // Large number
|
||||
cwnd_controller_->SetDataWindow(DataSize::bytes(50000));
|
||||
cwnd_controller_->SetDataWindow(DataSize::Bytes(50000));
|
||||
|
||||
uint32_t bitrate_bps = 80000;
|
||||
bitrate_bps = cwnd_controller_->UpdateTargetBitrate(bitrate_bps);
|
||||
|
||||
@ -174,8 +174,8 @@ TEST_F(DelayBasedBweTest, TestLongTimeoutAndWrap) {
|
||||
}
|
||||
|
||||
TEST_F(DelayBasedBweTest, TestInitialOveruse) {
|
||||
const DataRate kStartBitrate = DataRate::kbps(300);
|
||||
const DataRate kInitialCapacity = DataRate::kbps(200);
|
||||
const DataRate kStartBitrate = DataRate::KilobitsPerSec(300);
|
||||
const DataRate kInitialCapacity = DataRate::KilobitsPerSec(200);
|
||||
const uint32_t kDummySsrc = 0;
|
||||
// High FPS to ensure that we send a lot of packets in a short time.
|
||||
const int kFps = 90;
|
||||
@ -222,8 +222,8 @@ class DelayBasedBweTestWithBackoffTimeoutExperiment : public DelayBasedBweTest {
|
||||
|
||||
// This test subsumes and improves DelayBasedBweTest.TestInitialOveruse above.
|
||||
TEST_F(DelayBasedBweTestWithBackoffTimeoutExperiment, TestInitialOveruse) {
|
||||
const DataRate kStartBitrate = DataRate::kbps(300);
|
||||
const DataRate kInitialCapacity = DataRate::kbps(200);
|
||||
const DataRate kStartBitrate = DataRate::KilobitsPerSec(300);
|
||||
const DataRate kInitialCapacity = DataRate::KilobitsPerSec(200);
|
||||
const uint32_t kDummySsrc = 0;
|
||||
// High FPS to ensure that we send a lot of packets in a short time.
|
||||
const int kFps = 90;
|
||||
|
||||
@ -54,7 +54,7 @@ int64_t RtpStream::GenerateFrame(int64_t time_now_us,
|
||||
PacketResult packet;
|
||||
packet.sent_packet.send_time =
|
||||
Timestamp::Micros(time_now_us + kSendSideOffsetUs);
|
||||
packet.sent_packet.size = DataSize::bytes(payload_size);
|
||||
packet.sent_packet.size = DataSize::Bytes(payload_size);
|
||||
packets->push_back(packet);
|
||||
}
|
||||
next_rtp_time_ = time_now_us + (1000000 + fps_ / 2) / fps_;
|
||||
@ -196,7 +196,7 @@ void DelayBasedBweTest::IncomingFeedback(int64_t arrival_time_ms,
|
||||
packet.receive_time =
|
||||
Timestamp::Millis(arrival_time_ms + arrival_time_offset_ms_);
|
||||
packet.sent_packet.send_time = Timestamp::Millis(send_time_ms);
|
||||
packet.sent_packet.size = DataSize::bytes(payload_size);
|
||||
packet.sent_packet.size = DataSize::Bytes(payload_size);
|
||||
packet.sent_packet.pacing_info = pacing_info;
|
||||
if (packet.sent_packet.pacing_info.probe_cluster_id !=
|
||||
PacedPacketInfo::kNotAProbe)
|
||||
|
||||
@ -375,7 +375,7 @@ void GoogCcNetworkController::UpdateCongestionWindowSize() {
|
||||
TimeDelta min_feedback_max_rtt = TimeDelta::Millis(
|
||||
*std::min_element(feedback_max_rtts_.begin(), feedback_max_rtts_.end()));
|
||||
|
||||
const DataSize kMinCwnd = DataSize::bytes(2 * 1500);
|
||||
const DataSize kMinCwnd = DataSize::Bytes(2 * 1500);
|
||||
TimeDelta time_window =
|
||||
min_feedback_max_rtt +
|
||||
TimeDelta::Millis(
|
||||
@ -607,7 +607,7 @@ void GoogCcNetworkController::MaybeTriggerOnNetworkChanged(
|
||||
loss_based_target_rate.bps());
|
||||
pushback_rate = std::max<int64_t>(bandwidth_estimation_->GetMinBitrate(),
|
||||
pushback_rate);
|
||||
pushback_target_rate = DataRate::bps(pushback_rate);
|
||||
pushback_target_rate = DataRate::BitsPerSec(pushback_rate);
|
||||
if (rate_control_settings_.UseCongestionWindowDropFrameOnly()) {
|
||||
cwnd_reduce_ratio = static_cast<double>(loss_based_target_rate.bps() -
|
||||
pushback_target_rate.bps()) /
|
||||
|
||||
@ -56,7 +56,7 @@ GoogCcNetworkControllerFactory CreateFeedbackOnlyFactory() {
|
||||
}
|
||||
|
||||
const uint32_t kInitialBitrateKbps = 60;
|
||||
const DataRate kInitialBitrate = DataRate::kbps(kInitialBitrateKbps);
|
||||
const DataRate kInitialBitrate = DataRate::KilobitsPerSec(kInitialBitrateKbps);
|
||||
const float kDefaultPacingRate = 2.5f;
|
||||
|
||||
CallClient* CreateVideoSendingClient(
|
||||
@ -78,11 +78,11 @@ void UpdatesTargetRateBasedOnLinkCapacity(std::string test_name = "") {
|
||||
Scenario s("googcc_unit/target_capacity" + test_name, false);
|
||||
CallClientConfig config;
|
||||
config.transport.cc_factory = &factory;
|
||||
config.transport.rates.min_rate = DataRate::kbps(10);
|
||||
config.transport.rates.max_rate = DataRate::kbps(1500);
|
||||
config.transport.rates.start_rate = DataRate::kbps(300);
|
||||
config.transport.rates.min_rate = DataRate::KilobitsPerSec(10);
|
||||
config.transport.rates.max_rate = DataRate::KilobitsPerSec(1500);
|
||||
config.transport.rates.start_rate = DataRate::KilobitsPerSec(300);
|
||||
auto send_net = s.CreateMutableSimulationNode([](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(500);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(500);
|
||||
c->delay = TimeDelta::Millis(100);
|
||||
c->loss_rate = 0.0;
|
||||
});
|
||||
@ -100,7 +100,7 @@ void UpdatesTargetRateBasedOnLinkCapacity(std::string test_name = "") {
|
||||
EXPECT_NEAR(client->target_rate().kbps(), 450, 100);
|
||||
|
||||
send_net->UpdateConfig([](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(800);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(800);
|
||||
c->delay = TimeDelta::Millis(100);
|
||||
});
|
||||
|
||||
@ -110,7 +110,7 @@ void UpdatesTargetRateBasedOnLinkCapacity(std::string test_name = "") {
|
||||
EXPECT_NEAR(client->target_rate().kbps(), 750, 150);
|
||||
|
||||
send_net->UpdateConfig([](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(100);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(100);
|
||||
c->delay = TimeDelta::Millis(200);
|
||||
});
|
||||
ret_net->UpdateConfig(
|
||||
@ -155,9 +155,12 @@ class GoogCcNetworkControllerTest : public ::testing::Test {
|
||||
int max_data_rate_kbps = 5 * kInitialBitrateKbps) {
|
||||
NetworkControllerConfig config;
|
||||
config.constraints.at_time = current_time_;
|
||||
config.constraints.min_data_rate = DataRate::kbps(min_data_rate_kbps);
|
||||
config.constraints.max_data_rate = DataRate::kbps(max_data_rate_kbps);
|
||||
config.constraints.starting_rate = DataRate::kbps(starting_bandwidth_kbps);
|
||||
config.constraints.min_data_rate =
|
||||
DataRate::KilobitsPerSec(min_data_rate_kbps);
|
||||
config.constraints.max_data_rate =
|
||||
DataRate::KilobitsPerSec(max_data_rate_kbps);
|
||||
config.constraints.starting_rate =
|
||||
DataRate::KilobitsPerSec(starting_bandwidth_kbps);
|
||||
config.event_log = &event_log_;
|
||||
return config;
|
||||
}
|
||||
@ -179,7 +182,7 @@ class GoogCcNetworkControllerTest : public ::testing::Test {
|
||||
PacketResult packet_result;
|
||||
packet_result.sent_packet = SentPacket();
|
||||
packet_result.sent_packet.send_time = Timestamp::Millis(send_time_ms);
|
||||
packet_result.sent_packet.size = DataSize::bytes(payload_size);
|
||||
packet_result.sent_packet.size = DataSize::Bytes(payload_size);
|
||||
packet_result.sent_packet.pacing_info = pacing_info;
|
||||
packet_result.receive_time = Timestamp::Millis(arrival_time_ms);
|
||||
return packet_result;
|
||||
@ -263,7 +266,7 @@ TEST_F(GoogCcNetworkControllerTest, CongestionWindowPushbackOnNetworkDelay) {
|
||||
Scenario s("googcc_unit/cwnd_on_delay", false);
|
||||
auto send_net =
|
||||
s.CreateMutableSimulationNode([=](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(1000);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(1000);
|
||||
c->delay = TimeDelta::Millis(100);
|
||||
});
|
||||
auto ret_net = s.CreateSimulationNode(
|
||||
@ -271,9 +274,9 @@ TEST_F(GoogCcNetworkControllerTest, CongestionWindowPushbackOnNetworkDelay) {
|
||||
CallClientConfig config;
|
||||
config.transport.cc_factory = &factory;
|
||||
// Start high so bandwidth drop has max effect.
|
||||
config.transport.rates.start_rate = DataRate::kbps(300);
|
||||
config.transport.rates.max_rate = DataRate::kbps(2000);
|
||||
config.transport.rates.min_rate = DataRate::kbps(10);
|
||||
config.transport.rates.start_rate = DataRate::KilobitsPerSec(300);
|
||||
config.transport.rates.max_rate = DataRate::KilobitsPerSec(2000);
|
||||
config.transport.rates.min_rate = DataRate::KilobitsPerSec(10);
|
||||
|
||||
auto* client = CreateVideoSendingClient(&s, std::move(config),
|
||||
{send_net->node()}, {ret_net});
|
||||
@ -298,7 +301,7 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
Scenario s("googcc_unit/cwnd_on_delay", false);
|
||||
auto send_net =
|
||||
s.CreateMutableSimulationNode([=](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(1000);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(1000);
|
||||
c->delay = TimeDelta::Millis(100);
|
||||
});
|
||||
auto ret_net = s.CreateSimulationNode(
|
||||
@ -306,9 +309,9 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
CallClientConfig config;
|
||||
config.transport.cc_factory = &factory;
|
||||
// Start high so bandwidth drop has max effect.
|
||||
config.transport.rates.start_rate = DataRate::kbps(300);
|
||||
config.transport.rates.max_rate = DataRate::kbps(2000);
|
||||
config.transport.rates.min_rate = DataRate::kbps(10);
|
||||
config.transport.rates.start_rate = DataRate::KilobitsPerSec(300);
|
||||
config.transport.rates.max_rate = DataRate::KilobitsPerSec(2000);
|
||||
config.transport.rates.min_rate = DataRate::KilobitsPerSec(10);
|
||||
|
||||
auto* client = CreateVideoSendingClient(&s, std::move(config),
|
||||
{send_net->node()}, {ret_net});
|
||||
@ -325,7 +328,7 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
|
||||
TEST_F(GoogCcNetworkControllerTest, OnNetworkRouteChanged) {
|
||||
NetworkControlUpdate update;
|
||||
DataRate new_bitrate = DataRate::bps(200000);
|
||||
DataRate new_bitrate = DataRate::BitsPerSec(200000);
|
||||
update = controller_->OnNetworkRouteChange(CreateRouteChange(new_bitrate));
|
||||
EXPECT_EQ(update.target_rate->target_rate, new_bitrate);
|
||||
EXPECT_EQ(update.pacer_config->data_rate(), new_bitrate * kDefaultPacingRate);
|
||||
@ -333,7 +336,7 @@ TEST_F(GoogCcNetworkControllerTest, OnNetworkRouteChanged) {
|
||||
|
||||
// If the bitrate is reset to -1, the new starting bitrate will be
|
||||
// the minimum default bitrate.
|
||||
const DataRate kDefaultMinBitrate = DataRate::kbps(5);
|
||||
const DataRate kDefaultMinBitrate = DataRate::KilobitsPerSec(5);
|
||||
update = controller_->OnNetworkRouteChange(CreateRouteChange());
|
||||
EXPECT_EQ(update.target_rate->target_rate, kDefaultMinBitrate);
|
||||
EXPECT_NEAR(update.pacer_config->data_rate().bps<double>(),
|
||||
@ -384,15 +387,15 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
Scenario s("googcc_unit/padding_limited", false);
|
||||
auto send_net =
|
||||
s.CreateMutableSimulationNode([=](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(1000);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(1000);
|
||||
c->delay = TimeDelta::Millis(100);
|
||||
});
|
||||
auto ret_net = s.CreateSimulationNode(
|
||||
[](NetworkSimulationConfig* c) { c->delay = TimeDelta::Millis(100); });
|
||||
CallClientConfig config;
|
||||
// Start high so bandwidth drop has max effect.
|
||||
config.transport.rates.start_rate = DataRate::kbps(1000);
|
||||
config.transport.rates.max_rate = DataRate::kbps(2000);
|
||||
config.transport.rates.start_rate = DataRate::KilobitsPerSec(1000);
|
||||
config.transport.rates.max_rate = DataRate::KilobitsPerSec(2000);
|
||||
auto* client = s.CreateClient("send", config);
|
||||
auto* route =
|
||||
s.CreateRoutes(client, {send_net->node()},
|
||||
@ -417,13 +420,13 @@ TEST_F(GoogCcNetworkControllerTest, LimitsToFloorIfRttIsHighInTrial) {
|
||||
// controller backs off until it reaches the minimum configured bitrate. This
|
||||
// allows the RTT to recover faster than the regular control mechanism would
|
||||
// achieve.
|
||||
const DataRate kBandwidthFloor = DataRate::kbps(50);
|
||||
const DataRate kBandwidthFloor = DataRate::KilobitsPerSec(50);
|
||||
ScopedFieldTrials trial("WebRTC-Bwe-MaxRttLimit/limit:2s,floor:" +
|
||||
std::to_string(kBandwidthFloor.kbps()) + "kbps/");
|
||||
// In the test case, we limit the capacity and add a cross traffic packet
|
||||
// burst that blocks media from being sent. This causes the RTT to quickly
|
||||
// increase above the threshold in the trial.
|
||||
const DataRate kLinkCapacity = DataRate::kbps(100);
|
||||
const DataRate kLinkCapacity = DataRate::KilobitsPerSec(100);
|
||||
const TimeDelta kBufferBloatDuration = TimeDelta::Seconds(10);
|
||||
Scenario s("googcc_unit/limit_trial", false);
|
||||
auto send_net = s.CreateSimulationNode([=](NetworkSimulationConfig* c) {
|
||||
@ -438,7 +441,7 @@ TEST_F(GoogCcNetworkControllerTest, LimitsToFloorIfRttIsHighInTrial) {
|
||||
auto* client = CreateVideoSendingClient(&s, config, {send_net}, {ret_net});
|
||||
// Run for a few seconds to allow the controller to stabilize.
|
||||
s.RunFor(TimeDelta::Seconds(10));
|
||||
const DataSize kBloatPacketSize = DataSize::bytes(1000);
|
||||
const DataSize kBloatPacketSize = DataSize::Bytes(1000);
|
||||
const int kBloatPacketCount =
|
||||
static_cast<int>(kBufferBloatDuration * kLinkCapacity / kBloatPacketSize);
|
||||
// This will cause the RTT to be large for a while.
|
||||
@ -459,7 +462,7 @@ TEST_F(GoogCcNetworkControllerTest, StableEstimateDoesNotVaryInSteadyState) {
|
||||
CallClientConfig config;
|
||||
config.transport.cc_factory = &factory;
|
||||
NetworkSimulationConfig net_conf;
|
||||
net_conf.bandwidth = DataRate::kbps(500);
|
||||
net_conf.bandwidth = DataRate::KilobitsPerSec(500);
|
||||
net_conf.delay = TimeDelta::Millis(100);
|
||||
auto send_net = s.CreateSimulationNode(net_conf);
|
||||
auto ret_net = s.CreateSimulationNode(net_conf);
|
||||
@ -502,11 +505,11 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
ScopedFieldTrials trial("WebRTC-Bwe-LossBasedControl/Enabled/");
|
||||
Scenario s("googcc_unit/high_loss_channel", false);
|
||||
CallClientConfig config;
|
||||
config.transport.rates.min_rate = DataRate::kbps(10);
|
||||
config.transport.rates.max_rate = DataRate::kbps(1500);
|
||||
config.transport.rates.start_rate = DataRate::kbps(300);
|
||||
config.transport.rates.min_rate = DataRate::KilobitsPerSec(10);
|
||||
config.transport.rates.max_rate = DataRate::KilobitsPerSec(1500);
|
||||
config.transport.rates.start_rate = DataRate::KilobitsPerSec(300);
|
||||
auto send_net = s.CreateSimulationNode([](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(2000);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(2000);
|
||||
c->delay = TimeDelta::Millis(200);
|
||||
c->loss_rate = 0.1;
|
||||
});
|
||||
@ -523,7 +526,7 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
DataRate AverageBitrateAfterCrossInducedLoss(std::string name) {
|
||||
Scenario s(name, false);
|
||||
NetworkSimulationConfig net_conf;
|
||||
net_conf.bandwidth = DataRate::kbps(1000);
|
||||
net_conf.bandwidth = DataRate::KilobitsPerSec(1000);
|
||||
net_conf.delay = TimeDelta::Millis(100);
|
||||
// Short queue length means that we'll induce loss when sudden TCP traffic
|
||||
// spikes are induced. This corresponds to ca 200 ms for a packet size of 1000
|
||||
@ -550,7 +553,7 @@ DataRate AverageBitrateAfterCrossInducedLoss(std::string name) {
|
||||
s.net()->StopCrossTraffic(tcp_traffic);
|
||||
s.RunFor(TimeDelta::Seconds(20));
|
||||
}
|
||||
return DataSize::bytes(video->receive()
|
||||
return DataSize::Bytes(video->receive()
|
||||
->GetStats()
|
||||
.rtp_stats.packet_counter.TotalBytes()) /
|
||||
s.TimeSinceStart();
|
||||
@ -562,7 +565,7 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
// trial, we have worse behavior.
|
||||
DataRate average_bitrate =
|
||||
AverageBitrateAfterCrossInducedLoss("googcc_unit/no_cross_loss_based");
|
||||
RTC_DCHECK_LE(average_bitrate, DataRate::kbps(650));
|
||||
RTC_DCHECK_LE(average_bitrate, DataRate::KilobitsPerSec(650));
|
||||
}
|
||||
|
||||
TEST_F(GoogCcNetworkControllerTest,
|
||||
@ -572,19 +575,19 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
ScopedFieldTrials trial("WebRTC-Bwe-LossBasedControl/Enabled/");
|
||||
DataRate average_bitrate =
|
||||
AverageBitrateAfterCrossInducedLoss("googcc_unit/cross_loss_based");
|
||||
RTC_DCHECK_GE(average_bitrate, DataRate::kbps(750));
|
||||
RTC_DCHECK_GE(average_bitrate, DataRate::KilobitsPerSec(750));
|
||||
}
|
||||
|
||||
TEST_F(GoogCcNetworkControllerTest, LossBasedEstimatorCapsRateAtModerateLoss) {
|
||||
ScopedFieldTrials trial("WebRTC-Bwe-LossBasedControl/Enabled/");
|
||||
Scenario s("googcc_unit/moderate_loss_channel", false);
|
||||
CallClientConfig config;
|
||||
config.transport.rates.min_rate = DataRate::kbps(10);
|
||||
config.transport.rates.max_rate = DataRate::kbps(5000);
|
||||
config.transport.rates.start_rate = DataRate::kbps(1000);
|
||||
config.transport.rates.min_rate = DataRate::KilobitsPerSec(10);
|
||||
config.transport.rates.max_rate = DataRate::KilobitsPerSec(5000);
|
||||
config.transport.rates.start_rate = DataRate::KilobitsPerSec(1000);
|
||||
|
||||
NetworkSimulationConfig network;
|
||||
network.bandwidth = DataRate::kbps(2000);
|
||||
network.bandwidth = DataRate::KilobitsPerSec(2000);
|
||||
network.delay = TimeDelta::Millis(100);
|
||||
// 3% loss rate is in the moderate loss rate region at 2000 kbps, limiting the
|
||||
// bitrate increase.
|
||||
@ -599,8 +602,9 @@ TEST_F(GoogCcNetworkControllerTest, LossBasedEstimatorCapsRateAtModerateLoss) {
|
||||
s.RunFor(TimeDelta::Seconds(1));
|
||||
// This increase in capacity would cause the target bitrate to increase to
|
||||
// over 4000 kbps without LossBasedControl.
|
||||
send_net->UpdateConfig(
|
||||
[](NetworkSimulationConfig* c) { c->bandwidth = DataRate::kbps(5000); });
|
||||
send_net->UpdateConfig([](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::KilobitsPerSec(5000);
|
||||
});
|
||||
s.RunFor(TimeDelta::Seconds(20));
|
||||
// Using LossBasedControl, the bitrate will not increase over 2500 kbps since
|
||||
// we have detected moderate loss.
|
||||
@ -608,8 +612,8 @@ TEST_F(GoogCcNetworkControllerTest, LossBasedEstimatorCapsRateAtModerateLoss) {
|
||||
}
|
||||
|
||||
TEST_F(GoogCcNetworkControllerTest, MaintainsLowRateInSafeResetTrial) {
|
||||
const DataRate kLinkCapacity = DataRate::kbps(200);
|
||||
const DataRate kStartRate = DataRate::kbps(300);
|
||||
const DataRate kLinkCapacity = DataRate::KilobitsPerSec(200);
|
||||
const DataRate kStartRate = DataRate::KilobitsPerSec(300);
|
||||
|
||||
ScopedFieldTrials trial("WebRTC-Bwe-SafeResetOnRouteChange/Enabled/");
|
||||
Scenario s("googcc_unit/safe_reset_low");
|
||||
@ -635,8 +639,8 @@ TEST_F(GoogCcNetworkControllerTest, MaintainsLowRateInSafeResetTrial) {
|
||||
}
|
||||
|
||||
TEST_F(GoogCcNetworkControllerTest, CutsHighRateInSafeResetTrial) {
|
||||
const DataRate kLinkCapacity = DataRate::kbps(1000);
|
||||
const DataRate kStartRate = DataRate::kbps(300);
|
||||
const DataRate kLinkCapacity = DataRate::KilobitsPerSec(1000);
|
||||
const DataRate kStartRate = DataRate::KilobitsPerSec(300);
|
||||
|
||||
ScopedFieldTrials trial("WebRTC-Bwe-SafeResetOnRouteChange/Enabled/");
|
||||
Scenario s("googcc_unit/safe_reset_high_cut");
|
||||
@ -665,9 +669,9 @@ TEST_F(GoogCcNetworkControllerTest, DetectsHighRateInSafeResetTrial) {
|
||||
ScopedFieldTrials trial(
|
||||
"WebRTC-Bwe-SafeResetOnRouteChange/Enabled,ack/"
|
||||
"WebRTC-SendSideBwe-WithOverhead/Enabled/");
|
||||
const DataRate kInitialLinkCapacity = DataRate::kbps(200);
|
||||
const DataRate kNewLinkCapacity = DataRate::kbps(800);
|
||||
const DataRate kStartRate = DataRate::kbps(300);
|
||||
const DataRate kInitialLinkCapacity = DataRate::KilobitsPerSec(200);
|
||||
const DataRate kNewLinkCapacity = DataRate::KilobitsPerSec(800);
|
||||
const DataRate kStartRate = DataRate::KilobitsPerSec(300);
|
||||
|
||||
Scenario s("googcc_unit/safe_reset_high_detect");
|
||||
auto* initial_net = s.CreateSimulationNode([&](NetworkSimulationConfig* c) {
|
||||
@ -709,8 +713,8 @@ TEST_F(GoogCcNetworkControllerTest,
|
||||
"WebRTC-Video-Pacing/factor:1.0/"
|
||||
"WebRTC-AddPacingToCongestionWindowPushback/Enabled/");
|
||||
|
||||
const DataRate kLinkCapacity = DataRate::kbps(1000);
|
||||
const DataRate kStartRate = DataRate::kbps(1000);
|
||||
const DataRate kLinkCapacity = DataRate::KilobitsPerSec(1000);
|
||||
const DataRate kStartRate = DataRate::KilobitsPerSec(1000);
|
||||
|
||||
Scenario s("googcc_unit/pacing_buffer_buildup");
|
||||
auto* net = s.CreateSimulationNode([&](NetworkSimulationConfig* c) {
|
||||
@ -735,13 +739,13 @@ TEST_F(GoogCcNetworkControllerTest, NoBandwidthTogglingInLossControlTrial) {
|
||||
ScopedFieldTrials trial("WebRTC-Bwe-LossBasedControl/Enabled/");
|
||||
Scenario s("googcc_unit/no_toggling");
|
||||
auto* send_net = s.CreateSimulationNode([&](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(2000);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(2000);
|
||||
c->loss_rate = 0.2;
|
||||
c->delay = TimeDelta::Millis(10);
|
||||
});
|
||||
|
||||
auto* client = s.CreateClient("send", [&](CallClientConfig* c) {
|
||||
c->transport.rates.start_rate = DataRate::kbps(300);
|
||||
c->transport.rates.start_rate = DataRate::KilobitsPerSec(300);
|
||||
});
|
||||
auto* route = s.CreateRoutes(
|
||||
client, {send_net}, s.CreateClient("return", CallClientConfig()),
|
||||
@ -759,7 +763,9 @@ TEST_F(GoogCcNetworkControllerTest, NoBandwidthTogglingInLossControlTrial) {
|
||||
if (bandwidth_history.size() >= window / step)
|
||||
bandwidth_history.pop();
|
||||
bandwidth_history.push(client->send_bandwidth());
|
||||
EXPECT_LT(CountBandwidthDips(bandwidth_history, DataRate::kbps(100)), 2);
|
||||
EXPECT_LT(
|
||||
CountBandwidthDips(bandwidth_history, DataRate::KilobitsPerSec(100)),
|
||||
2);
|
||||
}
|
||||
}
|
||||
|
||||
@ -767,12 +773,12 @@ TEST_F(GoogCcNetworkControllerTest, NoRttBackoffCollapseWhenVideoStops) {
|
||||
ScopedFieldTrials trial("WebRTC-Bwe-MaxRttLimit/limit:2s/");
|
||||
Scenario s("googcc_unit/rttbackoff_video_stop");
|
||||
auto* send_net = s.CreateSimulationNode([&](NetworkSimulationConfig* c) {
|
||||
c->bandwidth = DataRate::kbps(2000);
|
||||
c->bandwidth = DataRate::KilobitsPerSec(2000);
|
||||
c->delay = TimeDelta::Millis(100);
|
||||
});
|
||||
|
||||
auto* client = s.CreateClient("send", [&](CallClientConfig* c) {
|
||||
c->transport.rates.start_rate = DataRate::kbps(1000);
|
||||
c->transport.rates.start_rate = DataRate::KilobitsPerSec(1000);
|
||||
});
|
||||
auto* route = s.CreateRoutes(
|
||||
client, {send_net}, s.CreateClient("return", CallClientConfig()),
|
||||
@ -812,10 +818,10 @@ TEST_F(GoogCcNetworkControllerTest, NoCrashOnVeryLateFeedback) {
|
||||
TEST_F(GoogCcNetworkControllerTest, IsFairToTCP) {
|
||||
Scenario s("googcc_unit/tcp_fairness");
|
||||
NetworkSimulationConfig net_conf;
|
||||
net_conf.bandwidth = DataRate::kbps(1000);
|
||||
net_conf.bandwidth = DataRate::KilobitsPerSec(1000);
|
||||
net_conf.delay = TimeDelta::Millis(50);
|
||||
auto* client = s.CreateClient("send", [&](CallClientConfig* c) {
|
||||
c->transport.rates.start_rate = DataRate::kbps(1000);
|
||||
c->transport.rates.start_rate = DataRate::KilobitsPerSec(1000);
|
||||
});
|
||||
auto send_net = {s.CreateSimulationNode(net_conf)};
|
||||
auto ret_net = {s.CreateSimulationNode(net_conf)};
|
||||
|
||||
@ -18,14 +18,14 @@ LinkCapacityEstimator::LinkCapacityEstimator() {}
|
||||
|
||||
DataRate LinkCapacityEstimator::UpperBound() const {
|
||||
if (estimate_kbps_.has_value())
|
||||
return DataRate::kbps(estimate_kbps_.value() +
|
||||
3 * deviation_estimate_kbps());
|
||||
return DataRate::KilobitsPerSec(estimate_kbps_.value() +
|
||||
3 * deviation_estimate_kbps());
|
||||
return DataRate::Infinity();
|
||||
}
|
||||
|
||||
DataRate LinkCapacityEstimator::LowerBound() const {
|
||||
if (estimate_kbps_.has_value())
|
||||
return DataRate::kbps(
|
||||
return DataRate::KilobitsPerSec(
|
||||
std::max(0.0, estimate_kbps_.value() - 3 * deviation_estimate_kbps()));
|
||||
return DataRate::Zero();
|
||||
}
|
||||
@ -65,7 +65,7 @@ bool LinkCapacityEstimator::has_estimate() const {
|
||||
}
|
||||
|
||||
DataRate LinkCapacityEstimator::estimate() const {
|
||||
return DataRate::kbps(*estimate_kbps_);
|
||||
return DataRate::KilobitsPerSec(*estimate_kbps_);
|
||||
}
|
||||
|
||||
double LinkCapacityEstimator::deviation_estimate_kbps() const {
|
||||
|
||||
@ -83,9 +83,11 @@ LossBasedControlConfig::LossBasedControlConfig()
|
||||
loss_window("loss_win", TimeDelta::Millis(800)),
|
||||
loss_max_window("loss_max_win", TimeDelta::Millis(800)),
|
||||
acknowledged_rate_max_window("ackrate_max_win", TimeDelta::Millis(800)),
|
||||
increase_offset("incr_offset", DataRate::bps(1000)),
|
||||
loss_bandwidth_balance_increase("balance_incr", DataRate::kbps(0.5)),
|
||||
loss_bandwidth_balance_decrease("balance_decr", DataRate::kbps(4)),
|
||||
increase_offset("incr_offset", DataRate::BitsPerSec(1000)),
|
||||
loss_bandwidth_balance_increase("balance_incr",
|
||||
DataRate::KilobitsPerSec(0.5)),
|
||||
loss_bandwidth_balance_decrease("balance_decr",
|
||||
DataRate::KilobitsPerSec(4)),
|
||||
loss_bandwidth_balance_exponent("exponent", 0.5),
|
||||
allow_resets("resets", false),
|
||||
decrease_interval("decr_intvl", TimeDelta::Millis(300)),
|
||||
|
||||
@ -94,7 +94,7 @@ absl::optional<DataRate> ProbeBitrateEstimator::HandleProbeAndEstimateBitrate(
|
||||
packet_feedback.sent_packet.pacing_info.probe_cluster_min_probes *
|
||||
kMinReceivedProbesRatio;
|
||||
DataSize min_size =
|
||||
DataSize::bytes(
|
||||
DataSize::Bytes(
|
||||
packet_feedback.sent_packet.pacing_info.probe_cluster_min_bytes) *
|
||||
kMinReceivedBytesRatio;
|
||||
if (cluster->num_probes < min_probes || cluster->size_total < min_size)
|
||||
|
||||
@ -39,7 +39,7 @@ class TestProbeBitrateEstimator : public ::testing::Test {
|
||||
PacketResult feedback;
|
||||
feedback.sent_packet.send_time =
|
||||
kReferenceTime + TimeDelta::Millis(send_time_ms);
|
||||
feedback.sent_packet.size = DataSize::bytes(size_bytes);
|
||||
feedback.sent_packet.size = DataSize::Bytes(size_bytes);
|
||||
feedback.sent_packet.pacing_info =
|
||||
PacedPacketInfo(probe_cluster_id, min_probes, min_bytes);
|
||||
feedback.receive_time = kReferenceTime + TimeDelta::Millis(arrival_time_ms);
|
||||
|
||||
@ -209,14 +209,15 @@ std::vector<ProbeClusterConfig> ProbeController::OnMaxTotalAllocatedBitrate(
|
||||
if (!config_.first_allocation_probe_scale)
|
||||
return std::vector<ProbeClusterConfig>();
|
||||
|
||||
DataRate first_probe_rate = DataRate::bps(max_total_allocated_bitrate) *
|
||||
config_.first_allocation_probe_scale.Value();
|
||||
DataRate first_probe_rate =
|
||||
DataRate::BitsPerSec(max_total_allocated_bitrate) *
|
||||
config_.first_allocation_probe_scale.Value();
|
||||
DataRate probe_cap = config_.allocation_probe_max.Get();
|
||||
first_probe_rate = std::min(first_probe_rate, probe_cap);
|
||||
std::vector<int64_t> probes = {first_probe_rate.bps()};
|
||||
if (config_.second_allocation_probe_scale) {
|
||||
DataRate second_probe_rate =
|
||||
DataRate::bps(max_total_allocated_bitrate) *
|
||||
DataRate::BitsPerSec(max_total_allocated_bitrate) *
|
||||
config_.second_allocation_probe_scale.Value();
|
||||
second_probe_rate = std::min(second_probe_rate, probe_cap);
|
||||
if (second_probe_rate > first_probe_rate)
|
||||
@ -425,7 +426,8 @@ std::vector<ProbeClusterConfig> ProbeController::InitiateProbing(
|
||||
|
||||
ProbeClusterConfig config;
|
||||
config.at_time = Timestamp::Millis(now_ms);
|
||||
config.target_data_rate = DataRate::bps(rtc::dchecked_cast<int>(bitrate));
|
||||
config.target_data_rate =
|
||||
DataRate::BitsPerSec(rtc::dchecked_cast<int>(bitrate));
|
||||
config.target_duration = TimeDelta::Millis(kMinProbeDurationMs);
|
||||
config.target_probe_count = kMinProbePacketsSent;
|
||||
config.id = next_probe_cluster_id_;
|
||||
|
||||
@ -73,7 +73,7 @@ absl::optional<DataRate> RobustThroughputEstimator::bitrate() const {
|
||||
Timestamp max_send_time = window_[0].sent_packet.send_time;
|
||||
Timestamp min_recv_time = window_[0].receive_time;
|
||||
Timestamp max_recv_time = window_[0].receive_time;
|
||||
DataSize data_size = DataSize::bytes(0);
|
||||
DataSize data_size = DataSize::Bytes(0);
|
||||
for (const auto& packet : window_) {
|
||||
min_send_time = std::min(min_send_time, packet.sent_packet.send_time);
|
||||
max_send_time = std::max(max_send_time, packet.sent_packet.send_time);
|
||||
|
||||
@ -45,7 +45,7 @@ TEST(RobustThroughputEstimatorTest, SteadyRate) {
|
||||
FieldTrialBasedConfig field_trial_config;
|
||||
RobustThroughputEstimatorSettings settings(&field_trial_config);
|
||||
RobustThroughputEstimator throughput_estimator(settings);
|
||||
DataSize packet_size(DataSize::bytes(1000));
|
||||
DataSize packet_size(DataSize::Bytes(1000));
|
||||
Timestamp send_clock(Timestamp::Millis(100000));
|
||||
Timestamp recv_clock(Timestamp::Millis(10000));
|
||||
TimeDelta send_increment(TimeDelta::Millis(10));
|
||||
@ -75,7 +75,7 @@ TEST(RobustThroughputEstimatorTest, DelaySpike) {
|
||||
FieldTrialBasedConfig field_trial_config;
|
||||
RobustThroughputEstimatorSettings settings(&field_trial_config);
|
||||
RobustThroughputEstimator throughput_estimator(settings);
|
||||
DataSize packet_size(DataSize::bytes(1000));
|
||||
DataSize packet_size(DataSize::Bytes(1000));
|
||||
Timestamp send_clock(Timestamp::Millis(100000));
|
||||
Timestamp recv_clock(Timestamp::Millis(10000));
|
||||
TimeDelta send_increment(TimeDelta::Millis(10));
|
||||
@ -124,7 +124,7 @@ TEST(RobustThroughputEstimatorTest, CappedByReceiveRate) {
|
||||
FieldTrialBasedConfig field_trial_config;
|
||||
RobustThroughputEstimatorSettings settings(&field_trial_config);
|
||||
RobustThroughputEstimator throughput_estimator(settings);
|
||||
DataSize packet_size(DataSize::bytes(1000));
|
||||
DataSize packet_size(DataSize::Bytes(1000));
|
||||
Timestamp send_clock(Timestamp::Millis(100000));
|
||||
Timestamp recv_clock(Timestamp::Millis(10000));
|
||||
TimeDelta send_increment(TimeDelta::Millis(10));
|
||||
@ -148,7 +148,7 @@ TEST(RobustThroughputEstimatorTest, CappedBySendRate) {
|
||||
FieldTrialBasedConfig field_trial_config;
|
||||
RobustThroughputEstimatorSettings settings(&field_trial_config);
|
||||
RobustThroughputEstimator throughput_estimator(settings);
|
||||
DataSize packet_size(DataSize::bytes(1000));
|
||||
DataSize packet_size(DataSize::Bytes(1000));
|
||||
Timestamp send_clock(Timestamp::Millis(100000));
|
||||
Timestamp recv_clock(Timestamp::Millis(10000));
|
||||
TimeDelta send_increment(TimeDelta::Millis(20));
|
||||
|
||||
@ -32,7 +32,7 @@ constexpr TimeDelta kBweDecreaseInterval = TimeDelta::Millis(300);
|
||||
constexpr TimeDelta kStartPhase = TimeDelta::Millis(2000);
|
||||
constexpr TimeDelta kBweConverganceTime = TimeDelta::Millis(20000);
|
||||
constexpr int kLimitNumPackets = 20;
|
||||
constexpr DataRate kDefaultMaxBitrate = DataRate::BitsPerSec<1000000000>();
|
||||
constexpr DataRate kDefaultMaxBitrate = DataRate::BitsPerSec(1000000000);
|
||||
constexpr TimeDelta kLowBitrateLogPeriod = TimeDelta::Millis(10000);
|
||||
constexpr TimeDelta kRtcEventLogPeriod = TimeDelta::Millis(5000);
|
||||
// Expecting that RTCP feedback is sent uniformly within [0.5, 1.5]s intervals.
|
||||
@ -149,14 +149,14 @@ void LinkCapacityTracker::OnRttBackoff(DataRate backoff_rate,
|
||||
}
|
||||
|
||||
DataRate LinkCapacityTracker::estimate() const {
|
||||
return DataRate::bps(capacity_estimate_bps_);
|
||||
return DataRate::BitsPerSec(capacity_estimate_bps_);
|
||||
}
|
||||
|
||||
RttBasedBackoff::RttBasedBackoff()
|
||||
: rtt_limit_("limit", TimeDelta::Seconds(3)),
|
||||
drop_fraction_("fraction", 0.8),
|
||||
drop_interval_("interval", TimeDelta::Seconds(1)),
|
||||
bandwidth_floor_("floor", DataRate::kbps(5)),
|
||||
bandwidth_floor_("floor", DataRate::KilobitsPerSec(5)),
|
||||
// By initializing this to plus infinity, we make sure that we never
|
||||
// trigger rtt backoff unless packet feedback is enabled.
|
||||
last_propagation_rtt_update_(Timestamp::PlusInfinity()),
|
||||
@ -191,7 +191,7 @@ SendSideBandwidthEstimation::SendSideBandwidthEstimation(RtcEventLog* event_log)
|
||||
current_target_(DataRate::Zero()),
|
||||
last_logged_target_(DataRate::Zero()),
|
||||
min_bitrate_configured_(
|
||||
DataRate::bps(congestion_controller::GetMinBitrateBps())),
|
||||
DataRate::BitsPerSec(congestion_controller::GetMinBitrateBps())),
|
||||
max_bitrate_configured_(kDefaultMaxBitrate),
|
||||
last_low_bitrate_log_(Timestamp::MinusInfinity()),
|
||||
has_decreased_since_last_fraction_loss_(false),
|
||||
@ -223,7 +223,7 @@ SendSideBandwidthEstimation::SendSideBandwidthEstimation(RtcEventLog* event_log)
|
||||
RTC_LOG(LS_INFO) << "Enabled BweLossExperiment with parameters "
|
||||
<< low_loss_threshold_ << ", " << high_loss_threshold_
|
||||
<< ", " << bitrate_threshold_kbps;
|
||||
bitrate_threshold_ = DataRate::kbps(bitrate_threshold_kbps);
|
||||
bitrate_threshold_ = DataRate::KilobitsPerSec(bitrate_threshold_kbps);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -235,7 +235,7 @@ void SendSideBandwidthEstimation::OnRouteChange() {
|
||||
expected_packets_since_last_loss_update_ = 0;
|
||||
current_target_ = DataRate::Zero();
|
||||
min_bitrate_configured_ =
|
||||
DataRate::bps(congestion_controller::GetMinBitrateBps());
|
||||
DataRate::BitsPerSec(congestion_controller::GetMinBitrateBps());
|
||||
max_bitrate_configured_ = kDefaultMaxBitrate;
|
||||
last_low_bitrate_log_ = Timestamp::MinusInfinity();
|
||||
has_decreased_since_last_fraction_loss_ = false;
|
||||
@ -373,7 +373,8 @@ void SendSideBandwidthEstimation::UpdatePacketsLost(int packets_lost,
|
||||
|
||||
void SendSideBandwidthEstimation::UpdateUmaStatsPacketsLost(Timestamp at_time,
|
||||
int packets_lost) {
|
||||
DataRate bitrate_kbps = DataRate::kbps((current_target_.bps() + 500) / 1000);
|
||||
DataRate bitrate_kbps =
|
||||
DataRate::KilobitsPerSec((current_target_.bps() + 500) / 1000);
|
||||
for (size_t i = 0; i < kNumUmaRampupMetrics; ++i) {
|
||||
if (!rampup_uma_stats_updated_[i] &&
|
||||
bitrate_kbps.kbps() >= kUmaRampupMetrics[i].bitrate_kbps) {
|
||||
@ -490,13 +491,13 @@ void SendSideBandwidthEstimation::UpdateEstimate(Timestamp at_time) {
|
||||
// If instead one would do: current_bitrate_ *= 1.08^(delta time),
|
||||
// it would take over one second since the lower packet loss to achieve
|
||||
// 108kbps.
|
||||
DataRate new_bitrate =
|
||||
DataRate::bps(min_bitrate_history_.front().second.bps() * 1.08 + 0.5);
|
||||
DataRate new_bitrate = DataRate::BitsPerSec(
|
||||
min_bitrate_history_.front().second.bps() * 1.08 + 0.5);
|
||||
|
||||
// Add 1 kbps extra, just to make sure that we do not get stuck
|
||||
// (gives a little extra increase at low rates, negligible at higher
|
||||
// rates).
|
||||
new_bitrate += DataRate::bps(1000);
|
||||
new_bitrate += DataRate::BitsPerSec(1000);
|
||||
UpdateTargetBitrate(new_bitrate, at_time);
|
||||
return;
|
||||
} else if (current_target_ > bitrate_threshold_) {
|
||||
@ -513,10 +514,10 @@ void SendSideBandwidthEstimation::UpdateEstimate(Timestamp at_time) {
|
||||
// Reduce rate:
|
||||
// newRate = rate * (1 - 0.5*lossRate);
|
||||
// where packetLoss = 256*lossRate;
|
||||
DataRate new_bitrate =
|
||||
DataRate::bps((current_target_.bps() *
|
||||
static_cast<double>(512 - last_fraction_loss_)) /
|
||||
512.0);
|
||||
DataRate new_bitrate = DataRate::BitsPerSec(
|
||||
(current_target_.bps() *
|
||||
static_cast<double>(512 - last_fraction_loss_)) /
|
||||
512.0);
|
||||
has_decreased_since_last_fraction_loss_ = true;
|
||||
UpdateTargetBitrate(new_bitrate, at_time);
|
||||
return;
|
||||
@ -572,7 +573,7 @@ DataRate SendSideBandwidthEstimation::MaybeRampupOrBackoff(DataRate new_bitrate,
|
||||
at_time - last_loss_packet_report_;
|
||||
if (time_since_loss_packet_report < 1.2 * kMaxRtcpFeedbackInterval) {
|
||||
new_bitrate = min_bitrate_history_.front().second * 1.08;
|
||||
new_bitrate += DataRate::bps(1000);
|
||||
new_bitrate += DataRate::BitsPerSec(1000);
|
||||
}
|
||||
return new_bitrate;
|
||||
}
|
||||
|
||||
@ -38,8 +38,9 @@ void TestProbing(bool use_delay_based) {
|
||||
::testing::NiceMock<MockRtcEventLog> event_log;
|
||||
SendSideBandwidthEstimation bwe(&event_log);
|
||||
int64_t now_ms = 0;
|
||||
bwe.SetMinMaxBitrate(DataRate::bps(100000), DataRate::bps(1500000));
|
||||
bwe.SetSendBitrate(DataRate::bps(200000), Timestamp::Millis(now_ms));
|
||||
bwe.SetMinMaxBitrate(DataRate::BitsPerSec(100000),
|
||||
DataRate::BitsPerSec(1500000));
|
||||
bwe.SetSendBitrate(DataRate::BitsPerSec(200000), Timestamp::Millis(now_ms));
|
||||
|
||||
const int kRembBps = 1000000;
|
||||
const int kSecondRembBps = kRembBps + 500000;
|
||||
@ -51,10 +52,10 @@ void TestProbing(bool use_delay_based) {
|
||||
// Initial REMB applies immediately.
|
||||
if (use_delay_based) {
|
||||
bwe.UpdateDelayBasedEstimate(Timestamp::Millis(now_ms),
|
||||
DataRate::bps(kRembBps));
|
||||
DataRate::BitsPerSec(kRembBps));
|
||||
} else {
|
||||
bwe.UpdateReceiverEstimate(Timestamp::Millis(now_ms),
|
||||
DataRate::bps(kRembBps));
|
||||
DataRate::BitsPerSec(kRembBps));
|
||||
}
|
||||
bwe.UpdateEstimate(Timestamp::Millis(now_ms));
|
||||
EXPECT_EQ(kRembBps, bwe.target_rate().bps());
|
||||
@ -63,10 +64,10 @@ void TestProbing(bool use_delay_based) {
|
||||
now_ms += 2001;
|
||||
if (use_delay_based) {
|
||||
bwe.UpdateDelayBasedEstimate(Timestamp::Millis(now_ms),
|
||||
DataRate::bps(kSecondRembBps));
|
||||
DataRate::BitsPerSec(kSecondRembBps));
|
||||
} else {
|
||||
bwe.UpdateReceiverEstimate(Timestamp::Millis(now_ms),
|
||||
DataRate::bps(kSecondRembBps));
|
||||
DataRate::BitsPerSec(kSecondRembBps));
|
||||
}
|
||||
bwe.UpdateEstimate(Timestamp::Millis(now_ms));
|
||||
EXPECT_EQ(kRembBps, bwe.target_rate().bps());
|
||||
@ -91,8 +92,9 @@ TEST(SendSideBweTest, DoesntReapplyBitrateDecreaseWithoutFollowingRemb) {
|
||||
static const int kMinBitrateBps = 100000;
|
||||
static const int kInitialBitrateBps = 1000000;
|
||||
int64_t now_ms = 1000;
|
||||
bwe.SetMinMaxBitrate(DataRate::bps(kMinBitrateBps), DataRate::bps(1500000));
|
||||
bwe.SetSendBitrate(DataRate::bps(kInitialBitrateBps),
|
||||
bwe.SetMinMaxBitrate(DataRate::BitsPerSec(kMinBitrateBps),
|
||||
DataRate::BitsPerSec(1500000));
|
||||
bwe.SetSendBitrate(DataRate::BitsPerSec(kInitialBitrateBps),
|
||||
Timestamp::Millis(now_ms));
|
||||
|
||||
static const uint8_t kFractionLoss = 128;
|
||||
@ -145,18 +147,18 @@ TEST(SendSideBweTest, SettingSendBitrateOverridesDelayBasedEstimate) {
|
||||
|
||||
int64_t now_ms = 0;
|
||||
|
||||
bwe.SetMinMaxBitrate(DataRate::bps(kMinBitrateBps),
|
||||
DataRate::bps(kMaxBitrateBps));
|
||||
bwe.SetSendBitrate(DataRate::bps(kInitialBitrateBps),
|
||||
bwe.SetMinMaxBitrate(DataRate::BitsPerSec(kMinBitrateBps),
|
||||
DataRate::BitsPerSec(kMaxBitrateBps));
|
||||
bwe.SetSendBitrate(DataRate::BitsPerSec(kInitialBitrateBps),
|
||||
Timestamp::Millis(now_ms));
|
||||
|
||||
bwe.UpdateDelayBasedEstimate(Timestamp::Millis(now_ms),
|
||||
DataRate::bps(kDelayBasedBitrateBps));
|
||||
DataRate::BitsPerSec(kDelayBasedBitrateBps));
|
||||
bwe.UpdateEstimate(Timestamp::Millis(now_ms));
|
||||
EXPECT_GE(bwe.target_rate().bps(), kInitialBitrateBps);
|
||||
EXPECT_LE(bwe.target_rate().bps(), kDelayBasedBitrateBps);
|
||||
|
||||
bwe.SetSendBitrate(DataRate::bps(kForcedHighBitrate),
|
||||
bwe.SetSendBitrate(DataRate::BitsPerSec(kForcedHighBitrate),
|
||||
Timestamp::Millis(now_ms));
|
||||
EXPECT_EQ(bwe.target_rate().bps(), kForcedHighBitrate);
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ GoogCcStatePrinter::GoogCcStatePrinter() {
|
||||
|
||||
std::deque<FieldLogger*> GoogCcStatePrinter::CreateLoggers() {
|
||||
auto stable_estimate = [this] {
|
||||
return DataRate::kbps(
|
||||
return DataRate::KilobitsPerSec(
|
||||
controller_->delay_based_bwe_->rate_control_.link_capacity_
|
||||
.estimate_kbps_.value_or(-INFINITY));
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user