Enable adaptive threshold experiment by default.
BUG=webrtc:4711 R=mflodman@webrtc.org Review URL: https://codereview.webrtc.org/1682403002 . Cr-Commit-Position: refs/heads/master@{#11640}
This commit is contained in:
parent
9d0c43242b
commit
44c65e9eed
@ -44,7 +44,7 @@ AimdRateControl::AimdRateControl()
|
||||
beta_(0.85f),
|
||||
rtt_(kDefaultRttMs),
|
||||
time_of_last_log_(-1),
|
||||
in_experiment_(AdaptiveThresholdExperimentIsEnabled()) {}
|
||||
in_experiment_(!AdaptiveThresholdExperimentIsDisabled()) {}
|
||||
|
||||
void AimdRateControl::SetMinBitrate(int min_bitrate_bps) {
|
||||
min_configured_bitrate_bps_ = min_bitrate_bps;
|
||||
|
||||
@ -30,17 +30,19 @@ namespace webrtc {
|
||||
const char kAdaptiveThresholdExperiment[] = "WebRTC-AdaptiveBweThreshold";
|
||||
const char kEnabledPrefix[] = "Enabled";
|
||||
const size_t kEnabledPrefixLength = sizeof(kEnabledPrefix) - 1;
|
||||
const size_t kMinExperimentLength = kEnabledPrefixLength + 3;
|
||||
const char kDisabledPrefix[] = "Disabled";
|
||||
const size_t kDisabledPrefixLength = sizeof(kDisabledPrefix) - 1;
|
||||
|
||||
const double kMaxAdaptOffsetMs = 15.0;
|
||||
const double kOverUsingTimeThreshold = 10;
|
||||
|
||||
bool AdaptiveThresholdExperimentIsEnabled() {
|
||||
bool AdaptiveThresholdExperimentIsDisabled() {
|
||||
std::string experiment_string =
|
||||
webrtc::field_trial::FindFullName(kAdaptiveThresholdExperiment);
|
||||
const size_t kMinExperimentLength = kDisabledPrefixLength;
|
||||
if (experiment_string.length() < kMinExperimentLength)
|
||||
return false;
|
||||
return experiment_string.substr(0, kEnabledPrefixLength) == kEnabledPrefix;
|
||||
return experiment_string.substr(0, kDisabledPrefixLength) == kDisabledPrefix;
|
||||
}
|
||||
|
||||
// Gets thresholds from the experiment name following the format
|
||||
@ -48,14 +50,20 @@ bool AdaptiveThresholdExperimentIsEnabled() {
|
||||
bool ReadExperimentConstants(double* k_up, double* k_down) {
|
||||
std::string experiment_string =
|
||||
webrtc::field_trial::FindFullName(kAdaptiveThresholdExperiment);
|
||||
const size_t kMinExperimentLength = kEnabledPrefixLength + 3;
|
||||
if (experiment_string.length() < kMinExperimentLength ||
|
||||
experiment_string.substr(0, kEnabledPrefixLength) != kEnabledPrefix)
|
||||
return false;
|
||||
return sscanf(experiment_string.substr(kEnabledPrefixLength + 1).c_str(),
|
||||
"%lf,%lf", k_up, k_down) == 2;
|
||||
}
|
||||
|
||||
OveruseDetector::OveruseDetector(const OverUseDetectorOptions& options)
|
||||
: in_experiment_(AdaptiveThresholdExperimentIsEnabled()),
|
||||
k_up_(0.01),
|
||||
k_down_(0.00018),
|
||||
// Experiment is on by default, but can be disabled with finch by setting
|
||||
// the field trial string to "WebRTC-AdaptiveBweThreshold/Disabled/".
|
||||
: in_experiment_(!AdaptiveThresholdExperimentIsDisabled()),
|
||||
k_up_(0.004),
|
||||
k_down_(0.00006),
|
||||
overusing_time_threshold_(100),
|
||||
options_(options),
|
||||
threshold_(12.5),
|
||||
@ -64,7 +72,7 @@ OveruseDetector::OveruseDetector(const OverUseDetectorOptions& options)
|
||||
time_over_using_(-1),
|
||||
overuse_counter_(0),
|
||||
hypothesis_(kBwNormal) {
|
||||
if (in_experiment_)
|
||||
if (!AdaptiveThresholdExperimentIsDisabled())
|
||||
InitializeExperiment();
|
||||
}
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
namespace webrtc {
|
||||
enum RateControlRegion;
|
||||
|
||||
bool AdaptiveThresholdExperimentIsEnabled();
|
||||
bool AdaptiveThresholdExperimentIsDisabled();
|
||||
|
||||
class OveruseDetector {
|
||||
public:
|
||||
@ -45,7 +45,7 @@ class OveruseDetector {
|
||||
void UpdateThreshold(double modified_offset, int64_t now_ms);
|
||||
void InitializeExperiment();
|
||||
|
||||
const bool in_experiment_;
|
||||
bool in_experiment_;
|
||||
double k_up_;
|
||||
double k_down_;
|
||||
double overusing_time_threshold_;
|
||||
|
||||
@ -195,7 +195,7 @@ TEST_F(OveruseDetectorTest, SimpleOveruse2000Kbit30fps) {
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(8, frames_until_overuse);
|
||||
EXPECT_EQ(5, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, SimpleOveruse100kbit10fps) {
|
||||
@ -210,7 +210,7 @@ TEST_F(OveruseDetectorTest, SimpleOveruse100kbit10fps) {
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(6, frames_until_overuse);
|
||||
EXPECT_EQ(5, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, DISABLED_OveruseWithHighVariance100Kbit10fps) {
|
||||
@ -302,7 +302,7 @@ TEST_F(OveruseDetectorTest, OveruseWithLowVariance2000Kbit30fps) {
|
||||
}
|
||||
// Simulate a higher send pace, that is too high.
|
||||
// Total build up of 30 ms.
|
||||
for (int j = 0; j < 5; ++j) {
|
||||
for (int j = 0; j < 3; ++j) {
|
||||
UpdateDetector(rtp_timestamp, now_ms_, packet_size);
|
||||
UpdateDetector(rtp_timestamp, now_ms_, packet_size);
|
||||
UpdateDetector(rtp_timestamp, now_ms_, packet_size);
|
||||
@ -331,10 +331,10 @@ TEST_F(OveruseDetectorTest, MAYBE_LowGaussianVariance30Kbit3fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(1, unique_overuse);
|
||||
EXPECT_EQ(56, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(13, frames_until_overuse);
|
||||
EXPECT_EQ(430, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, LowGaussianVarianceFastDrift30Kbit3fps) {
|
||||
@ -345,7 +345,7 @@ TEST_F(OveruseDetectorTest, LowGaussianVarianceFastDrift30Kbit3fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(1, unique_overuse);
|
||||
EXPECT_EQ(56, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(4, frames_until_overuse);
|
||||
@ -359,10 +359,10 @@ TEST_F(OveruseDetectorTest, HighGaussianVariance30Kbit3fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(1, unique_overuse);
|
||||
EXPECT_EQ(77, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(32, frames_until_overuse);
|
||||
EXPECT_EQ(430, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, HighGaussianVarianceFastDrift30Kbit3fps) {
|
||||
@ -373,7 +373,7 @@ TEST_F(OveruseDetectorTest, HighGaussianVarianceFastDrift30Kbit3fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(1, unique_overuse);
|
||||
EXPECT_EQ(77, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(4, frames_until_overuse);
|
||||
@ -393,10 +393,10 @@ TEST_F(OveruseDetectorTest, MAYBE_LowGaussianVariance100Kbit5fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(45, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(13, frames_until_overuse);
|
||||
EXPECT_EQ(32, frames_until_overuse);
|
||||
}
|
||||
|
||||
#if defined(WEBRTC_ANDROID)
|
||||
@ -413,7 +413,7 @@ TEST_F(OveruseDetectorTest, MAYBE_HighGaussianVariance100Kbit5fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(1, unique_overuse);
|
||||
EXPECT_EQ(70, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(32, frames_until_overuse);
|
||||
@ -433,7 +433,7 @@ TEST_F(OveruseDetectorTest, MAYBE_LowGaussianVariance100Kbit10fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(1, unique_overuse);
|
||||
EXPECT_EQ(33, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(13, frames_until_overuse);
|
||||
@ -453,10 +453,10 @@ TEST_F(OveruseDetectorTest, MAYBE_HighGaussianVariance100Kbit10fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(45, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(32, frames_until_overuse);
|
||||
EXPECT_EQ(31, frames_until_overuse);
|
||||
}
|
||||
|
||||
#if defined(WEBRTC_ANDROID)
|
||||
@ -473,10 +473,10 @@ TEST_F(OveruseDetectorTest, MAYBE_LowGaussianVariance300Kbit30fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(25, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(15, frames_until_overuse);
|
||||
EXPECT_EQ(13, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, LowGaussianVarianceFastDrift300Kbit30fps) {
|
||||
@ -487,10 +487,10 @@ TEST_F(OveruseDetectorTest, LowGaussianVarianceFastDrift300Kbit30fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(25, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(6, frames_until_overuse);
|
||||
EXPECT_EQ(4, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, HighGaussianVariance300Kbit30fps) {
|
||||
@ -501,10 +501,10 @@ TEST_F(OveruseDetectorTest, HighGaussianVariance300Kbit30fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(46, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(41, frames_until_overuse);
|
||||
EXPECT_EQ(31, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, HighGaussianVarianceFastDrift300Kbit30fps) {
|
||||
@ -515,10 +515,10 @@ TEST_F(OveruseDetectorTest, HighGaussianVarianceFastDrift300Kbit30fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(46, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(10, frames_until_overuse);
|
||||
EXPECT_EQ(6, frames_until_overuse);
|
||||
}
|
||||
|
||||
#if defined(WEBRTC_ANDROID)
|
||||
@ -535,10 +535,10 @@ TEST_F(OveruseDetectorTest, MAYBE_LowGaussianVariance1000Kbit30fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(25, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(15, frames_until_overuse);
|
||||
EXPECT_EQ(13, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, LowGaussianVarianceFastDrift1000Kbit30fps) {
|
||||
@ -549,10 +549,10 @@ TEST_F(OveruseDetectorTest, LowGaussianVarianceFastDrift1000Kbit30fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(25, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(6, frames_until_overuse);
|
||||
EXPECT_EQ(4, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, HighGaussianVariance1000Kbit30fps) {
|
||||
@ -563,10 +563,10 @@ TEST_F(OveruseDetectorTest, HighGaussianVariance1000Kbit30fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(45, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(41, frames_until_overuse);
|
||||
EXPECT_EQ(31, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, HighGaussianVarianceFastDrift1000Kbit30fps) {
|
||||
@ -577,10 +577,10 @@ TEST_F(OveruseDetectorTest, HighGaussianVarianceFastDrift1000Kbit30fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(45, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(10, frames_until_overuse);
|
||||
EXPECT_EQ(6, frames_until_overuse);
|
||||
}
|
||||
|
||||
#if defined(WEBRTC_ANDROID)
|
||||
@ -597,10 +597,10 @@ TEST_F(OveruseDetectorTest, MAYBE_LowGaussianVariance2000Kbit30fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(25, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(15, frames_until_overuse);
|
||||
EXPECT_EQ(13, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, LowGaussianVarianceFastDrift2000Kbit30fps) {
|
||||
@ -611,10 +611,10 @@ TEST_F(OveruseDetectorTest, LowGaussianVarianceFastDrift2000Kbit30fps) {
|
||||
int sigma_ms = 3;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(25, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(6, frames_until_overuse);
|
||||
EXPECT_EQ(4, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, HighGaussianVariance2000Kbit30fps) {
|
||||
@ -625,10 +625,10 @@ TEST_F(OveruseDetectorTest, HighGaussianVariance2000Kbit30fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(45, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(41, frames_until_overuse);
|
||||
EXPECT_EQ(31, frames_until_overuse);
|
||||
}
|
||||
|
||||
TEST_F(OveruseDetectorTest, HighGaussianVarianceFastDrift2000Kbit30fps) {
|
||||
@ -639,10 +639,10 @@ TEST_F(OveruseDetectorTest, HighGaussianVarianceFastDrift2000Kbit30fps) {
|
||||
int sigma_ms = 10;
|
||||
int unique_overuse = Run100000Samples(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms);
|
||||
EXPECT_EQ(0, unique_overuse);
|
||||
EXPECT_EQ(45, unique_overuse);
|
||||
int frames_until_overuse = RunUntilOveruse(packets_per_frame, packet_size,
|
||||
frame_duration_ms, sigma_ms, drift_per_frame_ms);
|
||||
EXPECT_EQ(10, frames_until_overuse);
|
||||
EXPECT_EQ(6, frames_until_overuse);
|
||||
}
|
||||
|
||||
class OveruseDetectorExperimentTest : public OveruseDetectorTest {
|
||||
|
||||
@ -39,19 +39,19 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, RateIncreaseRtpTimestamps) {
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, CapacityDropOneStream) {
|
||||
CapacityDropTestHelper(1, false, 567);
|
||||
CapacityDropTestHelper(1, false, 700);
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, CapacityDropOneStreamWrap) {
|
||||
CapacityDropTestHelper(1, true, 567);
|
||||
CapacityDropTestHelper(1, true, 700);
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, CapacityDropTwoStreamsWrap) {
|
||||
CapacityDropTestHelper(2, true, 600);
|
||||
CapacityDropTestHelper(2, true, 633);
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, CapacityDropThreeStreamsWrap) {
|
||||
CapacityDropTestHelper(3, true, 567);
|
||||
CapacityDropTestHelper(3, true, 633);
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, CapacityDropThirteenStreamsWrap) {
|
||||
@ -59,11 +59,11 @@ TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, CapacityDropThirteenStreamsWrap) {
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, CapacityDropNineteenStreamsWrap) {
|
||||
CapacityDropTestHelper(19, true, 633);
|
||||
CapacityDropTestHelper(19, true, 667);
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, CapacityDropThirtyStreamsWrap) {
|
||||
CapacityDropTestHelper(30, true, 600);
|
||||
CapacityDropTestHelper(30, true, 667);
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorAbsSendTimeTest, TestTimestampGrouping) {
|
||||
|
||||
@ -47,11 +47,11 @@ TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropOneStreamWrap) {
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropTwoStreamsWrap) {
|
||||
CapacityDropTestHelper(2, true, 567);
|
||||
CapacityDropTestHelper(2, true, 767);
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropThreeStreamsWrap) {
|
||||
CapacityDropTestHelper(3, true, 734);
|
||||
CapacityDropTestHelper(3, true, 767);
|
||||
}
|
||||
|
||||
TEST_F(RemoteBitrateEstimatorSingleTest, CapacityDropThirteenStreamsWrap) {
|
||||
|
||||
@ -467,7 +467,7 @@ void RemoteBitrateEstimatorTest::CapacityDropTestHelper(
|
||||
uint32_t bitrate_bps = SteadyStateRun(
|
||||
kDefaultSsrc, steady_state_time * kFramerate, kStartBitrate,
|
||||
kMinExpectedBitrate, kMaxExpectedBitrate, kInitialCapacityBps);
|
||||
EXPECT_NEAR(kInitialCapacityBps, bitrate_bps, 110000u);
|
||||
EXPECT_NEAR(kInitialCapacityBps, bitrate_bps, 130000u);
|
||||
bitrate_observer_->Reset();
|
||||
|
||||
// Reduce the capacity and verify the decrease time.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user