/*
 *  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 MODULES_VIDEO_CODING_JITTER_BUFFER_COMMON_H_
#define MODULES_VIDEO_CODING_JITTER_BUFFER_COMMON_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.
  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
};

enum { kH264StartCodeLengthBytes = 4 };
}  // namespace webrtc

#endif  // MODULES_VIDEO_CODING_JITTER_BUFFER_COMMON_H_
