Reduce number of InterpolateSimulcastFormat calls
Call it once instead of 3 times.
Also remove FindSimulcastMaxBitrate, FindSimulcastTargetBitrate, FindSimulcastMinBitrate and a one parameter less version of InterpolateSimulcastFormat.
Bug: b/337757868, webrtc:351644568
Change-Id: I7b4002fc3134c47f368bb833925c959a07ce5177
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/356980
Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42623}
diff --git a/video/config/simulcast.cc b/video/config/simulcast.cc
index 8373341..00b8667 100644
--- a/video/config/simulcast.cc
+++ b/video/config/simulcast.cc
@@ -267,45 +267,6 @@
return {width, height, max_layers, max_bitrate, target_bitrate, min_bitrate};
}
-SimulcastFormat InterpolateSimulcastFormat(
- int width,
- int height,
- bool enable_lowres_bitrate_interpolation,
- webrtc::VideoCodecType codec) {
- return InterpolateSimulcastFormat(width, height, absl::nullopt,
- enable_lowres_bitrate_interpolation, codec);
-}
-
-webrtc::DataRate FindSimulcastMaxBitrate(
- int width,
- int height,
- bool enable_lowres_bitrate_interpolation,
- webrtc::VideoCodecType codec) {
- return InterpolateSimulcastFormat(width, height,
- enable_lowres_bitrate_interpolation, codec)
- .max_bitrate;
-}
-
-webrtc::DataRate FindSimulcastTargetBitrate(
- int width,
- int height,
- bool enable_lowres_bitrate_interpolation,
- webrtc::VideoCodecType codec) {
- return InterpolateSimulcastFormat(width, height,
- enable_lowres_bitrate_interpolation, codec)
- .target_bitrate;
-}
-
-webrtc::DataRate FindSimulcastMinBitrate(
- int width,
- int height,
- bool enable_lowres_bitrate_interpolation,
- webrtc::VideoCodecType codec) {
- return InterpolateSimulcastFormat(width, height,
- enable_lowres_bitrate_interpolation, codec)
- .min_bitrate;
-}
-
void BoostMaxSimulcastLayer(webrtc::DataRate max_bitrate,
std::vector<webrtc::VideoStream>* layers) {
if (layers->empty())
@@ -426,14 +387,15 @@
layers[s].max_qp = max_qp;
layers[s].num_temporal_layers =
temporal_layers_supported ? num_temporal_layers : 1;
- layers[s].max_bitrate_bps =
- FindSimulcastMaxBitrate(width, height,
- enable_lowres_bitrate_interpolation, codec)
- .bps();
- layers[s].target_bitrate_bps =
- FindSimulcastTargetBitrate(width, height,
- enable_lowres_bitrate_interpolation, codec)
- .bps();
+
+ SimulcastFormat interpolated_format = InterpolateSimulcastFormat(
+ width, height, /*max_roundup_rate=*/absl::nullopt,
+ enable_lowres_bitrate_interpolation, codec);
+
+ layers[s].max_bitrate_bps = interpolated_format.max_bitrate.bps();
+ layers[s].target_bitrate_bps = interpolated_format.target_bitrate.bps();
+ layers[s].min_bitrate_bps = interpolated_format.min_bitrate.bps();
+
if (s == 0) {
// If alternative temporal rate allocation is selected, adjust the
// bitrate of the lowest simulcast stream so that absolute bitrate for
@@ -459,10 +421,6 @@
layers[s].target_bitrate_bps =
static_cast<int>(layers[s].target_bitrate_bps * rate_factor);
}
- layers[s].min_bitrate_bps =
- FindSimulcastMinBitrate(width, height,
- enable_lowres_bitrate_interpolation, codec)
- .bps();
// Ensure consistency.
layers[s].max_bitrate_bps =