diff --git a/media/engine/simulcast.cc b/media/engine/simulcast.cc index ccda6c2c92..a8dc1430b7 100644 --- a/media/engine/simulcast.cc +++ b/media/engine/simulcast.cc @@ -225,6 +225,9 @@ std::vector GetNormalSimulcastLayers( // layers. Consider changing this so that the application can have more // control over exactly how many simulcast layers are used. size_t num_simulcast_layers = FindSimulcastMaxLayers(width, height); + if (webrtc::field_trial::IsEnabled("WebRTC-SimulcastMaxLayers")) { + num_simulcast_layers = max_layers; + } if (num_simulcast_layers > max_layers) { // TODO(bugs.webrtc.org/8486): This scales down the resolution if the // number of simulcast layers created by the application isn't sufficient diff --git a/media/engine/simulcast_unittest.cc b/media/engine/simulcast_unittest.cc index 207284f33b..187691faee 100644 --- a/media/engine/simulcast_unittest.cc +++ b/media/engine/simulcast_unittest.cc @@ -121,6 +121,35 @@ TEST(SimulcastTest, GetConfigWithLimitedMaxLayers) { EXPECT_EQ(360u, streams[1].height); } +TEST(SimulcastTest, GetConfigWithLimitedMaxLayersForResolution) { + const size_t kMaxLayers = 3; + std::vector streams = cricket::GetSimulcastConfig( + kMaxLayers, 800, 600, kMaxBitrateBps, kBitratePriority, kQpMax, kMaxFps, + !kScreenshare); + + EXPECT_EQ(2u, streams.size()); + EXPECT_EQ(400u, streams[0].width); + EXPECT_EQ(300u, streams[0].height); + EXPECT_EQ(800u, streams[1].width); + EXPECT_EQ(600u, streams[1].height); +} + +TEST(SimulcastTest, GetConfigWithNotLimitedMaxLayersForResolution) { + test::ScopedFieldTrials field_trials("WebRTC-SimulcastMaxLayers/Enabled/"); + const size_t kMaxLayers = 3; + std::vector streams = cricket::GetSimulcastConfig( + kMaxLayers, 800, 600, kMaxBitrateBps, kBitratePriority, kQpMax, kMaxFps, + !kScreenshare); + + EXPECT_EQ(kMaxLayers, streams.size()); + EXPECT_EQ(200u, streams[0].width); + EXPECT_EQ(150u, streams[0].height); + EXPECT_EQ(400u, streams[1].width); + EXPECT_EQ(300u, streams[1].height); + EXPECT_EQ(800u, streams[2].width); + EXPECT_EQ(600u, streams[2].height); +} + TEST(SimulcastTest, GetConfigWithNormalizedResolution) { const size_t kMaxLayers = 2; std::vector streams = cricket::GetSimulcastConfig(