blob: 40d12c62bfb31344524ffa286b83c0e308862dbd [file] [log] [blame]
// 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.
#include "media/webrtc/webrtc_features.h"
#include "base/command_line.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 {
// When enabled we will tell WebRTC that we want to use the 0Hz mode of the
// DirectX and GDI based DesktopCapturers in combination with sharing the screen
// or a separate window. In this mode, only frames with new content will be sent
// to the client leading to to 0fps for a static source. A special flag called
// kWebRtcAllowWgcZeroHz is used to specify the support when using the WGC
// capture API.
// This flag has no effect if kWebRtcAllowWgcDesktopCapturer is enabled. Use
// kWebRtcAllowWgcZeroHz for WGC.
BASE_FEATURE(kWebRtcAllowDxgiGdiZeroHz,
"AllowDxgiGdiZeroHz",
base::FEATURE_ENABLED_BY_DEFAULT);
// When enabled we will tell WebRTC that we want to use the
// Windows.Graphics.Capture API based DesktopCapturer, if it is available.
BASE_FEATURE(kWebRtcAllowWgcDesktopCapturer,
"AllowWgcDesktopCapturer",
base::FEATURE_DISABLED_BY_DEFAULT);
// When enabled we will tell WebRTC that we want to use the 0Hz mode of the
// Windows.Graphics.Capture API based DesktopCapturer, if the WGC capturer is
// available and enabled. In this mode, only frames with new content will be
// sent to the client leading to to 0fps for a static source.
// This flag has no effect if AllowWgcDesktopCapturer is disabled.
BASE_FEATURE(kWebRtcAllowWgcZeroHz,
"AllowWgcZeroHz",
base::FEATURE_DISABLED_BY_DEFAULT);
// TODO(crbug.com/1375239): Inactivate the flag gradually before deleting it.
// When disabled, any WebRTC Audio Processing Module input volume recommendation
// is ignored and no adjustment takes place.
BASE_FEATURE(kWebRtcAllowInputVolumeAdjustment,
"WebRtcAllowInputVolumeAdjustment",
base::FEATURE_ENABLED_BY_DEFAULT);
// When enabled, overrides the Audio Processing Module parameter that controls
// how multi-channel capture audio is downmixed to mono (when downmixing is
// needed).
BASE_FEATURE(kWebRtcApmDownmixCaptureAudioMethod,
"WebRtcApmDownmixCaptureAudioMethod",
base::FEATURE_DISABLED_BY_DEFAULT);
// When enabled, the Audio Processing Module is used to determine whether the
// playout reference is needed. Otherwise the decision is based on
// `media::AudioProcessingSettings`.
BASE_FEATURE(kWebRtcApmTellsIfPlayoutReferenceIsNeeded,
"WebRtcApmTellsIfPlayoutReferenceIsNeeded",
base::FEATURE_ENABLED_BY_DEFAULT);
} // namespace features