Formatting of WebRTC-Vp9InterLayerPred field trial.
Use conventional style ../{Default|Disabled|Enabled} with parameter
inter_layer_pred_mode:{off|on|onkeypic} which maps directly to
InterLayerPredMode enum.
Bug: chromium:949536
Change-Id: If34e789b031d0db3eb2748b0b824492237ad5187
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137800
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28008}
This commit is contained in:
parent
3be9da37bb
commit
19da5ced24
@ -29,6 +29,7 @@
|
||||
#include "media/engine/webrtc_media_engine.h"
|
||||
#include "media/engine/webrtc_voice_engine.h"
|
||||
#include "rtc_base/copy_on_write_buffer.h"
|
||||
#include "rtc_base/experiments/field_trial_parser.h"
|
||||
#include "rtc_base/logging.h"
|
||||
#include "rtc_base/strings/string_builder.h"
|
||||
#include "rtc_base/time_utils.h"
|
||||
@ -387,15 +388,18 @@ WebRtcVideoChannel::WebRtcVideoSendStream::ConfigureVideoEncoderSettings(
|
||||
// Ensure frame dropping is always enabled.
|
||||
RTC_DCHECK(vp9_settings.frameDroppingOn);
|
||||
if (!is_screencast) {
|
||||
const std::string group =
|
||||
webrtc::field_trial::FindFullName("WebRTC-Vp9InterLayerPred");
|
||||
int mode;
|
||||
if (!group.empty() && sscanf(group.c_str(), "%d", &mode) == 1 &&
|
||||
(mode == static_cast<int>(webrtc::InterLayerPredMode::kOn) ||
|
||||
mode == static_cast<int>(webrtc::InterLayerPredMode::kOnKeyPic) ||
|
||||
mode == static_cast<int>(webrtc::InterLayerPredMode::kOff))) {
|
||||
vp9_settings.interLayerPred =
|
||||
static_cast<webrtc::InterLayerPredMode>(mode);
|
||||
webrtc::FieldTrialFlag interlayer_pred_experiment_enabled =
|
||||
webrtc::FieldTrialFlag("Enabled");
|
||||
webrtc::FieldTrialEnum<webrtc::InterLayerPredMode> inter_layer_pred_mode(
|
||||
"inter_layer_pred_mode", webrtc::InterLayerPredMode::kOnKeyPic,
|
||||
{{"off", webrtc::InterLayerPredMode::kOff},
|
||||
{"on", webrtc::InterLayerPredMode::kOn},
|
||||
{"onkeypic", webrtc::InterLayerPredMode::kOnKeyPic}});
|
||||
webrtc::ParseFieldTrial(
|
||||
{&interlayer_pred_experiment_enabled, &inter_layer_pred_mode},
|
||||
webrtc::field_trial::FindFullName("WebRTC-Vp9InterLayerPred"));
|
||||
if (interlayer_pred_experiment_enabled) {
|
||||
vp9_settings.interLayerPred = inter_layer_pred_mode;
|
||||
} else {
|
||||
// Limit inter-layer prediction to key pictures by default.
|
||||
vp9_settings.interLayerPred = webrtc::InterLayerPredMode::kOnKeyPic;
|
||||
|
||||
@ -3215,7 +3215,7 @@ class Vp9SettingsTestWithFieldTrial
|
||||
: Vp9SettingsTest(::testing::get<0>(GetParam())),
|
||||
num_spatial_layers_(::testing::get<1>(GetParam())),
|
||||
num_temporal_layers_(::testing::get<2>(GetParam())),
|
||||
inter_layer_pred_(::testing::get<3>(GetParam())) {}
|
||||
inter_layer_pred_mode_(::testing::get<3>(GetParam())) {}
|
||||
|
||||
void VerifySettings(int num_spatial_layers,
|
||||
int num_temporal_layers,
|
||||
@ -3236,18 +3236,19 @@ class Vp9SettingsTestWithFieldTrial
|
||||
ASSERT_TRUE(stream->GetVp9Settings(&vp9_settings)) << "No VP9 config set.";
|
||||
EXPECT_EQ(num_spatial_layers, vp9_settings.numberOfSpatialLayers);
|
||||
EXPECT_EQ(num_temporal_layers, vp9_settings.numberOfTemporalLayers);
|
||||
EXPECT_EQ(inter_layer_pred_, vp9_settings.interLayerPred);
|
||||
EXPECT_EQ(inter_layer_pred_mode_, vp9_settings.interLayerPred);
|
||||
|
||||
EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, nullptr, nullptr));
|
||||
}
|
||||
|
||||
const uint8_t num_spatial_layers_;
|
||||
const uint8_t num_temporal_layers_;
|
||||
const webrtc::InterLayerPredMode inter_layer_pred_;
|
||||
const webrtc::InterLayerPredMode inter_layer_pred_mode_;
|
||||
};
|
||||
|
||||
TEST_P(Vp9SettingsTestWithFieldTrial, VerifyCodecSettings) {
|
||||
VerifySettings(num_spatial_layers_, num_temporal_layers_, inter_layer_pred_);
|
||||
VerifySettings(num_spatial_layers_, num_temporal_layers_,
|
||||
inter_layer_pred_mode_);
|
||||
}
|
||||
|
||||
INSTANTIATE_TEST_SUITE_P(
|
||||
@ -3263,18 +3264,29 @@ INSTANTIATE_TEST_SUITE_P(
|
||||
2,
|
||||
3,
|
||||
webrtc::InterLayerPredMode::kOnKeyPic),
|
||||
std::make_tuple("WebRTC-Vp9InterLayerPred/0/",
|
||||
std::make_tuple("WebRTC-Vp9InterLayerPred/Default/",
|
||||
1,
|
||||
1,
|
||||
webrtc::InterLayerPredMode::kOff),
|
||||
std::make_tuple("WebRTC-Vp9InterLayerPred/1/",
|
||||
webrtc::InterLayerPredMode::kOnKeyPic),
|
||||
std::make_tuple("WebRTC-Vp9InterLayerPred/Disabled/",
|
||||
1,
|
||||
1,
|
||||
webrtc::InterLayerPredMode::kOn),
|
||||
std::make_tuple("WebRTC-Vp9InterLayerPred/2/",
|
||||
1,
|
||||
1,
|
||||
webrtc::InterLayerPredMode::kOnKeyPic)));
|
||||
webrtc::InterLayerPredMode::kOnKeyPic),
|
||||
std::make_tuple(
|
||||
"WebRTC-Vp9InterLayerPred/Enabled,inter_layer_pred_mode:off/",
|
||||
1,
|
||||
1,
|
||||
webrtc::InterLayerPredMode::kOff),
|
||||
std::make_tuple(
|
||||
"WebRTC-Vp9InterLayerPred/Enabled,inter_layer_pred_mode:on/",
|
||||
1,
|
||||
1,
|
||||
webrtc::InterLayerPredMode::kOn),
|
||||
std::make_tuple(
|
||||
"WebRTC-Vp9InterLayerPred/Enabled,inter_layer_pred_mode:onkeypic/",
|
||||
1,
|
||||
1,
|
||||
webrtc::InterLayerPredMode::kOnKeyPic)));
|
||||
|
||||
TEST_F(WebRtcVideoChannelTest, VerifyMinBitrate) {
|
||||
std::vector<webrtc::VideoStream> streams = AddSendStream()->GetVideoStreams();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user