Remove max_qp argument from GetSimulcastConfig()

This is a cleanup of simulcast.cc. max_qp is not needed to decide simulcast config. Move setting of max QP in VideoStream one level up, to EncoderStreamFactory::CreateEncoderStreams(), where it can be set per stream.

Bug: webrtc:351644568, b/352504711
Change-Id: Ia0e3e9d90032383574dc8867b30d362e9c5df7e8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357102
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42634}
This commit is contained in:
Sergey Silkin 2024-07-12 15:13:51 +02:00 committed by WebRTC LUCI CQ
parent 55d328dc25
commit 3f9589ae64
7 changed files with 52 additions and 67 deletions

View File

@ -9591,8 +9591,8 @@ class WebRtcVideoChannelSimulcastTest : public ::testing::Test {
if (num_configured_streams > 1 || conference_mode) {
expected_streams = GetSimulcastConfig(
/*min_layers=*/1, num_configured_streams, capture_width,
capture_height, kDefaultVideoMaxQpVpx, screenshare && conference_mode,
true, field_trials_, webrtc::kVideoCodecVP8);
capture_height, screenshare && conference_mode, true, field_trials_,
webrtc::kVideoCodecVP8);
if (screenshare && conference_mode) {
for (const webrtc::VideoStream& stream : expected_streams) {
// Never scale screen content.
@ -9636,7 +9636,7 @@ class WebRtcVideoChannelSimulcastTest : public ::testing::Test {
video_streams[i].max_bitrate_bps);
EXPECT_GT(video_streams[i].max_qp, 0);
EXPECT_EQ(expected_streams[i].max_qp, video_streams[i].max_qp);
EXPECT_EQ(video_streams[i].max_qp, kDefaultVideoMaxQpVpx);
EXPECT_EQ(num_configured_streams > 1 || conference_mode,
expected_streams[i].num_temporal_layers.has_value());

View File

@ -79,7 +79,7 @@ void ConfigureSimulcast(VideoCodec* codec_settings) {
FieldTrialBasedConfig trials;
const std::vector<webrtc::VideoStream> streams = cricket::GetSimulcastConfig(
/*min_layer=*/1, codec_settings->numberOfSimulcastStreams,
codec_settings->width, codec_settings->height, kMaxQp,
codec_settings->width, codec_settings->height,
/* is_screenshare = */ false, true, trials, webrtc::kVideoCodecVP8);
for (size_t i = 0; i < streams.size(); ++i) {
@ -91,7 +91,7 @@ void ConfigureSimulcast(VideoCodec* codec_settings) {
ss->maxBitrate = streams[i].max_bitrate_bps / 1000;
ss->targetBitrate = streams[i].target_bitrate_bps / 1000;
ss->minBitrate = streams[i].min_bitrate_bps / 1000;
ss->qpMax = streams[i].max_qp;
ss->qpMax = kMaxQp;
ss->active = true;
}
}

View File

@ -1298,7 +1298,6 @@ void ConfigureSimulcast(VideoCodec* vc) {
const std::vector<webrtc::VideoStream> streams = cricket::GetSimulcastConfig(
/*min_layer=*/1, num_spatial_layers, vc->width, vc->height,
cricket::kDefaultVideoMaxQpVpx,
/*is_screenshare=*/false, /*temporal_layers_supported=*/true,
field_trials, webrtc::kVideoCodecVP8);
@ -1318,7 +1317,7 @@ void ConfigureSimulcast(VideoCodec* vc) {
ss->maxBitrate = streams[i].max_bitrate_bps / 1000;
ss->targetBitrate = streams[i].target_bitrate_bps / 1000;
ss->minBitrate = streams[i].min_bitrate_bps / 1000;
ss->qpMax = streams[i].max_qp;
ss->qpMax = vc->qpMax;
ss->active = true;
}
}

View File

@ -328,7 +328,7 @@ EncoderStreamFactory::CreateSimulcastOrConferenceModeScreenshareStreams(
// or use the regular simulcast configuration path which is generic.
layers = GetSimulcastConfig(
FindRequiredActiveLayers(encoder_config),
encoder_config.number_of_streams, width, height, encoder_config.max_qp,
encoder_config.number_of_streams, width, height,
webrtc::SimulcastUtility::IsConferenceModeScreenshare(encoder_config),
temporal_layers_supported, trials, encoder_config.codec_type);
// Allow an experiment to override the minimum bitrate for the lowest

View File

@ -332,7 +332,6 @@ std::vector<webrtc::VideoStream> GetSimulcastConfig(
size_t max_layers,
int width,
int height,
int max_qp,
bool is_screenshare_with_conference_mode,
bool temporal_layers_supported,
const webrtc::FieldTrialsView& trials,
@ -343,7 +342,7 @@ std::vector<webrtc::VideoStream> GetSimulcastConfig(
const bool base_heavy_tl3_rate_alloc =
webrtc::RateControlSettings(trials).Vp8BaseHeavyTl3RateAllocation();
if (is_screenshare_with_conference_mode) {
return GetScreenshareLayers(max_layers, width, height, max_qp,
return GetScreenshareLayers(max_layers, width, height,
temporal_layers_supported,
base_heavy_tl3_rate_alloc, trials);
} else {
@ -353,7 +352,7 @@ std::vector<webrtc::VideoStream> GetSimulcastConfig(
max_layers = LimitSimulcastLayerCount(width, height, min_layers, max_layers,
trials, codec);
return GetNormalSimulcastLayers(max_layers, width, height, max_qp,
return GetNormalSimulcastLayers(max_layers, width, height,
temporal_layers_supported,
base_heavy_tl3_rate_alloc, trials, codec);
}
@ -363,7 +362,6 @@ std::vector<webrtc::VideoStream> GetNormalSimulcastLayers(
size_t layer_count,
int width,
int height,
int max_qp,
bool temporal_layers_supported,
bool base_heavy_tl3_rate_alloc,
const webrtc::FieldTrialsView& trials,
@ -381,8 +379,6 @@ std::vector<webrtc::VideoStream> GetNormalSimulcastLayers(
for (size_t s = layer_count - 1;; --s) {
layers[s].width = width;
layers[s].height = height;
// TODO(pbos): Fill actual temporal-layer bitrate thresholds.
layers[s].max_qp = max_qp;
layers[s].num_temporal_layers =
temporal_layers_supported ? num_temporal_layers : 1;
@ -443,7 +439,6 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
size_t max_layers,
int width,
int height,
int max_qp,
bool temporal_layers_supported,
bool base_heavy_tl3_rate_alloc,
const webrtc::FieldTrialsView& trials) {
@ -456,7 +451,6 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
// respectively. See eg. webrtc::LibvpxVp8Encoder::SetRates().
layers[0].width = width;
layers[0].height = height;
layers[0].max_qp = max_qp;
layers[0].max_framerate = 5;
layers[0].min_bitrate_bps = webrtc::kDefaultMinVideoBitrateBps;
layers[0].target_bitrate_bps = kScreenshareDefaultTl0Bitrate.bps();
@ -485,7 +479,6 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
layers[1].width = width;
layers[1].height = height;
layers[1].max_qp = max_qp;
layers[1].max_framerate = kDefaultVideoMaxFramerate;
layers[1].num_temporal_layers =
temporal_layers_supported ? kScreenshareTemporalLayers : 1;

View File

@ -41,7 +41,6 @@ std::vector<webrtc::VideoStream> GetSimulcastConfig(
size_t max_layers,
int width,
int height,
int max_qp,
bool is_screenshare_with_conference_mode,
bool temporal_layers_supported,
const webrtc::FieldTrialsView& trials,
@ -52,7 +51,6 @@ std::vector<webrtc::VideoStream> GetNormalSimulcastLayers(
size_t max_layers,
int width,
int height,
int max_qp,
bool temporal_layers_supported,
bool base_heavy_tl3_rate_alloc,
const webrtc::FieldTrialsView& trials,
@ -63,7 +61,6 @@ std::vector<webrtc::VideoStream> GetScreenshareLayers(
size_t max_layers,
int width,
int height,
int max_qp,
bool temporal_layers_supported,
bool base_heavy_tl3_rate_alloc,
const webrtc::FieldTrialsView& trials);

View File

@ -19,7 +19,6 @@ namespace {
using test::ExplicitKeyValueConfig;
constexpr int kQpMax = 55;
constexpr bool kScreenshare = true;
constexpr int kDefaultTemporalLayers = 3; // Value from simulcast.cc.
@ -87,7 +86,7 @@ TEST(SimulcastTest, GetConfig) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 1280, 720, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 1280, 720, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(kMaxLayers, streams.size());
@ -101,7 +100,7 @@ TEST(SimulcastTest, GetConfig) {
for (size_t i = 0; i < streams.size(); ++i) {
EXPECT_EQ(size_t{kDefaultTemporalLayers}, streams[i].num_temporal_layers);
EXPECT_EQ(cricket::kDefaultVideoMaxFramerate, streams[i].max_framerate);
EXPECT_EQ(kQpMax, streams[i].max_qp);
EXPECT_EQ(-1, streams[i].max_qp);
EXPECT_EQ(kExpected[i].min_bitrate_bps, streams[i].min_bitrate_bps);
EXPECT_EQ(kExpected[i].target_bitrate_bps, streams[i].target_bitrate_bps);
EXPECT_EQ(kExpected[i].max_bitrate_bps, streams[i].max_bitrate_bps);
@ -118,7 +117,7 @@ TEST(SimulcastTest, GetConfigWithBaseHeavyVP8TL3RateAllocation) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 1280, 720, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 1280, 720, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(kExpected[0].min_bitrate_bps, streams[0].min_bitrate_bps);
@ -139,7 +138,7 @@ TEST(SimulcastTest, GetConfigWithLimitedMaxLayers) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 2;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 1280, 720, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 1280, 720, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(kMaxLayers, streams.size());
@ -156,7 +155,7 @@ TEST(SimulcastTest, GetConfigWithLimitedMaxLayersForResolution) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 800, 600, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 800, 600, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
@ -173,7 +172,7 @@ TEST(SimulcastTest, GetConfigWithLowResolutionScreenshare) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 100, 100, kQpMax, kScreenshare, true, trials,
kMinLayers, kMaxLayers, 100, 100, kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
// Simulcast streams number is never decreased for screenshare,
@ -188,7 +187,7 @@ TEST(SimulcastTest, GetConfigWithNotLimitedMaxLayersForResolution) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 800, 600, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 800, 600, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(kMaxLayers, streams.size());
@ -206,8 +205,8 @@ TEST(SimulcastTest, GetConfigWithNormalizedResolution) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 2;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 640 + 1, 360 + 1, kQpMax, !kScreenshare, true,
trials, webrtc::kVideoCodecVP8);
kMinLayers, kMaxLayers, 640 + 1, 360 + 1, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
// Must be divisible by |2 ^ (num_layers - 1)|.
EXPECT_EQ(kMaxLayers, streams.size());
@ -224,7 +223,7 @@ TEST(SimulcastTest, GetConfigWithNormalizedResolutionDivisibleBy4) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 2;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 709, 501, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 709, 501, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
// Must be divisible by |2 ^ 2|.
@ -242,7 +241,7 @@ TEST(SimulcastTest, GetConfigWithNormalizedResolutionDivisibleBy8) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 2;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 709, 501, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 709, 501, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
// Must be divisible by |2 ^ 3|.
@ -260,17 +259,17 @@ TEST(SimulcastTest, GetConfigForLegacyLayerLimit) {
const size_t kMinLayers = 1;
const int kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 320, 180, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 320, 180, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(1u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 640, 360,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 1920, 1080,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(3u, streams.size());
}
@ -282,17 +281,17 @@ TEST(SimulcastTest, GetConfigForLegacyLayerLimitWithRequiredHD) {
const size_t kMinLayers = 3; // "HD" layer must be present!
const int kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 320, 180, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 320, 180, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(3u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 640, 360,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(3u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 1920, 1080,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(3u, streams.size());
}
@ -302,14 +301,14 @@ TEST(SimulcastTest, GetConfigForScreenshareSimulcast) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 1400, 800, kQpMax, kScreenshare, true, trials,
kMinLayers, kMaxLayers, 1400, 800, kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_GT(streams.size(), 1u);
for (size_t i = 0; i < streams.size(); ++i) {
EXPECT_EQ(1400u, streams[i].width) << "Screen content never scaled.";
EXPECT_EQ(800u, streams[i].height) << "Screen content never scaled.";
EXPECT_EQ(kQpMax, streams[i].max_qp);
EXPECT_EQ(-1, streams[i].max_qp);
EXPECT_TRUE(streams[i].active);
EXPECT_GT(streams[i].num_temporal_layers, size_t{1});
EXPECT_GT(streams[i].max_framerate, 0);
@ -324,7 +323,7 @@ TEST(SimulcastTest, GetConfigForScreenshareSimulcastWithLimitedMaxLayers) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 1;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 1400, 800, kQpMax, kScreenshare, true, trials,
kMinLayers, kMaxLayers, 1400, 800, kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(kMaxLayers, streams.size());
@ -335,7 +334,7 @@ TEST(SimulcastTest, AveragesBitratesForNonStandardResolution) {
const size_t kMinLayers = 1;
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, 900, 800, kQpMax, !kScreenshare, true, trials,
kMinLayers, kMaxLayers, 900, 800, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(kMaxLayers, streams.size());
@ -357,8 +356,8 @@ TEST(SimulcastTest, BitratesForCloseToStandardResolution) {
const std::vector<VideoStream> kExpectedNear = GetSimulcastBitrates720p();
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
kMinLayers, kMaxLayers, kWidth, kHeight, kQpMax, !kScreenshare, true,
trials, webrtc::kVideoCodecVP8);
kMinLayers, kMaxLayers, kWidth, kHeight, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(kMaxLayers, streams.size());
EXPECT_EQ(kWidth, streams[2].width);
@ -382,21 +381,21 @@ TEST(SimulcastTest, MaxLayersWithRoundUpDisabled) {
std::vector<VideoStream> streams;
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 960, 540,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(3u, streams.size());
// <960x540: 2 layers
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 960, 539,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 270,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
// <480x270: 1 layer
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 269,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(1u, streams.size());
}
@ -409,29 +408,29 @@ TEST(SimulcastTest, MaxLayersWithDefaultRoundUpRatio) {
std::vector<VideoStream> streams;
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 960, 540,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(3u, streams.size());
// Lowest cropped height where max layers from higher resolution is used.
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 960, 512,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(3u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 960, 508,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 270,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
// Lowest cropped height where max layers from higher resolution is used.
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 256,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 254,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(1u, streams.size());
}
@ -445,16 +444,16 @@ TEST(SimulcastTest, MaxLayersWithRoundUpRatio) {
std::vector<VideoStream> streams;
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 270,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
// Lowest cropped height where max layers from higher resolution is used.
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 252,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(2u, streams.size());
streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 250,
kQpMax, !kScreenshare, true, trials,
!kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
EXPECT_EQ(1u, streams.size());
}
@ -467,7 +466,7 @@ TEST(SimulcastTest, BitratesInterpolatedForResBelow180p) {
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
/* min_layers = */ 1, kMaxLayers, /* width = */ 960, /* height = */ 540,
kQpMax, !kScreenshare, true, trials, webrtc::kVideoCodecVP8);
!kScreenshare, true, trials, webrtc::kVideoCodecVP8);
ASSERT_EQ(streams.size(), kMaxLayers);
EXPECT_EQ(240u, streams[0].width);
@ -484,8 +483,7 @@ TEST(SimulcastTest, BitratesConsistentForVerySmallRes) {
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
/* min_layers = */ 1, /* max_layers = */ 3, /* width = */ 1,
/* height = */ 1, kQpMax, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
/* height = */ 1, !kScreenshare, true, trials, webrtc::kVideoCodecVP8);
ASSERT_TRUE(!streams.empty());
EXPECT_EQ(1u, streams[0].width);
@ -503,7 +501,7 @@ TEST(SimulcastTest,
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
/* min_layers = */ 1, kMaxLayers, /* width = */ 960, /* height = */ 540,
kQpMax, !kScreenshare, true, trials, webrtc::kVideoCodecVP8);
!kScreenshare, true, trials, webrtc::kVideoCodecVP8);
ASSERT_EQ(streams.size(), kMaxLayers);
EXPECT_EQ(240u, streams[0].width);
@ -519,13 +517,11 @@ TEST(SimulcastTest, BitratesBasedOnCodec) {
const size_t kMaxLayers = 3;
std::vector<VideoStream> streams_vp8 = cricket::GetSimulcastConfig(
/* min_layers = */ 1, /* max_layers = */ 3, /* width = */ 1280,
/* height = */ 720, kQpMax, !kScreenshare, true, trials,
webrtc::kVideoCodecVP8);
/* height = */ 720, !kScreenshare, true, trials, webrtc::kVideoCodecVP8);
std::vector<VideoStream> streams_vp9 = cricket::GetSimulcastConfig(
/* min_layers = */ 1, /* max_layers = */ 3, /* width = */ 1280,
/* height = */ 720, kQpMax, !kScreenshare, true, trials,
webrtc::kVideoCodecVP9);
/* height = */ 720, !kScreenshare, true, trials, webrtc::kVideoCodecVP9);
ASSERT_EQ(streams_vp8.size(), kMaxLayers);
ASSERT_EQ(streams_vp9.size(), kMaxLayers);
@ -555,7 +551,7 @@ TEST(SimulcastTest, BitratesForVP9) {
std::vector<VideoStream> streams = cricket::GetSimulcastConfig(
/* min_layers = */ 1, kMaxLayers, /* width = */ 1280, /* height = */ 720,
kQpMax, !kScreenshare, true, trials, webrtc::kVideoCodecVP9);
!kScreenshare, true, trials, webrtc::kVideoCodecVP9);
ASSERT_EQ(streams.size(), kMaxLayers);
EXPECT_EQ(1280u, streams[2].width);
@ -566,7 +562,7 @@ TEST(SimulcastTest, BitratesForVP9) {
streams = cricket::GetSimulcastConfig(
/* min_layers = */ 1, kMaxLayers, /* width = */ 1276, /* height = */ 716,
kQpMax, !kScreenshare, true, trials, webrtc::kVideoCodecVP9);
!kScreenshare, true, trials, webrtc::kVideoCodecVP9);
ASSERT_EQ(streams.size(), kMaxLayers);
EXPECT_EQ(1276u, streams[2].width);