Index: webrtc/modules/video_coding/frame_buffer2.cc |
diff --git a/webrtc/modules/video_coding/frame_buffer2.cc b/webrtc/modules/video_coding/frame_buffer2.cc |
index 5be20a2bd5e54576b9fbe797569f4796626343ce..b8a80e1f681cc77ae634ef7faf879d3b14ad156d 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<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; |
} |