/*
 *  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_RTP_RTCP_SOURCE_RTP_RTCP_CONFIG_H_
#define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_RTCP_CONFIG_H_

// Configuration file for RTP utilities (RTPSender, RTPReceiver ...)
namespace webrtc {
enum { kRtpRtcpMaxIdleTimeProcess = 5,
       kRtpRtcpBitrateProcessTimeMs = 10,
       kRtpRtcpPacketTimeoutProcessTimeMs = 100 };

enum { NACK_PACKETS_MAX_SIZE    = 256 }; // in packets
enum { NACK_BYTECOUNT_SIZE      = 60};   // size of our NACK history

enum { RTCP_INTERVAL_VIDEO_MS       = 1000 };
enum { RTCP_INTERVAL_AUDIO_MS       = 5000 };
enum { RTCP_SEND_BEFORE_KEY_FRAME_MS= 100 };
enum { RTCP_MAX_REPORT_BLOCKS       = 31};      // RFC 3550 page 37
enum { RTCP_MIN_FRAME_LENGTH_MS     = 17};
enum { kRtcpAppCode_DATA_SIZE           = 32*4};    // multiple of 4, this is not a limitation of the size
enum { RTCP_RPSI_DATA_SIZE          = 30};
enum { RTCP_NUMBER_OF_SR            = 60 };

enum { MAX_NUMBER_OF_TEMPORAL_ID    = 8 };          // RFC
enum { MAX_NUMBER_OF_DEPENDENCY_QUALITY_ID  = 128 };// RFC

enum { BW_HISTORY_SIZE          = 35};

#define MIN_AUDIO_BW_MANAGEMENT_BITRATE   6
#define MIN_VIDEO_BW_MANAGEMENT_BITRATE   30

enum { DTMF_OUTBAND_MAX         = 20};

enum { RTP_MAX_BURST_SLEEP_TIME = 500 };
enum { RTP_AUDIO_LEVEL_UNIQUE_ID = 0xbede };
enum { RTP_MAX_PACKETS_PER_FRAME= 512 }; // must be multiple of 32
} // namespace webrtc


#endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_RTCP_CONFIG_H_
