video_coding - JB: Ensuring that every frame is inserted only once to the list

Review URL: http://webrtc-codereview.appspot.com/114006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@391 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
mikhal@webrtc.org 2011-08-17 18:43:21 +00:00
parent 473bac8582
commit ebeb5a656b
2 changed files with 7 additions and 8 deletions

View File

@ -1702,13 +1702,12 @@ VCMJitterBuffer::InsertPacket(VCMEncodedFrame* buffer, const VCMPacket& packet)
frame->IncrementNackCount();
}
// First packet of a frame
if (state == kStateEmpty)
// Insert each frame once on the arrival of the first packet
// belonging to that frame (media or empty)
if (state == kStateEmpty &&
frame->GetHighSeqNum() == packet.seqNum)
{
if (bufferReturn > 0)
{
ret = kFirstPacket;
}
ret = kFirstPacket;
_frameBuffersTSOrder.Insert(frame);
}
}
@ -1857,7 +1856,7 @@ VCMJitterBuffer::RecycleFramesUntilKeyFrame()
oldestFrame = oldestFrameListItem->GetItem();
}
if(oldestFrame != NULL)
if (oldestFrame != NULL)
{
foundIFrame = foundIFrame ||
(oldestFrame->FrameType() != kVideoFrameDelta);

View File

@ -1903,7 +1903,7 @@ int JitterBufferTest(CmdArgs& args)
packet.seqNum = seqNum;
packet.timestamp = timeStamp;
packet.frameType = kVideoFrameDelta;
TEST(kFirstPacket == jb.InsertPacket(frameIn, packet));
TEST(kIncomplete == jb.InsertPacket(frameIn, packet));
// insert an additional data packet
seqNum = 2;
packet.isFirstPacket = false;