Index: webrtc/modules/video_coding/packet_buffer.cc |
diff --git a/webrtc/modules/video_coding/packet_buffer.cc b/webrtc/modules/video_coding/packet_buffer.cc |
index 1b6fecc3856883bb24c8bf14f21e29241e86cf27..fa9860eb4d91046f4d90a16c0a0a80f0009782df 100644 |
--- a/webrtc/modules/video_coding/packet_buffer.cc |
+++ b/webrtc/modules/video_coding/packet_buffer.cc |
@@ -172,16 +172,8 @@ bool PacketBuffer::PotentialNewFrame(uint16_t seq_num) const { |
return false; |
if (sequence_buffer_[index].frame_created) |
return false; |
- if (sequence_buffer_[index].frame_begin && |
- (!sequence_buffer_[prev_index].used || |
- AheadOf(seq_num, sequence_buffer_[prev_index].seq_num))) { |
- // The reason we only return true if this packet is the first packet of the |
- // frame and the sequence number is newer than the packet with the previous |
- // index is because we want to avoid an inifite loop in the case where |
- // a single frame containing more packets than the current size of the |
- // packet buffer is inserted. |
+ if (sequence_buffer_[index].frame_begin) |
return true; |
- } |
if (!sequence_buffer_[prev_index].used) |
return false; |
if (sequence_buffer_[prev_index].seq_num != |
@@ -197,7 +189,9 @@ bool PacketBuffer::PotentialNewFrame(uint16_t seq_num) const { |
std::vector<std::unique_ptr<RtpFrameObject>> PacketBuffer::FindFrames( |
uint16_t seq_num) { |
std::vector<std::unique_ptr<RtpFrameObject>> found_frames; |
- while (PotentialNewFrame(seq_num)) { |
+ size_t packets_tested = 0; |
+ while (packets_tested < size_ && |
+ PotentialNewFrame(seq_num)) { |
stefan-webrtc
2016/11/28 13:11:03
Might fit on one line?
|
size_t index = seq_num % size_; |
sequence_buffer_[index].continuous = true; |
@@ -229,6 +223,7 @@ std::vector<std::unique_ptr<RtpFrameObject>> PacketBuffer::FindFrames( |
max_nack_count, clock_->TimeInMilliseconds())); |
} |
++seq_num; |
+ ++packets_tested; |
} |
return found_frames; |
} |