From 65e1f9476a053e9da5e7e884807efbbdb22a2f85 Mon Sep 17 00:00:00 2001 From: philipel Date: Mon, 24 Jul 2017 08:26:53 -0700 Subject: [PATCH] Throttle log message in FrameBuffer. BUG=webrtc:7551 Review-Url: https://codereview.webrtc.org/2987673002 Cr-Commit-Position: refs/heads/master@{#19123} --- webrtc/modules/video_coding/frame_buffer2.cc | 19 +++++++++++++------ webrtc/modules/video_coding/frame_buffer2.h | 1 + 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/webrtc/modules/video_coding/frame_buffer2.cc b/webrtc/modules/video_coding/frame_buffer2.cc index 5be20a2bd5..b8a80e1f68 100644 --- a/webrtc/modules/video_coding/frame_buffer2.cc +++ b/webrtc/modules/video_coding/frame_buffer2.cc @@ -32,6 +32,8 @@ constexpr int kMaxFramesBuffered = 600; // 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 @@ FrameBuffer::FrameBuffer(Clock* clock, 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 @@ bool FrameBuffer::UpdateFrameInfoWithIncomingFrame(const FrameObject& frame, 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(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(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 2d2411f562..307bb85b46 100644 --- a/webrtc/modules/video_coding/frame_buffer2.h +++ b/webrtc/modules/video_coding/frame_buffer2.h @@ -177,6 +177,7 @@ class FrameBuffer { 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); };