Removed SSRC knowledge from ViEEncoder.

SSRC knowledge is contained withing VideoSendStream. That also means that debug recording is moved to VideoSendStream.
I think that make sence since that allows debug recording with external encoder implementations one day.

BUG=webrtc:5687

Review-Url: https://codereview.webrtc.org/1936503002
Cr-Commit-Position: refs/heads/master@{#12632}
diff --git a/webrtc/video/encoder_state_feedback.h b/webrtc/video/encoder_state_feedback.h
index 57595a0..c9fb9cc 100644
--- a/webrtc/video/encoder_state_feedback.h
+++ b/webrtc/video/encoder_state_feedback.h
@@ -7,10 +7,6 @@
  *  in the file PATENTS.  All contributing project authors may
  *  be found in the AUTHORS file in the root of the source tree.
  */
-
-// TODO(mflodman) ViEEncoder has a time check to not send key frames too often,
-// move the logic to this class.
-
 #ifndef WEBRTC_VIDEO_ENCODER_STATE_FEEDBACK_H_
 #define WEBRTC_VIDEO_ENCODER_STATE_FEEDBACK_H_
 
@@ -18,6 +14,7 @@
 
 #include "webrtc/base/criticalsection.h"
 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
+#include "webrtc/system_wrappers/include/clock.h"
 #include "webrtc/typedefs.h"
 
 namespace webrtc {
@@ -26,22 +23,24 @@
 
 class EncoderStateFeedback : public RtcpIntraFrameObserver {
  public:
-  EncoderStateFeedback();
-
-  // Adds an encoder to receive feedback for a set of SSRCs.
-  void Init(const std::vector<uint32_t>& ssrc, ViEEncoder* encoder);
-
+  EncoderStateFeedback(Clock* clock,
+                       const std::vector<uint32_t>& ssrcs,
+                       ViEEncoder* encoder);
   void OnReceivedIntraFrameRequest(uint32_t ssrc) override;
   void OnReceivedSLI(uint32_t ssrc, uint8_t picture_id) override;
   void OnReceivedRPSI(uint32_t ssrc, uint64_t picture_id) override;
   void OnLocalSsrcChanged(uint32_t old_ssrc, uint32_t new_ssrc) override;
 
  private:
-  bool HasSsrc(uint32_t ssrc) EXCLUSIVE_LOCKS_REQUIRED(crit_);
-  rtc::CriticalSection crit_;
+  bool HasSsrc(uint32_t ssrc);
+  size_t GetStreamIndex(uint32_t ssrc);
 
-  std::vector<uint32_t> ssrcs_ GUARDED_BY(crit_);
-  ViEEncoder* vie_encoder_ GUARDED_BY(crit_);
+  Clock* const clock_;
+  const std::vector<uint32_t> ssrcs_;
+  ViEEncoder* const vie_encoder_;
+
+  rtc::CriticalSection crit_;
+  std::vector<int64_t> time_last_intra_request_ms_ GUARDED_BY(crit_);
 };
 
 }  // namespace webrtc