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:
parent
473bac8582
commit
ebeb5a656b
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user