From d497e6bd6b6520d08ff5e2df3a50a46d8c9f9b6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Fri, 6 Jul 2018 17:17:10 +0200 Subject: Lower TL0 bitrate to 40% for lowest stream when using short 3tl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug: webrtc:9477 Change-Id: Ie19c0cbfba80cb8043c37b04038cd10cbc90f169 Reviewed-on: https://webrtc-review.googlesource.com/87425 Reviewed-by: Rasmus Brandt Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#23880} --- media/engine/simulcast.cc | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'media') diff --git a/media/engine/simulcast.cc b/media/engine/simulcast.cc index 722890c6dd..b2bc6e6d75 100644 --- a/media/engine/simulcast.cc +++ b/media/engine/simulcast.cc @@ -243,16 +243,25 @@ std::vector GetNormalSimulcastLayers( layers[s].max_bitrate_bps = FindSimulcastMaxBitrateBps(width, height); layers[s].target_bitrate_bps = FindSimulcastTargetBitrateBps(width, height); int num_temporal_layers = DefaultNumberOfTemporalLayers(s); - if (s == 0 && num_temporal_layers != 3) { + if (s == 0) { // If alternative number temporal layers is selected, adjust the // bitrate of the lowest simulcast stream so that absolute bitrate for // the base temporal layer matches the bitrate for the base temporal // layer with the default 3 simulcast streams. Otherwise we risk a // higher threshold for receiving a feed at all. - const float rate_factor = - webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(3, 0) / - webrtc::SimulcastRateAllocator::GetTemporalRateAllocation( - num_temporal_layers, 0); + float rate_factor = 1.0; + if (num_temporal_layers == 3) { + if (webrtc::field_trial::IsEnabled("WebRTC-UseShortVP8TL3Pattern")) { + // Shortened pattern increases TL0 bitrate from 40% to 60%. + rate_factor = 0.4 / 0.6; + } + } else { + rate_factor = + webrtc::SimulcastRateAllocator::GetTemporalRateAllocation(3, 0) / + webrtc::SimulcastRateAllocator::GetTemporalRateAllocation( + num_temporal_layers, 0); + } + layers[s].max_bitrate_bps = static_cast(layers[s].max_bitrate_bps * rate_factor); layers[s].target_bitrate_bps = -- cgit v1.2.3