Before this CL VP8 and AV1 used the same max QP=56. Tests show that at this QP AV1 delivers a worse PSNR than VP8. We want AV1 min quality to be not worse than VP8. This CL reduces the default max QP for AV1 to 52. With this value libaom AV1 encoder delivers PSNR close to libvpx VP8 at QP 56. Bug: webrtc:351644568, b/369540380 Change-Id: I2e27ddab562f9c9710b11dc09076b03d7b308bb0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/374041 Commit-Queue: Sergey Silkin <ssilkin@webrtc.org> Reviewed-by: Erik Språng <sprang@webrtc.org> Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43751}
173 lines
6.2 KiB
C++
173 lines
6.2 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.
|
|
*/
|
|
|
|
#ifndef MEDIA_BASE_MEDIA_CONSTANTS_H_
|
|
#define MEDIA_BASE_MEDIA_CONSTANTS_H_
|
|
|
|
#include <stddef.h>
|
|
|
|
#include "rtc_base/system/rtc_export.h"
|
|
|
|
// This file contains constants related to media.
|
|
|
|
namespace cricket {
|
|
|
|
extern const int kVideoCodecClockrate;
|
|
|
|
extern const int kVideoMtu;
|
|
extern const int kVideoRtpSendBufferSize;
|
|
extern const int kVideoRtpRecvBufferSize;
|
|
|
|
// Default CPU thresholds.
|
|
extern const float kHighSystemCpuThreshold;
|
|
extern const float kLowSystemCpuThreshold;
|
|
extern const float kProcessCpuThreshold;
|
|
|
|
extern const char kRedCodecName[];
|
|
extern const char kUlpfecCodecName[];
|
|
extern const char kFlexfecCodecName[];
|
|
extern const char kMultiplexCodecName[];
|
|
|
|
extern const char kFlexfecFmtpRepairWindow[];
|
|
|
|
extern const char kRtxCodecName[];
|
|
extern const char kCodecParamRtxTime[];
|
|
extern const char kCodecParamAssociatedPayloadType[];
|
|
|
|
extern const char kCodecParamAssociatedCodecName[];
|
|
extern const char kCodecParamNotInNameValueFormat[];
|
|
|
|
extern const char kOpusCodecName[];
|
|
extern const char kL16CodecName[];
|
|
extern const char kG722CodecName[];
|
|
extern const char kIlbcCodecName[];
|
|
extern const char kPcmuCodecName[];
|
|
extern const char kPcmaCodecName[];
|
|
extern const char kCnCodecName[];
|
|
extern const char kDtmfCodecName[];
|
|
|
|
// Attribute parameters
|
|
extern const char kCodecParamPTime[];
|
|
extern const char kCodecParamMaxPTime[];
|
|
// fmtp parameters
|
|
extern const char kCodecParamMinPTime[];
|
|
extern const char kCodecParamSPropStereo[];
|
|
extern const char kCodecParamStereo[];
|
|
extern const char kCodecParamUseInbandFec[];
|
|
extern const char kCodecParamUseDtx[];
|
|
extern const char kCodecParamMaxAverageBitrate[];
|
|
extern const char kCodecParamMaxPlaybackRate[];
|
|
extern const char kCodecParamPerLayerPictureLossIndication[];
|
|
|
|
extern const char kParamValueTrue[];
|
|
// Parameters are stored as parameter/value pairs. For parameters who do not
|
|
// have a value, `kParamValueEmpty` should be used as value.
|
|
extern const char kParamValueEmpty[];
|
|
|
|
// opus parameters.
|
|
// Default value for maxptime according to
|
|
// http://tools.ietf.org/html/draft-spittka-payload-rtp-opus-03
|
|
extern const int kOpusDefaultMaxPTime;
|
|
extern const int kOpusDefaultPTime;
|
|
extern const int kOpusDefaultMinPTime;
|
|
extern const int kOpusDefaultSPropStereo;
|
|
extern const int kOpusDefaultStereo;
|
|
extern const int kOpusDefaultUseInbandFec;
|
|
extern const int kOpusDefaultUseDtx;
|
|
extern const int kOpusDefaultMaxPlaybackRate;
|
|
|
|
// Prefered values in this code base. Note that they may differ from the default
|
|
// values in http://tools.ietf.org/html/draft-spittka-payload-rtp-opus-03
|
|
// Only frames larger or equal to 10 ms are currently supported in this code
|
|
// base.
|
|
extern const int kPreferredMaxPTime;
|
|
extern const int kPreferredMinPTime;
|
|
extern const int kPreferredSPropStereo;
|
|
extern const int kPreferredStereo;
|
|
extern const int kPreferredUseInbandFec;
|
|
|
|
extern const char kPacketizationParamRaw[];
|
|
|
|
// rtcp-fb message in its first experimental stages. Documentation pending.
|
|
extern const char kRtcpFbParamLntf[];
|
|
// rtcp-fb messages according to RFC 4585
|
|
extern const char kRtcpFbParamNack[];
|
|
extern const char kRtcpFbNackParamPli[];
|
|
// rtcp-fb messages according to
|
|
// http://tools.ietf.org/html/draft-alvestrand-rmcat-remb-00
|
|
extern const char kRtcpFbParamRemb[];
|
|
// rtcp-fb messages according to
|
|
// https://tools.ietf.org/html/draft-holmer-rmcat-transport-wide-cc-extensions-01
|
|
extern const char kRtcpFbParamTransportCc[];
|
|
// ccm submessages according to RFC 5104
|
|
extern const char kRtcpFbParamCcm[];
|
|
extern const char kRtcpFbCcmParamFir[];
|
|
// Receiver reference time report
|
|
// https://tools.ietf.org/html/rfc3611 section 4.4
|
|
extern const char kRtcpFbParamRrtr[];
|
|
// Google specific parameters
|
|
extern const char kCodecParamMaxBitrate[];
|
|
extern const char kCodecParamMinBitrate[];
|
|
extern const char kCodecParamStartBitrate[];
|
|
extern const char kCodecParamMaxQuantization[];
|
|
|
|
extern const char kComfortNoiseCodecName[];
|
|
|
|
RTC_EXPORT extern const char kVp8CodecName[];
|
|
RTC_EXPORT extern const char kVp9CodecName[];
|
|
RTC_EXPORT extern const char kAv1CodecName[];
|
|
RTC_EXPORT extern const char kH264CodecName[];
|
|
RTC_EXPORT extern const char kH265CodecName[];
|
|
|
|
// RFC 6184 RTP Payload Format for H.264 video
|
|
RTC_EXPORT extern const char kH264FmtpProfileLevelId[];
|
|
RTC_EXPORT extern const char kH264FmtpLevelAsymmetryAllowed[];
|
|
RTC_EXPORT extern const char kH264FmtpPacketizationMode[];
|
|
extern const char kH264FmtpSpropParameterSets[];
|
|
extern const char kH264FmtpSpsPpsIdrInKeyframe[];
|
|
extern const char kH264ProfileLevelConstrainedBaseline[];
|
|
extern const char kH264ProfileLevelConstrainedHigh[];
|
|
|
|
// RFC 7798 RTP Payload Format for H.265 video.
|
|
// According to RFC 7742, the sprop parameters MUST NOT be included
|
|
// in SDP generated by WebRTC, so for H.265 we don't handle them, though
|
|
// current H.264 implementation honors them when receiving
|
|
// sprop-parameter-sets in SDP.
|
|
RTC_EXPORT extern const char kH265FmtpProfileSpace[];
|
|
RTC_EXPORT extern const char kH265FmtpTierFlag[];
|
|
RTC_EXPORT extern const char kH265FmtpProfileId[];
|
|
RTC_EXPORT extern const char kH265FmtpLevelId[];
|
|
RTC_EXPORT extern const char kH265FmtpProfileCompatibilityIndicator[];
|
|
RTC_EXPORT extern const char kH265FmtpInteropConstraints[];
|
|
RTC_EXPORT extern const char kH265FmtpTxMode[];
|
|
|
|
// draft-ietf-payload-vp9
|
|
extern const char kVP9ProfileId[];
|
|
|
|
// https://aomediacodec.github.io/av1-rtp-spec/
|
|
extern const char kAv1FmtpProfile[];
|
|
extern const char kAv1FmtpLevelIdx[];
|
|
extern const char kAv1FmtpTier[];
|
|
|
|
extern const int kDefaultVideoMaxFramerate;
|
|
extern const int kDefaultVideoMaxQpVpx;
|
|
extern const int kDefaultVideoMaxQpAv1;
|
|
extern const int kDefaultVideoMaxQpH26x;
|
|
|
|
extern const size_t kConferenceMaxNumSpatialLayers;
|
|
extern const size_t kConferenceMaxNumTemporalLayers;
|
|
extern const size_t kConferenceDefaultNumTemporalLayers;
|
|
|
|
extern const char kApplicationSpecificBandwidth[];
|
|
extern const char kTransportSpecificBandwidth[];
|
|
} // namespace cricket
|
|
|
|
#endif // MEDIA_BASE_MEDIA_CONSTANTS_H_
|