| /* |
| * Copyright (c) 2020 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 MODULES_AUDIO_PROCESSING_OPTIONALLY_BUILT_SUBMODULE_CREATORS_H_ |
| #define MODULES_AUDIO_PROCESSING_OPTIONALLY_BUILT_SUBMODULE_CREATORS_H_ |
| |
| #include <memory> |
| |
| #include "modules/audio_processing/transient/transient_suppressor.h" |
| |
| namespace webrtc { |
| |
| // These overrides are only to be used for testing purposes. |
| // Each flag emulates a preprocessor macro to exclude a submodule of APM from |
| // the build, e.g. WEBRTC_EXCLUDE_TRANSIENT_SUPPRESSOR. If the corresponding |
| // flag `transient_suppression` is enabled, then the creators will return |
| // nullptr instead of a submodule instance, as if the macro had been defined. |
| struct ApmSubmoduleCreationOverrides { |
| bool transient_suppression = false; |
| }; |
| |
| // Creates a transient suppressor. |
| // Will instead return nullptr if one of the following is true: |
| // * WEBRTC_EXCLUDE_TRANSIENT_SUPPRESSOR is defined |
| // * The corresponding override in `overrides` is enabled. |
| std::unique_ptr<TransientSuppressor> CreateTransientSuppressor( |
| const ApmSubmoduleCreationOverrides& overrides, |
| TransientSuppressor::VadMode vad_mode, |
| int sample_rate_hz, |
| int detection_rate_hz, |
| int num_channels); |
| |
| } // namespace webrtc |
| |
| #endif // MODULES_AUDIO_PROCESSING_OPTIONALLY_BUILT_SUBMODULE_CREATORS_H_ |