Reland "Refactor and remove media_optimization::MediaOptimization."

This reverts commit 6613f8e98ab3654ade7e8f5352d8d6711b157499.

Reason for revert: This change seemed innocent after all, so undoing speculative revert.

Original change's description:
> Revert "Refactor and remove media_optimization::MediaOptimization."
> 
> This reverts commit 07276e4f89a93b1479d7aeefa53b4fc32daf001b.
> 
> Reason for revert: Speculative revert due to downstream crashes.
> 
> Original change's description:
> > Refactor and remove media_optimization::MediaOptimization.
> > 
> > This CL removes MediaOptmization and folds some of its functionality
> > into VideoStreamEncoder.
> > 
> > The FPS tracking is now handled by a RateStatistics instance. Frame
> > dropping is still handled by FrameDropper. Both of these now live
> > directly in VideoStreamEncoder.
> > There is no intended change in behavior from this CL, but due to a new
> > way of measuring frame rate, some minor perf changes can be expected.
> > 
> > A small change in behavior is that OnBitrateUpdated is now called
> > directly rather than on the next frame. Since both encoding frame and
> > setting rate allocations happen on the encoder worker thread, there's
> > really no reason to cache bitrates and wait until the next frame.
> > An edge case though is that if a new bitrate is set before the first
> > frame, we must remember that bitrate and then apply it after the video
> > bitrate allocator has been first created.
> > 
> > In addition to existing unit tests, manual tests have been used to
> > confirm that frame dropping works as expected with misbehaving encoders.
> > 
> > Bug: webrtc:10164
> > Change-Id: I7ee9c8d3c4f2bcf23c8c420310b05a4d35d94744
> > Reviewed-on: https://webrtc-review.googlesource.com/c/115620
> > Commit-Queue: Erik Språng <sprang@webrtc.org>
> > Reviewed-by: Niels Moller <nisse@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#26147}
> 
> TBR=nisse@webrtc.org,sprang@webrtc.org
> 
> # Not skipping CQ checks because original CL landed > 1 day ago.
> 
> Bug: webrtc:10164
> Change-Id: Ie0dae19dd012bc09e793c9661a45823fd760c20c
> Reviewed-on: https://webrtc-review.googlesource.com/c/116780
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Erik Språng <sprang@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26191}

TBR=nisse@webrtc.org,sprang@webrtc.org

Change-Id: Ieda1fad301de002460bb0bf5a75267ea065176a8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10164
Reviewed-on: https://webrtc-review.googlesource.com/c/116960
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26213}
diff --git a/modules/video_coding/generic_encoder.h b/modules/video_coding/generic_encoder.h
index 1f4ade2..463f98a 100644
--- a/modules/video_coding/generic_encoder.h
+++ b/modules/video_coding/generic_encoder.h
@@ -23,33 +23,9 @@
 
 namespace webrtc {
 
-namespace media_optimization {
-class MediaOptimization;
-}  // namespace media_optimization
-
-struct EncoderParameters {
-  EncoderParameters() : total_bitrate(DataRate::Zero()), input_frame_rate(0) {}
-  EncoderParameters(DataRate total_bitrate,
-                    const VideoBitrateAllocation& allocation,
-                    uint32_t framerate)
-      : total_bitrate(total_bitrate),
-        target_bitrate(allocation),
-        input_frame_rate(framerate) {}
-
-  // Total bitrate allocated for this encoder.
-  DataRate total_bitrate;
-  // The bitrate allocation, across spatial and/or temporal layers. Note that
-  // the sum of these might be less than |total_bitrate| if the allocator has
-  // capped the bitrate for some configuration.
-  VideoBitrateAllocation target_bitrate;
-  // The input frame rate to the encoder in fps, measured in the video sender.
-  uint32_t input_frame_rate;
-};
-
 class VCMEncodedFrameCallback : public EncodedImageCallback {
  public:
-  VCMEncodedFrameCallback(EncodedImageCallback* post_encode_callback,
-                          media_optimization::MediaOptimization* media_opt);
+  explicit VCMEncodedFrameCallback(EncodedImageCallback* post_encode_callback);
   ~VCMEncodedFrameCallback() override;
 
   // Implements EncodedImageCallback.
@@ -100,7 +76,6 @@
   rtc::CriticalSection timing_params_lock_;
   bool internal_source_;
   EncodedImageCallback* const post_encode_callback_;
-  media_optimization::MediaOptimization* const media_opt_;
 
   struct EncodeStartTimeRecord {
     EncodeStartTimeRecord(uint32_t timestamp,
@@ -153,8 +128,8 @@
                  const CodecSpecificInfo* codec_specific,
                  const std::vector<FrameType>& frame_types);
 
-  void SetEncoderParameters(const EncoderParameters& params);
-  EncoderParameters GetEncoderParameters() const;
+  void SetEncoderParameters(const VideoBitrateAllocation& target_bitrate,
+                            uint32_t input_frame_rate);
 
   int32_t RequestFrame(const std::vector<FrameType>& frame_types);
   bool InternalSource() const;
@@ -167,7 +142,8 @@
   VCMEncodedFrameCallback* const vcm_encoded_frame_callback_;
   const bool internal_source_;
   rtc::CriticalSection params_lock_;
-  EncoderParameters encoder_params_ RTC_GUARDED_BY(params_lock_);
+  VideoBitrateAllocation bitrate_allocation_ RTC_GUARDED_BY(params_lock_);
+  uint32_t input_frame_rate_ RTC_GUARDED_BY(params_lock_);
   size_t streams_or_svc_num_ RTC_GUARDED_BY(race_checker_);
   VideoCodecType codec_type_ RTC_GUARDED_BY(race_checker_);
 };