Fixes two bugs related to padding in the jitter buffer.
- Pad packets (empty) were often NACKed even though they were received.
- Padding only frames (empty) were didn't properly update the decoding state,
and would therefore be NACKed even though they were received.
This is a recommit of r3183. Extensive testing suggest that this may have been caused by virtual machine flakiness.
TBR=mflodman@webrtc.org
BUG=1150
Review URL: https://webrtc-codereview.appspot.com/971011
git-svn-id: http://webrtc.googlecode.com/svn/trunk@3200 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/modules/video_coding/main/source/decoding_state.cc b/webrtc/modules/video_coding/main/source/decoding_state.cc
index e347a2c..c58ef92 100644
--- a/webrtc/modules/video_coding/main/source/decoding_state.cc
+++ b/webrtc/modules/video_coding/main/source/decoding_state.cc
@@ -94,6 +94,13 @@
init_ = false;
}
+void VCMDecodingState::UpdateEmptyFrame(const VCMFrameBuffer* frame) {
+ if (ContinuousFrame(frame) && frame->GetState() == kStateEmpty) {
+ time_stamp_ = frame->TimeStamp();
+ sequence_num_ = frame->GetHighSeqNum();
+ }
+}
+
void VCMDecodingState::UpdateOldPacket(const VCMPacket* packet) {
assert(packet != NULL);
if (packet->timestamp == time_stamp_) {