From c14e2cc4ca08ba1b07c32dae019147a6bc521560 Mon Sep 17 00:00:00 2001 From: Sergey Silkin Date: Fri, 12 Jul 2024 16:09:22 +0200 Subject: [PATCH] Set is_highest_layer_max_bitrate_configured outside of loop Bug: webrtc:351644568, b/352504711 Change-Id: Ia1798e35adf8b34357103ae3aba8ab16499a458f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/357081 Reviewed-by: Ilya Nikolaevskiy Commit-Queue: Sergey Silkin Cr-Commit-Position: refs/heads/main@{#42636} --- video/config/encoder_stream_factory.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/video/config/encoder_stream_factory.cc b/video/config/encoder_stream_factory.cc index 623db82bff..54dff93cc8 100644 --- a/video/config/encoder_stream_factory.cc +++ b/video/config/encoder_stream_factory.cc @@ -337,8 +337,7 @@ EncoderStreamFactory::CreateSimulcastOrConferenceModeScreenshareStreams( layers[0].min_bitrate_bps = rtc::saturated_cast(experimental_min_bitrate->bps()); } - // Update the active simulcast layers and configured bitrates. - bool is_highest_layer_max_bitrate_configured = false; + const bool has_scale_resolution_down_by = absl::c_any_of( encoder_config.simulcast_layers, [](const webrtc::VideoStream& layer) { return layer.scale_resolution_down_by != -1.; @@ -363,6 +362,8 @@ EncoderStreamFactory::CreateSimulcastOrConferenceModeScreenshareStreams( ? NormalizeSimulcastSize(trials, height, encoder_config.number_of_streams) : height; + + // Update the active simulcast layers and configured bitrates. for (size_t i = 0; i < layers.size(); ++i) { layers[i].active = encoder_config.simulcast_layers[i].active; layers[i].scalability_mode = @@ -443,12 +444,11 @@ EncoderStreamFactory::CreateSimulcastOrConferenceModeScreenshareStreams( } else { layers[i].max_qp = GetDefaultMaxQp(encoder_config.codec_type); } - - if (i == layers.size() - 1) { - is_highest_layer_max_bitrate_configured = - encoder_config.simulcast_layers[i].max_bitrate_bps > 0; - } } + + bool is_highest_layer_max_bitrate_configured = + encoder_config.simulcast_layers[layers.size() - 1].max_bitrate_bps > 0; + if (!is_screencast && !is_highest_layer_max_bitrate_configured && encoder_config.max_bitrate_bps > 0) { // No application-configured maximum for the largest layer.