mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00

which needs to be added to the remote codecs a=fmtp: This also forces SimulcastCastEncoderAdapter to avoid issues with codecs that have native simulcast capability but do require synchronized keyframes. This parameter allows for large-scale experimentation and A/B testing whether the new behavior has advantages. It is to be considered transitional and may be removed again in the future. BUG=webrtc:10107 Change-Id: I81f496c987b2fed7ff3089efb746e7e89e89c033 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/333560 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Philipp Hancke <phancke@microsoft.com> Reviewed-by: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/main@{#41805}
145 lines
5.3 KiB
C++
145 lines
5.3 KiB
C++
/*
|
|
* Copyright (c) 2012 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.
|
|
*/
|
|
|
|
#include "media/base/media_constants.h"
|
|
|
|
namespace cricket {
|
|
|
|
const int kVideoCodecClockrate = 90000;
|
|
|
|
const int kVideoMtu = 1200;
|
|
const int kVideoRtpSendBufferSize = 262144;
|
|
const int kVideoRtpRecvBufferSize = 262144;
|
|
|
|
const float kHighSystemCpuThreshold = 0.85f;
|
|
const float kLowSystemCpuThreshold = 0.65f;
|
|
const float kProcessCpuThreshold = 0.10f;
|
|
|
|
const char kRedCodecName[] = "red";
|
|
const char kUlpfecCodecName[] = "ulpfec";
|
|
const char kMultiplexCodecName[] = "multiplex";
|
|
|
|
// TODO(brandtr): Change this to 'flexfec' when we are confident that the
|
|
// header format is not changing anymore.
|
|
const char kFlexfecCodecName[] = "flexfec-03";
|
|
|
|
// draft-ietf-payload-flexible-fec-scheme-02.txt
|
|
const char kFlexfecFmtpRepairWindow[] = "repair-window";
|
|
|
|
// RFC 4588 RTP Retransmission Payload Format
|
|
const char kRtxCodecName[] = "rtx";
|
|
const char kCodecParamRtxTime[] = "rtx-time";
|
|
const char kCodecParamAssociatedPayloadType[] = "apt";
|
|
|
|
const char kCodecParamAssociatedCodecName[] = "acn";
|
|
// Parameters that do not follow the key-value convention
|
|
// are treated as having the empty string as key.
|
|
const char kCodecParamNotInNameValueFormat[] = "";
|
|
|
|
const char kOpusCodecName[] = "opus";
|
|
const char kL16CodecName[] = "L16";
|
|
const char kG722CodecName[] = "G722";
|
|
const char kIlbcCodecName[] = "ILBC";
|
|
const char kPcmuCodecName[] = "PCMU";
|
|
const char kPcmaCodecName[] = "PCMA";
|
|
const char kCnCodecName[] = "CN";
|
|
const char kDtmfCodecName[] = "telephone-event";
|
|
|
|
// draft-spittka-payload-rtp-opus-03.txt
|
|
const char kCodecParamPTime[] = "ptime";
|
|
const char kCodecParamMaxPTime[] = "maxptime";
|
|
const char kCodecParamMinPTime[] = "minptime";
|
|
const char kCodecParamSPropStereo[] = "sprop-stereo";
|
|
const char kCodecParamStereo[] = "stereo";
|
|
const char kCodecParamUseInbandFec[] = "useinbandfec";
|
|
const char kCodecParamUseDtx[] = "usedtx";
|
|
const char kCodecParamMaxAverageBitrate[] = "maxaveragebitrate";
|
|
const char kCodecParamMaxPlaybackRate[] = "maxplaybackrate";
|
|
|
|
const char kParamValueTrue[] = "1";
|
|
const char kParamValueEmpty[] = "";
|
|
|
|
const int kOpusDefaultMaxPTime = 120;
|
|
const int kOpusDefaultPTime = 20;
|
|
const int kOpusDefaultMinPTime = 3;
|
|
const int kOpusDefaultSPropStereo = 0;
|
|
const int kOpusDefaultStereo = 0;
|
|
const int kOpusDefaultUseInbandFec = 0;
|
|
const int kOpusDefaultUseDtx = 0;
|
|
const int kOpusDefaultMaxPlaybackRate = 48000;
|
|
|
|
const int kPreferredMaxPTime = 120;
|
|
const int kPreferredMinPTime = 10;
|
|
const int kPreferredSPropStereo = 0;
|
|
const int kPreferredStereo = 0;
|
|
const int kPreferredUseInbandFec = 0;
|
|
|
|
const char kPacketizationParamRaw[] = "raw";
|
|
|
|
const char kRtcpFbParamLntf[] = "goog-lntf";
|
|
const char kRtcpFbParamNack[] = "nack";
|
|
const char kRtcpFbNackParamPli[] = "pli";
|
|
const char kRtcpFbParamRemb[] = "goog-remb";
|
|
const char kRtcpFbParamTransportCc[] = "transport-cc";
|
|
|
|
const char kRtcpFbParamCcm[] = "ccm";
|
|
const char kRtcpFbCcmParamFir[] = "fir";
|
|
const char kRtcpFbParamRrtr[] = "rrtr";
|
|
const char kCodecParamMaxBitrate[] = "x-google-max-bitrate";
|
|
const char kCodecParamMinBitrate[] = "x-google-min-bitrate";
|
|
const char kCodecParamStartBitrate[] = "x-google-start-bitrate";
|
|
const char kCodecParamMaxQuantization[] = "x-google-max-quantization";
|
|
const char kCodecParamPerLayerPictureLossIndication[] =
|
|
"x-google-per-layer-pli";
|
|
|
|
const char kComfortNoiseCodecName[] = "CN";
|
|
|
|
const char kVp8CodecName[] = "VP8";
|
|
const char kVp9CodecName[] = "VP9";
|
|
const char kAv1CodecName[] = "AV1";
|
|
const char kH264CodecName[] = "H264";
|
|
const char kH265CodecName[] = "H265";
|
|
|
|
// RFC 6184 RTP Payload Format for H.264 video
|
|
const char kH264FmtpProfileLevelId[] = "profile-level-id";
|
|
const char kH264FmtpLevelAsymmetryAllowed[] = "level-asymmetry-allowed";
|
|
const char kH264FmtpPacketizationMode[] = "packetization-mode";
|
|
const char kH264FmtpSpropParameterSets[] = "sprop-parameter-sets";
|
|
const char kH264FmtpSpsPpsIdrInKeyframe[] = "sps-pps-idr-in-keyframe";
|
|
const char kH264ProfileLevelConstrainedBaseline[] = "42e01f";
|
|
const char kH264ProfileLevelConstrainedHigh[] = "640c1f";
|
|
|
|
// RFC 7798 RTP Payload Format for H.265 video
|
|
const char kH265FmtpProfileSpace[] = "profile-space";
|
|
const char kH265FmtpTierFlag[] = "tier-flag";
|
|
const char kH265FmtpProfileId[] = "profile-id";
|
|
const char kH265FmtpLevelId[] = "level-id";
|
|
const char kH265FmtpProfileCompatibilityIndicator[] =
|
|
"profile-compatibility-indicator";
|
|
const char kH265FmtpInteropConstraints[] = "interop-constraints";
|
|
const char kH265FmtpTxMode[] = "tx-mode";
|
|
|
|
const char kVP9ProfileId[] = "profile-id";
|
|
|
|
const int kDefaultVideoMaxFramerate = 60;
|
|
// Max encode quantizer for VP8/9 and AV1 encoders assuming libvpx/libaom API
|
|
// range [0, 63]
|
|
const int kDefaultVideoMaxQpVpx = 56;
|
|
// Max encode quantizer for H264/5 assuming the bitstream range [0, 51].
|
|
const int kDefaultVideoMaxQpH26x = 51;
|
|
|
|
const size_t kConferenceMaxNumSpatialLayers = 3;
|
|
const size_t kConferenceMaxNumTemporalLayers = 3;
|
|
const size_t kConferenceDefaultNumTemporalLayers = 3;
|
|
|
|
// RFC 3556 and RFC 3890
|
|
const char kApplicationSpecificBandwidth[] = "AS";
|
|
const char kTransportSpecificBandwidth[] = "TIAS";
|
|
} // namespace cricket
|