Correctly add packets to nack list when sequence number wraps.
BUG=1737 R=mflodman@webrtc.org Review URL: https://webrtc-codereview.appspot.com/1427004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@3966 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
parent
0f29810288
commit
a5dee33639
@ -911,7 +911,7 @@ bool VCMJitterBuffer::UpdateNackList(uint16_t 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) {
|
||||
IsNewerSequenceNumber(sequence_number, i); ++i) {
|
||||
missing_sequence_numbers_.insert(missing_sequence_numbers_.end(), i);
|
||||
TRACE_EVENT_INSTANT1("webrtc", "AddNack", "seqnum", i);
|
||||
}
|
||||
|
@ -456,4 +456,37 @@ TEST_F(TestJitterBufferNack, NormalOperationWrap) {
|
||||
EXPECT_EQ(i * 10, list[i]);
|
||||
}
|
||||
|
||||
TEST_F(TestJitterBufferNack, NormalOperationWrap2) {
|
||||
bool request_key_frame = false;
|
||||
// -----------------------------------
|
||||
// | 65532 | 65533 | 65534 | x | 0 | 1 |
|
||||
// -----------------------------------
|
||||
stream_generator_->Init(65532, 0, clock_->TimeInMilliseconds());
|
||||
InsertFrame(kVideoFrameKey);
|
||||
EXPECT_FALSE(request_key_frame);
|
||||
EXPECT_TRUE(DecodeCompleteFrame());
|
||||
stream_generator_->GenerateFrame(kVideoFrameDelta, 1, 0,
|
||||
clock_->TimeInMilliseconds());
|
||||
clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs);
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
if (stream_generator_->NextSequenceNumber() != 65535) {
|
||||
EXPECT_EQ(kCompleteSession, InsertPacketAndPop(0));
|
||||
EXPECT_FALSE(request_key_frame);
|
||||
} else {
|
||||
stream_generator_->NextPacket(NULL); // Drop packet
|
||||
}
|
||||
stream_generator_->GenerateFrame(kVideoFrameDelta, 1, 0,
|
||||
clock_->TimeInMilliseconds());
|
||||
clock_->AdvanceTimeMilliseconds(kDefaultFramePeriodMs);
|
||||
}
|
||||
EXPECT_EQ(kCompleteSession, InsertPacketAndPop(0));
|
||||
EXPECT_FALSE(request_key_frame);
|
||||
uint16_t nack_list_size = 0;
|
||||
bool extended = false;
|
||||
uint16_t* list = jitter_buffer_->GetNackList(&nack_list_size, &extended);
|
||||
// Verify the NACK list.
|
||||
ASSERT_EQ(1, nack_list_size);
|
||||
EXPECT_EQ(65535, list[0]);
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
Loading…
x
Reference in New Issue
Block a user