AlignmentAdjuster: take reduced layers into account for default downscaling.

Bug: none
Change-Id: Id70f7763d2e1b11c24ad98774f1bf6a661728437
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/202257
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Åsa Persson <asapersson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33038}
diff --git a/video/alignment_adjuster.cc b/video/alignment_adjuster.cc
index b08f2f1..6b1db92 100644
--- a/video/alignment_adjuster.cc
+++ b/video/alignment_adjuster.cc
@@ -66,7 +66,8 @@
 
 int AlignmentAdjuster::GetAlignmentAndMaybeAdjustScaleFactors(
     const VideoEncoder::EncoderInfo& encoder_info,
-    VideoEncoderConfig* config) {
+    VideoEncoderConfig* config,
+    absl::optional<size_t> max_layers) {
   const int requested_alignment = encoder_info.requested_resolution_alignment;
   if (!encoder_info.apply_alignment_to_all_simulcast_layers) {
     return requested_alignment;
@@ -85,7 +86,11 @@
 
   if (!has_scale_resolution_down_by) {
     // Default resolution downscaling used (scale factors: 1, 2, 4, ...).
-    return requested_alignment * (1 << (config->simulcast_layers.size() - 1));
+    size_t size = config->simulcast_layers.size();
+    if (max_layers && *max_layers > 0 && *max_layers < size) {
+      size = *max_layers;
+    }
+    return requested_alignment * (1 << (size - 1));
   }
 
   // Get alignment for downscaled layers.