Adds WebRTC-DisableRtxRateLimiter for enable/disable RTX rate limiter.
Change-Id: I22e65c5b2a0b5017aa52a3f1af0fc2fd6357f439 Bug: webrtc:15184 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/305660 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Ying Wang <yinwa@webrtc.org> Cr-Commit-Position: refs/heads/main@{#40116}
This commit is contained in:
parent
f67d1fd42c
commit
aa6d4fa622
@ -490,6 +490,7 @@ rtc_library("rate_limiter") {
|
||||
":macromagic",
|
||||
":rate_statistics",
|
||||
"../system_wrappers",
|
||||
"../system_wrappers:field_trial",
|
||||
"synchronization:mutex",
|
||||
]
|
||||
absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
|
||||
@ -1867,6 +1868,7 @@ if (rtc_include_tests) {
|
||||
"../api/numerics",
|
||||
"../api/units:time_delta",
|
||||
"../system_wrappers",
|
||||
"../test:field_trial",
|
||||
"../test:fileutils",
|
||||
"../test:test_main",
|
||||
"../test:test_support",
|
||||
|
||||
@ -14,6 +14,7 @@
|
||||
|
||||
#include "absl/types/optional.h"
|
||||
#include "system_wrappers/include/clock.h"
|
||||
#include "system_wrappers/include/field_trial.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
@ -34,7 +35,8 @@ bool RateLimiter::TryUseRate(size_t packet_size_bytes) {
|
||||
MutexLock lock(&lock_);
|
||||
int64_t now_ms = clock_->TimeInMilliseconds();
|
||||
absl::optional<uint32_t> current_rate = current_rate_.Rate(now_ms);
|
||||
if (current_rate) {
|
||||
if (!webrtc::field_trial::IsEnabled("WebRTC-DisableRtxRateLimiter") &&
|
||||
current_rate) {
|
||||
// If there is a current rate, check if adding bytes would cause maximum
|
||||
// bitrate target to be exceeded. If there is NOT a valid current rate,
|
||||
// allow allocating rate even if target is exceeded. This prevents
|
||||
|
||||
@ -15,6 +15,7 @@
|
||||
#include "rtc_base/event.h"
|
||||
#include "rtc_base/platform_thread.h"
|
||||
#include "system_wrappers/include/clock.h"
|
||||
#include "test/field_trial.h"
|
||||
#include "test/gtest.h"
|
||||
|
||||
namespace webrtc {
|
||||
@ -106,6 +107,19 @@ TEST_F(RateLimitTest, WindowSizeLimits) {
|
||||
EXPECT_FALSE(rate_limiter->SetWindowSize(kWindowSizeMs + 1));
|
||||
}
|
||||
|
||||
TEST_F(RateLimitTest, DiablesRtxRateLimiterByFieldTrial) {
|
||||
webrtc::test::ScopedFieldTrials trial(
|
||||
"WebRTC-DisableRtxRateLimiter/Enabled/");
|
||||
|
||||
// Fill rate, extend window to full size.
|
||||
EXPECT_TRUE(rate_limiter->TryUseRate(kRateFillingBytes / 2));
|
||||
clock_.AdvanceTimeMilliseconds(kWindowSizeMs - 1);
|
||||
EXPECT_TRUE(rate_limiter->TryUseRate(kRateFillingBytes / 2));
|
||||
|
||||
// Does not limit rate even when all rate consumed.
|
||||
EXPECT_TRUE(rate_limiter->TryUseRate(1));
|
||||
}
|
||||
|
||||
static constexpr TimeDelta kMaxTimeout = TimeDelta::Seconds(30);
|
||||
|
||||
class ThreadTask {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user