Fix issues with incorrect wrap checks when having big buffers and high bitrate.
Introduces shared functions for timestamp and sequence number wrap checks. BUG=1607 TESTS=trybots Review URL: https://webrtc-codereview.appspot.com/1291005 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3833 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
@ -36,8 +36,7 @@ class FrameSmallerTimestamp {
|
||||
public:
|
||||
explicit FrameSmallerTimestamp(uint32_t timestamp) : timestamp_(timestamp) {}
|
||||
bool operator()(VCMFrameBuffer* frame) {
|
||||
return (LatestTimestamp(timestamp_, frame->TimeStamp(), NULL) ==
|
||||
timestamp_);
|
||||
return IsNewerTimestamp(timestamp_, frame->TimeStamp());
|
||||
}
|
||||
|
||||
private:
|
||||
@ -718,7 +717,7 @@ VCMFrameBufferEnum VCMJitterBuffer::InsertPacket(VCMEncodedFrame* encoded_frame,
|
||||
request_key_frame = true;
|
||||
}
|
||||
latest_received_sequence_number_ = LatestSequenceNumber(
|
||||
latest_received_sequence_number_, packet.seqNum, NULL);
|
||||
latest_received_sequence_number_, packet.seqNum);
|
||||
}
|
||||
|
||||
// Empty packets may bias the jitter estimate (lacking size component),
|
||||
@ -909,12 +908,10 @@ bool VCMJitterBuffer::UpdateNackList(uint16_t sequence_number) {
|
||||
if (!last_decoded_state_.in_initial_state()) {
|
||||
latest_received_sequence_number_ = LatestSequenceNumber(
|
||||
latest_received_sequence_number_,
|
||||
last_decoded_state_.sequence_num(),
|
||||
NULL);
|
||||
last_decoded_state_.sequence_num());
|
||||
}
|
||||
bool in_order = LatestSequenceNumber(sequence_number,
|
||||
latest_received_sequence_number_, NULL) == sequence_number;
|
||||
if (in_order) {
|
||||
if (IsNewerSequenceNumber(sequence_number,
|
||||
latest_received_sequence_number_)) {
|
||||
// Push any missing sequence numbers to the NACK list.
|
||||
for (uint16_t i = latest_received_sequence_number_ + 1;
|
||||
i < sequence_number; ++i) {
|
||||
|
||||
Reference in New Issue
Block a user