Replace VP9 screen sharing.

- Remove referencing control from encoder wrapper. Use fixed temporal
prediction structure.
- Remove flexible mode from encoder wrapper. It only worked with
referencing control which this CL removes.
- Remove external framerate/bitrate controller. Keep codec's internal
frame dropping enabled at screen sharing.
- Use GetSvcConfig() to configure layering.

Bug: webrtc:9261
Change-Id: I355baa6aab7b98ac5028b3851d1f8ccc82a308e0
Reviewed-on: https://webrtc-review.googlesource.com/76801
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23311}
diff --git a/modules/video_coding/video_codec_initializer.cc b/modules/video_coding/video_codec_initializer.cc
index adc7f32..f122070 100644
--- a/modules/video_coding/video_codec_initializer.cc
+++ b/modules/video_coding/video_codec_initializer.cc
@@ -195,54 +195,46 @@
       RTC_DCHECK_LE(video_codec.VP9()->numberOfTemporalLayers,
                     kMaxTemporalStreams);
 
-      if (video_codec.mode == kScreensharing &&
-          config.encoder_specific_settings) {
-        video_codec.VP9()->flexibleMode = true;
-        // For now VP9 screensharing use 1 temporal and 2 spatial layers.
-        RTC_DCHECK_EQ(1, video_codec.VP9()->numberOfTemporalLayers);
-        RTC_DCHECK_EQ(2, video_codec.VP9()->numberOfSpatialLayers);
+      RTC_DCHECK(config.spatial_layers.empty() ||
+                 config.spatial_layers.size() ==
+                     video_codec.VP9()->numberOfSpatialLayers);
+
+      std::vector<SpatialLayer> spatial_layers;
+      if (!config.spatial_layers.empty()) {
+        // Layering is set explicitly.
+        spatial_layers = config.spatial_layers;
       } else {
-        RTC_DCHECK(config.spatial_layers.empty() ||
-                   config.spatial_layers.size() ==
-                       video_codec.VP9()->numberOfSpatialLayers);
+        spatial_layers = GetSvcConfig(video_codec.width, video_codec.height,
+                                      video_codec.VP9()->numberOfSpatialLayers,
+                                      video_codec.VP9()->numberOfTemporalLayers,
+                                      video_codec.mode == kScreensharing);
 
-        std::vector<SpatialLayer> spatial_layers;
-        if (!config.spatial_layers.empty()) {
-          // Layering is set explicitly.
-          spatial_layers = config.spatial_layers;
-        } else {
-          spatial_layers =
-              GetSvcConfig(video_codec.width, video_codec.height,
-                           video_codec.VP9()->numberOfSpatialLayers,
-                           video_codec.VP9()->numberOfTemporalLayers, false);
-
-          const bool no_spatial_layering = (spatial_layers.size() == 1);
-          if (no_spatial_layering) {
-            // Use codec's bitrate limits.
-            spatial_layers.back().minBitrate = video_codec.minBitrate;
-            spatial_layers.back().maxBitrate = video_codec.maxBitrate;
-          }
+        const bool no_spatial_layering = (spatial_layers.size() == 1);
+        if (no_spatial_layering) {
+          // Use codec's bitrate limits.
+          spatial_layers.back().minBitrate = video_codec.minBitrate;
+          spatial_layers.back().maxBitrate = video_codec.maxBitrate;
         }
-
-        RTC_DCHECK(!spatial_layers.empty());
-        for (size_t i = 0; i < spatial_layers.size(); ++i) {
-          video_codec.spatialLayers[i] = spatial_layers[i];
-        }
-
-        // Update layering settings.
-        video_codec.VP9()->numberOfSpatialLayers =
-            static_cast<unsigned char>(spatial_layers.size());
-        RTC_DCHECK_GE(video_codec.VP9()->numberOfSpatialLayers, 1);
-        RTC_DCHECK_LE(video_codec.VP9()->numberOfSpatialLayers,
-                      kMaxSpatialLayers);
-
-        video_codec.VP9()->numberOfTemporalLayers = static_cast<unsigned char>(
-            spatial_layers.back().numberOfTemporalLayers);
-        RTC_DCHECK_GE(video_codec.VP9()->numberOfTemporalLayers, 1);
-        RTC_DCHECK_LE(video_codec.VP9()->numberOfTemporalLayers,
-                      kMaxTemporalStreams);
       }
 
+      RTC_DCHECK(!spatial_layers.empty());
+      for (size_t i = 0; i < spatial_layers.size(); ++i) {
+        video_codec.spatialLayers[i] = spatial_layers[i];
+      }
+
+      // Update layering settings.
+      video_codec.VP9()->numberOfSpatialLayers =
+          static_cast<unsigned char>(spatial_layers.size());
+      RTC_DCHECK_GE(video_codec.VP9()->numberOfSpatialLayers, 1);
+      RTC_DCHECK_LE(video_codec.VP9()->numberOfSpatialLayers,
+                    kMaxSpatialLayers);
+
+      video_codec.VP9()->numberOfTemporalLayers = static_cast<unsigned char>(
+          spatial_layers.back().numberOfTemporalLayers);
+      RTC_DCHECK_GE(video_codec.VP9()->numberOfTemporalLayers, 1);
+      RTC_DCHECK_LE(video_codec.VP9()->numberOfTemporalLayers,
+                    kMaxTemporalStreams);
+
       break;
     }
     case kVideoCodecH264: {