Index: webrtc/modules/video_coding/main/source/decoding_state.h |
diff --git a/webrtc/modules/video_coding/main/source/decoding_state.h b/webrtc/modules/video_coding/main/source/decoding_state.h |
index 99ee33519530fa78d431ed3ff43a38e360af4c39..0be0416321b1e15a3a7b411e54dd82d929d4c716 100644 |
--- a/webrtc/modules/video_coding/main/source/decoding_state.h |
+++ b/webrtc/modules/video_coding/main/source/decoding_state.h |
@@ -21,6 +21,11 @@ class VCMPacket; |
class VCMDecodingState { |
public: |
+ // The max number of bits used to reference back |
+ // to a previous frame when using flexible mode. |
+ static const uint16_t kNumRefBits = 14; |
+ static const uint16_t kFrameDecodedLength = 1 << kNumRefBits; |
+ |
VCMDecodingState(); |
~VCMDecodingState(); |
// Check for old frame |
@@ -52,7 +57,9 @@ class VCMDecodingState { |
bool ContinuousPictureId(int picture_id) const; |
bool ContinuousSeqNum(uint16_t seq_num) const; |
bool ContinuousLayer(int temporal_id, int tl0_pic_id) const; |
+ bool ContinuousFrameRefs(const VCMFrameBuffer* frame) const; |
bool UsingPictureId(const VCMFrameBuffer* frame) const; |
+ bool UsingFlexibleMode(const VCMFrameBuffer* frame) const; |
// Keep state of last decoded frame. |
// TODO(mikhal/stefan): create designated classes to handle these types. |
@@ -63,6 +70,10 @@ class VCMDecodingState { |
int tl0_pic_id_; |
bool full_sync_; // Sync flag when temporal layers are used. |
bool in_initial_state_; |
+ |
+ // Used to check references in flexible mode. |
+ bool frame_decoded_[kFrameDecodedLength]; |
+ uint16_t frame_decoded_cleared_to_; |
}; |
} // namespace webrtc |