Revert "Enable quality scaling when allowed"

This reverts commit 752cbaba907de077e5f1b24a232e71feb479dccb.

Reason for revert: The test VideoStreamEncoderTest.QualityScalingAllowed_QualityScalingEnabled seems to fail on iOS.

Original change's description:
> Enable quality scaling when allowed
>
> Before this CL quality scaling was conditioned on scaling settings
> provided by encoder. That should not be a requirement since encoder
> may not be aware of quality scaling which is a WebRTC feature. In M90
> chromium HW encoders do not provide scaling settings (chromium:1179020).
> The default scaling settings provided by these encoders are not correct
> (b/181537172).
>
> This CL adds is_quality_scaling_allowed to VideoEncoderConfig. The flag
> is set to true in singlecast with normal video feed (not screen sharing)
> mode. If quality scaling is allowed it is enabled no matter whether
> scaling settings are present in encoder info or not. Setting from
> QualityScalingExperiment are used in case if not provided by encoder.
>
> Bug: chromium:1179020, webrtc:12511
> Change-Id: I83d55319ce4b9f4fb143187ced94a16a778b4de3
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/209184
> Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org>
> Reviewed-by: Åsa Persson <asapersson@webrtc.org>
> Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#33373}

Bug: chromium:1179020
Bug: webrtc:12511
Change-Id: Icabf2d9a034d359f79491f2c37f1044f17a7445d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/209641
Reviewed-by: Sergey Silkin <ssilkin@webrtc.org>
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33381}
diff --git a/api/video_codecs/video_encoder_config.cc b/api/video_codecs/video_encoder_config.cc
index 0321da2..5956d60 100644
--- a/api/video_codecs/video_encoder_config.cc
+++ b/api/video_codecs/video_encoder_config.cc
@@ -57,8 +57,7 @@
       max_bitrate_bps(0),
       bitrate_priority(1.0),
       number_of_streams(0),
-      legacy_conference_mode(false),
-      is_quality_scaling_allowed(false) {}
+      legacy_conference_mode(false) {}
 
 VideoEncoderConfig::VideoEncoderConfig(VideoEncoderConfig&&) = default;
 
diff --git a/api/video_codecs/video_encoder_config.h b/api/video_codecs/video_encoder_config.h
index 5916374..1a061f52 100644
--- a/api/video_codecs/video_encoder_config.h
+++ b/api/video_codecs/video_encoder_config.h
@@ -181,9 +181,6 @@
   // Legacy Google conference mode flag for simulcast screenshare
   bool legacy_conference_mode;
 
-  // Indicates whether quality scaling can be used or not.
-  bool is_quality_scaling_allowed;
-
  private:
   // Access to the copy constructor is private to force use of the Copy()
   // method for those exceptional cases where we do use it.
diff --git a/media/engine/webrtc_video_engine.cc b/media/engine/webrtc_video_engine.cc
index 8ddced7..d5b0f40 100644
--- a/media/engine/webrtc_video_engine.cc
+++ b/media/engine/webrtc_video_engine.cc
@@ -2492,17 +2492,11 @@
 
   encoder_config.legacy_conference_mode = parameters_.conference_mode;
 
-  encoder_config.is_quality_scaling_allowed =
-      !disable_automatic_resize_ && !is_screencast &&
-      (parameters_.config.rtp.ssrcs.size() == 1 ||
-       NumActiveStreams(rtp_parameters_) == 1);
-
   int max_qp = kDefaultQpMax;
   codec.GetParam(kCodecParamMaxQuantization, &max_qp);
   encoder_config.video_stream_factory =
       new rtc::RefCountedObject<EncoderStreamFactory>(
           codec.name, max_qp, is_screencast, parameters_.conference_mode);
-
   return encoder_config;
 }
 
diff --git a/media/engine/webrtc_video_engine_unittest.cc b/media/engine/webrtc_video_engine_unittest.cc
index cf03490..1f7a0ee 100644
--- a/media/engine/webrtc_video_engine_unittest.cc
+++ b/media/engine/webrtc_video_engine_unittest.cc
@@ -8302,48 +8302,6 @@
   TestReceiverLocalSsrcConfiguration(true);
 }
 
