From 4d18eeafc853b509bd94717180209cd27f93e853 Mon Sep 17 00:00:00 2001 From: Jakob Ivarsson Date: Tue, 17 Nov 2020 11:08:16 +0100 Subject: [PATCH] Remove resolution limited max bitrate for simulcast screenshare. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This can result in a higher max bitrate for the base layer, effectively causing the minimum bitrate to be 600kbps, which is too high. Bug: b/173183017 Change-Id: I8b45c1c90ebf10a690420bed79e814f27702a540 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/193702 Reviewed-by: Erik Språng Commit-Queue: Jakob Ivarsson Cr-Commit-Position: refs/heads/master@{#32623} --- media/engine/simulcast.cc | 8 ------- media/engine/simulcast_unittest.cc | 37 ------------------------------ 2 files changed, 45 deletions(-) diff --git a/media/engine/simulcast.cc b/media/engine/simulcast.cc index 6d64bfa7b8..f74d4adfbe 100644 --- a/media/engine/simulcast.cc +++ b/media/engine/simulcast.cc @@ -422,14 +422,6 @@ std::vector GetScreenshareLayers( layers[1].min_bitrate_bps = using_boosted_bitrate ? kScreenshareHighStreamMinBitrate.bps() : layers[0].target_bitrate_bps * 2; - - // Cap max bitrate so it isn't overly high for the given resolution. - int resolution_limited_bitrate = - std::max(FindSimulcastMaxBitrate(width, height).bps(), - layers[1].min_bitrate_bps); - max_bitrate_bps = - std::min(max_bitrate_bps, resolution_limited_bitrate); - layers[1].target_bitrate_bps = max_bitrate_bps; layers[1].max_bitrate_bps = max_bitrate_bps; } diff --git a/media/engine/simulcast_unittest.cc b/media/engine/simulcast_unittest.cc index 2c722727dc..27b1574456 100644 --- a/media/engine/simulcast_unittest.cc +++ b/media/engine/simulcast_unittest.cc @@ -336,43 +336,6 @@ TEST(SimulcastTest, GetConfigForScreenshareSimulcastWithLimitedMaxLayers) { EXPECT_EQ(kMaxLayers, streams.size()); } -TEST(SimulcastTest, SimulcastScreenshareMaxBitrateAdjustedForResolution) { - constexpr int kScreenshareHighStreamMinBitrateBps = 600000; - constexpr int kScreenshareHighStreamMaxBitrateBps = 1250000; - constexpr int kMaxBitrate960_540 = 1200000; - FieldTrialBasedConfig trials; - - // Normal case, max bitrate not limited by resolution. - const size_t kMinLayers = 1; - const size_t kMaxLayers = 2; - std::vector streams = cricket::GetSimulcastConfig( - kMinLayers, kMaxLayers, 1920, 1080, kBitratePriority, kQpMax, - kScreenshare, true, trials); - EXPECT_EQ(kMaxLayers, streams.size()); - EXPECT_EQ(streams[1].max_bitrate_bps, kScreenshareHighStreamMaxBitrateBps); - EXPECT_EQ(streams[1].min_bitrate_bps, kScreenshareHighStreamMinBitrateBps); - EXPECT_GE(streams[1].max_bitrate_bps, streams[1].min_bitrate_bps); - - // At 960x540, the max bitrate is limited to 900kbps. - streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 960, 540, - kBitratePriority, kQpMax, kScreenshare, - true, trials); - EXPECT_EQ(kMaxLayers, streams.size()); - EXPECT_EQ(streams[1].max_bitrate_bps, kMaxBitrate960_540); - EXPECT_EQ(streams[1].min_bitrate_bps, kScreenshareHighStreamMinBitrateBps); - EXPECT_GE(streams[1].max_bitrate_bps, streams[1].min_bitrate_bps); - - // At 480x270, the max bitrate is limited to 450kbps. This is lower than - // the min bitrate, so use that as a lower bound. - streams = cricket::GetSimulcastConfig(kMinLayers, kMaxLayers, 480, 270, - kBitratePriority, kQpMax, kScreenshare, - true, trials); - EXPECT_EQ(kMaxLayers, streams.size()); - EXPECT_EQ(streams[1].max_bitrate_bps, kScreenshareHighStreamMinBitrateBps); - EXPECT_EQ(streams[1].min_bitrate_bps, kScreenshareHighStreamMinBitrateBps); - EXPECT_GE(streams[1].max_bitrate_bps, streams[1].min_bitrate_bps); -} - TEST(SimulcastTest, AveragesBitratesForNonStandardResolution) { FieldTrialBasedConfig trials; const size_t kMinLayers = 1;