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

Side by Side Diff: webrtc/modules/video_coding/main/source/jitter_buffer.h

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, 5 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 // |decoded_state|. 219 // |decoded_state|.
220 void FindAndInsertContinuousFramesWithState( 220 void FindAndInsertContinuousFramesWithState(
221 const VCMDecodingState& decoded_state) 221 const VCMDecodingState& decoded_state)
222 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 222 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
223 // Looks for frames in |incomplete_frames_| which are continuous in 223 // Looks for frames in |incomplete_frames_| which are continuous in
224 // |last_decoded_state_| taking all decodable frames into account. Starts 224 // |last_decoded_state_| taking all decodable frames into account. Starts
225 // the search from |new_frame|. 225 // the search from |new_frame|.
226 void FindAndInsertContinuousFrames(const VCMFrameBuffer& new_frame) 226 void FindAndInsertContinuousFrames(const VCMFrameBuffer& new_frame)
227 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 227 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
228 VCMFrameBuffer* NextFrame() const EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 228 VCMFrameBuffer* NextFrame() const EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
229 // Returns true if the NACK list was updated to cover sequence numbers up to 229 // Returns true if sequence numbers are covered up to |sequence_number|. The
230 // |sequence_number|. If false a key frame is needed to get into a state where 230 // NACK list will be used to handle missing packets if enabled.
231 // we can continue decoding. 231 // Returns false if a key frame is needed to get into a state where we can
232 bool UpdateNackList(uint16_t sequence_number) 232 // continue decoding. Without NACK this is always the case if packets are
233 // missing.
234 bool CoverSequenceUpTo(uint16_t sequence_number)
233 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 235 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
234 bool TooLargeNackList() const; 236 bool TooLargeNackList() const;
235 // Returns true if the NACK list was reduced without problem. If false a key 237 // Returns true if the NACK list was reduced without problem. If false a key
236 // frame is needed to get into a state where we can continue decoding. 238 // frame is needed to get into a state where we can continue decoding.
237 bool HandleTooLargeNackList() EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 239 bool HandleTooLargeNackList() EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
238 bool MissingTooOldPacket(uint16_t latest_sequence_number) const 240 bool MissingTooOldPacket(uint16_t latest_sequence_number) const
239 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_); 241 EXCLUSIVE_LOCKS_REQUIRED(crit_sect_);
240 // Returns true if the too old packets was successfully removed from the NACK 242 // Returns true if the too old packets was successfully removed from the NACK
241 // list. If false, a key frame is needed to get into a state where we can 243 // list. If false, a key frame is needed to get into a state where we can
242 // continue decoding. 244 // continue decoding.
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 // Estimated rolling average of packets per frame 356 // Estimated rolling average of packets per frame
355 float average_packets_per_frame_; 357 float average_packets_per_frame_;
356 // average_packets_per_frame converges fast if we have fewer than this many 358 // average_packets_per_frame converges fast if we have fewer than this many
357 // frames. 359 // frames.
358 int frame_counter_; 360 int frame_counter_;
359 DISALLOW_COPY_AND_ASSIGN(VCMJitterBuffer); 361 DISALLOW_COPY_AND_ASSIGN(VCMJitterBuffer);
360 }; 362 };
361 } // namespace webrtc 363 } // namespace webrtc
362 364
363 #endif // WEBRTC_MODULES_VIDEO_CODING_MAIN_SOURCE_JITTER_BUFFER_H_ 365 #endif // WEBRTC_MODULES_VIDEO_CODING_MAIN_SOURCE_JITTER_BUFFER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698