Don't use SvcRateAllocator for in VP9 encoder in simulcast case

Bug: webrtc:399577686
Change-Id: I76b0baf052b2fb2862cc7604634aa3d538401c24
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/379402
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#44017}
diff --git a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
index e976866..a67d64e 100644
--- a/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
+++ b/modules/video_coding/codecs/vp9/libvpx_vp9_encoder.cc
@@ -58,6 +58,7 @@
 #include "modules/video_coding/svc/scalable_video_controller_no_layering.h"
 #include "modules/video_coding/svc/svc_rate_allocator.h"
 #include "modules/video_coding/utility/framerate_controller_deprecated.h"
+#include "modules/video_coding/utility/simulcast_rate_allocator.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/containers/flat_map.h"
 #include "rtc_base/experiments/field_trial_list.h"
@@ -553,9 +554,17 @@
       return WEBRTC_VIDEO_CODEC_ERR_SIMULCAST_PARAMETERS_NOT_SUPPORTED;
     }
     RTC_LOG(LS_INFO) << "Rewriting simulcast config to SVC.";
+    current_bitrate_allocation_ =
+        SimulcastRateAllocator(env_, codec_)
+            .Allocate(VideoBitrateAllocationParameters(
+                codec_.startBitrate * 1000, codec_.maxFramerate));
     simulcast_to_svc_converter_.emplace(codec_);
     codec_ = simulcast_to_svc_converter_->GetConfig();
   } else {
+    current_bitrate_allocation_ =
+        SvcRateAllocator(codec_, env_.field_trials())
+            .Allocate(VideoBitrateAllocationParameters(
+                codec_.startBitrate * 1000, codec_.maxFramerate));
     simulcast_to_svc_converter_ = std::nullopt;
   }
 
@@ -804,10 +813,8 @@
   RTC_DCHECK_EQ(performance_flags_by_spatial_index_.size(),
                 static_cast<size_t>(num_spatial_layers_));
 
-  SvcRateAllocator init_allocator(codec_, env_.field_trials());
-  current_bitrate_allocation_ =
-      init_allocator.Allocate(VideoBitrateAllocationParameters(
-          codec_.startBitrate * 1000, codec_.maxFramerate));
+  // `current_bitrate_allocation_` is set in InitEncode and may have used
+  // simulcast configuration.
   if (!SetSvcRates(current_bitrate_allocation_)) {
     return WEBRTC_VIDEO_CODEC_ERR_PARAMETER;
   }