VCM/JB: Break and skip to key if possible

BUG=1734
R=stefan@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3969 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
mikhal@webrtc.org
2013-05-07 16:07:52 +00:00
parent 3004c79c6a
commit 9c7685f9a6

View File

@ -466,8 +466,7 @@ VCMEncodedFrame* VCMJitterBuffer::GetCompleteFrameForDecoding(
break; break;
} }
} else { } else {
crit_sect_->Leave(); break;
return NULL;
} }
} }
// Inside |crit_sect_|. // Inside |crit_sect_|.
@ -477,7 +476,7 @@ VCMEncodedFrame* VCMJitterBuffer::GetCompleteFrameForDecoding(
} }
if (!decode_with_errors_ && it == frame_list_.end()) { if (!decode_with_errors_ && it == frame_list_.end()) {
// Even after signaling we're still missing a complete continuous frame. // We're still missing a complete continuous frame.
// Look for a complete key frame if we're not decoding with errors. // Look for a complete key frame if we're not decoding with errors.
it = find_if(frame_list_.begin(), frame_list_.end(), it = find_if(frame_list_.begin(), frame_list_.end(),
CompleteKeyFrameCriteria()); CompleteKeyFrameCriteria());
@ -564,7 +563,7 @@ VCMEncodedFrame* VCMJitterBuffer::MaybeGetIncompleteFrameForDecoding() {
frame_list_.erase(frame_list_.begin()); frame_list_.erase(frame_list_.begin());
if (frame_list_.empty()) { if (frame_list_.empty()) {
TRACE_EVENT_INSTANT1("webrtc", "JB::FrameListEmptied", TRACE_EVENT_INSTANT1("webrtc", "JB::FrameListEmptied",
"type", "GetFrameForDecoding"); "type", "MaybeGetIncompleteFrameForDecoding");
} }
// Look for previous frame loss // Look for previous frame loss