media_constants.h (6358B)
1 /* 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3 * 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 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. 9 */ 10 11 #ifndef MEDIA_BASE_MEDIA_CONSTANTS_H_ 12 #define MEDIA_BASE_MEDIA_CONSTANTS_H_ 13 14 #include <stddef.h> 15 16 #include "rtc_base/system/rtc_export.h" 17 18 // This file contains constants related to media. 19 20 namespace webrtc { 21 22 extern const int kVideoCodecClockrate; 23 24 extern const int kVideoMtu; 25 extern const int kVideoRtpSendBufferSize; 26 extern const int kVideoRtpRecvBufferSize; 27 28 // Default CPU thresholds. 29 extern const float kHighSystemCpuThreshold; 30 extern const float kLowSystemCpuThreshold; 31 extern const float kProcessCpuThreshold; 32 33 extern const char kRedCodecName[]; 34 extern const char kUlpfecCodecName[]; 35 extern const char kFlexfecCodecName[]; 36 extern const char kMultiplexCodecName[]; 37 38 extern const char kFlexfecFmtpRepairWindow[]; 39 40 extern const char kRtxCodecName[]; 41 extern const char kCodecParamRtxTime[]; 42 extern const char kCodecParamAssociatedPayloadType[]; 43 44 extern const char kCodecParamAssociatedCodecName[]; 45 extern const char kCodecParamNotInNameValueFormat[]; 46 47 extern const char kOpusCodecName[]; 48 extern const char kL16CodecName[]; 49 extern const char kG722CodecName[]; 50 extern const char kPcmuCodecName[]; 51 extern const char kPcmaCodecName[]; 52 extern const char kCnCodecName[]; 53 extern const char kDtmfCodecName[]; 54 55 // Attribute parameters 56 extern const char kCodecParamPTime[]; 57 extern const char kCodecParamMaxPTime[]; 58 // fmtp parameters 59 extern const char kCodecParamMinPTime[]; 60 extern const char kCodecParamSPropStereo[]; 61 extern const char kCodecParamStereo[]; 62 extern const char kCodecParamUseInbandFec[]; 63 extern const char kCodecParamUseDtx[]; 64 extern const char kCodecParamCbr[]; 65 extern const char kCodecParamMaxAverageBitrate[]; 66 extern const char kCodecParamMaxPlaybackRate[]; 67 extern const char kCodecParamPerLayerPictureLossIndication[]; 68 69 extern const char kParamValueTrue[]; 70 // Parameters are stored as parameter/value pairs. For parameters who do not 71 // have a value, `kParamValueEmpty` should be used as value. 72 extern const char kParamValueEmpty[]; 73 74 // opus parameters. 75 // Default value for maxptime according to 76 // http://tools.ietf.org/html/draft-spittka-payload-rtp-opus-03 77 extern const int kOpusDefaultMaxPTime; 78 extern const int kOpusDefaultPTime; 79 extern const int kOpusDefaultMinPTime; 80 extern const int kOpusDefaultSPropStereo; 81 extern const int kOpusDefaultStereo; 82 extern const int kOpusDefaultUseInbandFec; 83 extern const int kOpusDefaultUseDtx; 84 extern const int kOpusDefaultMaxPlaybackRate; 85 86 // Prefered values in this code base. Note that they may differ from the default 87 // values in http://tools.ietf.org/html/draft-spittka-payload-rtp-opus-03 88 // Only frames larger or equal to 10 ms are currently supported in this code 89 // base. 90 extern const int kPreferredMaxPTime; 91 extern const int kPreferredMinPTime; 92 extern const int kPreferredSPropStereo; 93 extern const int kPreferredStereo; 94 extern const int kPreferredUseInbandFec; 95 96 extern const char kPacketizationParamRaw[]; 97 98 // rtcp-fb message in its first experimental stages. Documentation pending. 99 extern const char kRtcpFbParamLntf[]; 100 // rtcp-fb messages according to RFC 4585 101 extern const char kRtcpFbParamNack[]; 102 extern const char kRtcpFbNackParamPli[]; 103 // rtcp-fb messages according to 104 // http://tools.ietf.org/html/draft-alvestrand-rmcat-remb-00 105 extern const char kRtcpFbParamRemb[]; 106 // rtcp-fb messages according to 107 // https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01 108 extern const char kRtcpFbParamTransportCc[]; 109 // ccm submessages according to RFC 5104 110 extern const char kRtcpFbParamCcm[]; 111 extern const char kRtcpFbCcmParamFir[]; 112 // Receiver reference time report 113 // https://tools.ietf.org/html/rfc3611 section 4.4 114 extern const char kRtcpFbParamRrtr[]; 115 // Google specific parameters 116 extern const char kCodecParamMaxBitrate[]; 117 extern const char kCodecParamMinBitrate[]; 118 extern const char kCodecParamStartBitrate[]; 119 extern const char kCodecParamMaxQuantization[]; 120 121 extern const char kComfortNoiseCodecName[]; 122 123 RTC_EXPORT extern const char kVp8CodecName[]; 124 RTC_EXPORT extern const char kVp9CodecName[]; 125 RTC_EXPORT extern const char kAv1CodecName[]; 126 RTC_EXPORT extern const char kH264CodecName[]; 127 RTC_EXPORT extern const char kH265CodecName[]; 128 129 // RFC 6184 RTP Payload Format for H.264 video 130 RTC_EXPORT extern const char kH264FmtpProfileLevelId[]; 131 RTC_EXPORT extern const char kH264FmtpLevelAsymmetryAllowed[]; 132 RTC_EXPORT extern const char kH264FmtpPacketizationMode[]; 133 extern const char kH264FmtpSpropParameterSets[]; 134 extern const char kH264FmtpSpsPpsIdrInKeyframe[]; 135 extern const char kH264ProfileLevelConstrainedBaseline[]; 136 extern const char kH264ProfileLevelConstrainedHigh[]; 137 138 // RFC 7798 RTP Payload Format for H.265 video. 139 // According to RFC 7742, the sprop parameters MUST NOT be included 140 // in SDP generated by WebRTC, so for H.265 we don't handle them, though 141 // current H.264 implementation honors them when receiving 142 // sprop-parameter-sets in SDP. 143 RTC_EXPORT extern const char kH265FmtpProfileSpace[]; 144 RTC_EXPORT extern const char kH265FmtpTierFlag[]; 145 RTC_EXPORT extern const char kH265FmtpProfileId[]; 146 RTC_EXPORT extern const char kH265FmtpLevelId[]; 147 RTC_EXPORT extern const char kH265FmtpProfileCompatibilityIndicator[]; 148 RTC_EXPORT extern const char kH265FmtpInteropConstraints[]; 149 RTC_EXPORT extern const char kH265FmtpTxMode[]; 150 151 // draft-ietf-payload-vp9 152 extern const char kVP9ProfileId[]; 153 154 // https://aomediacodec.github.io/av1-rtp-spec/ 155 extern const char kAv1FmtpProfile[]; 156 extern const char kAv1FmtpLevelIdx[]; 157 extern const char kAv1FmtpTier[]; 158 159 extern const int kDefaultVideoMaxFramerate; 160 extern const int kDefaultVideoMaxQpVpx; 161 extern const int kDefaultVideoMaxQpAv1; 162 extern const int kDefaultVideoMaxQpH26x; 163 164 extern const size_t kConferenceMaxNumSpatialLayers; 165 extern const size_t kConferenceMaxNumTemporalLayers; 166 extern const size_t kConferenceDefaultNumTemporalLayers; 167 168 extern const char kApplicationSpecificBandwidth[]; 169 extern const char kTransportSpecificBandwidth[]; 170 } // namespace webrtc 171 172 173 #endif // MEDIA_BASE_MEDIA_CONSTANTS_H_