Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Unified Diff: webrtc/modules/video_coding/main/source/jitter_buffer.cc

Issue 1211873004: Request keyframe if too many packets are missing and NACK is disabled. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Renamed method + updated comment Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « webrtc/modules/video_coding/main/source/jitter_buffer.h ('k') | webrtc/video/end_to_end_tests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webrtc/modules/video_coding/main/source/jitter_buffer.cc
diff --git a/webrtc/modules/video_coding/main/source/jitter_buffer.cc b/webrtc/modules/video_coding/main/source/jitter_buffer.cc
index 9156cc1a61dba45624bda8c73da4886fce71b242..e2424c5760eef90c6badf307c2923f076cf93278 100644
--- a/webrtc/modules/video_coding/main/source/jitter_buffer.cc
+++ b/webrtc/modules/video_coding/main/source/jitter_buffer.cc
@@ -643,7 +643,7 @@ VCMFrameBufferEnum VCMJitterBuffer::InsertPacket(const VCMPacket& packet,
if (IsPacketRetransmitted(packet)) {
frame->IncrementNackCount();
}
- if (!UpdateNackList(packet.seqNum) &&
+ if (!CoverSequenceUpTo(packet.seqNum) &&
packet.frameType != kVideoFrameKey) {
buffer_state = kFlushIndicator;
}
@@ -939,10 +939,7 @@ VCMFrameBuffer* VCMJitterBuffer::NextFrame() const {
return NULL;
}
-bool VCMJitterBuffer::UpdateNackList(uint16_t sequence_number) {
- if (nack_mode_ == kNoNack) {
- return true;
- }
+bool VCMJitterBuffer::CoverSequenceUpTo(uint16_t sequence_number) {
// Make sure we don't add packets which are already too old to be decoded.
if (!last_decoded_state_.in_initial_state()) {
latest_received_sequence_number_ = LatestSequenceNumber(
@@ -951,6 +948,10 @@ bool VCMJitterBuffer::UpdateNackList(uint16_t sequence_number) {
}
if (IsNewerSequenceNumber(sequence_number,
latest_received_sequence_number_)) {
+ if (nack_mode_ == kNoNack) {
+ // Packets missing but NACK disabled, request key frame.
stefan-webrtc 2015/07/01 13:41:02 This isn't a good way of handling lost packets sin
+ return false;
+ }
// Push any missing sequence numbers to the NACK list.
for (uint16_t i = latest_received_sequence_number_ + 1;
IsNewerSequenceNumber(sequence_number, i); ++i) {
@@ -967,7 +968,7 @@ bool VCMJitterBuffer::UpdateNackList(uint16_t sequence_number) {
LOG(LS_WARNING) << "Requesting key frame due to missing too old packets";
return false;
}
- } else {
+ } else if (nack_mode_ != kNoNack) {
missing_sequence_numbers_.erase(sequence_number);
TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), "RemoveNack",
"seqnum", sequence_number);
« no previous file with comments | « webrtc/modules/video_coding/main/source/jitter_buffer.h ('k') | webrtc/video/end_to_end_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698