blob: 7ec1691184ecc7632db073f727ce82f1d7557877 [file] [log] [blame]
henrike@webrtc.org28e20752013-07-10 00:45:36 +00001/*
kjellander1afca732016-02-07 20:46:45 -08002 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
henrike@webrtc.org28e20752013-07-10 00:45:36 +00003 *
kjellander1afca732016-02-07 20:46:45 -08004 * 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
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
henrike@webrtc.org28e20752013-07-10 00:45:36 +00009 */
10
kjellandera96e2d72016-02-04 23:52:28 -080011#ifndef WEBRTC_MEDIA_BASE_CONSTANTS_H_
12#define WEBRTC_MEDIA_BASE_CONSTANTS_H_
henrike@webrtc.org28e20752013-07-10 00:45:36 +000013
14#include <string>
15
16// This file contains constants related to media.
17
18namespace cricket {
19
20extern const int kVideoCodecClockrate;
21extern const int kDataCodecClockrate;
22extern const int kDataMaxBandwidth; // bps
23
24// Default CPU thresholds.
25extern const float kHighSystemCpuThreshold;
26extern const float kLowSystemCpuThreshold;
27extern const float kProcessCpuThreshold;
28
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000029extern const char kRtxCodecName[];
pbos@webrtc.orgb5a22b12014-05-13 11:07:01 +000030extern const char kRedCodecName[];
31extern const char kUlpfecCodecName[];
32
henrike@webrtc.org28e20752013-07-10 00:45:36 +000033// Codec parameters
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000034extern const char kCodecParamAssociatedPayloadType[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000035
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000036extern const char kOpusCodecName[];
Brave Yao5225dd82015-03-26 07:39:19 +080037extern const char kIsacCodecName[];
38extern const char kL16CodecName[];
39extern const char kG722CodecName[];
40extern const char kIlbcCodecName[];
41extern const char kPcmuCodecName[];
42extern const char kPcmaCodecName[];
43extern const char kCnCodecName[];
44extern const char kDtmfCodecName[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000045
46// Attribute parameters
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000047extern const char kCodecParamPTime[];
48extern const char kCodecParamMaxPTime[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000049// fmtp parameters
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000050extern const char kCodecParamMinPTime[];
51extern const char kCodecParamSPropStereo[];
52extern const char kCodecParamStereo[];
53extern const char kCodecParamUseInbandFec[];
Minyue Li7100dcd2015-03-27 05:05:59 +010054extern const char kCodecParamUseDtx[];
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000055extern const char kCodecParamMaxAverageBitrate[];
buildbot@webrtc.org5d639b32014-09-10 07:57:12 +000056extern const char kCodecParamMaxPlaybackRate[];
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000057extern const char kCodecParamSctpProtocol[];
58extern const char kCodecParamSctpStreams[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000059
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000060extern const char kParamValueTrue[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000061// Parameters are stored as parameter/value pairs. For parameters who do not
62// have a value, |kParamValueEmpty| should be used as value.
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000063extern const char kParamValueEmpty[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000064
65// opus parameters.
66// Default value for maxptime according to
67// http://tools.ietf.org/html/draft-spittka-payload-rtp-opus-03
68extern const int kOpusDefaultMaxPTime;
69extern const int kOpusDefaultPTime;
70extern const int kOpusDefaultMinPTime;
71extern const int kOpusDefaultSPropStereo;
72extern const int kOpusDefaultStereo;
73extern const int kOpusDefaultUseInbandFec;
Minyue Li7100dcd2015-03-27 05:05:59 +010074extern const int kOpusDefaultUseDtx;
buildbot@webrtc.org5d639b32014-09-10 07:57:12 +000075extern const int kOpusDefaultMaxPlaybackRate;
76
henrike@webrtc.org28e20752013-07-10 00:45:36 +000077// Prefered values in this code base. Note that they may differ from the default
78// values in http://tools.ietf.org/html/draft-spittka-payload-rtp-opus-03
79// Only frames larger or equal to 10 ms are currently supported in this code
80// base.
81extern const int kPreferredMaxPTime;
82extern const int kPreferredMinPTime;
83extern const int kPreferredSPropStereo;
84extern const int kPreferredStereo;
85extern const int kPreferredUseInbandFec;
86
87// rtcp-fb messages according to RFC 4585
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000088extern const char kRtcpFbParamNack[];
henrika@webrtc.orgaebb1ad2014-01-14 10:00:58 +000089extern const char kRtcpFbNackParamPli[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000090// rtcp-fb messages according to
91// http://tools.ietf.org/html/draft-alvestrand-rmcat-remb-00
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000092extern const char kRtcpFbParamRemb[];
stefan43edf0f2015-11-20 18:05:48 -080093// rtcp-fb messages according to
94// https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01
95extern const char kRtcpFbParamTransportCc[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000096// ccm submessages according to RFC 5104
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +000097extern const char kRtcpFbParamCcm[];
98extern const char kRtcpFbCcmParamFir[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +000099// Google specific parameters
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +0000100extern const char kCodecParamMaxBitrate[];
101extern const char kCodecParamMinBitrate[];
buildbot@webrtc.orged97bb02014-05-07 11:15:20 +0000102extern const char kCodecParamStartBitrate[];
sergeyu@chromium.org32f485b2013-12-05 22:36:21 +0000103extern const char kCodecParamMaxQuantization[];
104extern const char kCodecParamPort[];
henrike@webrtc.org28e20752013-07-10 00:45:36 +0000105
106// We put the data codec names here so callers of
107// DataEngine::CreateChannel don't have to import rtpdataengine.h or
108// sctpdataengine.h to get the codec names they want to pass in.
109extern const int kGoogleRtpDataCodecId;
110extern const char kGoogleRtpDataCodecName[];
111
112// TODO(pthatcher): Find an id that won't conflict with anything. On
113// the other hand, it really shouldn't matter since the id won't be
114// used on the wire.
115extern const int kGoogleSctpDataCodecId;
116extern const char kGoogleSctpDataCodecName[];
117
118extern const char kComfortNoiseCodecName[];
119
guoweis@webrtc.orgfdd10572015-03-12 20:50:57 +0000120// Header extension for audio levels, as defined in
henrike@webrtc.org79047f92014-03-06 23:46:59 +0000121// http://tools.ietf.org/html/draft-ietf-avtext-client-to-mixer-audio-level-03
122extern const int kRtpAudioLevelHeaderExtensionDefaultId;
123extern const char kRtpAudioLevelHeaderExtension[];
124
guoweis@webrtc.orgfdd10572015-03-12 20:50:57 +0000125// Header extension for RTP timestamp offset, see RFC 5450 for details:
henrike@webrtc.org79047f92014-03-06 23:46:59 +0000126// http://tools.ietf.org/html/rfc5450
127extern const int kRtpTimestampOffsetHeaderExtensionDefaultId;
128extern const char kRtpTimestampOffsetHeaderExtension[];
129
guoweis@webrtc.orgfdd10572015-03-12 20:50:57 +0000130// Header extension for absolute send time, see url for details:
henrike@webrtc.orgd43aa9d2014-02-21 23:43:24 +0000131// http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
henrike@webrtc.org79047f92014-03-06 23:46:59 +0000132extern const int kRtpAbsoluteSenderTimeHeaderExtensionDefaultId;
133extern const char kRtpAbsoluteSenderTimeHeaderExtension[];
henrike@webrtc.orgd43aa9d2014-02-21 23:43:24 +0000134
guoweis@webrtc.orgfdd10572015-03-12 20:50:57 +0000135// Header extension for coordination of video orientation, see url for details:
136// http://www.etsi.org/deliver/etsi_ts/126100_126199/126114/12.07.00_60/
137// ts_126114v120700p.pdf
138extern const int kRtpVideoRotationHeaderExtensionDefaultId;
139extern const char kRtpVideoRotationHeaderExtension[];
140// We don't support 6 bit CVO. Added here for testing purpose.
141extern const char kRtpVideoRotation6BitsHeaderExtensionForTesting[];
142
stefanc1aeaf02015-10-15 07:26:07 -0700143// Header extension for transport sequence number, see url for details:
144// http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions
145extern const int kRtpTransportSequenceNumberHeaderExtensionDefaultId;
146extern const char kRtpTransportSequenceNumberHeaderExtension[];
147
Shao Changbine62202f2015-04-21 20:24:50 +0800148extern const char kVp8CodecName[];
149extern const char kVp9CodecName[];
Zeke Chin71f6f442015-06-29 14:34:58 -0700150extern const char kH264CodecName[];
Shao Changbine62202f2015-04-21 20:24:50 +0800151
152extern const int kDefaultVp8PlType;
153extern const int kDefaultVp9PlType;
Zeke Chin71f6f442015-06-29 14:34:58 -0700154extern const int kDefaultH264PlType;
Shao Changbine62202f2015-04-21 20:24:50 +0800155extern const int kDefaultRedPlType;
156extern const int kDefaultUlpfecType;
157extern const int kDefaultRtxVp8PlType;
Stefan Holmer10880012016-02-03 13:29:59 +0100158extern const int kDefaultRtxVp9PlType;
159extern const int kDefaultRtxRedPlType;
Shao Changbine62202f2015-04-21 20:24:50 +0800160
161extern const int kDefaultVideoMaxWidth;
162extern const int kDefaultVideoMaxHeight;
163extern const int kDefaultVideoMaxFramerate;
henrike@webrtc.org28e20752013-07-10 00:45:36 +0000164} // namespace cricket
165
kjellandera96e2d72016-02-04 23:52:28 -0800166#endif // WEBRTC_MEDIA_BASE_CONSTANTS_H_