mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00
Query EncoderInfoSettings through propagated field trials
Instead of from the global field trial string. Bug: webrtc:42220378 Change-Id: Iddb41429e388792de02f702b4caa35689c57d9e5 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347720 Reviewed-by: Erik Språng <sprang@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#42201}
This commit is contained in:
parent
a3458809fc
commit
652bd288b3
9 changed files with 54 additions and 36 deletions
|
@ -265,7 +265,8 @@ SimulcastEncoderAdapter::SimulcastEncoderAdapter(
|
||||||
.Vp8BoostBaseLayerQuality()),
|
.Vp8BoostBaseLayerQuality()),
|
||||||
prefer_temporal_support_on_base_layer_(env_.field_trials().IsEnabled(
|
prefer_temporal_support_on_base_layer_(env_.field_trials().IsEnabled(
|
||||||
"WebRTC-Video-PreferTemporalSupportOnBaseLayer")),
|
"WebRTC-Video-PreferTemporalSupportOnBaseLayer")),
|
||||||
per_layer_pli_(SupportsPerLayerPictureLossIndication(format.parameters)) {
|
per_layer_pli_(SupportsPerLayerPictureLossIndication(format.parameters)),
|
||||||
|
encoder_info_override_(env.field_trials()) {
|
||||||
RTC_DCHECK(primary_factory);
|
RTC_DCHECK(primary_factory);
|
||||||
|
|
||||||
// The adapter is typically created on the worker thread, but operated on
|
// The adapter is typically created on the worker thread, but operated on
|
||||||
|
|
|
@ -180,6 +180,7 @@ LibaomAv1Encoder::LibaomAv1Encoder(const Environment& env,
|
||||||
frame_for_encode_(nullptr),
|
frame_for_encode_(nullptr),
|
||||||
encoded_image_callback_(nullptr),
|
encoded_image_callback_(nullptr),
|
||||||
timestamp_(0),
|
timestamp_(0),
|
||||||
|
encoder_info_override_(env.field_trials()),
|
||||||
disable_frame_dropping_(env.field_trials().IsEnabled(
|
disable_frame_dropping_(env.field_trials().IsEnabled(
|
||||||
"WebRTC-LibaomAv1Encoder-DisableFrameDropping")),
|
"WebRTC-LibaomAv1Encoder-DisableFrameDropping")),
|
||||||
max_consec_frame_drop_(GetMaxConsecutiveFrameDrop(env.field_trials())) {}
|
max_consec_frame_drop_(GetMaxConsecutiveFrameDrop(env.field_trials())) {}
|
||||||
|
|
|
@ -316,6 +316,7 @@ LibvpxVp8Encoder::LibvpxVp8Encoder(const Environment& env,
|
||||||
last_encoder_output_time_(kMaxSimulcastStreams,
|
last_encoder_output_time_(kMaxSimulcastStreams,
|
||||||
Timestamp::MinusInfinity()),
|
Timestamp::MinusInfinity()),
|
||||||
framerate_controller_(variable_framerate_screenshare::kMinFps),
|
framerate_controller_(variable_framerate_screenshare::kMinFps),
|
||||||
|
encoder_info_override_(env_.field_trials()),
|
||||||
max_frame_drop_interval_(ParseFrameDropInterval(env_.field_trials())),
|
max_frame_drop_interval_(ParseFrameDropInterval(env_.field_trials())),
|
||||||
android_specific_threading_settings_(env_.field_trials().IsEnabled(
|
android_specific_threading_settings_(env_.field_trials().IsEnabled(
|
||||||
"WebRTC-LibvpxVp8Encoder-AndroidSpecificThreadingSettings")) {
|
"WebRTC-LibvpxVp8Encoder-AndroidSpecificThreadingSettings")) {
|
||||||
|
|
|
@ -264,6 +264,7 @@ LibvpxVp9Encoder::LibvpxVp9Encoder(const Environment& env,
|
||||||
performance_flags_(ParsePerformanceFlagsFromTrials(env.field_trials())),
|
performance_flags_(ParsePerformanceFlagsFromTrials(env.field_trials())),
|
||||||
num_steady_state_frames_(0),
|
num_steady_state_frames_(0),
|
||||||
config_changed_(true),
|
config_changed_(true),
|
||||||
|
encoder_info_override_(env.field_trials()),
|
||||||
svc_frame_drop_config_(ParseSvcFrameDropConfig(env.field_trials())) {
|
svc_frame_drop_config_(ParseSvcFrameDropConfig(env.field_trials())) {
|
||||||
codec_ = {};
|
codec_ = {};
|
||||||
memset(&svc_params_, 0, sizeof(vpx_svc_extra_cfg_t));
|
memset(&svc_params_, 0, sizeof(vpx_svc_extra_cfg_t));
|
||||||
|
|
|
@ -145,8 +145,8 @@ rtc_library("encoder_info_settings") {
|
||||||
deps = [
|
deps = [
|
||||||
":field_trial_parser",
|
":field_trial_parser",
|
||||||
"..:logging",
|
"..:logging",
|
||||||
|
"../../api:field_trials_view",
|
||||||
"../../api/video_codecs:video_codecs_api",
|
"../../api/video_codecs:video_codecs_api",
|
||||||
"../../system_wrappers:field_trial",
|
|
||||||
]
|
]
|
||||||
absl_deps = [
|
absl_deps = [
|
||||||
"//third_party/abseil-cpp/absl/strings",
|
"//third_party/abseil-cpp/absl/strings",
|
||||||
|
|
|
@ -13,9 +13,9 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
|
#include "api/field_trials_view.h"
|
||||||
#include "rtc_base/experiments/field_trial_list.h"
|
#include "rtc_base/experiments/field_trial_list.h"
|
||||||
#include "rtc_base/logging.h"
|
#include "rtc_base/logging.h"
|
||||||
#include "system_wrappers/include/field_trial.h"
|
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -175,7 +175,8 @@ EncoderInfoSettings::GetSinglecastBitrateLimitForResolutionWhenQpIsUntrusted(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
EncoderInfoSettings::EncoderInfoSettings(absl::string_view name)
|
EncoderInfoSettings::EncoderInfoSettings(const FieldTrialsView& field_trials,
|
||||||
|
absl::string_view name)
|
||||||
: requested_resolution_alignment_("requested_resolution_alignment"),
|
: requested_resolution_alignment_("requested_resolution_alignment"),
|
||||||
apply_alignment_to_all_simulcast_layers_(
|
apply_alignment_to_all_simulcast_layers_(
|
||||||
"apply_alignment_to_all_simulcast_layers") {
|
"apply_alignment_to_all_simulcast_layers") {
|
||||||
|
@ -194,15 +195,15 @@ EncoderInfoSettings::EncoderInfoSettings(absl::string_view name)
|
||||||
[](BitrateLimit* b) { return &b->max_bitrate_bps; })},
|
[](BitrateLimit* b) { return &b->max_bitrate_bps; })},
|
||||||
{});
|
{});
|
||||||
|
|
||||||
std::string name_str(name);
|
std::string experiment_string = field_trials.Lookup(name);
|
||||||
if (field_trial::FindFullName(name_str).empty()) {
|
if (experiment_string.empty()) {
|
||||||
// Encoder name not found, use common string applying to all encoders.
|
// Encoder name not found, use common string applying to all encoders.
|
||||||
name_str = "WebRTC-GetEncoderInfoOverride";
|
experiment_string = field_trials.Lookup("WebRTC-GetEncoderInfoOverride");
|
||||||
}
|
}
|
||||||
|
|
||||||
ParseFieldTrial({&bitrate_limits, &requested_resolution_alignment_,
|
ParseFieldTrial({&bitrate_limits, &requested_resolution_alignment_,
|
||||||
&apply_alignment_to_all_simulcast_layers_},
|
&apply_alignment_to_all_simulcast_layers_},
|
||||||
field_trial::FindFullName(name_str));
|
experiment_string);
|
||||||
|
|
||||||
resolution_bitrate_limits_ = ToResolutionBitrateLimits(bitrate_limits.Get());
|
resolution_bitrate_limits_ = ToResolutionBitrateLimits(bitrate_limits.Get());
|
||||||
}
|
}
|
||||||
|
@ -220,17 +221,22 @@ absl::optional<uint32_t> EncoderInfoSettings::requested_resolution_alignment()
|
||||||
EncoderInfoSettings::~EncoderInfoSettings() {}
|
EncoderInfoSettings::~EncoderInfoSettings() {}
|
||||||
|
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings::
|
SimulcastEncoderAdapterEncoderInfoSettings::
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings()
|
SimulcastEncoderAdapterEncoderInfoSettings(
|
||||||
|
const FieldTrialsView& field_trials)
|
||||||
: EncoderInfoSettings(
|
: EncoderInfoSettings(
|
||||||
|
field_trials,
|
||||||
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride") {}
|
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride") {}
|
||||||
|
|
||||||
LibvpxVp8EncoderInfoSettings::LibvpxVp8EncoderInfoSettings()
|
LibvpxVp8EncoderInfoSettings::LibvpxVp8EncoderInfoSettings(
|
||||||
: EncoderInfoSettings("WebRTC-VP8-GetEncoderInfoOverride") {}
|
const FieldTrialsView& field_trials)
|
||||||
|
: EncoderInfoSettings(field_trials, "WebRTC-VP8-GetEncoderInfoOverride") {}
|
||||||
|
|
||||||
LibvpxVp9EncoderInfoSettings::LibvpxVp9EncoderInfoSettings()
|
LibvpxVp9EncoderInfoSettings::LibvpxVp9EncoderInfoSettings(
|
||||||
: EncoderInfoSettings("WebRTC-VP9-GetEncoderInfoOverride") {}
|
const FieldTrialsView& field_trials)
|
||||||
|
: EncoderInfoSettings(field_trials, "WebRTC-VP9-GetEncoderInfoOverride") {}
|
||||||
|
|
||||||
LibaomAv1EncoderInfoSettings::LibaomAv1EncoderInfoSettings()
|
LibaomAv1EncoderInfoSettings::LibaomAv1EncoderInfoSettings(
|
||||||
: EncoderInfoSettings("WebRTC-Av1-GetEncoderInfoOverride") {}
|
const FieldTrialsView& field_trials)
|
||||||
|
: EncoderInfoSettings(field_trials, "WebRTC-Av1-GetEncoderInfoOverride") {}
|
||||||
|
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|
|
@ -16,6 +16,7 @@
|
||||||
|
|
||||||
#include "absl/strings/string_view.h"
|
#include "absl/strings/string_view.h"
|
||||||
#include "absl/types/optional.h"
|
#include "absl/types/optional.h"
|
||||||
|
#include "api/field_trials_view.h"
|
||||||
#include "api/video_codecs/video_encoder.h"
|
#include "api/video_codecs/video_encoder.h"
|
||||||
#include "rtc_base/experiments/field_trial_parser.h"
|
#include "rtc_base/experiments/field_trial_parser.h"
|
||||||
|
|
||||||
|
@ -59,7 +60,8 @@ class EncoderInfoSettings {
|
||||||
resolution_bitrate_limits);
|
resolution_bitrate_limits);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
explicit EncoderInfoSettings(absl::string_view name);
|
EncoderInfoSettings(const FieldTrialsView& field_trials,
|
||||||
|
absl::string_view name);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
FieldTrialOptional<uint32_t> requested_resolution_alignment_;
|
FieldTrialOptional<uint32_t> requested_resolution_alignment_;
|
||||||
|
@ -70,28 +72,29 @@ class EncoderInfoSettings {
|
||||||
// EncoderInfo settings for SimulcastEncoderAdapter.
|
// EncoderInfo settings for SimulcastEncoderAdapter.
|
||||||
class SimulcastEncoderAdapterEncoderInfoSettings : public EncoderInfoSettings {
|
class SimulcastEncoderAdapterEncoderInfoSettings : public EncoderInfoSettings {
|
||||||
public:
|
public:
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings();
|
explicit SimulcastEncoderAdapterEncoderInfoSettings(
|
||||||
|
const FieldTrialsView& field_trials);
|
||||||
~SimulcastEncoderAdapterEncoderInfoSettings() override {}
|
~SimulcastEncoderAdapterEncoderInfoSettings() override {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// EncoderInfo settings for LibvpxVp8Encoder.
|
// EncoderInfo settings for LibvpxVp8Encoder.
|
||||||
class LibvpxVp8EncoderInfoSettings : public EncoderInfoSettings {
|
class LibvpxVp8EncoderInfoSettings : public EncoderInfoSettings {
|
||||||
public:
|
public:
|
||||||
LibvpxVp8EncoderInfoSettings();
|
explicit LibvpxVp8EncoderInfoSettings(const FieldTrialsView& field_trials);
|
||||||
~LibvpxVp8EncoderInfoSettings() override {}
|
~LibvpxVp8EncoderInfoSettings() override {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// EncoderInfo settings for LibvpxVp9Encoder.
|
// EncoderInfo settings for LibvpxVp9Encoder.
|
||||||
class LibvpxVp9EncoderInfoSettings : public EncoderInfoSettings {
|
class LibvpxVp9EncoderInfoSettings : public EncoderInfoSettings {
|
||||||
public:
|
public:
|
||||||
LibvpxVp9EncoderInfoSettings();
|
explicit LibvpxVp9EncoderInfoSettings(const FieldTrialsView& field_trials);
|
||||||
~LibvpxVp9EncoderInfoSettings() override {}
|
~LibvpxVp9EncoderInfoSettings() override {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// EncoderInfo settings for LibaomAv1Encoder.
|
// EncoderInfo settings for LibaomAv1Encoder.
|
||||||
class LibaomAv1EncoderInfoSettings : public EncoderInfoSettings {
|
class LibaomAv1EncoderInfoSettings : public EncoderInfoSettings {
|
||||||
public:
|
public:
|
||||||
LibaomAv1EncoderInfoSettings();
|
explicit LibaomAv1EncoderInfoSettings(const FieldTrialsView& field_trials);
|
||||||
~LibaomAv1EncoderInfoSettings() override {}
|
~LibaomAv1EncoderInfoSettings() override {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -11,59 +11,63 @@
|
||||||
#include "rtc_base/experiments/encoder_info_settings.h"
|
#include "rtc_base/experiments/encoder_info_settings.h"
|
||||||
|
|
||||||
#include "rtc_base/gunit.h"
|
#include "rtc_base/gunit.h"
|
||||||
#include "test/field_trial.h"
|
#include "test/explicit_key_value_config.h"
|
||||||
#include "test/gmock.h"
|
#include "test/gmock.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
|
using test::ExplicitKeyValueConfig;
|
||||||
|
|
||||||
TEST(SimulcastEncoderAdapterSettingsTest, NoValuesWithoutFieldTrial) {
|
TEST(SimulcastEncoderAdapterSettingsTest, NoValuesWithoutFieldTrial) {
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings settings;
|
ExplicitKeyValueConfig field_trials("");
|
||||||
|
|
||||||
|
SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
|
||||||
EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
|
EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
|
||||||
EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
|
EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
|
||||||
EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
|
EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SimulcastEncoderAdapterSettingsTest, NoValueForInvalidAlignment) {
|
TEST(SimulcastEncoderAdapterSettingsTest, NoValueForInvalidAlignment) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials(
|
ExplicitKeyValueConfig field_trials(
|
||||||
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
||||||
"requested_resolution_alignment:0/");
|
"requested_resolution_alignment:0/");
|
||||||
|
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings settings;
|
SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
|
||||||
EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
|
EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionAlignment) {
|
TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionAlignment) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials(
|
ExplicitKeyValueConfig field_trials(
|
||||||
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
||||||
"requested_resolution_alignment:2/");
|
"requested_resolution_alignment:2/");
|
||||||
|
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings settings;
|
SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
|
||||||
EXPECT_EQ(2u, settings.requested_resolution_alignment());
|
EXPECT_EQ(2u, settings.requested_resolution_alignment());
|
||||||
EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
|
EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
|
||||||
EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
|
EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SimulcastEncoderAdapterSettingsTest, GetApplyAlignment) {
|
TEST(SimulcastEncoderAdapterSettingsTest, GetApplyAlignment) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials(
|
ExplicitKeyValueConfig field_trials(
|
||||||
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
||||||
"requested_resolution_alignment:3,"
|
"requested_resolution_alignment:3,"
|
||||||
"apply_alignment_to_all_simulcast_layers/");
|
"apply_alignment_to_all_simulcast_layers/");
|
||||||
|
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings settings;
|
SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
|
||||||
EXPECT_EQ(3u, settings.requested_resolution_alignment());
|
EXPECT_EQ(3u, settings.requested_resolution_alignment());
|
||||||
EXPECT_TRUE(settings.apply_alignment_to_all_simulcast_layers());
|
EXPECT_TRUE(settings.apply_alignment_to_all_simulcast_layers());
|
||||||
EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
|
EXPECT_TRUE(settings.resolution_bitrate_limits().empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimits) {
|
TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimits) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials(
|
ExplicitKeyValueConfig field_trials(
|
||||||
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
||||||
"frame_size_pixels:123,"
|
"frame_size_pixels:123,"
|
||||||
"min_start_bitrate_bps:11000,"
|
"min_start_bitrate_bps:11000,"
|
||||||
"min_bitrate_bps:44000,"
|
"min_bitrate_bps:44000,"
|
||||||
"max_bitrate_bps:77000/");
|
"max_bitrate_bps:77000/");
|
||||||
|
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings settings;
|
SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
|
||||||
EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
|
EXPECT_EQ(absl::nullopt, settings.requested_resolution_alignment());
|
||||||
EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
|
EXPECT_FALSE(settings.apply_alignment_to_all_simulcast_layers());
|
||||||
EXPECT_THAT(settings.resolution_bitrate_limits(),
|
EXPECT_THAT(settings.resolution_bitrate_limits(),
|
||||||
|
@ -72,14 +76,14 @@ TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimits) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimitsWithList) {
|
TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimitsWithList) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials(
|
ExplicitKeyValueConfig field_trials(
|
||||||
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
"WebRTC-SimulcastEncoderAdapter-GetEncoderInfoOverride/"
|
||||||
"frame_size_pixels:123|456|789,"
|
"frame_size_pixels:123|456|789,"
|
||||||
"min_start_bitrate_bps:11000|22000|33000,"
|
"min_start_bitrate_bps:11000|22000|33000,"
|
||||||
"min_bitrate_bps:44000|55000|66000,"
|
"min_bitrate_bps:44000|55000|66000,"
|
||||||
"max_bitrate_bps:77000|88000|99000/");
|
"max_bitrate_bps:77000|88000|99000/");
|
||||||
|
|
||||||
SimulcastEncoderAdapterEncoderInfoSettings settings;
|
SimulcastEncoderAdapterEncoderInfoSettings settings(field_trials);
|
||||||
EXPECT_THAT(
|
EXPECT_THAT(
|
||||||
settings.resolution_bitrate_limits(),
|
settings.resolution_bitrate_limits(),
|
||||||
::testing::ElementsAre(
|
::testing::ElementsAre(
|
||||||
|
@ -89,13 +93,13 @@ TEST(SimulcastEncoderAdapterSettingsTest, GetResolutionBitrateLimitsWithList) {
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(EncoderSettingsTest, CommonSettingsUsedIfEncoderNameUnspecified) {
|
TEST(EncoderSettingsTest, CommonSettingsUsedIfEncoderNameUnspecified) {
|
||||||
webrtc::test::ScopedFieldTrials field_trials(
|
ExplicitKeyValueConfig field_trials(
|
||||||
"WebRTC-VP8-GetEncoderInfoOverride/requested_resolution_alignment:2/"
|
"WebRTC-VP8-GetEncoderInfoOverride/requested_resolution_alignment:2/"
|
||||||
"WebRTC-GetEncoderInfoOverride/requested_resolution_alignment:3/");
|
"WebRTC-GetEncoderInfoOverride/requested_resolution_alignment:3/");
|
||||||
|
|
||||||
LibvpxVp8EncoderInfoSettings vp8_settings;
|
LibvpxVp8EncoderInfoSettings vp8_settings(field_trials);
|
||||||
EXPECT_EQ(2u, vp8_settings.requested_resolution_alignment());
|
EXPECT_EQ(2u, vp8_settings.requested_resolution_alignment());
|
||||||
LibvpxVp9EncoderInfoSettings vp9_settings;
|
LibvpxVp9EncoderInfoSettings vp9_settings(field_trials);
|
||||||
EXPECT_EQ(3u, vp9_settings.requested_resolution_alignment());
|
EXPECT_EQ(3u, vp9_settings.requested_resolution_alignment());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -126,7 +126,8 @@ class InitEncodeTest : public test::EndToEndTest,
|
||||||
encoder_factory_(this),
|
encoder_factory_(this),
|
||||||
payload_name_(payload_name),
|
payload_name_(payload_name),
|
||||||
configs_(configs),
|
configs_(configs),
|
||||||
expectations_(expectations) {}
|
expectations_(expectations),
|
||||||
|
encoder_info_override_(env.field_trials()) {}
|
||||||
|
|
||||||
void OnFrameGeneratorCapturerCreated(
|
void OnFrameGeneratorCapturerCreated(
|
||||||
test::FrameGeneratorCapturer* frame_generator_capturer) override {
|
test::FrameGeneratorCapturer* frame_generator_capturer) override {
|
||||||
|
|
Loading…
Reference in a new issue