-TEST_F(WebRtcVideoChannelTest, Simulcast_QualityScalingNotAllowed) {
-  FakeVideoSendStream* stream = SetUpSimulcast(true, true);
-  EXPECT_FALSE(stream->GetEncoderConfig().is_quality_scaling_allowed);
-}
-
-TEST_F(WebRtcVideoChannelTest, Singlecast_QualityScalingAllowed) {
-  FakeVideoSendStream* stream = SetUpSimulcast(false, true);
-  EXPECT_TRUE(stream->GetEncoderConfig().is_quality_scaling_allowed);
-}
-
-TEST_F(WebRtcVideoChannelTest,
-       SinglecastScreenSharing_QualityScalingNotAllowed) {
-  SetUpSimulcast(false, true);
-
-  webrtc::test::FrameForwarder frame_forwarder;
-  VideoOptions options;
-  options.is_screencast = true;
-  EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, &options, &frame_forwarder));
-  // Fetch the latest stream since SetVideoSend() may recreate it if the
-  // screen content setting is changed.
-  FakeVideoSendStream* stream = fake_call_->GetVideoSendStreams().front();
-
-  EXPECT_FALSE(stream->GetEncoderConfig().is_quality_scaling_allowed);
-  EXPECT_TRUE(channel_->SetVideoSend(last_ssrc_, nullptr, nullptr));
-}
-
-TEST_F(WebRtcVideoChannelTest,
-       SimulcastSingleActiveStream_QualityScalingAllowed) {
-  FakeVideoSendStream* stream = SetUpSimulcast(true, false);
-
-  webrtc::RtpParameters rtp_parameters =
-      channel_->GetRtpSendParameters(last_ssrc_);
-  ASSERT_EQ(3u, rtp_parameters.encodings.size());
-  ASSERT_TRUE(rtp_parameters.encodings[0].active);
-  ASSERT_TRUE(rtp_parameters.encodings[1].active);
-  ASSERT_TRUE(rtp_parameters.encodings[2].active);
-  rtp_parameters.encodings[0].active = false;
-  rtp_parameters.encodings[1].active = false;
-  EXPECT_TRUE(channel_->SetRtpSendParameters(last_ssrc_, rtp_parameters).ok());
-  EXPECT_TRUE(stream->GetEncoderConfig().is_quality_scaling_allowed);
-}
-
 class WebRtcVideoChannelSimulcastTest : public ::testing::Test {
  public:
   WebRtcVideoChannelSimulcastTest()
diff --git a/video/adaptation/video_stream_encoder_resource_manager.cc b/video/adaptation/video_stream_encoder_resource_manager.cc
index 8caeceb..59b4c8d 100644
--- a/video/adaptation/video_stream_encoder_resource_manager.cc
+++ b/video/adaptation/video_stream_encoder_resource_manager.cc
@@ -521,9 +521,7 @@
   const auto scaling_settings = encoder_info.scaling_settings;
   const bool quality_scaling_allowed =
       IsResolutionScalingEnabled(degradation_preference_) &&
-      (scaling_settings.thresholds.has_value() ||
-       (encoder_settings_.has_value() &&
-        encoder_settings_->encoder_config().is_quality_scaling_allowed));
+      scaling_settings.thresholds;
 
   // TODO(https://crbug.com/webrtc/11222): Should this move to
   // QualityScalerResource?
@@ -537,9 +535,9 @@
         experimental_thresholds = QualityScalingExperiment::GetQpThresholds(
             GetVideoCodecTypeOrGeneric(encoder_settings_));
       }
-      UpdateQualityScalerSettings(experimental_thresholds.has_value()
-                                      ? experimental_thresholds
-                                      : scaling_settings.thresholds);
+      UpdateQualityScalerSettings(experimental_thresholds
+                                      ? *experimental_thresholds
+                                      : *(scaling_settings.thresholds));
     }
   } else {
     UpdateQualityScalerSettings(absl::nullopt);
diff --git a/video/video_stream_encoder_unittest.cc b/video/video_stream_encoder_unittest.cc
index ade58a4..5583ba5 100644
--- a/video/video_stream_encoder_unittest.cc
+++ b/video/video_stream_encoder_unittest.cc
@@ -7923,61 +7923,4 @@
   video_stream_encoder_->Stop();
 }
 
-TEST_F(VideoStreamEncoderTest,
-       QualityScalingNotAllowed_QualityScalingDisabled) {
-  VideoEncoderConfig video_encoder_config = video_encoder_config_.Copy();
-
-  // Disable scaling settings in encoder info.
-  fake_encoder_.SetQualityScaling(false);
-  // Disable quality scaling in encoder config.
-  video_encoder_config.is_quality_scaling_allowed = false;
-  ConfigureEncoder(std::move(video_encoder_config));
-
-  video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
-      DataRate::BitsPerSec(kTargetBitrateBps),
-      DataRate::BitsPerSec(kTargetBitrateBps),
-      DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
-
-  test::FrameForwarder source;
-  video_stream_encoder_->SetSource(
-      &source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
-  EXPECT_THAT(source.sink_wants(), UnlimitedSinkWants());
-  EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
-
-  source.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
-  WaitForEncodedFrame(1);
-  video_stream_encoder_->TriggerQualityLow();
-  EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
-
-  video_stream_encoder_->Stop();
-}
-
-TEST_F(VideoStreamEncoderTest, QualityScalingAllowed_QualityScalingEnabled) {
-  VideoEncoderConfig video_encoder_config = video_encoder_config_.Copy();
-
-  // Disable scaling settings in encoder info.
-  fake_encoder_.SetQualityScaling(false);
-  // Enable quality scaling in encoder config.
-  video_encoder_config.is_quality_scaling_allowed = true;
-  ConfigureEncoder(std::move(video_encoder_config));
-
-  video_stream_encoder_->OnBitrateUpdatedAndWaitForManagedResources(
-      DataRate::BitsPerSec(kTargetBitrateBps),
-      DataRate::BitsPerSec(kTargetBitrateBps),
-      DataRate::BitsPerSec(kTargetBitrateBps), 0, 0, 0);
-
-  test::FrameForwarder source;
-  video_stream_encoder_->SetSource(
-      &source, webrtc::DegradationPreference::MAINTAIN_FRAMERATE);
-  EXPECT_THAT(source.sink_wants(), UnlimitedSinkWants());
-  EXPECT_FALSE(stats_proxy_->GetStats().bw_limited_resolution);
-
-  source.IncomingCapturedFrame(CreateFrame(1, 1280, 720));
-  WaitForEncodedFrame(1);
-  video_stream_encoder_->TriggerQualityLow();
-  EXPECT_TRUE(stats_proxy_->GetStats().bw_limited_resolution);
-
-  video_stream_encoder_->Stop();
-}
-
 }  // namespace webrtc