video_coding: Requesting a key frame after a JB flush

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@994 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
mikhal@webrtc.org
2011-11-22 22:57:51 +00:00
parent 6b9a7f8704
commit f13388f134
6 changed files with 83 additions and 67 deletions

View File

@@ -112,10 +112,11 @@ VCMReceiver::InsertPacket(const VCMPacket& packet,
{
// Only trace the primary receiver to make it possible
// to parse and plot the trace file.
WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVideoCoding, VCMId(_vcmId, _receiverId),
"Packet seqNo %u of frame %u at %u",
packet.seqNum, packet.timestamp,
MaskWord64ToUWord32(VCMTickTime::MillisecondTimestamp()));
WEBRTC_TRACE(webrtc::kTraceDebug, webrtc::kTraceVideoCoding,
VCMId(_vcmId, _receiverId),
"Packet seqNo %u of frame %u at %u",
packet.seqNum, packet.timestamp,
MaskWord64ToUWord32(VCMTickTime::MillisecondTimestamp()));
}
const WebRtc_Word64 nowMs = VCMTickTime::MillisecondTimestamp();
@@ -128,7 +129,7 @@ VCMReceiver::InsertPacket(const VCMPacket& packet,
// the incoming video stream and reset the JB and the timing.
_jitterBuffer.Flush();
_timing.Reset();
return VCM_OK;
return VCM_FLUSH_INDICATOR;
}
else if (renderTimeMs < nowMs - kMaxVideoDelayMs)
{
@@ -137,7 +138,7 @@ VCMReceiver::InsertPacket(const VCMPacket& packet,
"Flushing jitter buffer and resetting timing.", kMaxVideoDelayMs);
_jitterBuffer.Flush();
_timing.Reset();
return VCM_OK;
return VCM_FLUSH_INDICATOR;
}
else if (_timing.TargetVideoDelay() > kMaxVideoDelayMs)
{
@@ -146,7 +147,7 @@ VCMReceiver::InsertPacket(const VCMPacket& packet,
kMaxVideoDelayMs);
_jitterBuffer.Flush();
_timing.Reset();
return VCM_OK;
return VCM_FLUSH_INDICATOR;
}
// First packet received belonging to this frame.
@@ -171,16 +172,18 @@ VCMReceiver::InsertPacket(const VCMPacket& packet,
}
}
// Insert packet into jitter buffer
// Insert packet into the jitter buffer
// both media and empty packets
const VCMFrameBufferEnum ret = _jitterBuffer.InsertPacket(buffer, packet);
if (ret < 0)
{
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCoding, VCMId(_vcmId, _receiverId),
const VCMFrameBufferEnum
ret = _jitterBuffer.InsertPacket(buffer, packet);
if (ret == kFlushIndicator) {
return VCM_FLUSH_INDICATOR;
} else if (ret < 0) {
WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceVideoCoding,
VCMId(_vcmId, _receiverId),
"Error inserting packet seqNo=%u, timeStamp=%u",
packet.seqNum, packet.timestamp);
return VCM_JITTER_BUFFER_ERROR;
return VCM_JITTER_BUFFER_ERROR;
}
}
return VCM_OK;