Optimize NACK list creation.

- No longer looping through all frame buffers.
- Keeping track of the current nack list index when building the list.
- Don't look for changes in the NACK list if the size has increased.

Review URL: https://webrtc-codereview.appspot.com/1076005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3420 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
stefan@webrtc.org
2013-01-28 08:48:13 +00:00
parent b2d7497faf
commit bf535b9b6b
6 changed files with 98 additions and 78 deletions

View File

@ -206,17 +206,16 @@ VCMFrameBuffer::LatestPacketTimeMs() const
// Build hard NACK list:Zero out all entries in list up to and including the
// (first) entry equal to _lowSeqNum.
int VCMFrameBuffer::BuildHardNackList(int* list, int num) {
if (_sessionInfo.BuildHardNackList(list, num) != 0) {
return -1;
}
return 0;
int VCMFrameBuffer::BuildHardNackList(int* list, int num,
int nack_seq_nums_index) {
return _sessionInfo.BuildHardNackList(list, num, nack_seq_nums_index);
}
// Build selective NACK list: Create a soft (selective) list of entries to zero
// out up to and including the (first) entry equal to _lowSeqNum.
int VCMFrameBuffer::BuildSoftNackList(int* list, int num, int rttMs) {
return _sessionInfo.BuildSoftNackList(list, num, rttMs);
int VCMFrameBuffer::BuildSoftNackList(int* list, int num,
int nack_seq_nums_index, int rttMs) {
return _sessionInfo.BuildSoftNackList(list, num, nack_seq_nums_index, rttMs);
}
void