Remove resolution limited max bitrate for simulcast screenshare.
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 <sprang@webrtc.org> Commit-Queue: Jakob Ivarsson <jakobi@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32623}
This commit is contained in:
parent
73f481c454
commit
4d18eeafc8
@ -422,14 +422,6 @@ std::vector<webrtc::VideoStream> 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<int>(FindSimulcastMaxBitrate(width, height).bps(),
|
||||
layers[1].min_bitrate_bps);
|
||||
max_bitrate_bps =
|
||||
std::min<int>(max_bitrate_bps, resolution_limited_bitrate);
|
||||
|
||||
layers[1].target_bitrate_bps = max_bitrate_bps;
|
||||
layers[1].max_bitrate_bps = max_bitrate_bps;
|
||||
}
|
||||
|
||||
@ -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<VideoStream> 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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user