| /* | 
 |  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | 
 |  * | 
 |  *  Use of this source code is governed by a BSD-style license | 
 |  *  that can be found in the LICENSE file in the root of the source | 
 |  *  tree. An additional intellectual property rights grant can be found | 
 |  *  in the file PATENTS.  All contributing project authors may | 
 |  *  be found in the AUTHORS file in the root of the source tree. | 
 |  */ | 
 |  | 
 | #ifndef WEBRTC_MODULES_VIDEO_CODING_JITTER_BUFFER_COMMON_H_ | 
 | #define WEBRTC_MODULES_VIDEO_CODING_JITTER_BUFFER_COMMON_H_ | 
 |  | 
 | #include "webrtc/typedefs.h" | 
 |  | 
 | namespace webrtc { | 
 |  | 
 | // Used to estimate rolling average of packets per frame. | 
 | static const float kFastConvergeMultiplier = 0.4f; | 
 | static const float kNormalConvergeMultiplier = 0.2f; | 
 |  | 
 | enum { kMaxNumberOfFrames = 300 }; | 
 | enum { kStartNumberOfFrames = 6 }; | 
 | enum { kMaxVideoDelayMs = 10000 }; | 
 | enum { kPacketsPerFrameMultiplier = 5 }; | 
 | enum { kFastConvergeThreshold = 5 }; | 
 |  | 
 | enum VCMJitterBufferEnum { | 
 |   kMaxConsecutiveOldFrames = 60, | 
 |   kMaxConsecutiveOldPackets = 300, | 
 |   // TODO(sprang): Reduce this limit once codecs don't sometimes wildly | 
 |   // overshoot bitrate target. | 
 |   kMaxPacketsInSession = 1400,      // Allows ~2MB frames. | 
 |   kBufferIncStepSizeBytes = 30000,  // >20 packets. | 
 |   kMaxJBFrameSizeBytes = 4000000    // sanity don't go above 4Mbyte. | 
 | }; | 
 |  | 
 | enum VCMFrameBufferEnum { | 
 |   kOutOfBoundsPacket = -7, | 
 |   kNotInitialized = -6, | 
 |   kOldPacket = -5, | 
 |   kGeneralError = -4, | 
 |   kFlushIndicator = -3,  // Indicator that a flush has occurred. | 
 |   kTimeStampError = -2, | 
 |   kSizeError = -1, | 
 |   kNoError = 0, | 
 |   kIncomplete = 1,        // Frame incomplete. | 
 |   kCompleteSession = 3,   // at least one layer in the frame complete. | 
 |   kDecodableSession = 4,  // Frame incomplete, but ready to be decoded | 
 |   kDuplicatePacket = 5    // We're receiving a duplicate packet. | 
 | }; | 
 |  | 
 | enum VCMFrameBufferStateEnum { | 
 |   kStateEmpty,       // frame popped by the RTP receiver | 
 |   kStateIncomplete,  // frame that have one or more packet(s) stored | 
 |   kStateComplete,    // frame that have all packets | 
 |   kStateDecodable    // Hybrid mode - frame can be decoded | 
 | }; | 
 |  | 
 | enum { kH264StartCodeLengthBytes = 4 }; | 
 |  | 
 | // Used to indicate if a received packet contain a complete NALU (or equivalent) | 
 | enum VCMNaluCompleteness { | 
 |   kNaluUnset = 0,     // Packet has not been filled. | 
 |   kNaluComplete = 1,  // Packet can be decoded as is. | 
 |   kNaluStart,         // Packet contain beginning of NALU | 
 |   kNaluIncomplete,    // Packet is not beginning or end of NALU | 
 |   kNaluEnd,           // Packet is the end of a NALU | 
 | }; | 
 | }  // namespace webrtc | 
 |  | 
 | #endif  // WEBRTC_MODULES_VIDEO_CODING_JITTER_BUFFER_COMMON_H_ |