Throttle log message in FrameBuffer.

BUG=webrtc:7551

Review-Url: https://codereview.webrtc.org/2987673002
Cr-Commit-Position: refs/heads/master@{#19123}
diff --git a/webrtc/modules/video_coding/frame_buffer2.cc b/webrtc/modules/video_coding/frame_buffer2.cc
index 5be20a2..b8a80e1 100644
--- a/webrtc/modules/video_coding/frame_buffer2.cc
+++ b/webrtc/modules/video_coding/frame_buffer2.cc
@@ -32,6 +32,8 @@
 
 // Max number of decoded frame info that will be saved.
 constexpr int kMaxFramesHistory = 50;
+
+constexpr int64_t kLogNonDecodedIntervalMs = 5000;
 }  // namespace
 
 FrameBuffer::FrameBuffer(Clock* clock,
@@ -50,7 +52,8 @@
       num_frames_buffered_(0),
       stopped_(false),
       protection_mode_(kProtectionNack),
-      stats_callback_(stats_callback) {}
+      stats_callback_(stats_callback),
+      last_log_non_decoded_ms_(-kLogNonDecodedIntervalMs) {}
 
 FrameBuffer::~FrameBuffer() {}
 
@@ -452,11 +455,15 @@
     if (last_decoded_frame_it_ != frames_.end() &&
         ref_key <= last_decoded_frame_it_->first) {
       if (ref_info == frames_.end()) {
-        LOG(LS_WARNING) << "Frame with (picture_id:spatial_id) ("
-                        << key.picture_id << ":"
-                        << static_cast<int>(key.spatial_layer)
-                        << " depends on a non-decoded frame more previous than "
-                        << "the last decoded frame, dropping frame.";
+        int64_t now_ms = clock_->TimeInMilliseconds();
+        if (last_log_non_decoded_ms_ + kLogNonDecodedIntervalMs < now_ms) {
+          LOG(LS_WARNING)
+              << "Frame with (picture_id:spatial_id) (" << key.picture_id << ":"
+              << static_cast<int>(key.spatial_layer)
+              << ") depends on a non-decoded frame more previous than"
+              << " the last decoded frame, dropping frame.";
+          last_log_non_decoded_ms_ = now_ms;
+        }
         return false;
       }
 
diff --git a/webrtc/modules/video_coding/frame_buffer2.h b/webrtc/modules/video_coding/frame_buffer2.h
index 2d2411f..307bb85 100644
--- a/webrtc/modules/video_coding/frame_buffer2.h
+++ b/webrtc/modules/video_coding/frame_buffer2.h
@@ -177,6 +177,7 @@
   bool stopped_ GUARDED_BY(crit_);
   VCMVideoProtection protection_mode_ GUARDED_BY(crit_);
   VCMReceiveStatisticsCallback* const stats_callback_;
+  int64_t last_log_non_decoded_ms_ GUARDED_BY(crit_);
 
   RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(FrameBuffer);
 };