Allowing decoding with errors, when disabling nack.

BUG=1897
R=stefan@webrtc.org, wu@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4508 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
mikhal@webrtc.org 2013-08-08 22:45:33 +00:00
parent e270331481
commit 64799da6c6
2 changed files with 7 additions and 2 deletions

View File

@ -113,7 +113,7 @@ public:
uint8_t lossRate,
uint32_t rtt);
// Set recieve channel parameters
// Set receive channel parameters.
virtual int32_t SetReceiveChannelParameters(uint32_t rtt);
// Register a transport callback which will be called to deliver the

View File

@ -575,7 +575,7 @@ int32_t ViEChannel::WaitForKeyFrame(bool wait) {
}
int32_t ViEChannel::SetSignalPacketLossStatus(bool enable,
bool only_key_frames) {
bool only_key_frames) {
WEBRTC_TRACE(kTraceInfo, kTraceVideo, ViEId(engine_id_, channel_id_),
"%s(enable: %d)", __FUNCTION__, enable);
if (enable) {
@ -681,6 +681,8 @@ int32_t ViEChannel::ProcessNACKRequest(const bool enable) {
rtp_rtcp->SetNACKStatus(nackMethod, max_nack_reordering_threshold_);
rtp_rtcp->SetStorePacketsStatus(true, nack_history_size_sender_);
}
// Don't introduce errors when NACK is enabled.
vcm_.SetDecodeErrorMode(kNoErrors);
} else {
CriticalSectionScoped cs(rtp_rtcp_cs_.get());
for (std::list<RtpRtcp*>::iterator it = simulcast_rtp_rtcp_.begin();
@ -702,6 +704,9 @@ int32_t ViEChannel::ProcessNACKRequest(const bool enable) {
"%s: Could not turn off NACK", __FUNCTION__);
return -1;
}
// When NACK is off, allow decoding with errors. Otherwise, the video
// will freeze, and will only recover with a complete key frame.
vcm_.SetDecodeErrorMode(kWithErrors);
}
return 0;
}