Move FrameTiming list from OveruseDetector to SendProcessingUsage.

Bug: webrtc:8504
Change-Id: Ifd8feb1634f1061f841493eae83c9eae410d4c20
Reviewed-on: https://webrtc-review.googlesource.com/30780
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21153}
diff --git a/video/overuse_frame_detector.h b/video/overuse_frame_detector.h
index dd84d6f..76508bc 100644
--- a/video/overuse_frame_detector.h
+++ b/video/overuse_frame_detector.h
@@ -95,9 +95,13 @@
    public:
     virtual void Reset() = 0;
     virtual void SetMaxSampleDiffMs(float diff_ms) = 0;
-    virtual void AddCaptureSample(float sample_ms) = 0;
-    virtual void AddSample(float processing_ms,
-                           int64_t diff_last_sample_ms) = 0;
+    virtual void FrameCaptured(const VideoFrame& frame,
+                               int64_t time_when_first_seen_us,
+                               int64_t last_capture_time_us) = 0;
+    // Returns encode_time in us, if there's a new measurement.
+    virtual rtc::Optional<int> FrameSent(uint32_t timestamp,
+                                         int64_t time_sent_in_us) = 0;
+
     virtual int Value() = 0;
     virtual ~ProcessingUsage() = default;
   };
@@ -107,17 +111,6 @@
 
  private:
   class CheckOveruseTask;
-  struct FrameTiming {
-    FrameTiming(int64_t capture_time_us, uint32_t timestamp, int64_t now)
-        : capture_time_us(capture_time_us),
-          timestamp(timestamp),
-          capture_us(now),
-          last_send_us(-1) {}
-    int64_t capture_time_us;
-    uint32_t timestamp;
-    int64_t capture_us;
-    int64_t last_send_us;
-  };
 
   void EncodedFrameTimeMeasured(int encode_duration_ms);
   bool IsOverusing(const CpuOveruseMetrics& metrics);
@@ -129,7 +122,8 @@
   void ResetAll(int num_pixels);
 
   static std::unique_ptr<ProcessingUsage> CreateProcessingUsage(
-      const CpuOveruseOptions& options);
+      const CpuOveruseOptions& options,
+      EncodedFrameObserver* encoder_timing);
 
   rtc::SequencedTaskChecker task_checker_;
   // Owned by the task queue from where StartCheckForOveruse is called.
@@ -139,7 +133,6 @@
 
   // Observer getting overuse reports.
   AdaptationObserverInterface* const observer_;
-  EncodedFrameObserver* const encoder_timing_;
 
   // Stats metrics.
   CpuOveruseMetricsObserver* const metrics_observer_;
@@ -148,7 +141,6 @@
   int64_t num_process_times_ RTC_GUARDED_BY(task_checker_);
 
   int64_t last_capture_time_us_ RTC_GUARDED_BY(task_checker_);
-  int64_t last_processed_capture_time_us_ RTC_GUARDED_BY(task_checker_);
 
   // Number of pixels of last captured frame.
   int num_pixels_ RTC_GUARDED_BY(task_checker_);
@@ -162,7 +154,6 @@
 
   const std::unique_ptr<ProcessingUsage> usage_
       RTC_PT_GUARDED_BY(task_checker_);
-  std::list<FrameTiming> frame_timing_ RTC_GUARDED_BY(task_checker_);
 
   RTC_DISALLOW_COPY_AND_ASSIGN(OveruseFrameDetector);
 };