mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00

This changes the default behavior to use pacing factor of 1.1x instead of 2.5x, it also sets libvpx rate controler as trusted, turns on the encoder pushback mechanism and sets spatial hysteresis to 1.2. The unused "dynamic rate" settings in libvpx is removed. The new settings matches what has been used in chromium since 2019. If needed, the legacy behavior can be enabled using the field trial WebRTC-VideoRateControl. Bug: webrtc:10155 Change-Id: I8186b491aa5bef61e8f568e96c980ca68f0c208f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/186661 Commit-Queue: Erik Språng <sprang@webrtc.org> Reviewed-by: Per Kjellander <perkj@webrtc.org> Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32477}
80 lines
2.8 KiB
C++
80 lines
2.8 KiB
C++
/*
|
|
* Copyright 2019 The WebRTC project authors. All Rights Reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#include "rtc_base/experiments/stable_target_rate_experiment.h"
|
|
|
|
#include "test/field_trial.h"
|
|
#include "test/gtest.h"
|
|
|
|
namespace webrtc {
|
|
|
|
TEST(StableBweExperimentTest, Default) {
|
|
StableTargetRateExperiment config =
|
|
StableTargetRateExperiment::ParseFromFieldTrials();
|
|
EXPECT_FALSE(config.IsEnabled());
|
|
EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.2);
|
|
EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.35);
|
|
}
|
|
|
|
TEST(StableBweExperimentTest, EnabledNoHysteresis) {
|
|
webrtc::test::ScopedFieldTrials field_trials(
|
|
"WebRTC-StableTargetRate/enabled:true/");
|
|
|
|
StableTargetRateExperiment config =
|
|
StableTargetRateExperiment::ParseFromFieldTrials();
|
|
EXPECT_TRUE(config.IsEnabled());
|
|
EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.2);
|
|
EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.35);
|
|
}
|
|
|
|
TEST(StableBweExperimentTest, EnabledWithHysteresis) {
|
|
webrtc::test::ScopedFieldTrials field_trials(
|
|
"WebRTC-StableTargetRate/"
|
|
"enabled:true,"
|
|
"video_hysteresis_factor:1.1,"
|
|
"screenshare_hysteresis_factor:1.2/");
|
|
|
|
StableTargetRateExperiment config =
|
|
StableTargetRateExperiment::ParseFromFieldTrials();
|
|
EXPECT_TRUE(config.IsEnabled());
|
|
EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.1);
|
|
EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.2);
|
|
}
|
|
|
|
TEST(StableBweExperimentTest, OnNoHysteresisPropagatesVideoRateHystersis) {
|
|
webrtc::test::ScopedFieldTrials field_trials(
|
|
"WebRTC-StableTargetRate/enabled:true/"
|
|
"WebRTC-VideoRateControl/video_hysteresis:1.3,"
|
|
"screenshare_hysteresis:1.4/");
|
|
|
|
StableTargetRateExperiment config =
|
|
StableTargetRateExperiment::ParseFromFieldTrials();
|
|
EXPECT_TRUE(config.IsEnabled());
|
|
EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.3);
|
|
EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.4);
|
|
}
|
|
|
|
TEST(StableBweExperimentTest, HysteresisOverrideVideoRateHystersis) {
|
|
webrtc::test::ScopedFieldTrials field_trials(
|
|
"WebRTC-StableTargetRate/"
|
|
"enabled:true,"
|
|
"video_hysteresis_factor:1.1,"
|
|
"screenshare_hysteresis_factor:1.2/"
|
|
"WebRTC-VideoRateControl/video_hysteresis:1.3,"
|
|
"screenshare_hysteresis:1.4/");
|
|
|
|
StableTargetRateExperiment config =
|
|
StableTargetRateExperiment::ParseFromFieldTrials();
|
|
EXPECT_TRUE(config.IsEnabled());
|
|
EXPECT_EQ(config.GetVideoHysteresisFactor(), 1.1);
|
|
EXPECT_EQ(config.GetScreenshareHysteresisFactor(), 1.2);
|
|
}
|
|
|
|
} // namespace webrtc
|