Reland "Make the min video bitrate in VideoSendStream configurable."

This reverts commit 1d2149c59c2c1b2834b8cb7983ad56b213129a42.

Reason for revert: The failed test is flaky recently.

Original change's description:
> Revert "Make the min video bitrate in VideoSendStream configurable."
> 
> This reverts commit b2fb0b937ce97b4ccf6363d4f91620a7ab02e87e.
> 
> Reason for revert: breaking downstream projects
> 
> Original change's description:
> > Make the min video bitrate in VideoSendStream configurable.
> > 
> > "WebRTC-VP8-Forced-Fallback-Encoder-v2" affect VP8 only, "WebRTC-Video-MinVideoBitrate" apply to all codec. When both field trial string are set, the bitrate set by "WebRTC-VP8-Forced-Fallback-Encoder-v2" will be used.
> > 
> > Bug: webrtc:10915
> > Change-Id: I63da5909c04ecfad99e93a535fbf71293890fd11
> > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151135
> > Commit-Queue: Ying Wang <yinwa@webrtc.org>
> > Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> > Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> > Reviewed-by: Christoffer Rodbro <crodbro@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#29047}
> 
> TBR=ilnik@webrtc.org,asapersson@webrtc.org,crodbro@webrtc.org,yinwa@webrtc.org
> 
> Change-Id: If61c18a36ac2778226da4d2631da1c18e7d4ef81
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:10915
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151240
> Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#29049}

TBR=ilnik@webrtc.org,alessiob@webrtc.org,asapersson@webrtc.org,crodbro@webrtc.org,yinwa@webrtc.org

Change-Id: I8df97f7b8ecbea1215eef44d485c179dc4e6246c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10915
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/151241
Reviewed-by: Ying Wang <yinwa@webrtc.org>
Commit-Queue: Ying Wang <yinwa@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29050}
diff --git a/video/video_send_stream_impl.cc b/video/video_send_stream_impl.cc
index 50bbb1f..76caeec 100644
--- a/video/video_send_stream_impl.cc
+++ b/video/video_send_stream_impl.cc
@@ -27,6 +27,7 @@
 #include "rtc_base/atomic_ops.h"
 #include "rtc_base/checks.h"
 #include "rtc_base/experiments/alr_experiment.h"
+#include "rtc_base/experiments/field_trial_parser.h"
 #include "rtc_base/experiments/rate_control_settings.h"
 #include "rtc_base/logging.h"
 #include "rtc_base/numerics/safe_conversions.h"
@@ -57,6 +58,21 @@
 const char kForcedFallbackFieldTrial[] =
     "WebRTC-VP8-Forced-Fallback-Encoder-v2";
 
+const int kDefaultEncoderMinBitrateBps = 30000;
+const char kMinVideoBitrateExperiment[] = "WebRTC-Video-MinVideoBitrate";
+
+struct MinVideoBitrateConfig {
+  webrtc::FieldTrialParameter<webrtc::DataRate> min_video_bitrate;
+
+  MinVideoBitrateConfig()
+      : min_video_bitrate("br",
+                          webrtc::DataRate::bps(kDefaultEncoderMinBitrateBps)) {
+    webrtc::ParseFieldTrial(
+        {&min_video_bitrate},
+        webrtc::field_trial::FindFullName(kMinVideoBitrateExperiment));
+  }
+};
+
 absl::optional<int> GetFallbackMinBpsFromFieldTrial(VideoCodecType type) {
   if (type != kVideoCodecVP8)
     return absl::nullopt;
@@ -84,9 +100,13 @@
 }
 
 int GetEncoderMinBitrateBps(VideoCodecType type) {
-  const int kDefaultEncoderMinBitrateBps = 30000;
-  return GetFallbackMinBpsFromFieldTrial(type).value_or(
-      kDefaultEncoderMinBitrateBps);
+  if (GetFallbackMinBpsFromFieldTrial(type).has_value()) {
+    return GetFallbackMinBpsFromFieldTrial(type).value();
+  }
+  if (webrtc::field_trial::IsEnabled(kMinVideoBitrateExperiment)) {
+    return MinVideoBitrateConfig().min_video_bitrate->bps();
+  }
+  return kDefaultEncoderMinBitrateBps;
 }
 
 // Calculate max padding bitrate for a multi layer codec.