Index: webrtc/modules/video_coding/main/source/jitter_buffer.h |
diff --git a/webrtc/modules/video_coding/main/source/jitter_buffer.h b/webrtc/modules/video_coding/main/source/jitter_buffer.h |
index 3961dff46ffaffb2d15fbb568fc311f6a46814cc..af619adc7c8bcf797e3dbe76fb2ae9ad8d380bcd 100644 |
--- a/webrtc/modules/video_coding/main/source/jitter_buffer.h |
+++ b/webrtc/modules/video_coding/main/source/jitter_buffer.h |
@@ -206,13 +206,15 @@ class VCMJitterBuffer { |
EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
// Returns true if |frame| is continuous in |decoding_state|, not taking |
- // decodable frames into account. |
+ // decodable frames into account and optionally ignoring |decode_error_mode|. |
bool IsContinuousInState(const VCMFrameBuffer& frame, |
- const VCMDecodingState& decoding_state) const |
+ const VCMDecodingState& decoding_state, |
+ bool ignore_error_mode) const |
EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
// Returns true if |frame| is continuous in the |last_decoded_state_|, taking |
- // all decodable frames into account. |
- bool IsContinuous(const VCMFrameBuffer& frame) const |
+ // all decodable frames into account and optionally ignoring the |
+ // |decode_error_mode|. |
+ bool IsContinuous(const VCMFrameBuffer& frame, bool ignore_error_mode) const |
EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
// Looks for frames in |incomplete_frames_| which are continuous in the |
// provided |decoded_state|. Starts the search from the timestamp of |
@@ -225,6 +227,11 @@ class VCMJitterBuffer { |
// the search from |new_frame|. |
void FindAndInsertContinuousFrames(const VCMFrameBuffer& new_frame) |
EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
+ // Returns true if no continuous decodable frame has been received for too |
+ // long and NACKs are disabled, so a keyframe should be requested from the |
+ // sender. Ensures that keyframes are not requested too often. |
+ bool TooManyDiscontinuousFrames(int64_t now_ms) |
+ EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
VCMFrameBuffer* NextFrame() const EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); |
// Returns true if the NACK list was updated to cover sequence numbers up to |
// |sequence_number|. If false a key frame is needed to get into a state where |
@@ -332,6 +339,8 @@ class VCMJitterBuffer { |
int num_duplicated_packets_ GUARDED_BY(crit_sect_); |
// Number of packets discarded by the jitter buffer. |
int num_discarded_packets_ GUARDED_BY(crit_sect_); |
+ // Time when last decodable frame was received. |
+ int64_t time_last_decodable_frame_ GUARDED_BY(crit_sect_); |
// Time when first packet is received. |
int64_t time_first_packet_ms_ GUARDED_BY(crit_sect_); |