Reland "Enable Video-QualityScaling experiment by default"
This time exclude iOS from the default behaviour. Bug: webrtc:12401 Change-Id: Ib1f77123b72c3365591b56455332b3d97b307b26 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/205006 Reviewed-by: Åsa Persson <asapersson@webrtc.org> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#33173}
This commit is contained in:
parent
aab91c7b3a
commit
483b31c231
@ -116,7 +116,7 @@ INSTANTIATE_TEST_SUITE_P(
|
|||||||
QualityScalerTest,
|
QualityScalerTest,
|
||||||
::testing::Values(
|
::testing::Values(
|
||||||
"WebRTC-Video-QualityScaling/Enabled-1,2,3,4,5,6,7,8,0.9,0.99,1/",
|
"WebRTC-Video-QualityScaling/Enabled-1,2,3,4,5,6,7,8,0.9,0.99,1/",
|
||||||
""));
|
"WebRTC-Video-QualityScaling/Disabled/"));
|
||||||
|
|
||||||
TEST_P(QualityScalerTest, DownscalesAfterContinuousFramedrop) {
|
TEST_P(QualityScalerTest, DownscalesAfterContinuousFramedrop) {
|
||||||
task_queue_.SendTask([this] { TriggerScale(kScaleDown); }, RTC_FROM_HERE);
|
task_queue_.SendTask([this] { TriggerScale(kScaleDown); }, RTC_FROM_HERE);
|
||||||
@ -171,7 +171,8 @@ TEST_P(QualityScalerTest, DoesNotDownscaleAfterHalfFramedrop) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_P(QualityScalerTest, DownscalesAfterTwoThirdsIfFieldTrialEnabled) {
|
TEST_P(QualityScalerTest, DownscalesAfterTwoThirdsIfFieldTrialEnabled) {
|
||||||
const bool kDownScaleExpected = !GetParam().empty();
|
const bool kDownScaleExpected =
|
||||||
|
GetParam().find("Enabled") != std::string::npos;
|
||||||
task_queue_.SendTask(
|
task_queue_.SendTask(
|
||||||
[this] {
|
[this] {
|
||||||
for (int i = 0; i < kFramerate * 5; ++i) {
|
for (int i = 0; i < kFramerate * 5; ++i) {
|
||||||
|
|||||||
@ -25,6 +25,11 @@ constexpr int kMaxVp9Qp = 255;
|
|||||||
constexpr int kMaxH264Qp = 51;
|
constexpr int kMaxH264Qp = 51;
|
||||||
constexpr int kMaxGenericQp = 255;
|
constexpr int kMaxGenericQp = 255;
|
||||||
|
|
||||||
|
#if !defined(WEBRTC_IOS)
|
||||||
|
constexpr char kDefaultQualityScalingSetttings[] =
|
||||||
|
"Enabled-29,95,149,205,24,37,26,36,0.9995,0.9999,1";
|
||||||
|
#endif
|
||||||
|
|
||||||
absl::optional<VideoEncoder::QpThresholds> GetThresholds(int low,
|
absl::optional<VideoEncoder::QpThresholds> GetThresholds(int low,
|
||||||
int high,
|
int high,
|
||||||
int max) {
|
int max) {
|
||||||
@ -38,15 +43,22 @@ absl::optional<VideoEncoder::QpThresholds> GetThresholds(int low,
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
bool QualityScalingExperiment::Enabled() {
|
bool QualityScalingExperiment::Enabled() {
|
||||||
|
#if defined(WEBRTC_IOS)
|
||||||
return webrtc::field_trial::IsEnabled(kFieldTrial);
|
return webrtc::field_trial::IsEnabled(kFieldTrial);
|
||||||
|
#else
|
||||||
|
return !webrtc::field_trial::IsDisabled(kFieldTrial);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
absl::optional<QualityScalingExperiment::Settings>
|
absl::optional<QualityScalingExperiment::Settings>
|
||||||
QualityScalingExperiment::ParseSettings() {
|
QualityScalingExperiment::ParseSettings() {
|
||||||
const std::string group = webrtc::field_trial::FindFullName(kFieldTrial);
|
std::string group = webrtc::field_trial::FindFullName(kFieldTrial);
|
||||||
|
// TODO(http://crbug.com/webrtc/12401): Completely remove the experiment code
|
||||||
|
// after few releases.
|
||||||
|
#if !defined(WEBRTC_IOS)
|
||||||
if (group.empty())
|
if (group.empty())
|
||||||
return absl::nullopt;
|
group = kDefaultQualityScalingSetttings;
|
||||||
|
#endif
|
||||||
Settings s;
|
Settings s;
|
||||||
if (sscanf(group.c_str(), "Enabled-%d,%d,%d,%d,%d,%d,%d,%d,%f,%f,%d",
|
if (sscanf(group.c_str(), "Enabled-%d,%d,%d,%d,%d,%d,%d,%d,%f,%f,%d",
|
||||||
&s.vp8_low, &s.vp8_high, &s.vp9_low, &s.vp9_high, &s.h264_low,
|
&s.vp8_low, &s.vp8_high, &s.vp9_low, &s.vp9_high, &s.h264_low,
|
||||||
|
|||||||
@ -38,10 +38,18 @@ void ExpectEqualConfig(QualityScalingExperiment::Config a,
|
|||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
TEST(QualityScalingExperimentTest, DisabledWithoutFieldTrial) {
|
#if !defined(WEBRTC_IOS)
|
||||||
|
// TODO(bugs.webrtc.org/12401): investigate why QualityScaler kicks in on iOS.
|
||||||
|
TEST(QualityScalingExperimentTest, DefaultEnabledWithoutFieldTrial) {
|
||||||
|
webrtc::test::ScopedFieldTrials field_trials("");
|
||||||
|
EXPECT_TRUE(QualityScalingExperiment::Enabled());
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
TEST(QualityScalingExperimentTest, DefaultDisabledWithoutFieldTrialIOS) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials("");
|
webrtc::test::ScopedFieldTrials field_trials("");
|
||||||
EXPECT_FALSE(QualityScalingExperiment::Enabled());
|
EXPECT_FALSE(QualityScalingExperiment::Enabled());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
TEST(QualityScalingExperimentTest, EnabledWithFieldTrial) {
|
TEST(QualityScalingExperimentTest, EnabledWithFieldTrial) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials(
|
webrtc::test::ScopedFieldTrials field_trials(
|
||||||
@ -59,10 +67,19 @@ TEST(QualityScalingExperimentTest, ParseSettings) {
|
|||||||
ExpectEqualSettings(kExpected, *settings);
|
ExpectEqualSettings(kExpected, *settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined(WEBRTC_IOS)
|
||||||
|
// TODO(bugs.webrtc.org/12401): investigate why QualityScaler kicks in on iOS.
|
||||||
|
TEST(QualityScalingExperimentTest, ParseSettingsUsesDefaultsWithoutFieldTrial) {
|
||||||
|
webrtc::test::ScopedFieldTrials field_trials("");
|
||||||
|
// Uses some default hard coded values.
|
||||||
|
EXPECT_TRUE(QualityScalingExperiment::ParseSettings());
|
||||||
|
}
|
||||||
|
#else
|
||||||
TEST(QualityScalingExperimentTest, ParseSettingsFailsWithoutFieldTrial) {
|
TEST(QualityScalingExperimentTest, ParseSettingsFailsWithoutFieldTrial) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials("");
|
webrtc::test::ScopedFieldTrials field_trials("");
|
||||||
EXPECT_FALSE(QualityScalingExperiment::ParseSettings());
|
EXPECT_FALSE(QualityScalingExperiment::ParseSettings());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
TEST(QualityScalingExperimentTest, ParseSettingsFailsWithInvalidFieldTrial) {
|
TEST(QualityScalingExperimentTest, ParseSettingsFailsWithInvalidFieldTrial) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials(
|
webrtc::test::ScopedFieldTrials field_trials(
|
||||||
|
|||||||
@ -5691,6 +5691,8 @@ TEST_F(VideoStreamEncoderTest, RampsUpInQualityWhenBwIsHigh) {
|
|||||||
|
|
||||||
TEST_F(VideoStreamEncoderTest,
|
TEST_F(VideoStreamEncoderTest,
|
||||||
QualityScalerAdaptationsRemovedWhenQualityScalingDisabled) {
|
QualityScalerAdaptationsRemovedWhenQualityScalingDisabled) {
|
||||||
|
webrtc::test::ScopedFieldTrials field_trials(
|
||||||
|
"WebRTC-Video-QualityScaling/Disabled/");
|
||||||
AdaptingFrameForwarder source(&time_controller_);
|
AdaptingFrameForwarder source(&time_controller_);
|
||||||
source.set_adaptation_enabled(true);
|
source.set_adaptation_enabled(true);
|
||||||
video_stream_encoder_->SetSource(&source,
|
video_stream_encoder_->SetSource(&source,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user