910e62b5创建于 1月15日历史提交
// Copyright 2018 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Defines features for media/webrtc.

#ifndef MEDIA_WEBRTC_WEBRTC_FEATURES_H_
#define MEDIA_WEBRTC_WEBRTC_FEATURES_H_

#include "base/component_export.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "build/build_config.h"
#include "third_party/webrtc/modules/audio_processing/include/audio_processing.h"

namespace features {

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcAllowWgcScreenCapturer);

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcAllowWgcScreenZeroHz);

#if BUILDFLAG(IS_WIN)
COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcWgcRequireBorder);
#endif

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcAllowInputVolumeAdjustment);

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcApmDownmixCaptureAudioMethod);

COMPONENT_EXPORT(MEDIA_WEBRTC)
extern const base::FeatureParam<
    ::webrtc::AudioProcessing::Config::Pipeline::DownmixMethod>
    kWebRtcApmDownmixMethodParam;

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcAllowH265Send);

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcAllowH265Receive);

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcH265L1T2);

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcH265L1T3);

COMPONENT_EXPORT(MEDIA_WEBRTC)
BASE_DECLARE_FEATURE(kWebRtcAV1HWEncode);

// Returns whether the OpenH264 encoder is available in WebRTC based on
// build flags and OpenH264SoftwareEncoder feature flag status.
COMPONENT_EXPORT(MEDIA_WEBRTC)
bool IsOpenH264SoftwareEncoderEnabledForWebRTC();

}  // namespace features

#endif  // MEDIA_WEBRTC_WEBRTC_FEATURES_H_