Move webrtc::AudioProcessing include to api/ folder
Bug: webrtc:15874
Change-Id: Ie8a6e031c0f0505cfe238f7d252c47e9c34408d4
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/347983
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Auto-Submit: Florent Castelli <orphis@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#42128}
diff --git a/api/BUILD.gn b/api/BUILD.gn
index 709d242..67d463d 100644
--- a/api/BUILD.gn
+++ b/api/BUILD.gn
@@ -56,8 +56,8 @@
deps = [
":enable_media",
":libjingle_peerconnection_api",
- "../modules/audio_processing:api",
"../rtc_base/system:rtc_export",
+ "audio:audio_processing",
"audio_codecs:builtin_audio_decoder_factory",
"audio_codecs:builtin_audio_encoder_factory",
"task_queue:default_task_queue_factory",
@@ -81,13 +81,13 @@
":scoped_refptr",
"../api/rtc_event_log:rtc_event_log_factory",
"../modules/audio_device:audio_device_api",
- "../modules/audio_processing:api",
"../pc:peer_connection_factory",
"../pc:webrtc_sdp",
"../rtc_base:threading",
"../rtc_base/system:rtc_export",
"../stats:rtc_stats",
"audio:audio_mixer_api",
+ "audio:audio_processing",
"audio_codecs:audio_codecs_api",
"task_queue:default_task_queue_factory",
"transport:field_trial_based_config",
@@ -164,10 +164,10 @@
":scoped_refptr",
":sequence_checker",
":video_track_source_constraints",
- "../modules/audio_processing:audio_processing_statistics",
"../rtc_base:checks",
"../rtc_base/system:no_unique_address",
"../rtc_base/system:rtc_export",
+ "audio:audio_processing_statistics",
"video:recordable_encoded_frame",
"video:video_frame",
]
@@ -377,7 +377,6 @@
# targets like pnacl. API should not depend on anything outside of this
# file, really. All these should arguably go away in time.
"../media:rtc_media_config",
- "../modules/audio_processing:audio_processing_statistics",
"../rtc_base:checks",
"../rtc_base:ip_address",
"../rtc_base:socket_address",
@@ -587,7 +586,6 @@
":track_id_stream_info_map",
":video_quality_analyzer_api",
"../media:media_constants",
- "../modules/audio_processing:api",
"../rtc_base:checks",
"../rtc_base:network",
"../rtc_base:rtc_certificate_generator",
@@ -596,6 +594,7 @@
"../rtc_base:threading",
"../test:fileutils",
"audio:audio_mixer_api",
+ "audio:audio_processing",
"rtc_event_log",
"task_queue",
"test/pclf:media_configuration",
@@ -995,8 +994,8 @@
deps = [
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../modules/audio_processing:audioproc_f_impl",
+ "audio:audio_processing",
]
}
diff --git a/api/DEPS b/api/DEPS
index 5a5c285..f9fdb72 100644
--- a/api/DEPS
+++ b/api/DEPS
@@ -49,6 +49,7 @@
],
".*\.h": [
+ "+rtc_base/arraysize.h",
"+rtc_base/checks.h",
"+rtc_base/system/rtc_export.h",
"+rtc_base/system/rtc_export_template.h",
@@ -95,10 +96,6 @@
"+modules/include/module_fec_types.h",
],
- "media_stream_interface\.h": [
- "+modules/audio_processing/include/audio_processing_statistics.h",
- ],
-
"packet_socket_factory\.h": [
"+rtc_base/proxy_info.h",
"+rtc_base/async_packet_socket.h",
@@ -151,14 +148,6 @@
"+rtc_base/buffer.h",
],
- "audioproc_float\.h": [
- "+modules/audio_processing/include/audio_processing.h",
- ],
-
- "echo_detector_creator\.h": [
- "+modules/audio_processing/include/audio_processing.h",
- ],
-
"make_ref_counted\.h": [
"+rtc_base/ref_counted_object.h",
],
diff --git a/api/audio/BUILD.gn b/api/audio/BUILD.gn
index 0ecab64..2fc4b19 100644
--- a/api/audio/BUILD.gn
+++ b/api/audio/BUILD.gn
@@ -42,6 +42,44 @@
]
}
+rtc_source_set("audio_processing") {
+ visibility = [ "*" ]
+ sources = [
+ "audio_processing.cc",
+ "audio_processing.h",
+ ]
+ deps = [
+ ":aec3_config",
+ ":audio_processing_statistics",
+ ":echo_control",
+ "..:array_view",
+ "..:ref_count",
+ "..:scoped_refptr",
+ "../../rtc_base:checks",
+ "../../rtc_base:macromagic",
+ "../../rtc_base:stringutils",
+ "../../rtc_base/system:arch",
+ "../../rtc_base/system:file_wrapper",
+ "../../rtc_base/system:rtc_export",
+ "../task_queue",
+ ]
+ absl_deps = [
+ "//third_party/abseil-cpp/absl/base:nullability",
+ "//third_party/abseil-cpp/absl/strings:string_view",
+ "//third_party/abseil-cpp/absl/types:optional",
+ ]
+}
+
+rtc_source_set("audio_processing_statistics") {
+ visibility = [ "*" ]
+ sources = [
+ "audio_processing_statistics.cc",
+ "audio_processing_statistics.h",
+ ]
+ deps = [ "../../rtc_base/system:rtc_export" ]
+ absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
+}
+
rtc_library("aec3_config") {
visibility = [ "*" ]
sources = [
@@ -85,9 +123,9 @@
"echo_detector_creator.h",
]
deps = [
+ ":audio_processing",
"..:make_ref_counted",
"../../api:scoped_refptr",
- "../../modules/audio_processing:api",
"../../modules/audio_processing:residual_echo_detector",
]
}
diff --git a/modules/audio_processing/include/audio_processing.cc b/api/audio/audio_processing.cc
similarity index 98%
rename from modules/audio_processing/include/audio_processing.cc
rename to api/audio/audio_processing.cc
index 13ddcc5..2df2a78 100644
--- a/modules/audio_processing/include/audio_processing.cc
+++ b/api/audio/audio_processing.cc
@@ -8,10 +8,11 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
+#include <string>
+#include "rtc_base/checks.h"
#include "rtc_base/strings/string_builder.h"
-#include "rtc_base/system/arch.h"
namespace webrtc {
namespace {
diff --git a/api/audio/audio_processing.h b/api/audio/audio_processing.h
new file mode 100644
index 0000000..d5cdb44
--- /dev/null
+++ b/api/audio/audio_processing.h
@@ -0,0 +1,945 @@
+/*
+ * 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 API_AUDIO_AUDIO_PROCESSING_H_
+#define API_AUDIO_AUDIO_PROCESSING_H_
+
+// MSVC++ requires this to be set before any other includes to get M_PI.
+#ifndef _USE_MATH_DEFINES
+#define _USE_MATH_DEFINES
+#endif
+
+#include <math.h>
+#include <stddef.h> // size_t
+#include <stdio.h> // FILE
+#include <string.h>
+
+#include <array>
+#include <cstdint>
+#include <memory>
+#include <string>
+#include <utility>
+
+#include "absl/base/nullability.h"
+#include "absl/strings/string_view.h"
+#include "absl/types/optional.h"
+#include "api/array_view.h"
+#include "api/audio/audio_processing_statistics.h"
+#include "api/audio/echo_control.h"
+#include "api/ref_count.h"
+#include "api/scoped_refptr.h"
+#include "api/task_queue/task_queue_base.h"
+#include "rtc_base/arraysize.h"
+#include "rtc_base/checks.h"
+#include "rtc_base/system/rtc_export.h"
+
+namespace webrtc {
+
+class AecDump;
+class AudioBuffer;
+
+class StreamConfig;
+class ProcessingConfig;
+
+class EchoDetector;
+class CustomAudioAnalyzer;
+class CustomProcessing;
+
+// The Audio Processing Module (APM) provides a collection of voice processing
+// components designed for real-time communications software.
+//
+// APM operates on two audio streams on a frame-by-frame basis. Frames of the
+// primary stream, on which all processing is applied, are passed to
+// `ProcessStream()`. Frames of the reverse direction stream are passed to
+// `ProcessReverseStream()`. On the client-side, this will typically be the
+// near-end (capture) and far-end (render) streams, respectively. APM should be
+// placed in the signal chain as close to the audio hardware abstraction layer
+// (HAL) as possible.
+//
+// On the server-side, the reverse stream will normally not be used, with
+// processing occurring on each incoming stream.
+//
+// Component interfaces follow a similar pattern and are accessed through
+// corresponding getters in APM. All components are disabled at create-time,
+// with default settings that are recommended for most situations. New settings
+// can be applied without enabling a component. Enabling a component triggers
+// memory allocation and initialization to allow it to start processing the
+// streams.
+//
+// Thread safety is provided with the following assumptions to reduce locking
+// overhead:
+// 1. The stream getters and setters are called from the same thread as
+// ProcessStream(). More precisely, stream functions are never called
+// concurrently with ProcessStream().
+// 2. Parameter getters are never called concurrently with the corresponding
+// setter.
+//
+// APM accepts only linear PCM audio data in chunks of ~10 ms (see
+// AudioProcessing::GetFrameSize() for details) and sample rates ranging from
+// 8000 Hz to 384000 Hz. The int16 interfaces use interleaved data, while the
+// float interfaces use deinterleaved data.
+//
+// Usage example, omitting error checking:
+// rtc::scoped_refptr<AudioProcessing> apm = AudioProcessingBuilder().Create();
+//
+// AudioProcessing::Config config;
+// config.echo_canceller.enabled = true;
+// config.echo_canceller.mobile_mode = false;
+//
+// config.gain_controller1.enabled = true;
+// config.gain_controller1.mode =
+// AudioProcessing::Config::GainController1::kAdaptiveAnalog;
+// config.gain_controller1.analog_level_minimum = 0;
+// config.gain_controller1.analog_level_maximum = 255;
+//
+// config.gain_controller2.enabled = true;
+//
+// config.high_pass_filter.enabled = true;
+//
+// apm->ApplyConfig(config)
+//
+// // Start a voice call...
+//
+// // ... Render frame arrives bound for the audio HAL ...
+// apm->ProcessReverseStream(render_frame);
+//
+// // ... Capture frame arrives from the audio HAL ...
+// // Call required set_stream_ functions.
+// apm->set_stream_delay_ms(delay_ms);
+// apm->set_stream_analog_level(analog_level);
+//
+// apm->ProcessStream(capture_frame);
+//
+// // Call required stream_ functions.
+// analog_level = apm->recommended_stream_analog_level();
+// has_voice = apm->stream_has_voice();
+//
+// // Repeat render and capture processing for the duration of the call...
+// // Start a new call...
+// apm->Initialize();
+//
+// // Close the application...
+// apm.reset();
+//
+class RTC_EXPORT AudioProcessing : public RefCountInterface {
+ public:
+ // The struct below constitutes the new parameter scheme for the audio
+ // processing. It is being introduced gradually and until it is fully
+ // introduced, it is prone to change.
+ // TODO(peah): Remove this comment once the new config scheme is fully rolled
+ // out.
+ //
+ // The parameters and behavior of the audio processing module are controlled
+ // by changing the default values in the AudioProcessing::Config struct.
+ // The config is applied by passing the struct to the ApplyConfig method.
+ //
+ // This config is intended to be used during setup, and to enable/disable
+ // top-level processing effects. Use during processing may cause undesired
+ // submodule resets, affecting the audio quality. Use the RuntimeSetting
+ // construct for runtime configuration.
+ struct RTC_EXPORT Config {
+ // Sets the properties of the audio processing pipeline.
+ struct RTC_EXPORT Pipeline {
+ // Ways to downmix a multi-channel track to mono.
+ enum class DownmixMethod {
+ kAverageChannels, // Average across channels.
+ kUseFirstChannel // Use the first channel.
+ };
+
+ // Maximum allowed processing rate used internally. May only be set to
+ // 32000 or 48000 and any differing values will be treated as 48000.
+ int maximum_internal_processing_rate = 48000;
+ // Allow multi-channel processing of render audio.
+ bool multi_channel_render = false;
+ // Allow multi-channel processing of capture audio when AEC3 is active
+ // or a custom AEC is injected..
+ bool multi_channel_capture = false;
+ // Indicates how to downmix multi-channel capture audio to mono (when
+ // needed).
+ DownmixMethod capture_downmix_method = DownmixMethod::kAverageChannels;
+ } pipeline;
+
+ // Enabled the pre-amplifier. It amplifies the capture signal
+ // before any other processing is done.
+ // TODO(webrtc:5298): Deprecate and use the pre-gain functionality in
+ // capture_level_adjustment instead.
+ struct PreAmplifier {
+ bool enabled = false;
+ float fixed_gain_factor = 1.0f;
+ } pre_amplifier;
+
+ // Functionality for general level adjustment in the capture pipeline. This
+ // should not be used together with the legacy PreAmplifier functionality.
+ struct CaptureLevelAdjustment {
+ bool operator==(const CaptureLevelAdjustment& rhs) const;
+ bool operator!=(const CaptureLevelAdjustment& rhs) const {
+ return !(*this == rhs);
+ }
+ bool enabled = false;
+ // The `pre_gain_factor` scales the signal before any processing is done.
+ float pre_gain_factor = 1.0f;
+ // The `post_gain_factor` scales the signal after all processing is done.
+ float post_gain_factor = 1.0f;
+ struct AnalogMicGainEmulation {
+ bool operator==(const AnalogMicGainEmulation& rhs) const;
+ bool operator!=(const AnalogMicGainEmulation& rhs) const {
+ return !(*this == rhs);
+ }
+ bool enabled = false;
+ // Initial analog gain level to use for the emulated analog gain. Must
+ // be in the range [0...255].
+ int initial_level = 255;
+ } analog_mic_gain_emulation;
+ } capture_level_adjustment;
+
+ struct HighPassFilter {
+ bool enabled = false;
+ bool apply_in_full_band = true;
+ } high_pass_filter;
+
+ struct EchoCanceller {
+ bool enabled = false;
+ bool mobile_mode = false;
+ bool export_linear_aec_output = false;
+ // Enforce the highpass filter to be on (has no effect for the mobile
+ // mode).
+ bool enforce_high_pass_filtering = true;
+ } echo_canceller;
+
+ // Enables background noise suppression.
+ struct NoiseSuppression {
+ bool enabled = false;
+ enum Level { kLow, kModerate, kHigh, kVeryHigh };
+ Level level = kModerate;
+ bool analyze_linear_aec_output_when_available = false;
+ } noise_suppression;
+
+ // Enables transient suppression.
+ struct TransientSuppression {
+ bool enabled = false;
+ } transient_suppression;
+
+ // Enables automatic gain control (AGC) functionality.
+ // The automatic gain control (AGC) component brings the signal to an
+ // appropriate range. This is done by applying a digital gain directly and,
+ // in the analog mode, prescribing an analog gain to be applied at the audio
+ // HAL.
+ // Recommended to be enabled on the client-side.
+ struct RTC_EXPORT GainController1 {
+ bool operator==(const GainController1& rhs) const;
+ bool operator!=(const GainController1& rhs) const {
+ return !(*this == rhs);
+ }
+
+ bool enabled = false;
+ enum Mode {
+ // Adaptive mode intended for use if an analog volume control is
+ // available on the capture device. It will require the user to provide
+ // coupling between the OS mixer controls and AGC through the
+ // stream_analog_level() functions.
+ // It consists of an analog gain prescription for the audio device and a
+ // digital compression stage.
+ kAdaptiveAnalog,
+ // Adaptive mode intended for situations in which an analog volume
+ // control is unavailable. It operates in a similar fashion to the
+ // adaptive analog mode, but with scaling instead applied in the digital
+ // domain. As with the analog mode, it additionally uses a digital
+ // compression stage.
+ kAdaptiveDigital,
+ // Fixed mode which enables only the digital compression stage also used
+ // by the two adaptive modes.
+ // It is distinguished from the adaptive modes by considering only a
+ // short time-window of the input signal. It applies a fixed gain
+ // through most of the input level range, and compresses (gradually
+ // reduces gain with increasing level) the input signal at higher
+ // levels. This mode is preferred on embedded devices where the capture
+ // signal level is predictable, so that a known gain can be applied.
+ kFixedDigital
+ };
+ Mode mode = kAdaptiveAnalog;
+ // Sets the target peak level (or envelope) of the AGC in dBFs (decibels
+ // from digital full-scale). The convention is to use positive values. For
+ // instance, passing in a value of 3 corresponds to -3 dBFs, or a target
+ // level 3 dB below full-scale. Limited to [0, 31].
+ int target_level_dbfs = 3;
+ // Sets the maximum gain the digital compression stage may apply, in dB. A
+ // higher number corresponds to greater compression, while a value of 0
+ // will leave the signal uncompressed. Limited to [0, 90].
+ // For updates after APM setup, use a RuntimeSetting instead.
+ int compression_gain_db = 9;
+ // When enabled, the compression stage will hard limit the signal to the
+ // target level. Otherwise, the signal will be compressed but not limited
+ // above the target level.
+ bool enable_limiter = true;
+
+ // Enables the analog gain controller functionality.
+ struct AnalogGainController {
+ bool enabled = true;
+ // TODO(bugs.webrtc.org/7494): Deprecated. Stop using and remove.
+ int startup_min_volume = 0;
+ // Lowest analog microphone level that will be applied in response to
+ // clipping.
+ int clipped_level_min = 70;
+ // If true, an adaptive digital gain is applied.
+ bool enable_digital_adaptive = true;
+ // Amount the microphone level is lowered with every clipping event.
+ // Limited to (0, 255].
+ int clipped_level_step = 15;
+ // Proportion of clipped samples required to declare a clipping event.
+ // Limited to (0.f, 1.f).
+ float clipped_ratio_threshold = 0.1f;
+ // Time in frames to wait after a clipping event before checking again.
+ // Limited to values higher than 0.
+ int clipped_wait_frames = 300;
+
+ // Enables clipping prediction functionality.
+ struct ClippingPredictor {
+ bool enabled = false;
+ enum Mode {
+ // Clipping event prediction mode with fixed step estimation.
+ kClippingEventPrediction,
+ // Clipped peak estimation mode with adaptive step estimation.
+ kAdaptiveStepClippingPeakPrediction,
+ // Clipped peak estimation mode with fixed step estimation.
+ kFixedStepClippingPeakPrediction,
+ };
+ Mode mode = kClippingEventPrediction;
+ // Number of frames in the sliding analysis window.
+ int window_length = 5;
+ // Number of frames in the sliding reference window.
+ int reference_window_length = 5;
+ // Reference window delay (unit: number of frames).
+ int reference_window_delay = 5;
+ // Clipping prediction threshold (dBFS).
+ float clipping_threshold = -1.0f;
+ // Crest factor drop threshold (dB).
+ float crest_factor_margin = 3.0f;
+ // If true, the recommended clipped level step is used to modify the
+ // analog gain. Otherwise, the predictor runs without affecting the
+ // analog gain.
+ bool use_predicted_step = true;
+ } clipping_predictor;
+ } analog_gain_controller;
+ } gain_controller1;
+
+ // Parameters for AGC2, an Automatic Gain Control (AGC) sub-module which
+ // replaces the AGC sub-module parametrized by `gain_controller1`.
+ // AGC2 brings the captured audio signal to the desired level by combining
+ // three different controllers (namely, input volume controller, adapative
+ // digital controller and fixed digital controller) and a limiter.
+ // TODO(bugs.webrtc.org:7494): Name `GainController` when AGC1 removed.
+ struct RTC_EXPORT GainController2 {
+ bool operator==(const GainController2& rhs) const;
+ bool operator!=(const GainController2& rhs) const {
+ return !(*this == rhs);
+ }
+
+ // AGC2 must be created if and only if `enabled` is true.
+ bool enabled = false;
+
+ // Parameters for the input volume controller, which adjusts the input
+ // volume applied when the audio is captured (e.g., microphone volume on
+ // a soundcard, input volume on HAL).
+ struct InputVolumeController {
+ bool operator==(const InputVolumeController& rhs) const;
+ bool operator!=(const InputVolumeController& rhs) const {
+ return !(*this == rhs);
+ }
+ bool enabled = false;
+ } input_volume_controller;
+
+ // Parameters for the adaptive digital controller, which adjusts and
+ // applies a digital gain after echo cancellation and after noise
+ // suppression.
+ struct RTC_EXPORT AdaptiveDigital {
+ bool operator==(const AdaptiveDigital& rhs) const;
+ bool operator!=(const AdaptiveDigital& rhs) const {
+ return !(*this == rhs);
+ }
+ bool enabled = false;
+ float headroom_db = 5.0f;
+ float max_gain_db = 50.0f;
+ float initial_gain_db = 15.0f;
+ float max_gain_change_db_per_second = 6.0f;
+ float max_output_noise_level_dbfs = -50.0f;
+ } adaptive_digital;
+
+ // Parameters for the fixed digital controller, which applies a fixed
+ // digital gain after the adaptive digital controller and before the
+ // limiter.
+ struct FixedDigital {
+ // By setting `gain_db` to a value greater than zero, the limiter can be
+ // turned into a compressor that first applies a fixed gain.
+ float gain_db = 0.0f;
+ } fixed_digital;
+ } gain_controller2;
+
+ std::string ToString() const;
+ };
+
+ // Specifies the properties of a setting to be passed to AudioProcessing at
+ // runtime.
+ class RuntimeSetting {
+ public:
+ enum class Type {
+ kNotSpecified,
+ kCapturePreGain,
+ kCaptureCompressionGain,
+ kCaptureFixedPostGain,
+ kPlayoutVolumeChange,
+ kCustomRenderProcessingRuntimeSetting,
+ kPlayoutAudioDeviceChange,
+ kCapturePostGain,
+ kCaptureOutputUsed
+ };
+
+ // Play-out audio device properties.
+ struct PlayoutAudioDeviceInfo {
+ int id; // Identifies the audio device.
+ int max_volume; // Maximum play-out volume.
+ };
+
+ RuntimeSetting() : type_(Type::kNotSpecified), value_(0.0f) {}
+ ~RuntimeSetting() = default;
+
+ static RuntimeSetting CreateCapturePreGain(float gain) {
+ return {Type::kCapturePreGain, gain};
+ }
+
+ static RuntimeSetting CreateCapturePostGain(float gain) {
+ return {Type::kCapturePostGain, gain};
+ }
+
+ // Corresponds to Config::GainController1::compression_gain_db, but for
+ // runtime configuration.
+ static RuntimeSetting CreateCompressionGainDb(int gain_db) {
+ RTC_DCHECK_GE(gain_db, 0);
+ RTC_DCHECK_LE(gain_db, 90);
+ return {Type::kCaptureCompressionGain, static_cast<float>(gain_db)};
+ }
+
+ // Corresponds to Config::GainController2::fixed_digital::gain_db, but for
+ // runtime configuration.
+ static RuntimeSetting CreateCaptureFixedPostGain(float gain_db) {
+ RTC_DCHECK_GE(gain_db, 0.0f);
+ RTC_DCHECK_LE(gain_db, 90.0f);
+ return {Type::kCaptureFixedPostGain, gain_db};
+ }
+
+ // Creates a runtime setting to notify play-out (aka render) audio device
+ // changes.
+ static RuntimeSetting CreatePlayoutAudioDeviceChange(
+ PlayoutAudioDeviceInfo audio_device) {
+ return {Type::kPlayoutAudioDeviceChange, audio_device};
+ }
+
+ // Creates a runtime setting to notify play-out (aka render) volume changes.
+ // `volume` is the unnormalized volume, the maximum of which
+ static RuntimeSetting CreatePlayoutVolumeChange(int volume) {
+ return {Type::kPlayoutVolumeChange, volume};
+ }
+
+ static RuntimeSetting CreateCustomRenderSetting(float payload) {
+ return {Type::kCustomRenderProcessingRuntimeSetting, payload};
+ }
+
+ static RuntimeSetting CreateCaptureOutputUsedSetting(
+ bool capture_output_used) {
+ return {Type::kCaptureOutputUsed, capture_output_used};
+ }
+
+ Type type() const { return type_; }
+ // Getters do not return a value but instead modify the argument to protect
+ // from implicit casting.
+ void GetFloat(float* value) const {
+ RTC_DCHECK(value);
+ *value = value_.float_value;
+ }
+ void GetInt(int* value) const {
+ RTC_DCHECK(value);
+ *value = value_.int_value;
+ }
+ void GetBool(bool* value) const {
+ RTC_DCHECK(value);
+ *value = value_.bool_value;
+ }
+ void GetPlayoutAudioDeviceInfo(PlayoutAudioDeviceInfo* value) const {
+ RTC_DCHECK(value);
+ *value = value_.playout_audio_device_info;
+ }
+
+ private:
+ RuntimeSetting(Type id, float value) : type_(id), value_(value) {}
+ RuntimeSetting(Type id, int value) : type_(id), value_(value) {}
+ RuntimeSetting(Type id, PlayoutAudioDeviceInfo value)
+ : type_(id), value_(value) {}
+ Type type_;
+ union U {
+ U() {}
+ U(int value) : int_value(value) {}
+ U(float value) : float_value(value) {}
+ U(PlayoutAudioDeviceInfo value) : playout_audio_device_info(value) {}
+ float float_value;
+ int int_value;
+ bool bool_value;
+ PlayoutAudioDeviceInfo playout_audio_device_info;
+ } value_;
+ };
+
+ ~AudioProcessing() override {}
+
+ // Initializes internal states, while retaining all user settings. This
+ // should be called before beginning to process a new audio stream. However,
+ // it is not necessary to call before processing the first stream after
+ // creation.
+ //
+ // It is also not necessary to call if the audio parameters (sample
+ // rate and number of channels) have changed. Passing updated parameters
+ // directly to `ProcessStream()` and `ProcessReverseStream()` is permissible.
+ // If the parameters are known at init-time though, they may be provided.
+ // TODO(webrtc:5298): Change to return void.
+ virtual int Initialize() = 0;
+
+ // The int16 interfaces require:
+ // - only `NativeRate`s be used
+ // - that the input, output and reverse rates must match
+ // - that `processing_config.output_stream()` matches
+ // `processing_config.input_stream()`.
+ //
+ // The float interfaces accept arbitrary rates and support differing input and
+ // output layouts, but the output must have either one channel or the same
+ // number of channels as the input.
+ virtual int Initialize(const ProcessingConfig& processing_config) = 0;
+
+ // TODO(peah): This method is a temporary solution used to take control
+ // over the parameters in the audio processing module and is likely to change.
+ virtual void ApplyConfig(const Config& config) = 0;
+
+ // TODO(ajm): Only intended for internal use. Make private and friend the
+ // necessary classes?
+ virtual int proc_sample_rate_hz() const = 0;
+ virtual int proc_split_sample_rate_hz() const = 0;
+ virtual size_t num_input_channels() const = 0;
+ virtual size_t num_proc_channels() const = 0;
+ virtual size_t num_output_channels() const = 0;
+ virtual size_t num_reverse_channels() const = 0;
+
+ // Set to true when the output of AudioProcessing will be muted or in some
+ // other way not used. Ideally, the captured audio would still be processed,
+ // but some components may change behavior based on this information.
+ // Default false. This method takes a lock. To achieve this in a lock-less
+ // manner the PostRuntimeSetting can instead be used.
+ virtual void set_output_will_be_muted(bool muted) = 0;
+
+ // Enqueues a runtime setting.
+ virtual void SetRuntimeSetting(RuntimeSetting setting) = 0;
+
+ // Enqueues a runtime setting. Returns a bool indicating whether the
+ // enqueueing was successfull.
+ virtual bool PostRuntimeSetting(RuntimeSetting setting) = 0;
+
+ // Accepts and produces a ~10 ms frame of interleaved 16 bit integer audio as
+ // specified in `input_config` and `output_config`. `src` and `dest` may use
+ // the same memory, if desired.
+ virtual int ProcessStream(const int16_t* const src,
+ const StreamConfig& input_config,
+ const StreamConfig& output_config,
+ int16_t* const dest) = 0;
+
+ // Accepts deinterleaved float audio with the range [-1, 1]. Each element of
+ // `src` points to a channel buffer, arranged according to `input_stream`. At
+ // output, the channels will be arranged according to `output_stream` in
+ // `dest`.
+ //
+ // The output must have one channel or as many channels as the input. `src`
+ // and `dest` may use the same memory, if desired.
+ virtual int ProcessStream(const float* const* src,
+ const StreamConfig& input_config,
+ const StreamConfig& output_config,
+ float* const* dest) = 0;
+
+ // Accepts and produces a ~10 ms frame of interleaved 16 bit integer audio for
+ // the reverse direction audio stream as specified in `input_config` and
+ // `output_config`. `src` and `dest` may use the same memory, if desired.
+ virtual int ProcessReverseStream(const int16_t* const src,
+ const StreamConfig& input_config,
+ const StreamConfig& output_config,
+ int16_t* const dest) = 0;
+
+ // Accepts deinterleaved float audio with the range [-1, 1]. Each element of
+ // `data` points to a channel buffer, arranged according to `reverse_config`.
+ virtual int ProcessReverseStream(const float* const* src,
+ const StreamConfig& input_config,
+ const StreamConfig& output_config,
+ float* const* dest) = 0;
+
+ // Accepts deinterleaved float audio with the range [-1, 1]. Each element
+ // of `data` points to a channel buffer, arranged according to
+ // `reverse_config`.
+ virtual int AnalyzeReverseStream(const float* const* data,
+ const StreamConfig& reverse_config) = 0;
+
+ // Returns the most recently produced ~10 ms of the linear AEC output at a
+ // rate of 16 kHz. If there is more than one capture channel, a mono
+ // representation of the input is returned. Returns true/false to indicate
+ // whether an output returned.
+ virtual bool GetLinearAecOutput(
+ rtc::ArrayView<std::array<float, 160>> linear_output) const = 0;
+
+ // This must be called prior to ProcessStream() if and only if adaptive analog
+ // gain control is enabled, to pass the current analog level from the audio
+ // HAL. Must be within the range [0, 255].
+ virtual void set_stream_analog_level(int level) = 0;
+
+ // When an analog mode is set, this should be called after
+ // `set_stream_analog_level()` and `ProcessStream()` to obtain the recommended
+ // new analog level for the audio HAL. It is the user's responsibility to
+ // apply this level.
+ virtual int recommended_stream_analog_level() const = 0;
+
+ // This must be called if and only if echo processing is enabled.
+ //
+ // Sets the `delay` in ms between ProcessReverseStream() receiving a far-end
+ // frame and ProcessStream() receiving a near-end frame containing the
+ // corresponding echo. On the client-side this can be expressed as
+ // delay = (t_render - t_analyze) + (t_process - t_capture)
+ // where,
+ // - t_analyze is the time a frame is passed to ProcessReverseStream() and
+ // t_render is the time the first sample of the same frame is rendered by
+ // the audio hardware.
+ // - t_capture is the time the first sample of a frame is captured by the
+ // audio hardware and t_process is the time the same frame is passed to
+ // ProcessStream().
+ virtual int set_stream_delay_ms(int delay) = 0;
+ virtual int stream_delay_ms() const = 0;
+
+ // Call to signal that a key press occurred (true) or did not occur (false)
+ // with this chunk of audio.
+ virtual void set_stream_key_pressed(bool key_pressed) = 0;
+
+ // Creates and attaches an webrtc::AecDump for recording debugging
+ // information.
+ // The `worker_queue` may not be null and must outlive the created
+ // AecDump instance. |max_log_size_bytes == -1| means the log size
+ // will be unlimited. `handle` may not be null. The AecDump takes
+ // responsibility for `handle` and closes it in the destructor. A
+ // return value of true indicates that the file has been
+ // sucessfully opened, while a value of false indicates that
+ // opening the file failed.
+ virtual bool CreateAndAttachAecDump(
+ absl::string_view file_name,
+ int64_t max_log_size_bytes,
+ absl::Nonnull<TaskQueueBase*> worker_queue) = 0;
+ virtual bool CreateAndAttachAecDump(
+ absl::Nonnull<FILE*> handle,
+ int64_t max_log_size_bytes,
+ absl::Nonnull<TaskQueueBase*> worker_queue) = 0;
+
+ // TODO(webrtc:5298) Deprecated variant.
+ // Attaches provided webrtc::AecDump for recording debugging
+ // information. Log file and maximum file size logic is supposed to
+ // be handled by implementing instance of AecDump. Calling this
+ // method when another AecDump is attached resets the active AecDump
+ // with a new one. This causes the d-tor of the earlier AecDump to
+ // be called. The d-tor call may block until all pending logging
+ // tasks are completed.
+ virtual void AttachAecDump(std::unique_ptr<AecDump> aec_dump) = 0;
+
+ // If no AecDump is attached, this has no effect. If an AecDump is
+ // attached, it's destructor is called. The d-tor may block until
+ // all pending logging tasks are completed.
+ virtual void DetachAecDump() = 0;
+
+ // Get audio processing statistics.
+ virtual AudioProcessingStats GetStatistics() = 0;
+ // TODO(webrtc:5298) Deprecated variant. The `has_remote_tracks` argument
+ // should be set if there are active remote tracks (this would usually be true
+ // during a call). If there are no remote tracks some of the stats will not be
+ // set by AudioProcessing, because they only make sense if there is at least
+ // one remote track.
+ virtual AudioProcessingStats GetStatistics(bool has_remote_tracks) = 0;
+
+ // Returns the last applied configuration.
+ virtual AudioProcessing::Config GetConfig() const = 0;
+
+ enum Error {
+ // Fatal errors.
+ kNoError = 0,
+ kUnspecifiedError = -1,
+ kCreationFailedError = -2,
+ kUnsupportedComponentError = -3,
+ kUnsupportedFunctionError = -4,
+ kNullPointerError = -5,
+ kBadParameterError = -6,
+ kBadSampleRateError = -7,
+ kBadDataLengthError = -8,
+ kBadNumberChannelsError = -9,
+ kFileError = -10,
+ kStreamParameterNotSetError = -11,
+ kNotEnabledError = -12,
+
+ // Warnings are non-fatal.
+ // This results when a set_stream_ parameter is out of range. Processing
+ // will continue, but the parameter may have been truncated.
+ kBadStreamParameterWarning = -13
+ };
+
+ // Native rates supported by the integer interfaces.
+ enum NativeRate {
+ kSampleRate8kHz = 8000,
+ kSampleRate16kHz = 16000,
+ kSampleRate32kHz = 32000,
+ kSampleRate48kHz = 48000
+ };
+
+ // TODO(kwiberg): We currently need to support a compiler (Visual C++) that
+ // complains if we don't explicitly state the size of the array here. Remove
+ // the size when that's no longer the case.
+ static constexpr int kNativeSampleRatesHz[4] = {
+ kSampleRate8kHz, kSampleRate16kHz, kSampleRate32kHz, kSampleRate48kHz};
+ static constexpr size_t kNumNativeSampleRates =
+ arraysize(kNativeSampleRatesHz);
+ static constexpr int kMaxNativeSampleRateHz =
+ kNativeSampleRatesHz[kNumNativeSampleRates - 1];
+
+ // APM processes audio in chunks of about 10 ms. See GetFrameSize() for
+ // details.
+ static constexpr int kChunkSizeMs = 10;
+
+ // Returns floor(sample_rate_hz/100): the number of samples per channel used
+ // as input and output to the audio processing module in calls to
+ // ProcessStream, ProcessReverseStream, AnalyzeReverseStream, and
+ // GetLinearAecOutput.
+ //
+ // This is exactly 10 ms for sample rates divisible by 100. For example:
+ // - 48000 Hz (480 samples per channel),
+ // - 44100 Hz (441 samples per channel),
+ // - 16000 Hz (160 samples per channel).
+ //
+ // Sample rates not divisible by 100 are received/produced in frames of
+ // approximately 10 ms. For example:
+ // - 22050 Hz (220 samples per channel, or ~9.98 ms per frame),
+ // - 11025 Hz (110 samples per channel, or ~9.98 ms per frame).
+ // These nondivisible sample rates yield lower audio quality compared to
+ // multiples of 100. Internal resampling to 10 ms frames causes a simulated
+ // clock drift effect which impacts the performance of (for example) echo
+ // cancellation.
+ static int GetFrameSize(int sample_rate_hz) { return sample_rate_hz / 100; }
+};
+
+class RTC_EXPORT AudioProcessingBuilder {
+ public:
+ AudioProcessingBuilder();
+ AudioProcessingBuilder(const AudioProcessingBuilder&) = delete;
+ AudioProcessingBuilder& operator=(const AudioProcessingBuilder&) = delete;
+ ~AudioProcessingBuilder();
+
+ // Sets the APM configuration.
+ AudioProcessingBuilder& SetConfig(const AudioProcessing::Config& config) {
+ config_ = config;
+ return *this;
+ }
+
+ // Sets the echo controller factory to inject when APM is created.
+ AudioProcessingBuilder& SetEchoControlFactory(
+ std::unique_ptr<EchoControlFactory> echo_control_factory) {
+ echo_control_factory_ = std::move(echo_control_factory);
+ return *this;
+ }
+
+ // Sets the capture post-processing sub-module to inject when APM is created.
+ AudioProcessingBuilder& SetCapturePostProcessing(
+ std::unique_ptr<CustomProcessing> capture_post_processing) {
+ capture_post_processing_ = std::move(capture_post_processing);
+ return *this;
+ }
+
+ // Sets the render pre-processing sub-module to inject when APM is created.
+ AudioProcessingBuilder& SetRenderPreProcessing(
+ std::unique_ptr<CustomProcessing> render_pre_processing) {
+ render_pre_processing_ = std::move(render_pre_processing);
+ return *this;
+ }
+
+ // Sets the echo detector to inject when APM is created.
+ AudioProcessingBuilder& SetEchoDetector(
+ rtc::scoped_refptr<EchoDetector> echo_detector) {
+ echo_detector_ = std::move(echo_detector);
+ return *this;
+ }
+
+ // Sets the capture analyzer sub-module to inject when APM is created.
+ AudioProcessingBuilder& SetCaptureAnalyzer(
+ std::unique_ptr<CustomAudioAnalyzer> capture_analyzer) {
+ capture_analyzer_ = std::move(capture_analyzer);
+ return *this;
+ }
+
+ // Creates an APM instance with the specified config or the default one if
+ // unspecified. Injects the specified components transferring the ownership
+ // to the newly created APM instance - i.e., except for the config, the
+ // builder is reset to its initial state.
+ rtc::scoped_refptr<AudioProcessing> Create();
+
+ private:
+ AudioProcessing::Config config_;
+ std::unique_ptr<EchoControlFactory> echo_control_factory_;
+ std::unique_ptr<CustomProcessing> capture_post_processing_;
+ std::unique_ptr<CustomProcessing> render_pre_processing_;
+ rtc::scoped_refptr<EchoDetector> echo_detector_;
+ std::unique_ptr<CustomAudioAnalyzer> capture_analyzer_;
+};
+
+class StreamConfig {
+ public:
+ // sample_rate_hz: The sampling rate of the stream.
+ // num_channels: The number of audio channels in the stream.
+ StreamConfig(int sample_rate_hz = 0,
+ size_t num_channels = 0) // NOLINT(runtime/explicit)
+ : sample_rate_hz_(sample_rate_hz),
+ num_channels_(num_channels),
+ num_frames_(calculate_frames(sample_rate_hz)) {}
+
+ void set_sample_rate_hz(int value) {
+ sample_rate_hz_ = value;
+ num_frames_ = calculate_frames(value);
+ }
+ void set_num_channels(size_t value) { num_channels_ = value; }
+
+ int sample_rate_hz() const { return sample_rate_hz_; }
+
+ // The number of channels in the stream.
+ size_t num_channels() const { return num_channels_; }
+
+ size_t num_frames() const { return num_frames_; }
+ size_t num_samples() const { return num_channels_ * num_frames_; }
+
+ bool operator==(const StreamConfig& other) const {
+ return sample_rate_hz_ == other.sample_rate_hz_ &&
+ num_channels_ == other.num_channels_;
+ }
+
+ bool operator!=(const StreamConfig& other) const { return !(*this == other); }
+
+ private:
+ static size_t calculate_frames(int sample_rate_hz) {
+ return static_cast<size_t>(AudioProcessing::GetFrameSize(sample_rate_hz));
+ }
+
+ int sample_rate_hz_;
+ size_t num_channels_;
+ size_t num_frames_;
+};
+
+class ProcessingConfig {
+ public:
+ enum StreamName {
+ kInputStream,
+ kOutputStream,
+ kReverseInputStream,
+ kReverseOutputStream,
+ kNumStreamNames,
+ };
+
+ const StreamConfig& input_stream() const {
+ return streams[StreamName::kInputStream];
+ }
+ const StreamConfig& output_stream() const {
+ return streams[StreamName::kOutputStream];
+ }
+ const StreamConfig& reverse_input_stream() const {
+ return streams[StreamName::kReverseInputStream];
+ }
+ const StreamConfig& reverse_output_stream() const {
+ return streams[StreamName::kReverseOutputStream];
+ }
+
+ StreamConfig& input_stream() { return streams[StreamName::kInputStream]; }
+ StreamConfig& output_stream() { return streams[StreamName::kOutputStream]; }
+ StreamConfig& reverse_input_stream() {
+ return streams[StreamName::kReverseInputStream];
+ }
+ StreamConfig& reverse_output_stream() {
+ return streams[StreamName::kReverseOutputStream];
+ }
+
+ bool operator==(const ProcessingConfig& other) const {
+ for (int i = 0; i < StreamName::kNumStreamNames; ++i) {
+ if (this->streams[i] != other.streams[i]) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ bool operator!=(const ProcessingConfig& other) const {
+ return !(*this == other);
+ }
+
+ StreamConfig streams[StreamName::kNumStreamNames];
+};
+
+// Experimental interface for a custom analysis submodule.
+class CustomAudioAnalyzer {
+ public:
+ // (Re-) Initializes the submodule.
+ virtual void Initialize(int sample_rate_hz, int num_channels) = 0;
+ // Analyzes the given capture or render signal.
+ virtual void Analyze(const AudioBuffer* audio) = 0;
+ // Returns a string representation of the module state.
+ virtual std::string ToString() const = 0;
+
+ virtual ~CustomAudioAnalyzer() {}
+};
+
+// Interface for a custom processing submodule.
+class CustomProcessing {
+ public:
+ // (Re-)Initializes the submodule.
+ virtual void Initialize(int sample_rate_hz, int num_channels) = 0;
+ // Processes the given capture or render signal.
+ virtual void Process(AudioBuffer* audio) = 0;
+ // Returns a string representation of the module state.
+ virtual std::string ToString() const = 0;
+ // Handles RuntimeSettings. TODO(webrtc:9262): make pure virtual
+ // after updating dependencies.
+ virtual void SetRuntimeSetting(AudioProcessing::RuntimeSetting setting);
+
+ virtual ~CustomProcessing() {}
+};
+
+// Interface for an echo detector submodule.
+class EchoDetector : public RefCountInterface {
+ public:
+ // (Re-)Initializes the submodule.
+ virtual void Initialize(int capture_sample_rate_hz,
+ int num_capture_channels,
+ int render_sample_rate_hz,
+ int num_render_channels) = 0;
+
+ // Analysis (not changing) of the first channel of the render signal.
+ virtual void AnalyzeRenderAudio(rtc::ArrayView<const float> render_audio) = 0;
+
+ // Analysis (not changing) of the capture signal.
+ virtual void AnalyzeCaptureAudio(
+ rtc::ArrayView<const float> capture_audio) = 0;
+
+ struct Metrics {
+ absl::optional<double> echo_likelihood;
+ absl::optional<double> echo_likelihood_recent_max;
+ };
+
+ // Collect current metrics from the echo detector.
+ virtual Metrics GetMetrics() const = 0;
+};
+
+} // namespace webrtc
+
+#endif // API_AUDIO_AUDIO_PROCESSING_H_
diff --git a/modules/audio_processing/include/audio_processing_statistics.cc b/api/audio/audio_processing_statistics.cc
similarity index 89%
rename from modules/audio_processing/include/audio_processing_statistics.cc
rename to api/audio/audio_processing_statistics.cc
index 7139ee5..90da7e8 100644
--- a/modules/audio_processing/include/audio_processing_statistics.cc
+++ b/api/audio/audio_processing_statistics.cc
@@ -8,7 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
-#include "modules/audio_processing/include/audio_processing_statistics.h"
+#include "api/audio/audio_processing_statistics.h"
namespace webrtc {
diff --git a/api/audio/audio_processing_statistics.h b/api/audio/audio_processing_statistics.h
new file mode 100644
index 0000000..6f77d07
--- /dev/null
+++ b/api/audio/audio_processing_statistics.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2017 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 API_AUDIO_AUDIO_PROCESSING_STATISTICS_H_
+#define API_AUDIO_AUDIO_PROCESSING_STATISTICS_H_
+
+#include <stdint.h>
+
+#include "absl/types/optional.h"
+#include "rtc_base/system/rtc_export.h"
+
+namespace webrtc {
+// This version of the stats uses Optionals, it will replace the regular
+// AudioProcessingStatistics struct.
+struct RTC_EXPORT AudioProcessingStats {
+ AudioProcessingStats();
+ AudioProcessingStats(const AudioProcessingStats& other);
+ ~AudioProcessingStats();
+
+ // Deprecated.
+ // TODO(bugs.webrtc.org/11226): Remove.
+ // True if voice is detected in the last capture frame, after processing.
+ // It is conservative in flagging audio as speech, with low likelihood of
+ // incorrectly flagging a frame as voice.
+ // Only reported if voice detection is enabled in AudioProcessing::Config.
+ absl::optional<bool> voice_detected;
+
+ // AEC Statistics.
+ // ERL = 10log_10(P_far / P_echo)
+ absl::optional<double> echo_return_loss;
+ // ERLE = 10log_10(P_echo / P_out)
+ absl::optional<double> echo_return_loss_enhancement;
+ // Fraction of time that the AEC linear filter is divergent, in a 1-second
+ // non-overlapped aggregation window.
+ absl::optional<double> divergent_filter_fraction;
+
+ // The delay metrics consists of the delay median and standard deviation. It
+ // also consists of the fraction of delay estimates that can make the echo
+ // cancellation perform poorly. The values are aggregated until the first
+ // call to `GetStatistics()` and afterwards aggregated and updated every
+ // second. Note that if there are several clients pulling metrics from
+ // `GetStatistics()` during a session the first call from any of them will
+ // change to one second aggregation window for all.
+ absl::optional<int32_t> delay_median_ms;
+ absl::optional<int32_t> delay_standard_deviation_ms;
+
+ // Residual echo detector likelihood.
+ absl::optional<double> residual_echo_likelihood;
+ // Maximum residual echo likelihood from the last time period.
+ absl::optional<double> residual_echo_likelihood_recent_max;
+
+ // The instantaneous delay estimate produced in the AEC. The unit is in
+ // milliseconds and the value is the instantaneous value at the time of the
+ // call to `GetStatistics()`.
+ absl::optional<int32_t> delay_ms;
+};
+
+} // namespace webrtc
+
+#endif // API_AUDIO_AUDIO_PROCESSING_STATISTICS_H_
diff --git a/api/audio/echo_detector_creator.h b/api/audio/echo_detector_creator.h
index 5ba171d..27dd58c 100644
--- a/api/audio/echo_detector_creator.h
+++ b/api/audio/echo_detector_creator.h
@@ -11,8 +11,8 @@
#ifndef API_AUDIO_ECHO_DETECTOR_CREATOR_H_
#define API_AUDIO_ECHO_DETECTOR_CREATOR_H_
+#include "api/audio/audio_processing.h"
#include "api/scoped_refptr.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/api/create_peerconnection_factory.cc b/api/create_peerconnection_factory.cc
index bd77f74..42bfa60 100644
--- a/api/create_peerconnection_factory.cc
+++ b/api/create_peerconnection_factory.cc
@@ -13,6 +13,7 @@
#include <memory>
#include <utility>
+#include "api/audio/audio_processing.h"
#include "api/enable_media.h"
#include "api/peer_connection_interface.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
@@ -20,7 +21,6 @@
#include "api/task_queue/default_task_queue_factory.h"
#include "api/transport/field_trial_based_config.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/thread.h"
namespace webrtc {
diff --git a/api/create_peerconnection_factory.h b/api/create_peerconnection_factory.h
index 6ca4cb0..adb4de9 100644
--- a/api/create_peerconnection_factory.h
+++ b/api/create_peerconnection_factory.h
@@ -14,6 +14,7 @@
#include <memory>
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/field_trials_view.h"
@@ -34,7 +35,6 @@
class AudioDeviceModule;
class AudioFrameProcessor;
-class AudioProcessing;
// Create a new instance of PeerConnectionFactoryInterface with optional video
// codec factories. These video factories represents all video codecs, i.e. no
diff --git a/api/enable_media_with_defaults.cc b/api/enable_media_with_defaults.cc
index 81462f7..ace2247 100644
--- a/api/enable_media_with_defaults.cc
+++ b/api/enable_media_with_defaults.cc
@@ -10,13 +10,13 @@
#include "api/enable_media_with_defaults.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/enable_media.h"
#include "api/task_queue/default_task_queue_factory.h"
#include "api/video_codecs/builtin_video_decoder_factory.h"
#include "api/video_codecs/builtin_video_encoder_factory.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/api/media_stream_interface.h b/api/media_stream_interface.h
index 4f9bffa..d050fe7 100644
--- a/api/media_stream_interface.h
+++ b/api/media_stream_interface.h
@@ -22,6 +22,7 @@
#include <vector>
#include "absl/types/optional.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/audio_options.h"
#include "api/ref_count.h"
#include "api/scoped_refptr.h"
@@ -30,7 +31,6 @@
#include "api/video/video_sink_interface.h"
#include "api/video/video_source_interface.h"
#include "api/video_track_source_constraints.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "rtc_base/system/rtc_export.h"
namespace webrtc {
diff --git a/api/test/audioproc_float.h b/api/test/audioproc_float.h
index 1ef1c98..021bc73 100644
--- a/api/test/audioproc_float.h
+++ b/api/test/audioproc_float.h
@@ -14,7 +14,7 @@
#include <memory>
#include <vector>
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
namespace webrtc {
namespace test {
diff --git a/api/test/pclf/BUILD.gn b/api/test/pclf/BUILD.gn
index 68f1688..0dc8f570 100644
--- a/api/test/pclf/BUILD.gn
+++ b/api/test/pclf/BUILD.gn
@@ -32,7 +32,6 @@
"../..:stats_observer_interface",
"../..:track_id_stream_info_map",
"../..:video_quality_analyzer_api",
- "../../../modules/audio_processing:api",
"../../../rtc_base:checks",
"../../../rtc_base:network",
"../../../rtc_base:rtc_certificate_generator",
@@ -43,6 +42,7 @@
"../../../test:video_test_support",
"../../../test/pc/e2e/analyzer/video:video_dumping",
"../../audio:audio_mixer_api",
+ "../../audio:audio_processing",
"../../rtc_event_log",
"../../task_queue",
"../../transport:network_control",
@@ -73,7 +73,6 @@
"../../../api/rtc_event_log",
"../../../api/transport:network_control",
"../../../api/video_codecs:video_codecs_api",
- "../../../modules/audio_processing:api",
"../../../p2p:connection",
"../../../p2p:port_allocator",
"../../../p2p:rtc_p2p",
@@ -81,6 +80,7 @@
"../../../rtc_base:rtc_certificate_generator",
"../../../rtc_base:ssl",
"../../../rtc_base:threading",
+ "../../audio:audio_processing",
]
}
@@ -110,10 +110,10 @@
"../../../api/transport:bitrate_settings",
"../../../api/transport:network_control",
"../../../api/video_codecs:video_codecs_api",
- "../../../modules/audio_processing:api",
"../../../rtc_base:checks",
"../../../rtc_base:rtc_certificate_generator",
"../../../rtc_base:ssl",
+ "../../audio:audio_processing",
]
absl_deps = [
"//third_party/abseil-cpp/absl/strings",
diff --git a/api/test/pclf/media_configuration.h b/api/test/pclf/media_configuration.h
index ad29e17..737e4b1 100644
--- a/api/test/pclf/media_configuration.h
+++ b/api/test/pclf/media_configuration.h
@@ -25,6 +25,7 @@
#include "absl/types/optional.h"
#include "api/array_view.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_options.h"
#include "api/fec_controller.h"
#include "api/function_view.h"
@@ -46,7 +47,6 @@
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder.h"
#include "api/video_codecs/video_encoder_factory.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/checks.h"
#include "rtc_base/network.h"
#include "rtc_base/rtc_certificate_generator.h"
diff --git a/api/test/pclf/media_quality_test_params.h b/api/test/pclf/media_quality_test_params.h
index 8a3a13a..f1baf46 100644
--- a/api/test/pclf/media_quality_test_params.h
+++ b/api/test/pclf/media_quality_test_params.h
@@ -17,6 +17,7 @@
#include "api/async_dns_resolver.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/fec_controller.h"
#include "api/field_trials_view.h"
#include "api/rtc_event_log/rtc_event_log_factory_interface.h"
@@ -24,7 +25,6 @@
#include "api/transport/network_control.h"
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder_factory.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/port_allocator.h"
#include "rtc_base/network.h"
#include "rtc_base/rtc_certificate_generator.h"
diff --git a/api/test/pclf/peer_configurer.cc b/api/test/pclf/peer_configurer.cc
index ac0d028..765ec2d 100644
--- a/api/test/pclf/peer_configurer.cc
+++ b/api/test/pclf/peer_configurer.cc
@@ -20,6 +20,7 @@
#include "absl/types/optional.h"
#include "api/async_dns_resolver.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/fec_controller.h"
@@ -38,7 +39,6 @@
#include "api/transport/network_control.h"
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder_factory.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/checks.h"
#include "rtc_base/rtc_certificate_generator.h"
#include "rtc_base/ssl_certificate.h"
diff --git a/api/test/pclf/peer_configurer.h b/api/test/pclf/peer_configurer.h
index 1c6fb4c..3c88d9b 100644
--- a/api/test/pclf/peer_configurer.h
+++ b/api/test/pclf/peer_configurer.h
@@ -19,6 +19,7 @@
#include "absl/types/variant.h"
#include "api/async_dns_resolver.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/fec_controller.h"
@@ -36,7 +37,6 @@
#include "api/transport/network_control.h"
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder_factory.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/rtc_certificate_generator.h"
#include "rtc_base/ssl_certificate.h"
diff --git a/api/test/peerconnection_quality_test_fixture.h b/api/test/peerconnection_quality_test_fixture.h
index 7e19eb1..0b1e69e 100644
--- a/api/test/peerconnection_quality_test_fixture.h
+++ b/api/test/peerconnection_quality_test_fixture.h
@@ -26,6 +26,7 @@
#include "absl/types/optional.h"
#include "api/array_view.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/fec_controller.h"
#include "api/function_view.h"
#include "api/media_stream_interface.h"
@@ -50,7 +51,6 @@
#include "api/video_codecs/video_encoder.h"
#include "api/video_codecs/video_encoder_factory.h"
#include "media/base/media_constants.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/checks.h"
#include "rtc_base/network.h"
#include "rtc_base/rtc_certificate_generator.h"
diff --git a/api/voip/BUILD.gn b/api/voip/BUILD.gn
index 714490a..f175c30 100644
--- a/api/voip/BUILD.gn
+++ b/api/voip/BUILD.gn
@@ -41,8 +41,8 @@
"..:scoped_refptr",
"../../audio/voip:voip_core",
"../../modules/audio_device:audio_device_api",
- "../../modules/audio_processing:api",
"../../rtc_base:logging",
+ "../audio:audio_processing",
"../audio_codecs:audio_codecs_api",
"../task_queue",
]
diff --git a/api/voip/voip_engine_factory.h b/api/voip/voip_engine_factory.h
index 62fe801..3abced7 100644
--- a/api/voip/voip_engine_factory.h
+++ b/api/voip/voip_engine_factory.h
@@ -13,13 +13,13 @@
#include <memory>
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/scoped_refptr.h"
#include "api/task_queue/task_queue_factory.h"
#include "api/voip/voip_engine.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/audio/BUILD.gn b/audio/BUILD.gn
index 536e192..07a0006 100644
--- a/audio/BUILD.gn
+++ b/audio/BUILD.gn
@@ -52,6 +52,7 @@
"../api/audio:audio_frame_api",
"../api/audio:audio_frame_processor",
"../api/audio:audio_mixer_api",
+ "../api/audio:audio_processing",
"../api/audio_codecs:audio_codecs_api",
"../api/crypto:frame_decryptor_interface",
"../api/crypto:frame_encryptor_interface",
@@ -80,7 +81,6 @@
"../modules/audio_coding:red",
"../modules/audio_device",
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../modules/audio_processing:audio_frame_proxies",
"../modules/audio_processing:rms_level",
"../modules/pacing",
@@ -171,6 +171,7 @@
"../api:mock_transformable_audio_frame",
"../api:scoped_refptr",
"../api/audio:audio_frame_api",
+ "../api/audio:audio_processing_statistics",
"../api/audio_codecs:audio_codecs_api",
"../api/audio_codecs:builtin_audio_encoder_factory",
"../api/audio_codecs/opus:audio_decoder_opus",
@@ -195,7 +196,6 @@
"../modules/audio_device:mock_audio_device",
"../modules/audio_mixer:audio_mixer_impl",
"../modules/audio_mixer:audio_mixer_test_utils",
- "../modules/audio_processing:audio_processing_statistics",
"../modules/audio_processing:mocks",
"../modules/pacing",
"../modules/rtp_rtcp:mock_rtp_rtcp",
diff --git a/audio/audio_send_stream.cc b/audio/audio_send_stream.cc
index 59b0ea5..27c733f 100644
--- a/audio/audio_send_stream.cc
+++ b/audio/audio_send_stream.cc
@@ -15,6 +15,7 @@
#include <utility>
#include <vector>
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/audio_codecs/audio_format.h"
@@ -34,7 +35,6 @@
#include "media/base/media_channel.h"
#include "modules/audio_coding/codecs/cng/audio_encoder_cng.h"
#include "modules/audio_coding/codecs/red/audio_encoder_copy_red.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/rtp_rtcp/source/rtp_header_extensions.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
diff --git a/audio/audio_send_stream_unittest.cc b/audio/audio_send_stream_unittest.cc
index 60d87eb..d71776e 100644
--- a/audio/audio_send_stream_unittest.cc
+++ b/audio/audio_send_stream_unittest.cc
@@ -16,6 +16,7 @@
#include <utility>
#include <vector>
+#include "api/audio/audio_processing_statistics.h"
#include "api/task_queue/default_task_queue_factory.h"
#include "api/test/mock_frame_encryptor.h"
#include "audio/audio_state.h"
@@ -27,7 +28,6 @@
#include "modules/audio_device/include/mock_audio_device.h"
#include "modules/audio_mixer/audio_mixer_impl.h"
#include "modules/audio_mixer/sine_wave_generator.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "modules/audio_processing/include/mock_audio_processing.h"
#include "modules/rtp_rtcp/mocks/mock_network_link_rtcp_observer.h"
#include "modules/rtp_rtcp/mocks/mock_rtp_rtcp.h"
diff --git a/audio/audio_transport_impl.h b/audio/audio_transport_impl.h
index 24b09d2..d7a4b7d 100644
--- a/audio/audio_transport_impl.h
+++ b/audio/audio_transport_impl.h
@@ -15,11 +15,11 @@
#include <vector>
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/scoped_refptr.h"
#include "common_audio/resampler/include/push_resampler.h"
#include "modules/async_audio_processing/async_audio_processing.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/synchronization/mutex.h"
#include "rtc_base/thread_annotations.h"
diff --git a/audio/voip/BUILD.gn b/audio/voip/BUILD.gn
index 75f20a6..2b07179 100644
--- a/audio/voip/BUILD.gn
+++ b/audio/voip/BUILD.gn
@@ -17,12 +17,12 @@
":audio_channel",
"..:audio",
"../../api:scoped_refptr",
+ "../../api/audio:audio_processing",
"../../api/audio_codecs:audio_codecs_api",
"../../api/task_queue",
"../../api/voip:voip_api",
"../../modules/audio_device:audio_device_api",
"../../modules/audio_mixer:audio_mixer_impl",
- "../../modules/audio_processing:api",
"../../rtc_base:criticalsection",
"../../rtc_base:logging",
"../../rtc_base/synchronization:mutex",
diff --git a/audio/voip/voip_core.h b/audio/voip/voip_core.h
index 6c3aec6..2c7c7ee7 100644
--- a/audio/voip/voip_core.h
+++ b/audio/voip/voip_core.h
@@ -17,6 +17,7 @@
#include <unordered_map>
#include <vector>
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/scoped_refptr.h"
@@ -32,7 +33,6 @@
#include "audio/voip/audio_channel.h"
#include "modules/audio_device/include/audio_device.h"
#include "modules/audio_mixer/audio_mixer_impl.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/synchronization/mutex.h"
namespace webrtc {
diff --git a/call/BUILD.gn b/call/BUILD.gn
index c472fa0..43e32a3 100644
--- a/call/BUILD.gn
+++ b/call/BUILD.gn
@@ -52,6 +52,8 @@
"../api/adaptation:resource_adaptation_api",
"../api/audio:audio_frame_processor",
"../api/audio:audio_mixer_api",
+ "../api/audio:audio_processing",
+ "../api/audio:audio_processing_statistics",
"../api/audio_codecs:audio_codecs_api",
"../api/crypto:frame_encryptor_interface",
"../api/crypto:options",
@@ -64,8 +66,6 @@
"../modules/async_audio_processing",
"../modules/audio_device",
"../modules/audio_processing",
- "../modules/audio_processing:api",
- "../modules/audio_processing:audio_processing_statistics",
"../modules/rtp_rtcp",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:audio_format_to_string",
diff --git a/call/audio_send_stream.h b/call/audio_send_stream.h
index 9c2fad6..798b1cd 100644
--- a/call/audio_send_stream.h
+++ b/call/audio_send_stream.h
@@ -16,6 +16,7 @@
#include <vector>
#include "absl/types/optional.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_codecs/audio_encoder_factory.h"
@@ -29,7 +30,6 @@
#include "api/scoped_refptr.h"
#include "call/audio_sender.h"
#include "call/rtp_config.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "modules/rtp_rtcp/include/report_block_data.h"
namespace webrtc {
diff --git a/call/audio_state.h b/call/audio_state.h
index 79fb5cf..8f6bc7d 100644
--- a/call/audio_state.h
+++ b/call/audio_state.h
@@ -11,10 +11,10 @@
#define CALL_AUDIO_STATE_H_
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/scoped_refptr.h"
#include "modules/async_audio_processing/async_audio_processing.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/ref_count.h"
namespace webrtc {
diff --git a/examples/BUILD.gn b/examples/BUILD.gn
index 026c974..c66f282 100644
--- a/examples/BUILD.gn
+++ b/examples/BUILD.gn
@@ -489,12 +489,12 @@
"../api:libjingle_peerconnection_api",
"../api:scoped_refptr",
"../api:sequence_checker",
+ "../api/audio:audio_processing",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
"../api/rtc_event_log:rtc_event_log_factory",
"../api/task_queue:default_task_queue_factory",
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../pc:libjingle_peerconnection",
"../rtc_base/synchronization:mutex",
"../sdk:base_objc",
@@ -690,6 +690,7 @@
"../api:rtp_sender_interface",
"../api:scoped_refptr",
"../api/audio:audio_mixer_api",
+ "../api/audio:audio_processing",
"../api/audio_codecs:audio_codecs_api",
"../api/task_queue:pending_task_safety_flag",
"../api/units:time_delta",
@@ -768,7 +769,6 @@
"../media:rtc_audio_video",
"../modules/audio_device",
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../modules/video_capture:video_capture_module",
"../pc:libjingle_peerconnection",
"../rtc_base:rtc_json",
diff --git a/examples/objcnativeapi/objc/objc_call_client.mm b/examples/objcnativeapi/objc/objc_call_client.mm
index 2601bee..a794f96 100644
--- a/examples/objcnativeapi/objc/objc_call_client.mm
+++ b/examples/objcnativeapi/objc/objc_call_client.mm
@@ -18,13 +18,13 @@
#import "sdk/objc/components/video_codec/RTCDefaultVideoEncoderFactory.h"
#import "sdk/objc/helpers/RTCCameraPreviewView.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/enable_media.h"
#include "api/peer_connection_interface.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
#include "api/task_queue/default_task_queue_factory.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "sdk/objc/native/api/video_capturer.h"
#include "sdk/objc/native/api/video_decoder_factory.h"
#include "sdk/objc/native/api/video_encoder_factory.h"
diff --git a/examples/peerconnection/client/conductor.cc b/examples/peerconnection/client/conductor.cc
index f94a981..1dd9dcd 100644
--- a/examples/peerconnection/client/conductor.cc
+++ b/examples/peerconnection/client/conductor.cc
@@ -20,6 +20,7 @@
#include "absl/memory/memory.h"
#include "absl/types/optional.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
@@ -41,7 +42,6 @@
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "examples/peerconnection/client/defaults.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/video_capture/video_capture.h"
#include "modules/video_capture/video_capture_factory.h"
#include "p2p/base/port_allocator.h"
diff --git a/media/BUILD.gn b/media/BUILD.gn
index 6568944..6a13f78 100644
--- a/media/BUILD.gn
+++ b/media/BUILD.gn
@@ -106,7 +106,6 @@
"../common_video",
"../modules/async_audio_processing",
"../modules/audio_device",
- "../modules/audio_processing:audio_processing_statistics",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:async_packet_socket",
"../rtc_base:buffer",
@@ -329,6 +328,7 @@
"../api:rtp_parameters",
"../api:rtp_sender_interface",
"../api:scoped_refptr",
+ "../api/audio:audio_processing_statistics",
"../api/audio_codecs:audio_codecs_api",
"../api/crypto:frame_decryptor_interface",
"../api/crypto:frame_encryptor_interface",
@@ -344,7 +344,6 @@
"../api/video_codecs:video_codecs_api",
"../call:video_stream_api",
"../common_video",
- "../modules/audio_processing:audio_processing_statistics",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../rtc_base:async_packet_socket",
"../rtc_base:buffer",
@@ -581,6 +580,8 @@
"../api/audio:audio_frame_api",
"../api/audio:audio_frame_processor",
"../api/audio:audio_mixer_api",
+ "../api/audio:audio_processing",
+ "../api/audio:audio_processing_statistics",
"../api/audio_codecs:audio_codecs_api",
"../api/crypto:frame_decryptor_interface",
"../api/crypto:frame_encryptor_interface",
@@ -615,8 +616,6 @@
"../modules/audio_device",
"../modules/audio_device:audio_device_impl",
"../modules/audio_mixer:audio_mixer_impl",
- "../modules/audio_processing:api",
- "../modules/audio_processing:audio_processing_statistics",
"../modules/audio_processing/aec_dump",
"../modules/audio_processing/agc:gain_control_interface",
"../modules/rtp_rtcp",
@@ -807,6 +806,7 @@
"../api:fec_controller_api",
"../api:rtp_parameters",
"../api:scoped_refptr",
+ "../api/audio:audio_processing",
"../api/environment",
"../api/task_queue",
"../api/task_queue:pending_task_safety_flag",
@@ -821,7 +821,6 @@
"../call:video_stream_api",
"../common_video",
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../modules/video_coding:video_codec_interface",
"../modules/video_coding:video_coding_utility",
@@ -955,7 +954,6 @@
"../modules/audio_device:mock_audio_device",
"../modules/audio_mixer:audio_mixer_impl",
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../modules/audio_processing:mocks",
"../modules/rtp_rtcp",
"../modules/rtp_rtcp:rtp_rtcp_format",
diff --git a/media/base/fake_media_engine.h b/media/base/fake_media_engine.h
index eddc760..6453890 100644
--- a/media/base/fake_media_engine.h
+++ b/media/base/fake_media_engine.h
@@ -23,6 +23,7 @@
#include "absl/algorithm/container.h"
#include "absl/functional/any_invocable.h"
+#include "api/audio/audio_processing.h"
#include "api/call/audio_sink.h"
#include "api/media_types.h"
#include "media/base/audio_source.h"
@@ -32,7 +33,6 @@
#include "media/base/rtp_utils.h"
#include "media/base/stream_params.h"
#include "media/engine/webrtc_video_engine.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
#include "rtc_base/copy_on_write_buffer.h"
#include "rtc_base/network_route.h"
diff --git a/media/base/media_channel.h b/media/base/media_channel.h
index 124f68c..3721e5f 100644
--- a/media/base/media_channel.h
+++ b/media/base/media_channel.h
@@ -19,6 +19,7 @@
#include <vector>
#include "absl/types/optional.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/audio_options.h"
#include "api/call/audio_sink.h"
@@ -45,7 +46,6 @@
#include "media/base/codec.h"
#include "media/base/media_constants.h"
#include "media/base/stream_params.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "modules/rtp_rtcp/include/report_block_data.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
#include "rtc_base/async_packet_socket.h"
diff --git a/media/base/media_engine.h b/media/base/media_engine.h
index b054893..8d5b01c 100644
--- a/media/base/media_engine.h
+++ b/media/base/media_engine.h
@@ -32,7 +32,6 @@
namespace webrtc {
class AudioDeviceModule;
class AudioMixer;
-class AudioProcessing;
class Call;
} // namespace webrtc
diff --git a/media/engine/webrtc_voice_engine.cc b/media/engine/webrtc_voice_engine.cc
index 23a1b19..704544c 100644
--- a/media/engine/webrtc_voice_engine.cc
+++ b/media/engine/webrtc_voice_engine.cc
@@ -29,6 +29,8 @@
#include "absl/types/optional.h"
#include "api/audio/audio_frame.h"
#include "api/audio/audio_frame_processor.h"
+#include "api/audio/audio_processing.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/call/audio_sink.h"
@@ -57,8 +59,6 @@
#include "media/engine/webrtc_media_engine.h"
#include "modules/async_audio_processing/async_audio_processing.h"
#include "modules/audio_mixer/audio_mixer_impl.h"
-#include "modules/audio_processing/include/audio_processing.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "modules/rtp_rtcp/include/report_block_data.h"
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
diff --git a/media/engine/webrtc_voice_engine.h b/media/engine/webrtc_voice_engine.h
index b28b965..d668287 100644
--- a/media/engine/webrtc_voice_engine.h
+++ b/media/engine/webrtc_voice_engine.h
@@ -26,6 +26,7 @@
#include "absl/types/optional.h"
#include "api/audio/audio_frame_processor.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_codec_pair_id.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
@@ -59,7 +60,6 @@
#include "media/base/stream_params.h"
#include "modules/async_audio_processing/async_audio_processing.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/rtp_rtcp/include/rtp_header_extension_map.h"
#include "modules/rtp_rtcp/source/rtp_packet_received.h"
#include "rtc_base/buffer.h"
diff --git a/modules/audio_mixer/BUILD.gn b/modules/audio_mixer/BUILD.gn
index fb038bf..d97d180 100644
--- a/modules/audio_mixer/BUILD.gn
+++ b/modules/audio_mixer/BUILD.gn
@@ -43,6 +43,8 @@
"../../api:scoped_refptr",
"../../api/audio:audio_frame_api",
"../../api/audio:audio_mixer_api",
+ "../../api/audio:audio_processing",
+ "../../api/audio:audio_processing",
"../../audio/utility:audio_frame_operations",
"../../common_audio",
"../../rtc_base:checks",
@@ -55,7 +57,6 @@
"../../rtc_base/synchronization:mutex",
"../../system_wrappers",
"../../system_wrappers:metrics",
- "../audio_processing:api",
"../audio_processing:apm_logging",
"../audio_processing:audio_frame_view",
"../audio_processing/agc2:fixed_digital",
diff --git a/modules/audio_mixer/default_output_rate_calculator.cc b/modules/audio_mixer/default_output_rate_calculator.cc
index 5f24b65..e0e7417 100644
--- a/modules/audio_mixer/default_output_rate_calculator.cc
+++ b/modules/audio_mixer/default_output_rate_calculator.cc
@@ -13,7 +13,7 @@
#include <algorithm>
#include <iterator>
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
#include "rtc_base/checks.h"
namespace webrtc {
diff --git a/modules/audio_mixer/frame_combiner.cc b/modules/audio_mixer/frame_combiner.cc
index 96c62f6..96d1d86 100644
--- a/modules/audio_mixer/frame_combiner.cc
+++ b/modules/audio_mixer/frame_combiner.cc
@@ -20,13 +20,13 @@
#include <vector>
#include "api/array_view.h"
+#include "api/audio/audio_processing.h"
#include "api/rtp_packet_info.h"
#include "api/rtp_packet_infos.h"
#include "common_audio/include/audio_util.h"
#include "modules/audio_mixer/audio_frame_manipulator.h"
#include "modules/audio_mixer/audio_mixer_impl.h"
#include "modules/audio_processing/include/audio_frame_view.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/logging/apm_data_dumper.h"
#include "rtc_base/arraysize.h"
#include "rtc_base/checks.h"
diff --git a/modules/audio_processing/BUILD.gn b/modules/audio_processing/BUILD.gn
index ba9ec95..0bfee01 100644
--- a/modules/audio_processing/BUILD.gn
+++ b/modules/audio_processing/BUILD.gn
@@ -21,33 +21,8 @@
rtc_library("api") {
visibility = [ "*" ]
- sources = [
- "include/audio_processing.cc",
- "include/audio_processing.h",
- ]
- deps = [
- ":audio_frame_view",
- ":audio_processing_statistics",
- "../../api:array_view",
- "../../api:ref_count",
- "../../api:scoped_refptr",
- "../../api/audio:aec3_config",
- "../../api/audio:audio_frame_api",
- "../../api/audio:echo_control",
- "../../api/task_queue",
- "../../rtc_base:macromagic",
- "../../rtc_base:refcount",
- "../../rtc_base:stringutils",
- "../../rtc_base/system:arch",
- "../../rtc_base/system:file_wrapper",
- "../../rtc_base/system:rtc_export",
- "agc:gain_control_interface",
- ]
- absl_deps = [
- "//third_party/abseil-cpp/absl/base:nullability",
- "//third_party/abseil-cpp/absl/strings",
- "//third_party/abseil-cpp/absl/types:optional",
- ]
+ sources = [ "include/audio_processing.h" ]
+ deps = [ "../../api/audio:audio_processing" ]
}
rtc_library("audio_frame_proxies") {
@@ -57,9 +32,9 @@
"include/audio_frame_proxies.h",
]
deps = [
- ":api",
":audio_frame_view",
"../../api/audio:audio_frame_api",
+ "../../api/audio:audio_processing",
]
}
@@ -80,8 +55,8 @@
defines = []
deps = [
- ":api",
"../../api:array_view",
+ "../../api/audio:audio_processing",
"../../common_audio",
"../../common_audio:common_audio_c",
"../../rtc_base:checks",
@@ -114,8 +89,8 @@
]
deps = [
- ":api",
":audio_frame_view",
+ "../../api/audio:audio_processing",
]
absl_deps = [
"//third_party/abseil-cpp/absl/base:core_headers",
@@ -132,10 +107,10 @@
defines = []
deps = [
":aec_dump_interface",
- ":api",
":apm_logging",
":audio_buffer",
":audio_frame_view",
+ "../../api/audio:audio_processing",
"../../common_audio",
"../../rtc_base:checks",
"../../rtc_base:logging",
@@ -171,12 +146,10 @@
defines = []
deps = [
":aec_dump_interface",
- ":api",
":apm_logging",
":audio_buffer",
":audio_frame_proxies",
":audio_frame_view",
- ":audio_processing_statistics",
":gain_controller2",
":high_pass_filter",
":optionally_built_submodule_creators",
@@ -186,6 +159,8 @@
"../../api:make_ref_counted",
"../../api/audio:aec3_config",
"../../api/audio:audio_frame_api",
+ "../../api/audio:audio_processing",
+ "../../api/audio:audio_processing_statistics",
"../../api/audio:echo_control",
"../../api/task_queue",
"../../audio/utility:audio_frame_operations",
@@ -255,9 +230,9 @@
"residual_echo_detector.h",
]
deps = [
- ":api",
":apm_logging",
"../../api:array_view",
+ "../../api/audio:audio_processing",
"../../rtc_base:checks",
"../../rtc_base:logging",
"../../system_wrappers:metrics",
@@ -291,12 +266,8 @@
rtc_library("audio_processing_statistics") {
visibility = [ "*" ]
- sources = [
- "include/audio_processing_statistics.cc",
- "include/audio_processing_statistics.h",
- ]
- deps = [ "../../rtc_base/system:rtc_export" ]
- absl_deps = [ "//third_party/abseil-cpp/absl/types:optional" ]
+ sources = [ "include/audio_processing_statistics.h" ]
+ deps = [ "../../api/audio:audio_processing_statistics" ]
}
rtc_source_set("audio_frame_view") {
@@ -337,10 +308,10 @@
sources = [ "include/mock_audio_processing.h" ]
deps = [
":aec_dump_interface",
- ":api",
":audio_buffer",
":audio_processing",
- ":audio_processing_statistics",
+ "../../api/audio:audio_processing",
+ "../../api/audio:audio_processing_statistics",
"../../api/task_queue",
"../../test:test_support",
]
@@ -386,7 +357,6 @@
deps = [
":aec3_config_json",
":analog_mic_simulation",
- ":api",
":apm_logging",
":audio_buffer",
":audio_frame_view",
@@ -400,6 +370,7 @@
"../../api:scoped_refptr",
"../../api/audio:aec3_config",
"../../api/audio:aec3_factory",
+ "../../api/audio:audio_processing",
"../../api/audio:echo_detector_creator",
"../../common_audio",
"../../common_audio:common_audio_c",
@@ -568,7 +539,6 @@
deps = [
":aec3_config_json",
":analog_mic_simulation",
- ":api",
":apm_logging",
":audio_processing",
":audioproc_debug_proto",
@@ -576,6 +546,7 @@
":audioproc_test_utils",
":runtime_settings_protobuf_utils",
"../../api/audio:aec3_factory",
+ "../../api/audio:audio_processing",
"../../api/audio:echo_detector_creator",
"../../common_audio",
"../../rtc_base:checks",
@@ -631,9 +602,9 @@
]
deps = [
- ":api",
":audioproc_debug_proto",
":audioproc_protobuf_utils",
+ "../../api/audio:audio_processing",
"../../rtc_base:checks",
]
}
@@ -661,11 +632,11 @@
configs += [ ":apm_debug_dump" ]
deps = [
- ":api",
":audio_buffer",
":audio_processing",
"../../api:array_view",
"../../api/audio:audio_frame_api",
+ "../../api/audio:audio_processing",
"../../common_audio",
"../../rtc_base:checks",
"../../rtc_base:random",
diff --git a/modules/audio_processing/aec_dump/BUILD.gn b/modules/audio_processing/aec_dump/BUILD.gn
index 5193e28..2757a28 100644
--- a/modules/audio_processing/aec_dump/BUILD.gn
+++ b/modules/audio_processing/aec_dump/BUILD.gn
@@ -47,9 +47,9 @@
deps = [
":mock_aec_dump",
- "..:api",
"..:audioproc_test_utils",
"../",
+ "../../../api/audio:audio_processing",
"//testing/gtest",
]
}
diff --git a/modules/audio_processing/aec_dump/aec_dump_integration_test.cc b/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
index 503135d..067e373 100644
--- a/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
+++ b/modules/audio_processing/aec_dump/aec_dump_integration_test.cc
@@ -12,9 +12,9 @@
#include <memory>
#include <utility>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/aec_dump/mock_aec_dump.h"
#include "modules/audio_processing/audio_processing_impl.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/test/audio_processing_builder_for_testing.h"
using ::testing::_;
diff --git a/modules/audio_processing/agc/BUILD.gn b/modules/audio_processing/agc/BUILD.gn
index 508f901..2831282 100644
--- a/modules/audio_processing/agc/BUILD.gn
+++ b/modules/audio_processing/agc/BUILD.gn
@@ -21,11 +21,11 @@
deps = [
":gain_control_interface",
":level_estimation",
- "..:api",
"..:apm_logging",
"..:audio_buffer",
"..:audio_frame_view",
"../../../api:array_view",
+ "../../../api/audio:audio_processing",
"../../../common_audio",
"../../../common_audio:common_audio_c",
"../../../rtc_base:checks",
diff --git a/modules/audio_processing/agc/agc_manager_direct.h b/modules/audio_processing/agc/agc_manager_direct.h
index adb2f5a..62b0e0e 100644
--- a/modules/audio_processing/agc/agc_manager_direct.h
+++ b/modules/audio_processing/agc/agc_manager_direct.h
@@ -16,10 +16,10 @@
#include "absl/types/optional.h"
#include "api/array_view.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/agc/agc.h"
#include "modules/audio_processing/agc2/clipping_predictor.h"
#include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/logging/apm_data_dumper.h"
#include "rtc_base/gtest_prod_util.h"
diff --git a/modules/audio_processing/agc2/BUILD.gn b/modules/audio_processing/agc2/BUILD.gn
index bd59ad3..5cc3db0 100644
--- a/modules/audio_processing/agc2/BUILD.gn
+++ b/modules/audio_processing/agc2/BUILD.gn
@@ -23,9 +23,9 @@
deps = [
":common",
- "..:api",
"..:apm_logging",
"../../../api:array_view",
+ "../../../api/audio:audio_processing",
"../../../rtc_base:checks",
"../../../rtc_base:logging",
"../../../rtc_base:safe_minmax",
@@ -48,9 +48,9 @@
deps = [
":common",
":gain_applier",
- "..:api",
"..:apm_logging",
"..:audio_frame_view",
+ "../../../api/audio:audio_processing",
"../../../common_audio",
"../../../rtc_base:checks",
"../../../rtc_base:logging",
@@ -112,8 +112,8 @@
deps = [
":gain_map",
- "..:api",
"..:audio_frame_view",
+ "../../../api/audio:audio_processing",
"../../../common_audio",
"../../../rtc_base:checks",
"../../../rtc_base:logging",
@@ -209,10 +209,10 @@
":clipping_predictor",
":gain_map",
":input_volume_stats_reporter",
- "..:api",
"..:audio_buffer",
"..:audio_frame_view",
"../../../api:array_view",
+ "../../../api/audio:audio_processing",
"../../../rtc_base:checks",
"../../../rtc_base:checks",
"../../../rtc_base:gtest_prod",
@@ -303,8 +303,8 @@
deps = [
":common",
":speech_level_estimator",
- "..:api",
"..:apm_logging",
+ "../../../api/audio:audio_processing",
"../../../rtc_base:gunit_helpers",
"../../../test:test_support",
]
@@ -320,9 +320,9 @@
":adaptive_digital_gain_controller",
":common",
":test_utils",
- "..:api",
"..:apm_logging",
"..:audio_frame_view",
+ "../../../api/audio:audio_processing",
"../../../common_audio",
"../../../rtc_base:gunit_helpers",
"../../../test:test_support",
@@ -413,7 +413,6 @@
":clipping_predictor",
":gain_map",
":input_volume_controller",
- "..:api",
"../../../api:array_view",
"../../../rtc_base:checks",
"../../../rtc_base:random",
diff --git a/modules/audio_processing/agc2/adaptive_digital_gain_controller.h b/modules/audio_processing/agc2/adaptive_digital_gain_controller.h
index 01335e7..9ae74a2 100644
--- a/modules/audio_processing/agc2/adaptive_digital_gain_controller.h
+++ b/modules/audio_processing/agc2/adaptive_digital_gain_controller.h
@@ -13,9 +13,9 @@
#include <vector>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/agc2/gain_applier.h"
#include "modules/audio_processing/include/audio_frame_view.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/modules/audio_processing/agc2/adaptive_digital_gain_controller_unittest.cc b/modules/audio_processing/agc2/adaptive_digital_gain_controller_unittest.cc
index cff9b4e..88fb792 100644
--- a/modules/audio_processing/agc2/adaptive_digital_gain_controller_unittest.cc
+++ b/modules/audio_processing/agc2/adaptive_digital_gain_controller_unittest.cc
@@ -13,10 +13,10 @@
#include <algorithm>
#include <memory>
+#include "api/audio/audio_processing.h"
#include "common_audio/include/audio_util.h"
#include "modules/audio_processing/agc2/agc2_common.h"
#include "modules/audio_processing/agc2/vector_float_frame.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/logging/apm_data_dumper.h"
#include "rtc_base/gunit.h"
diff --git a/modules/audio_processing/agc2/clipping_predictor.h b/modules/audio_processing/agc2/clipping_predictor.h
index 1461250..5332719 100644
--- a/modules/audio_processing/agc2/clipping_predictor.h
+++ b/modules/audio_processing/agc2/clipping_predictor.h
@@ -15,8 +15,8 @@
#include <vector>
#include "absl/types/optional.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/include/audio_frame_view.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/modules/audio_processing/agc2/input_volume_controller.h b/modules/audio_processing/agc2/input_volume_controller.h
index 0bec7af..b61f68f 100644
--- a/modules/audio_processing/agc2/input_volume_controller.h
+++ b/modules/audio_processing/agc2/input_volume_controller.h
@@ -16,9 +16,9 @@
#include "absl/types/optional.h"
#include "api/array_view.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/agc2/clipping_predictor.h"
#include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/gtest_prod_util.h"
namespace webrtc {
diff --git a/modules/audio_processing/agc2/speech_level_estimator.h b/modules/audio_processing/agc2/speech_level_estimator.h
index 4d9f106..adbf84c 100644
--- a/modules/audio_processing/agc2/speech_level_estimator.h
+++ b/modules/audio_processing/agc2/speech_level_estimator.h
@@ -15,8 +15,8 @@
#include <type_traits>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/agc2/agc2_common.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
class ApmDataDumper;
diff --git a/modules/audio_processing/agc2/speech_level_estimator_unittest.cc b/modules/audio_processing/agc2/speech_level_estimator_unittest.cc
index 2e627a4..939b114 100644
--- a/modules/audio_processing/agc2/speech_level_estimator_unittest.cc
+++ b/modules/audio_processing/agc2/speech_level_estimator_unittest.cc
@@ -12,8 +12,8 @@
#include <memory>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/agc2/agc2_common.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/logging/apm_data_dumper.h"
#include "rtc_base/gunit.h"
diff --git a/modules/audio_processing/audio_buffer.h b/modules/audio_processing/audio_buffer.h
index b9ea300..fd69f74 100644
--- a/modules/audio_processing/audio_buffer.h
+++ b/modules/audio_processing/audio_buffer.h
@@ -17,8 +17,8 @@
#include <memory>
#include <vector>
+#include "api/audio/audio_processing.h"
#include "common_audio/channel_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/modules/audio_processing/audio_processing_builder_impl.cc b/modules/audio_processing/audio_processing_builder_impl.cc
index a246448..d02ac82 100644
--- a/modules/audio_processing/audio_processing_builder_impl.cc
+++ b/modules/audio_processing/audio_processing_builder_impl.cc
@@ -10,9 +10,9 @@
#include <memory>
+#include "api/audio/audio_processing.h"
#include "api/make_ref_counted.h"
#include "modules/audio_processing/audio_processing_impl.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/modules/audio_processing/audio_processing_impl.h b/modules/audio_processing/audio_processing_impl.h
index 2c0ab19..51b9ffd 100644
--- a/modules/audio_processing/audio_processing_impl.h
+++ b/modules/audio_processing/audio_processing_impl.h
@@ -23,6 +23,8 @@
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
#include "api/array_view.h"
+#include "api/audio/audio_processing.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/function_view.h"
#include "api/task_queue/task_queue_base.h"
#include "modules/audio_processing/aec3/echo_canceller3.h"
@@ -37,8 +39,6 @@
#include "modules/audio_processing/high_pass_filter.h"
#include "modules/audio_processing/include/aec_dump.h"
#include "modules/audio_processing/include/audio_frame_proxies.h"
-#include "modules/audio_processing/include/audio_processing.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "modules/audio_processing/ns/noise_suppressor.h"
#include "modules/audio_processing/optionally_built_submodule_creators.h"
#include "modules/audio_processing/render_queue_item_verifier.h"
diff --git a/modules/audio_processing/audio_processing_impl_unittest.cc b/modules/audio_processing/audio_processing_impl_unittest.cc
index e03f966..8bcc94c 100644
--- a/modules/audio_processing/audio_processing_impl_unittest.cc
+++ b/modules/audio_processing/audio_processing_impl_unittest.cc
@@ -16,9 +16,9 @@
#include <tuple>
#include "absl/types/optional.h"
+#include "api/audio/audio_processing.h"
#include "api/make_ref_counted.h"
#include "api/scoped_refptr.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/optionally_built_submodule_creators.h"
#include "modules/audio_processing/test/audio_processing_builder_for_testing.h"
#include "modules/audio_processing/test/echo_canceller_test_tools.h"
diff --git a/modules/audio_processing/audio_processing_unittest.cc b/modules/audio_processing/audio_processing_unittest.cc
index 2d3684e..4d3fc65 100644
--- a/modules/audio_processing/audio_processing_unittest.cc
+++ b/modules/audio_processing/audio_processing_unittest.cc
@@ -7,7 +7,7 @@
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
#include <math.h>
#include <stdio.h>
diff --git a/modules/audio_processing/echo_control_mobile_impl.cc b/modules/audio_processing/echo_control_mobile_impl.cc
index fa5cb8f..1dc66ab 100644
--- a/modules/audio_processing/echo_control_mobile_impl.cc
+++ b/modules/audio_processing/echo_control_mobile_impl.cc
@@ -14,9 +14,9 @@
#include <cstdint>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/aecm/echo_control_mobile.h"
#include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/checks.h"
namespace webrtc {
diff --git a/modules/audio_processing/echo_control_mobile_unittest.cc b/modules/audio_processing/echo_control_mobile_unittest.cc
index ed03930..dc11a81 100644
--- a/modules/audio_processing/echo_control_mobile_unittest.cc
+++ b/modules/audio_processing/echo_control_mobile_unittest.cc
@@ -11,8 +11,8 @@
#include <array>
#include <vector>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/echo_control_mobile_impl.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "test/gtest.h"
namespace webrtc {
diff --git a/modules/audio_processing/gain_control_impl.cc b/modules/audio_processing/gain_control_impl.cc
index 5f2b487..2a7f527 100644
--- a/modules/audio_processing/gain_control_impl.cc
+++ b/modules/audio_processing/gain_control_impl.cc
@@ -13,9 +13,9 @@
#include <cstdint>
#include "absl/types/optional.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/agc/legacy/gain_control.h"
#include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/logging/apm_data_dumper.h"
#include "rtc_base/checks.h"
#include "rtc_base/logging.h"
diff --git a/modules/audio_processing/gain_controller2.h b/modules/audio_processing/gain_controller2.h
index 43b5828..f6be48a 100644
--- a/modules/audio_processing/gain_controller2.h
+++ b/modules/audio_processing/gain_controller2.h
@@ -15,6 +15,7 @@
#include <memory>
#include <string>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/agc2/adaptive_digital_gain_controller.h"
#include "modules/audio_processing/agc2/cpu_features.h"
#include "modules/audio_processing/agc2/gain_applier.h"
@@ -24,7 +25,6 @@
#include "modules/audio_processing/agc2/saturation_protector.h"
#include "modules/audio_processing/agc2/speech_level_estimator.h"
#include "modules/audio_processing/agc2/vad_wrapper.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/logging/apm_data_dumper.h"
namespace webrtc {
diff --git a/modules/audio_processing/include/aec_dump.h b/modules/audio_processing/include/aec_dump.h
index 6f2eb64..f07b911 100644
--- a/modules/audio_processing/include/aec_dump.h
+++ b/modules/audio_processing/include/aec_dump.h
@@ -17,8 +17,8 @@
#include "absl/base/attributes.h"
#include "absl/types/optional.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/include/audio_frame_view.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/modules/audio_processing/include/audio_frame_proxies.cc b/modules/audio_processing/include/audio_frame_proxies.cc
index 7cc4fb7..e37645e 100644
--- a/modules/audio_processing/include/audio_frame_proxies.cc
+++ b/modules/audio_processing/include/audio_frame_proxies.cc
@@ -11,7 +11,7 @@
#include "modules/audio_processing/include/audio_frame_proxies.h"
#include "api/audio/audio_frame.h"
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
namespace webrtc {
diff --git a/modules/audio_processing/include/audio_processing.h b/modules/audio_processing/include/audio_processing.h
index 02fb497..fe938f8 100644
--- a/modules/audio_processing/include/audio_processing.h
+++ b/modules/audio_processing/include/audio_processing.h
@@ -11,931 +11,8 @@
#ifndef MODULES_AUDIO_PROCESSING_INCLUDE_AUDIO_PROCESSING_H_
#define MODULES_AUDIO_PROCESSING_INCLUDE_AUDIO_PROCESSING_H_
-// MSVC++ requires this to be set before any other includes to get M_PI.
-#ifndef _USE_MATH_DEFINES
-#define _USE_MATH_DEFINES
-#endif
-
-#include <math.h>
-#include <stddef.h> // size_t
-#include <stdio.h> // FILE
-#include <string.h>
-
-#include <vector>
-
-#include "absl/base/nullability.h"
-#include "absl/strings/string_view.h"
-#include "absl/types/optional.h"
-#include "api/array_view.h"
-#include "api/audio/echo_canceller3_config.h"
-#include "api/audio/echo_control.h"
-#include "api/ref_count.h"
-#include "api/scoped_refptr.h"
-#include "api/task_queue/task_queue_base.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
-#include "rtc_base/arraysize.h"
-#include "rtc_base/system/file_wrapper.h"
-#include "rtc_base/system/rtc_export.h"
-
-namespace webrtc {
-
-class AecDump;
-class AudioBuffer;
-
-class StreamConfig;
-class ProcessingConfig;
-
-class EchoDetector;
-class CustomAudioAnalyzer;
-class CustomProcessing;
-
-// The Audio Processing Module (APM) provides a collection of voice processing
-// components designed for real-time communications software.
-//
-// APM operates on two audio streams on a frame-by-frame basis. Frames of the
-// primary stream, on which all processing is applied, are passed to
-// `ProcessStream()`. Frames of the reverse direction stream are passed to
-// `ProcessReverseStream()`. On the client-side, this will typically be the
-// near-end (capture) and far-end (render) streams, respectively. APM should be
-// placed in the signal chain as close to the audio hardware abstraction layer
-// (HAL) as possible.
-//
-// On the server-side, the reverse stream will normally not be used, with
-// processing occurring on each incoming stream.
-//
-// Component interfaces follow a similar pattern and are accessed through
-// corresponding getters in APM. All components are disabled at create-time,
-// with default settings that are recommended for most situations. New settings
-// can be applied without enabling a component. Enabling a component triggers
-// memory allocation and initialization to allow it to start processing the
-// streams.
-//
-// Thread safety is provided with the following assumptions to reduce locking
-// overhead:
-// 1. The stream getters and setters are called from the same thread as
-// ProcessStream(). More precisely, stream functions are never called
-// concurrently with ProcessStream().
-// 2. Parameter getters are never called concurrently with the corresponding
-// setter.
-//
-// APM accepts only linear PCM audio data in chunks of ~10 ms (see
-// AudioProcessing::GetFrameSize() for details) and sample rates ranging from
-// 8000 Hz to 384000 Hz. The int16 interfaces use interleaved data, while the
-// float interfaces use deinterleaved data.
-//
-// Usage example, omitting error checking:
-// rtc::scoped_refptr<AudioProcessing> apm = AudioProcessingBuilder().Create();
-//
-// AudioProcessing::Config config;
-// config.echo_canceller.enabled = true;
-// config.echo_canceller.mobile_mode = false;
-//
-// config.gain_controller1.enabled = true;
-// config.gain_controller1.mode =
-// AudioProcessing::Config::GainController1::kAdaptiveAnalog;
-// config.gain_controller1.analog_level_minimum = 0;
-// config.gain_controller1.analog_level_maximum = 255;
-//
-// config.gain_controller2.enabled = true;
-//
-// config.high_pass_filter.enabled = true;
-//
-// apm->ApplyConfig(config)
-//
-// // Start a voice call...
-//
-// // ... Render frame arrives bound for the audio HAL ...
-// apm->ProcessReverseStream(render_frame);
-//
-// // ... Capture frame arrives from the audio HAL ...
-// // Call required set_stream_ functions.
-// apm->set_stream_delay_ms(delay_ms);
-// apm->set_stream_analog_level(analog_level);
-//
-// apm->ProcessStream(capture_frame);
-//
-// // Call required stream_ functions.
-// analog_level = apm->recommended_stream_analog_level();
-// has_voice = apm->stream_has_voice();
-//
-// // Repeat render and capture processing for the duration of the call...
-// // Start a new call...
-// apm->Initialize();
-//
-// // Close the application...
-// apm.reset();
-//
-class RTC_EXPORT AudioProcessing : public RefCountInterface {
- public:
- // The struct below constitutes the new parameter scheme for the audio
- // processing. It is being introduced gradually and until it is fully
- // introduced, it is prone to change.
- // TODO(peah): Remove this comment once the new config scheme is fully rolled
- // out.
- //
- // The parameters and behavior of the audio processing module are controlled
- // by changing the default values in the AudioProcessing::Config struct.
- // The config is applied by passing the struct to the ApplyConfig method.
- //
- // This config is intended to be used during setup, and to enable/disable
- // top-level processing effects. Use during processing may cause undesired
- // submodule resets, affecting the audio quality. Use the RuntimeSetting
- // construct for runtime configuration.
- struct RTC_EXPORT Config {
- // Sets the properties of the audio processing pipeline.
- struct RTC_EXPORT Pipeline {
- // Ways to downmix a multi-channel track to mono.
- enum class DownmixMethod {
- kAverageChannels, // Average across channels.
- kUseFirstChannel // Use the first channel.
- };
-
- // Maximum allowed processing rate used internally. May only be set to
- // 32000 or 48000 and any differing values will be treated as 48000.
- int maximum_internal_processing_rate = 48000;
- // Allow multi-channel processing of render audio.
- bool multi_channel_render = false;
- // Allow multi-channel processing of capture audio when AEC3 is active
- // or a custom AEC is injected..
- bool multi_channel_capture = false;
- // Indicates how to downmix multi-channel capture audio to mono (when
- // needed).
- DownmixMethod capture_downmix_method = DownmixMethod::kAverageChannels;
- } pipeline;
-
- // Enabled the pre-amplifier. It amplifies the capture signal
- // before any other processing is done.
- // TODO(webrtc:5298): Deprecate and use the pre-gain functionality in
- // capture_level_adjustment instead.
- struct PreAmplifier {
- bool enabled = false;
- float fixed_gain_factor = 1.0f;
- } pre_amplifier;
-
- // Functionality for general level adjustment in the capture pipeline. This
- // should not be used together with the legacy PreAmplifier functionality.
- struct CaptureLevelAdjustment {
- bool operator==(const CaptureLevelAdjustment& rhs) const;
- bool operator!=(const CaptureLevelAdjustment& rhs) const {
- return !(*this == rhs);
- }
- bool enabled = false;
- // The `pre_gain_factor` scales the signal before any processing is done.
- float pre_gain_factor = 1.0f;
- // The `post_gain_factor` scales the signal after all processing is done.
- float post_gain_factor = 1.0f;
- struct AnalogMicGainEmulation {
- bool operator==(const AnalogMicGainEmulation& rhs) const;
- bool operator!=(const AnalogMicGainEmulation& rhs) const {
- return !(*this == rhs);
- }
- bool enabled = false;
- // Initial analog gain level to use for the emulated analog gain. Must
- // be in the range [0...255].
- int initial_level = 255;
- } analog_mic_gain_emulation;
- } capture_level_adjustment;
-
- struct HighPassFilter {
- bool enabled = false;
- bool apply_in_full_band = true;
- } high_pass_filter;
-
- struct EchoCanceller {
- bool enabled = false;
- bool mobile_mode = false;
- bool export_linear_aec_output = false;
- // Enforce the highpass filter to be on (has no effect for the mobile
- // mode).
- bool enforce_high_pass_filtering = true;
- } echo_canceller;
-
- // Enables background noise suppression.
- struct NoiseSuppression {
- bool enabled = false;
- enum Level { kLow, kModerate, kHigh, kVeryHigh };
- Level level = kModerate;
- bool analyze_linear_aec_output_when_available = false;
- } noise_suppression;
-
- // Enables transient suppression.
- struct TransientSuppression {
- bool enabled = false;
- } transient_suppression;
-
- // Enables automatic gain control (AGC) functionality.
- // The automatic gain control (AGC) component brings the signal to an
- // appropriate range. This is done by applying a digital gain directly and,
- // in the analog mode, prescribing an analog gain to be applied at the audio
- // HAL.
- // Recommended to be enabled on the client-side.
- struct RTC_EXPORT GainController1 {
- bool operator==(const GainController1& rhs) const;
- bool operator!=(const GainController1& rhs) const {
- return !(*this == rhs);
- }
-
- bool enabled = false;
- enum Mode {
- // Adaptive mode intended for use if an analog volume control is
- // available on the capture device. It will require the user to provide
- // coupling between the OS mixer controls and AGC through the
- // stream_analog_level() functions.
- // It consists of an analog gain prescription for the audio device and a
- // digital compression stage.
- kAdaptiveAnalog,
- // Adaptive mode intended for situations in which an analog volume
- // control is unavailable. It operates in a similar fashion to the
- // adaptive analog mode, but with scaling instead applied in the digital
- // domain. As with the analog mode, it additionally uses a digital
- // compression stage.
- kAdaptiveDigital,
- // Fixed mode which enables only the digital compression stage also used
- // by the two adaptive modes.
- // It is distinguished from the adaptive modes by considering only a
- // short time-window of the input signal. It applies a fixed gain
- // through most of the input level range, and compresses (gradually
- // reduces gain with increasing level) the input signal at higher
- // levels. This mode is preferred on embedded devices where the capture
- // signal level is predictable, so that a known gain can be applied.
- kFixedDigital
- };
- Mode mode = kAdaptiveAnalog;
- // Sets the target peak level (or envelope) of the AGC in dBFs (decibels
- // from digital full-scale). The convention is to use positive values. For
- // instance, passing in a value of 3 corresponds to -3 dBFs, or a target
- // level 3 dB below full-scale. Limited to [0, 31].
- int target_level_dbfs = 3;
- // Sets the maximum gain the digital compression stage may apply, in dB. A
- // higher number corresponds to greater compression, while a value of 0
- // will leave the signal uncompressed. Limited to [0, 90].
- // For updates after APM setup, use a RuntimeSetting instead.
- int compression_gain_db = 9;
- // When enabled, the compression stage will hard limit the signal to the
- // target level. Otherwise, the signal will be compressed but not limited
- // above the target level.
- bool enable_limiter = true;
-
- // Enables the analog gain controller functionality.
- struct AnalogGainController {
- bool enabled = true;
- // TODO(bugs.webrtc.org/7494): Deprecated. Stop using and remove.
- int startup_min_volume = 0;
- // Lowest analog microphone level that will be applied in response to
- // clipping.
- int clipped_level_min = 70;
- // If true, an adaptive digital gain is applied.
- bool enable_digital_adaptive = true;
- // Amount the microphone level is lowered with every clipping event.
- // Limited to (0, 255].
- int clipped_level_step = 15;
- // Proportion of clipped samples required to declare a clipping event.
- // Limited to (0.f, 1.f).
- float clipped_ratio_threshold = 0.1f;
- // Time in frames to wait after a clipping event before checking again.
- // Limited to values higher than 0.
- int clipped_wait_frames = 300;
-
- // Enables clipping prediction functionality.
- struct ClippingPredictor {
- bool enabled = false;
- enum Mode {
- // Clipping event prediction mode with fixed step estimation.
- kClippingEventPrediction,
- // Clipped peak estimation mode with adaptive step estimation.
- kAdaptiveStepClippingPeakPrediction,
- // Clipped peak estimation mode with fixed step estimation.
- kFixedStepClippingPeakPrediction,
- };
- Mode mode = kClippingEventPrediction;
- // Number of frames in the sliding analysis window.
- int window_length = 5;
- // Number of frames in the sliding reference window.
- int reference_window_length = 5;
- // Reference window delay (unit: number of frames).
- int reference_window_delay = 5;
- // Clipping prediction threshold (dBFS).
- float clipping_threshold = -1.0f;
- // Crest factor drop threshold (dB).
- float crest_factor_margin = 3.0f;
- // If true, the recommended clipped level step is used to modify the
- // analog gain. Otherwise, the predictor runs without affecting the
- // analog gain.
- bool use_predicted_step = true;
- } clipping_predictor;
- } analog_gain_controller;
- } gain_controller1;
-
- // Parameters for AGC2, an Automatic Gain Control (AGC) sub-module which
- // replaces the AGC sub-module parametrized by `gain_controller1`.
- // AGC2 brings the captured audio signal to the desired level by combining
- // three different controllers (namely, input volume controller, adapative
- // digital controller and fixed digital controller) and a limiter.
- // TODO(bugs.webrtc.org:7494): Name `GainController` when AGC1 removed.
- struct RTC_EXPORT GainController2 {
- bool operator==(const GainController2& rhs) const;
- bool operator!=(const GainController2& rhs) const {
- return !(*this == rhs);
- }
-
- // AGC2 must be created if and only if `enabled` is true.
- bool enabled = false;
-
- // Parameters for the input volume controller, which adjusts the input
- // volume applied when the audio is captured (e.g., microphone volume on
- // a soundcard, input volume on HAL).
- struct InputVolumeController {
- bool operator==(const InputVolumeController& rhs) const;
- bool operator!=(const InputVolumeController& rhs) const {
- return !(*this == rhs);
- }
- bool enabled = false;
- } input_volume_controller;
-
- // Parameters for the adaptive digital controller, which adjusts and
- // applies a digital gain after echo cancellation and after noise
- // suppression.
- struct RTC_EXPORT AdaptiveDigital {
- bool operator==(const AdaptiveDigital& rhs) const;
- bool operator!=(const AdaptiveDigital& rhs) const {
- return !(*this == rhs);
- }
- bool enabled = false;
- float headroom_db = 5.0f;
- float max_gain_db = 50.0f;
- float initial_gain_db = 15.0f;
- float max_gain_change_db_per_second = 6.0f;
- float max_output_noise_level_dbfs = -50.0f;
- } adaptive_digital;
-
- // Parameters for the fixed digital controller, which applies a fixed
- // digital gain after the adaptive digital controller and before the
- // limiter.
- struct FixedDigital {
- // By setting `gain_db` to a value greater than zero, the limiter can be
- // turned into a compressor that first applies a fixed gain.
- float gain_db = 0.0f;
- } fixed_digital;
- } gain_controller2;
-
- std::string ToString() const;
- };
-
- // Specifies the properties of a setting to be passed to AudioProcessing at
- // runtime.
- class RuntimeSetting {
- public:
- enum class Type {
- kNotSpecified,
- kCapturePreGain,
- kCaptureCompressionGain,
- kCaptureFixedPostGain,
- kPlayoutVolumeChange,
- kCustomRenderProcessingRuntimeSetting,
- kPlayoutAudioDeviceChange,
- kCapturePostGain,
- kCaptureOutputUsed
- };
-
- // Play-out audio device properties.
- struct PlayoutAudioDeviceInfo {
- int id; // Identifies the audio device.
- int max_volume; // Maximum play-out volume.
- };
-
- RuntimeSetting() : type_(Type::kNotSpecified), value_(0.0f) {}
- ~RuntimeSetting() = default;
-
- static RuntimeSetting CreateCapturePreGain(float gain) {
- return {Type::kCapturePreGain, gain};
- }
-
- static RuntimeSetting CreateCapturePostGain(float gain) {
- return {Type::kCapturePostGain, gain};
- }
-
- // Corresponds to Config::GainController1::compression_gain_db, but for
- // runtime configuration.
- static RuntimeSetting CreateCompressionGainDb(int gain_db) {
- RTC_DCHECK_GE(gain_db, 0);
- RTC_DCHECK_LE(gain_db, 90);
- return {Type::kCaptureCompressionGain, static_cast<float>(gain_db)};
- }
-
- // Corresponds to Config::GainController2::fixed_digital::gain_db, but for
- // runtime configuration.
- static RuntimeSetting CreateCaptureFixedPostGain(float gain_db) {
- RTC_DCHECK_GE(gain_db, 0.0f);
- RTC_DCHECK_LE(gain_db, 90.0f);
- return {Type::kCaptureFixedPostGain, gain_db};
- }
-
- // Creates a runtime setting to notify play-out (aka render) audio device
- // changes.
- static RuntimeSetting CreatePlayoutAudioDeviceChange(
- PlayoutAudioDeviceInfo audio_device) {
- return {Type::kPlayoutAudioDeviceChange, audio_device};
- }
-
- // Creates a runtime setting to notify play-out (aka render) volume changes.
- // `volume` is the unnormalized volume, the maximum of which
- static RuntimeSetting CreatePlayoutVolumeChange(int volume) {
- return {Type::kPlayoutVolumeChange, volume};
- }
-
- static RuntimeSetting CreateCustomRenderSetting(float payload) {
- return {Type::kCustomRenderProcessingRuntimeSetting, payload};
- }
-
- static RuntimeSetting CreateCaptureOutputUsedSetting(
- bool capture_output_used) {
- return {Type::kCaptureOutputUsed, capture_output_used};
- }
-
- Type type() const { return type_; }
- // Getters do not return a value but instead modify the argument to protect
- // from implicit casting.
- void GetFloat(float* value) const {
- RTC_DCHECK(value);
- *value = value_.float_value;
- }
- void GetInt(int* value) const {
- RTC_DCHECK(value);
- *value = value_.int_value;
- }
- void GetBool(bool* value) const {
- RTC_DCHECK(value);
- *value = value_.bool_value;
- }
- void GetPlayoutAudioDeviceInfo(PlayoutAudioDeviceInfo* value) const {
- RTC_DCHECK(value);
- *value = value_.playout_audio_device_info;
- }
-
- private:
- RuntimeSetting(Type id, float value) : type_(id), value_(value) {}
- RuntimeSetting(Type id, int value) : type_(id), value_(value) {}
- RuntimeSetting(Type id, PlayoutAudioDeviceInfo value)
- : type_(id), value_(value) {}
- Type type_;
- union U {
- U() {}
- U(int value) : int_value(value) {}
- U(float value) : float_value(value) {}
- U(PlayoutAudioDeviceInfo value) : playout_audio_device_info(value) {}
- float float_value;
- int int_value;
- bool bool_value;
- PlayoutAudioDeviceInfo playout_audio_device_info;
- } value_;
- };
-
- ~AudioProcessing() override {}
-
- // Initializes internal states, while retaining all user settings. This
- // should be called before beginning to process a new audio stream. However,
- // it is not necessary to call before processing the first stream after
- // creation.
- //
- // It is also not necessary to call if the audio parameters (sample
- // rate and number of channels) have changed. Passing updated parameters
- // directly to `ProcessStream()` and `ProcessReverseStream()` is permissible.
- // If the parameters are known at init-time though, they may be provided.
- // TODO(webrtc:5298): Change to return void.
- virtual int Initialize() = 0;
-
- // The int16 interfaces require:
- // - only `NativeRate`s be used
- // - that the input, output and reverse rates must match
- // - that `processing_config.output_stream()` matches
- // `processing_config.input_stream()`.
- //
- // The float interfaces accept arbitrary rates and support differing input and
- // output layouts, but the output must have either one channel or the same
- // number of channels as the input.
- virtual int Initialize(const ProcessingConfig& processing_config) = 0;
-
- // TODO(peah): This method is a temporary solution used to take control
- // over the parameters in the audio processing module and is likely to change.
- virtual void ApplyConfig(const Config& config) = 0;
-
- // TODO(ajm): Only intended for internal use. Make private and friend the
- // necessary classes?
- virtual int proc_sample_rate_hz() const = 0;
- virtual int proc_split_sample_rate_hz() const = 0;
- virtual size_t num_input_channels() const = 0;
- virtual size_t num_proc_channels() const = 0;
- virtual size_t num_output_channels() const = 0;
- virtual size_t num_reverse_channels() const = 0;
-
- // Set to true when the output of AudioProcessing will be muted or in some
- // other way not used. Ideally, the captured audio would still be processed,
- // but some components may change behavior based on this information.
- // Default false. This method takes a lock. To achieve this in a lock-less
- // manner the PostRuntimeSetting can instead be used.
- virtual void set_output_will_be_muted(bool muted) = 0;
-
- // Enqueues a runtime setting.
- virtual void SetRuntimeSetting(RuntimeSetting setting) = 0;
-
- // Enqueues a runtime setting. Returns a bool indicating whether the
- // enqueueing was successfull.
- virtual bool PostRuntimeSetting(RuntimeSetting setting) = 0;
-
- // Accepts and produces a ~10 ms frame of interleaved 16 bit integer audio as
- // specified in `input_config` and `output_config`. `src` and `dest` may use
- // the same memory, if desired.
- virtual int ProcessStream(const int16_t* const src,
- const StreamConfig& input_config,
- const StreamConfig& output_config,
- int16_t* const dest) = 0;
-
- // Accepts deinterleaved float audio with the range [-1, 1]. Each element of
- // `src` points to a channel buffer, arranged according to `input_stream`. At
- // output, the channels will be arranged according to `output_stream` in
- // `dest`.
- //
- // The output must have one channel or as many channels as the input. `src`
- // and `dest` may use the same memory, if desired.
- virtual int ProcessStream(const float* const* src,
- const StreamConfig& input_config,
- const StreamConfig& output_config,
- float* const* dest) = 0;
-
- // Accepts and produces a ~10 ms frame of interleaved 16 bit integer audio for
- // the reverse direction audio stream as specified in `input_config` and
- // `output_config`. `src` and `dest` may use the same memory, if desired.
- virtual int ProcessReverseStream(const int16_t* const src,
- const StreamConfig& input_config,
- const StreamConfig& output_config,
- int16_t* const dest) = 0;
-
- // Accepts deinterleaved float audio with the range [-1, 1]. Each element of
- // `data` points to a channel buffer, arranged according to `reverse_config`.
- virtual int ProcessReverseStream(const float* const* src,
- const StreamConfig& input_config,
- const StreamConfig& output_config,
- float* const* dest) = 0;
-
- // Accepts deinterleaved float audio with the range [-1, 1]. Each element
- // of `data` points to a channel buffer, arranged according to
- // `reverse_config`.
- virtual int AnalyzeReverseStream(const float* const* data,
- const StreamConfig& reverse_config) = 0;
-
- // Returns the most recently produced ~10 ms of the linear AEC output at a
- // rate of 16 kHz. If there is more than one capture channel, a mono
- // representation of the input is returned. Returns true/false to indicate
- // whether an output returned.
- virtual bool GetLinearAecOutput(
- rtc::ArrayView<std::array<float, 160>> linear_output) const = 0;
-
- // This must be called prior to ProcessStream() if and only if adaptive analog
- // gain control is enabled, to pass the current analog level from the audio
- // HAL. Must be within the range [0, 255].
- virtual void set_stream_analog_level(int level) = 0;
-
- // When an analog mode is set, this should be called after
- // `set_stream_analog_level()` and `ProcessStream()` to obtain the recommended
- // new analog level for the audio HAL. It is the user's responsibility to
- // apply this level.
- virtual int recommended_stream_analog_level() const = 0;
-
- // This must be called if and only if echo processing is enabled.
- //
- // Sets the `delay` in ms between ProcessReverseStream() receiving a far-end
- // frame and ProcessStream() receiving a near-end frame containing the
- // corresponding echo. On the client-side this can be expressed as
- // delay = (t_render - t_analyze) + (t_process - t_capture)
- // where,
- // - t_analyze is the time a frame is passed to ProcessReverseStream() and
- // t_render is the time the first sample of the same frame is rendered by
- // the audio hardware.
- // - t_capture is the time the first sample of a frame is captured by the
- // audio hardware and t_process is the time the same frame is passed to
- // ProcessStream().
- virtual int set_stream_delay_ms(int delay) = 0;
- virtual int stream_delay_ms() const = 0;
-
- // Call to signal that a key press occurred (true) or did not occur (false)
- // with this chunk of audio.
- virtual void set_stream_key_pressed(bool key_pressed) = 0;
-
- // Creates and attaches an webrtc::AecDump for recording debugging
- // information.
- // The `worker_queue` may not be null and must outlive the created
- // AecDump instance. |max_log_size_bytes == -1| means the log size
- // will be unlimited. `handle` may not be null. The AecDump takes
- // responsibility for `handle` and closes it in the destructor. A
- // return value of true indicates that the file has been
- // sucessfully opened, while a value of false indicates that
- // opening the file failed.
- virtual bool CreateAndAttachAecDump(
- absl::string_view file_name,
- int64_t max_log_size_bytes,
- absl::Nonnull<TaskQueueBase*> worker_queue) = 0;
- virtual bool CreateAndAttachAecDump(
- absl::Nonnull<FILE*> handle,
- int64_t max_log_size_bytes,
- absl::Nonnull<TaskQueueBase*> worker_queue) = 0;
-
- // TODO(webrtc:5298) Deprecated variant.
- // Attaches provided webrtc::AecDump for recording debugging
- // information. Log file and maximum file size logic is supposed to
- // be handled by implementing instance of AecDump. Calling this
- // method when another AecDump is attached resets the active AecDump
- // with a new one. This causes the d-tor of the earlier AecDump to
- // be called. The d-tor call may block until all pending logging
- // tasks are completed.
- virtual void AttachAecDump(std::unique_ptr<AecDump> aec_dump) = 0;
-
- // If no AecDump is attached, this has no effect. If an AecDump is
- // attached, it's destructor is called. The d-tor may block until
- // all pending logging tasks are completed.
- virtual void DetachAecDump() = 0;
-
- // Get audio processing statistics.
- virtual AudioProcessingStats GetStatistics() = 0;
- // TODO(webrtc:5298) Deprecated variant. The `has_remote_tracks` argument
- // should be set if there are active remote tracks (this would usually be true
- // during a call). If there are no remote tracks some of the stats will not be
- // set by AudioProcessing, because they only make sense if there is at least
- // one remote track.
- virtual AudioProcessingStats GetStatistics(bool has_remote_tracks) = 0;
-
- // Returns the last applied configuration.
- virtual AudioProcessing::Config GetConfig() const = 0;
-
- enum Error {
- // Fatal errors.
- kNoError = 0,
- kUnspecifiedError = -1,
- kCreationFailedError = -2,
- kUnsupportedComponentError = -3,
- kUnsupportedFunctionError = -4,
- kNullPointerError = -5,
- kBadParameterError = -6,
- kBadSampleRateError = -7,
- kBadDataLengthError = -8,
- kBadNumberChannelsError = -9,
- kFileError = -10,
- kStreamParameterNotSetError = -11,
- kNotEnabledError = -12,
-
- // Warnings are non-fatal.
- // This results when a set_stream_ parameter is out of range. Processing
- // will continue, but the parameter may have been truncated.
- kBadStreamParameterWarning = -13
- };
-
- // Native rates supported by the integer interfaces.
- enum NativeRate {
- kSampleRate8kHz = 8000,
- kSampleRate16kHz = 16000,
- kSampleRate32kHz = 32000,
- kSampleRate48kHz = 48000
- };
-
- // TODO(kwiberg): We currently need to support a compiler (Visual C++) that
- // complains if we don't explicitly state the size of the array here. Remove
- // the size when that's no longer the case.
- static constexpr int kNativeSampleRatesHz[4] = {
- kSampleRate8kHz, kSampleRate16kHz, kSampleRate32kHz, kSampleRate48kHz};
- static constexpr size_t kNumNativeSampleRates =
- arraysize(kNativeSampleRatesHz);
- static constexpr int kMaxNativeSampleRateHz =
- kNativeSampleRatesHz[kNumNativeSampleRates - 1];
-
- // APM processes audio in chunks of about 10 ms. See GetFrameSize() for
- // details.
- static constexpr int kChunkSizeMs = 10;
-
- // Returns floor(sample_rate_hz/100): the number of samples per channel used
- // as input and output to the audio processing module in calls to
- // ProcessStream, ProcessReverseStream, AnalyzeReverseStream, and
- // GetLinearAecOutput.
- //
- // This is exactly 10 ms for sample rates divisible by 100. For example:
- // - 48000 Hz (480 samples per channel),
- // - 44100 Hz (441 samples per channel),
- // - 16000 Hz (160 samples per channel).
- //
- // Sample rates not divisible by 100 are received/produced in frames of
- // approximately 10 ms. For example:
- // - 22050 Hz (220 samples per channel, or ~9.98 ms per frame),
- // - 11025 Hz (110 samples per channel, or ~9.98 ms per frame).
- // These nondivisible sample rates yield lower audio quality compared to
- // multiples of 100. Internal resampling to 10 ms frames causes a simulated
- // clock drift effect which impacts the performance of (for example) echo
- // cancellation.
- static int GetFrameSize(int sample_rate_hz) { return sample_rate_hz / 100; }
-};
-
-class RTC_EXPORT AudioProcessingBuilder {
- public:
- AudioProcessingBuilder();
- AudioProcessingBuilder(const AudioProcessingBuilder&) = delete;
- AudioProcessingBuilder& operator=(const AudioProcessingBuilder&) = delete;
- ~AudioProcessingBuilder();
-
- // Sets the APM configuration.
- AudioProcessingBuilder& SetConfig(const AudioProcessing::Config& config) {
- config_ = config;
- return *this;
- }
-
- // Sets the echo controller factory to inject when APM is created.
- AudioProcessingBuilder& SetEchoControlFactory(
- std::unique_ptr<EchoControlFactory> echo_control_factory) {
- echo_control_factory_ = std::move(echo_control_factory);
- return *this;
- }
-
- // Sets the capture post-processing sub-module to inject when APM is created.
- AudioProcessingBuilder& SetCapturePostProcessing(
- std::unique_ptr<CustomProcessing> capture_post_processing) {
- capture_post_processing_ = std::move(capture_post_processing);
- return *this;
- }
-
- // Sets the render pre-processing sub-module to inject when APM is created.
- AudioProcessingBuilder& SetRenderPreProcessing(
- std::unique_ptr<CustomProcessing> render_pre_processing) {
- render_pre_processing_ = std::move(render_pre_processing);
- return *this;
- }
-
- // Sets the echo detector to inject when APM is created.
- AudioProcessingBuilder& SetEchoDetector(
- rtc::scoped_refptr<EchoDetector> echo_detector) {
- echo_detector_ = std::move(echo_detector);
- return *this;
- }
-
- // Sets the capture analyzer sub-module to inject when APM is created.
- AudioProcessingBuilder& SetCaptureAnalyzer(
- std::unique_ptr<CustomAudioAnalyzer> capture_analyzer) {
- capture_analyzer_ = std::move(capture_analyzer);
- return *this;
- }
-
- // Creates an APM instance with the specified config or the default one if
- // unspecified. Injects the specified components transferring the ownership
- // to the newly created APM instance - i.e., except for the config, the
- // builder is reset to its initial state.
- rtc::scoped_refptr<AudioProcessing> Create();
-
- private:
- AudioProcessing::Config config_;
- std::unique_ptr<EchoControlFactory> echo_control_factory_;
- std::unique_ptr<CustomProcessing> capture_post_processing_;
- std::unique_ptr<CustomProcessing> render_pre_processing_;
- rtc::scoped_refptr<EchoDetector> echo_detector_;
- std::unique_ptr<CustomAudioAnalyzer> capture_analyzer_;
-};
-
-class StreamConfig {
- public:
- // sample_rate_hz: The sampling rate of the stream.
- // num_channels: The number of audio channels in the stream.
- StreamConfig(int sample_rate_hz = 0, size_t num_channels = 0)
- : sample_rate_hz_(sample_rate_hz),
- num_channels_(num_channels),
- num_frames_(calculate_frames(sample_rate_hz)) {}
-
- void set_sample_rate_hz(int value) {
- sample_rate_hz_ = value;
- num_frames_ = calculate_frames(value);
- }
- void set_num_channels(size_t value) { num_channels_ = value; }
-
- int sample_rate_hz() const { return sample_rate_hz_; }
-
- // The number of channels in the stream.
- size_t num_channels() const { return num_channels_; }
-
- size_t num_frames() const { return num_frames_; }
- size_t num_samples() const { return num_channels_ * num_frames_; }
-
- bool operator==(const StreamConfig& other) const {
- return sample_rate_hz_ == other.sample_rate_hz_ &&
- num_channels_ == other.num_channels_;
- }
-
- bool operator!=(const StreamConfig& other) const { return !(*this == other); }
-
- private:
- static size_t calculate_frames(int sample_rate_hz) {
- return static_cast<size_t>(AudioProcessing::GetFrameSize(sample_rate_hz));
- }
-
- int sample_rate_hz_;
- size_t num_channels_;
- size_t num_frames_;
-};
-
-class ProcessingConfig {
- public:
- enum StreamName {
- kInputStream,
- kOutputStream,
- kReverseInputStream,
- kReverseOutputStream,
- kNumStreamNames,
- };
-
- const StreamConfig& input_stream() const {
- return streams[StreamName::kInputStream];
- }
- const StreamConfig& output_stream() const {
- return streams[StreamName::kOutputStream];
- }
- const StreamConfig& reverse_input_stream() const {
- return streams[StreamName::kReverseInputStream];
- }
- const StreamConfig& reverse_output_stream() const {
- return streams[StreamName::kReverseOutputStream];
- }
-
- StreamConfig& input_stream() { return streams[StreamName::kInputStream]; }
- StreamConfig& output_stream() { return streams[StreamName::kOutputStream]; }
- StreamConfig& reverse_input_stream() {
- return streams[StreamName::kReverseInputStream];
- }
- StreamConfig& reverse_output_stream() {
- return streams[StreamName::kReverseOutputStream];
- }
-
- bool operator==(const ProcessingConfig& other) const {
- for (int i = 0; i < StreamName::kNumStreamNames; ++i) {
- if (this->streams[i] != other.streams[i]) {
- return false;
- }
- }
- return true;
- }
-
- bool operator!=(const ProcessingConfig& other) const {
- return !(*this == other);
- }
-
- StreamConfig streams[StreamName::kNumStreamNames];
-};
-
-// Experimental interface for a custom analysis submodule.
-class CustomAudioAnalyzer {
- public:
- // (Re-) Initializes the submodule.
- virtual void Initialize(int sample_rate_hz, int num_channels) = 0;
- // Analyzes the given capture or render signal.
- virtual void Analyze(const AudioBuffer* audio) = 0;
- // Returns a string representation of the module state.
- virtual std::string ToString() const = 0;
-
- virtual ~CustomAudioAnalyzer() {}
-};
-
-// Interface for a custom processing submodule.
-class CustomProcessing {
- public:
- // (Re-)Initializes the submodule.
- virtual void Initialize(int sample_rate_hz, int num_channels) = 0;
- // Processes the given capture or render signal.
- virtual void Process(AudioBuffer* audio) = 0;
- // Returns a string representation of the module state.
- virtual std::string ToString() const = 0;
- // Handles RuntimeSettings. TODO(webrtc:9262): make pure virtual
- // after updating dependencies.
- virtual void SetRuntimeSetting(AudioProcessing::RuntimeSetting setting);
-
- virtual ~CustomProcessing() {}
-};
-
-// Interface for an echo detector submodule.
-class EchoDetector : public RefCountInterface {
- public:
- // (Re-)Initializes the submodule.
- virtual void Initialize(int capture_sample_rate_hz,
- int num_capture_channels,
- int render_sample_rate_hz,
- int num_render_channels) = 0;
-
- // Analysis (not changing) of the first channel of the render signal.
- virtual void AnalyzeRenderAudio(rtc::ArrayView<const float> render_audio) = 0;
-
- // Analysis (not changing) of the capture signal.
- virtual void AnalyzeCaptureAudio(
- rtc::ArrayView<const float> capture_audio) = 0;
-
- struct Metrics {
- absl::optional<double> echo_likelihood;
- absl::optional<double> echo_likelihood_recent_max;
- };
-
- // Collect current metrics from the echo detector.
- virtual Metrics GetMetrics() const = 0;
-};
-
-} // namespace webrtc
+// This is a transitional header forwarding to the new version in the api/
+// folder.
+#include "api/audio/audio_processing.h"
#endif // MODULES_AUDIO_PROCESSING_INCLUDE_AUDIO_PROCESSING_H_
diff --git a/modules/audio_processing/include/audio_processing_statistics.h b/modules/audio_processing/include/audio_processing_statistics.h
index 3b43319..594d3f5 100644
--- a/modules/audio_processing/include/audio_processing_statistics.h
+++ b/modules/audio_processing/include/audio_processing_statistics.h
@@ -11,57 +11,8 @@
#ifndef MODULES_AUDIO_PROCESSING_INCLUDE_AUDIO_PROCESSING_STATISTICS_H_
#define MODULES_AUDIO_PROCESSING_INCLUDE_AUDIO_PROCESSING_STATISTICS_H_
-#include <stdint.h>
-
-#include "absl/types/optional.h"
-#include "rtc_base/system/rtc_export.h"
-
-namespace webrtc {
-// This version of the stats uses Optionals, it will replace the regular
-// AudioProcessingStatistics struct.
-struct RTC_EXPORT AudioProcessingStats {
- AudioProcessingStats();
- AudioProcessingStats(const AudioProcessingStats& other);
- ~AudioProcessingStats();
-
- // Deprecated.
- // TODO(bugs.webrtc.org/11226): Remove.
- // True if voice is detected in the last capture frame, after processing.
- // It is conservative in flagging audio as speech, with low likelihood of
- // incorrectly flagging a frame as voice.
- // Only reported if voice detection is enabled in AudioProcessing::Config.
- absl::optional<bool> voice_detected;
-
- // AEC Statistics.
- // ERL = 10log_10(P_far / P_echo)
- absl::optional<double> echo_return_loss;
- // ERLE = 10log_10(P_echo / P_out)
- absl::optional<double> echo_return_loss_enhancement;
- // Fraction of time that the AEC linear filter is divergent, in a 1-second
- // non-overlapped aggregation window.
- absl::optional<double> divergent_filter_fraction;
-
- // The delay metrics consists of the delay median and standard deviation. It
- // also consists of the fraction of delay estimates that can make the echo
- // cancellation perform poorly. The values are aggregated until the first
- // call to `GetStatistics()` and afterwards aggregated and updated every
- // second. Note that if there are several clients pulling metrics from
- // `GetStatistics()` during a session the first call from any of them will
- // change to one second aggregation window for all.
- absl::optional<int32_t> delay_median_ms;
- absl::optional<int32_t> delay_standard_deviation_ms;
-
- // Residual echo detector likelihood.
- absl::optional<double> residual_echo_likelihood;
- // Maximum residual echo likelihood from the last time period.
- absl::optional<double> residual_echo_likelihood_recent_max;
-
- // The instantaneous delay estimate produced in the AEC. The unit is in
- // milliseconds and the value is the instantaneous value at the time of the
- // call to `GetStatistics()`.
- absl::optional<int32_t> delay_ms;
-};
-
-} // namespace webrtc
+// This is a transitional header forwarding to the new version in the api/
+// folder.
+#include "api/audio/audio_processing_statistics.h"
#endif // MODULES_AUDIO_PROCESSING_INCLUDE_AUDIO_PROCESSING_STATISTICS_H_
diff --git a/modules/audio_processing/include/mock_audio_processing.h b/modules/audio_processing/include/mock_audio_processing.h
index dfe7d84..f8c76bf 100644
--- a/modules/audio_processing/include/mock_audio_processing.h
+++ b/modules/audio_processing/include/mock_audio_processing.h
@@ -15,10 +15,10 @@
#include "absl/base/nullability.h"
#include "absl/strings/string_view.h"
+#include "api/audio/audio_processing.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/task_queue/task_queue_base.h"
#include "modules/audio_processing/include/aec_dump.h"
-#include "modules/audio_processing/include/audio_processing.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "test/gmock.h"
namespace webrtc {
diff --git a/modules/audio_processing/residual_echo_detector.h b/modules/audio_processing/residual_echo_detector.h
index ac554b1..83773ae 100644
--- a/modules/audio_processing/residual_echo_detector.h
+++ b/modules/audio_processing/residual_echo_detector.h
@@ -15,11 +15,11 @@
#include <vector>
#include "api/array_view.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/echo_detector/circular_buffer.h"
#include "modules/audio_processing/echo_detector/mean_variance_estimator.h"
#include "modules/audio_processing/echo_detector/moving_max.h"
#include "modules/audio_processing/echo_detector/normalized_covariance_estimator.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/modules/audio_processing/test/audio_buffer_tools.h b/modules/audio_processing/test/audio_buffer_tools.h
index faac4bf..c4e4b09 100644
--- a/modules/audio_processing/test/audio_buffer_tools.h
+++ b/modules/audio_processing/test/audio_buffer_tools.h
@@ -14,8 +14,8 @@
#include <vector>
#include "api/array_view.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
namespace test {
diff --git a/modules/audio_processing/test/audio_processing_builder_for_testing.h b/modules/audio_processing/test/audio_processing_builder_for_testing.h
index e73706c..d61d189 100644
--- a/modules/audio_processing/test/audio_processing_builder_for_testing.h
+++ b/modules/audio_processing/test/audio_processing_builder_for_testing.h
@@ -16,7 +16,7 @@
#include <utility>
#include <vector>
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
namespace webrtc {
diff --git a/modules/audio_processing/test/audio_processing_simulator.cc b/modules/audio_processing/test/audio_processing_simulator.cc
index 500005f..a47e4b5 100644
--- a/modules/audio_processing/test/audio_processing_simulator.cc
+++ b/modules/audio_processing/test/audio_processing_simulator.cc
@@ -19,11 +19,11 @@
#include <vector>
#include "absl/strings/string_view.h"
+#include "api/audio/audio_processing.h"
#include "api/audio/echo_canceller3_factory.h"
#include "api/audio/echo_detector_creator.h"
#include "modules/audio_processing/aec_dump/aec_dump_factory.h"
#include "modules/audio_processing/echo_control_mobile_impl.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/logging/apm_data_dumper.h"
#include "modules/audio_processing/test/echo_canceller3_config_json.h"
#include "modules/audio_processing/test/fake_recording_device.h"
diff --git a/modules/audio_processing/test/audio_processing_simulator.h b/modules/audio_processing/test/audio_processing_simulator.h
index e40d818..82e22cc 100644
--- a/modules/audio_processing/test/audio_processing_simulator.h
+++ b/modules/audio_processing/test/audio_processing_simulator.h
@@ -18,9 +18,9 @@
#include <string>
#include "absl/types/optional.h"
+#include "api/audio/audio_processing.h"
#include "common_audio/channel_buffer.h"
#include "common_audio/include/audio_util.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/test/api_call_statistics.h"
#include "modules/audio_processing/test/fake_recording_device.h"
#include "modules/audio_processing/test/test_utils.h"
diff --git a/modules/audio_processing/test/audioproc_float_impl.cc b/modules/audio_processing/test/audioproc_float_impl.cc
index c23ec74..980b80a 100644
--- a/modules/audio_processing/test/audioproc_float_impl.cc
+++ b/modules/audio_processing/test/audioproc_float_impl.cc
@@ -21,7 +21,7 @@
#include "absl/flags/flag.h"
#include "absl/flags/parse.h"
#include "absl/strings/string_view.h"
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/test/aec_dump_based_simulator.h"
#include "modules/audio_processing/test/audio_processing_simulator.h"
#include "modules/audio_processing/test/wav_based_simulator.h"
diff --git a/modules/audio_processing/test/audioproc_float_impl.h b/modules/audio_processing/test/audioproc_float_impl.h
index 5ed3aef..55ded26 100644
--- a/modules/audio_processing/test/audioproc_float_impl.h
+++ b/modules/audio_processing/test/audioproc_float_impl.h
@@ -13,7 +13,7 @@
#include <memory>
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
namespace webrtc {
namespace test {
diff --git a/modules/audio_processing/test/debug_dump_replayer.h b/modules/audio_processing/test/debug_dump_replayer.h
index 077147e..2768f18 100644
--- a/modules/audio_processing/test/debug_dump_replayer.h
+++ b/modules/audio_processing/test/debug_dump_replayer.h
@@ -14,8 +14,8 @@
#include <memory>
#include "absl/strings/string_view.h"
+#include "api/audio/audio_processing.h"
#include "common_audio/channel_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
// Generated at build-time by the protobuf compiler.
#include "modules/audio_processing/debug.pb.h"
diff --git a/modules/audio_processing/test/runtime_setting_util.h b/modules/audio_processing/test/runtime_setting_util.h
index d8cbe82..85ed5ec 100644
--- a/modules/audio_processing/test/runtime_setting_util.h
+++ b/modules/audio_processing/test/runtime_setting_util.h
@@ -11,7 +11,7 @@
#ifndef MODULES_AUDIO_PROCESSING_TEST_RUNTIME_SETTING_UTIL_H_
#define MODULES_AUDIO_PROCESSING_TEST_RUNTIME_SETTING_UTIL_H_
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/test/protobuf_utils.h"
namespace webrtc {
diff --git a/modules/audio_processing/test/simulator_buffers.h b/modules/audio_processing/test/simulator_buffers.h
index 36dcf30..4e1b086 100644
--- a/modules/audio_processing/test/simulator_buffers.h
+++ b/modules/audio_processing/test/simulator_buffers.h
@@ -14,8 +14,8 @@
#include <memory>
#include <vector>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/random.h"
namespace webrtc {
diff --git a/modules/audio_processing/test/test_utils.h b/modules/audio_processing/test/test_utils.h
index bf82f9d..04e980f 100644
--- a/modules/audio_processing/test/test_utils.h
+++ b/modules/audio_processing/test/test_utils.h
@@ -21,9 +21,9 @@
#include <vector>
#include "absl/strings/string_view.h"
+#include "api/audio/audio_processing.h"
#include "common_audio/channel_buffer.h"
#include "common_audio/wav_file.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
diff --git a/pc/BUILD.gn b/pc/BUILD.gn
index 1e1e4ba..42763b4 100644
--- a/pc/BUILD.gn
+++ b/pc/BUILD.gn
@@ -907,6 +907,7 @@
"../api:rtp_parameters",
"../api:scoped_refptr",
"../api:sequence_checker",
+ "../api/audio:audio_processing_statistics",
"../api/task_queue:task_queue",
"../api/units:time_delta",
"../api/video:video_rtp_headers",
@@ -916,7 +917,6 @@
"../media:media_channel",
"../media:media_channel_impl",
"../modules/audio_device",
- "../modules/audio_processing:audio_processing_statistics",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../p2p:connection",
"../p2p:connection_info",
@@ -1225,11 +1225,11 @@
"../api:rtp_sender_interface",
"../api:scoped_refptr",
"../api:sequence_checker",
+ "../api/audio:audio_processing_statistics",
"../api/audio_codecs:audio_codecs_api",
"../api/video:video_rtp_headers",
"../call:call_interfaces",
"../media:media_channel",
- "../modules/audio_processing:audio_processing_statistics",
"../p2p:connection",
"../p2p:connection_info",
"../p2p:ice_transport_internal",
@@ -2146,6 +2146,7 @@
"../api:rtc_stats_api",
"../api:scoped_refptr",
"../api/audio:audio_mixer_api",
+ "../api/audio:audio_processing",
"../api/audio_codecs:audio_codecs_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
@@ -2164,7 +2165,6 @@
"../api/video_codecs:video_encoder_factory_template_open_h264_adapter",
"../media:rtc_media_tests_utils",
"../modules/audio_device:audio_device_api",
- "../modules/audio_processing:api",
"../p2p:basic_port_allocator",
"../p2p:connection",
"../p2p:p2p_test_utils",
@@ -2368,6 +2368,8 @@
"../api:scoped_refptr",
"../api/adaptation:resource_adaptation_api",
"../api/audio:audio_mixer_api",
+ "../api/audio:audio_processing",
+ "../api/audio:audio_processing_statistics",
"../api/crypto:frame_decryptor_interface",
"../api/crypto:frame_encryptor_interface",
"../api/crypto:options",
@@ -2403,7 +2405,6 @@
"../media:rtc_media_config",
"../media:stream_params",
"../modules/audio_device:audio_device_api",
- "../modules/audio_processing:audio_processing_statistics",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../p2p:basic_port_allocator",
"../p2p:connection",
@@ -2501,7 +2502,6 @@
"../media:rtc_audio_video",
"../media:rtc_media_tests_utils",
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../p2p:p2p_test_utils",
"../p2p:rtc_p2p",
"../rtc_base:safe_conversions",
@@ -2598,6 +2598,7 @@
"../api:rtp_transceiver_direction",
"../api:scoped_refptr",
"../api/audio:audio_mixer_api",
+ "../api/audio:audio_processing",
"../api/crypto:frame_decryptor_interface",
"../api/crypto:frame_encryptor_interface",
"../api/crypto:options",
@@ -2620,8 +2621,6 @@
"../media:rtc_media_tests_utils",
"../media:stream_params",
"../modules/audio_device:audio_device_api",
- "../modules/audio_processing:api",
- "../modules/audio_processing:audio_processing_statistics",
"../modules/audio_processing:audioproc_test_utils",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../p2p:basic_port_allocator",
@@ -2750,6 +2749,7 @@
"../api:scoped_refptr",
"../api:sequence_checker",
"../api/audio:audio_mixer_api",
+ "../api/audio:audio_processing",
"../api/audio_codecs:audio_codecs_api",
"../api/environment",
"../api/environment:environment_factory",
@@ -2780,7 +2780,6 @@
"../media:video_broadcaster",
"../modules/audio_device",
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../modules/rtp_rtcp:rtp_rtcp_format",
"../p2p:connection",
"../p2p:fake_port_allocator",
diff --git a/pc/legacy_stats_collector.cc b/pc/legacy_stats_collector.cc
index 45e6872..800f63c 100644
--- a/pc/legacy_stats_collector.cc
+++ b/pc/legacy_stats_collector.cc
@@ -22,6 +22,7 @@
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/candidate.h"
#include "api/data_channel_interface.h"
@@ -34,7 +35,6 @@
#include "api/video/video_timing.h"
#include "call/call.h"
#include "media/base/media_channel.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "p2p/base/ice_transport_internal.h"
#include "p2p/base/p2p_constants.h"
#include "pc/channel.h"
diff --git a/pc/legacy_stats_collector_unittest.cc b/pc/legacy_stats_collector_unittest.cc
index af3d303..f372dca 100644
--- a/pc/legacy_stats_collector_unittest.cc
+++ b/pc/legacy_stats_collector_unittest.cc
@@ -16,6 +16,7 @@
#include "absl/algorithm/container.h"
#include "absl/types/optional.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/audio_codecs/audio_encoder.h"
#include "api/candidate.h"
#include "api/data_channel_interface.h"
@@ -25,7 +26,6 @@
#include "api/scoped_refptr.h"
#include "call/call.h"
#include "media/base/media_channel.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "p2p/base/ice_transport_internal.h"
#include "pc/media_stream.h"
#include "pc/rtp_receiver.h"
diff --git a/pc/peer_connection_bundle_unittest.cc b/pc/peer_connection_bundle_unittest.cc
index 12ab994..269f6c7 100644
--- a/pc/peer_connection_bundle_unittest.cc
+++ b/pc/peer_connection_bundle_unittest.cc
@@ -20,6 +20,7 @@
#include <vector>
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/candidate.h"
@@ -46,7 +47,6 @@
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "media/base/stream_params.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/p2p_constants.h"
#include "p2p/base/port.h"
#include "p2p/base/port_allocator.h"
diff --git a/pc/peer_connection_crypto_unittest.cc b/pc/peer_connection_crypto_unittest.cc
index 1d90e04..57c6c1a 100644
--- a/pc/peer_connection_crypto_unittest.cc
+++ b/pc/peer_connection_crypto_unittest.cc
@@ -20,6 +20,7 @@
#include "absl/types/optional.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/create_peerconnection_factory.h"
@@ -38,7 +39,6 @@
#include "api/video_codecs/video_encoder_factory_template_libvpx_vp9_adapter.h"
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/fake_port_allocator.h"
#include "p2p/base/port_allocator.h"
#include "p2p/base/transport_description.h"
diff --git a/pc/peer_connection_factory_unittest.cc b/pc/peer_connection_factory_unittest.cc
index 618ac68..d2e8938 100644
--- a/pc/peer_connection_factory_unittest.cc
+++ b/pc/peer_connection_factory_unittest.cc
@@ -16,6 +16,7 @@
#include <vector>
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/create_peerconnection_factory.h"
@@ -38,7 +39,6 @@
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "media/base/fake_frame_source.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/fake_port_allocator.h"
#include "p2p/base/port.h"
#include "p2p/base/port_allocator.h"
diff --git a/pc/peer_connection_ice_unittest.cc b/pc/peer_connection_ice_unittest.cc
index 78d3103..a4b29af 100644
--- a/pc/peer_connection_ice_unittest.cc
+++ b/pc/peer_connection_ice_unittest.cc
@@ -20,6 +20,7 @@
#include "absl/types/optional.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/candidate.h"
#include "api/ice_transport_interface.h"
#include "api/jsep.h"
@@ -28,7 +29,6 @@
#include "api/rtc_error.h"
#include "api/scoped_refptr.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/fake_port_allocator.h"
#include "p2p/base/ice_transport_internal.h"
#include "p2p/base/p2p_constants.h"
diff --git a/pc/peer_connection_interface_unittest.cc b/pc/peer_connection_interface_unittest.cc
index 71c85d4..97934ba 100644
--- a/pc/peer_connection_interface_unittest.cc
+++ b/pc/peer_connection_interface_unittest.cc
@@ -20,6 +20,7 @@
#include "absl/strings/str_replace.h"
#include "absl/types/optional.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/create_peerconnection_factory.h"
@@ -55,7 +56,6 @@
#include "media/engine/webrtc_media_engine.h"
#include "media/sctp/sctp_transport_internal.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/fake_port_allocator.h"
#include "p2p/base/p2p_constants.h"
#include "p2p/base/port.h"
diff --git a/pc/peer_connection_rampup_tests.cc b/pc/peer_connection_rampup_tests.cc
index cc645a0..60e7abc 100644
--- a/pc/peer_connection_rampup_tests.cc
+++ b/pc/peer_connection_rampup_tests.cc
@@ -15,6 +15,7 @@
#include "absl/types/optional.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/audio_options.h"
@@ -40,7 +41,6 @@
#include "api/video_codecs/video_encoder_factory_template_libvpx_vp9_adapter.h"
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/port_allocator.h"
#include "p2p/base/port_interface.h"
#include "p2p/base/test_turn_server.h"
diff --git a/pc/peer_connection_rtp_unittest.cc b/pc/peer_connection_rtp_unittest.cc
index 77c8cec..c162dfd 100644
--- a/pc/peer_connection_rtp_unittest.cc
+++ b/pc/peer_connection_rtp_unittest.cc
@@ -18,6 +18,7 @@
#include "absl/types/optional.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/create_peerconnection_factory.h"
@@ -46,7 +47,6 @@
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "media/base/stream_params.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/port_allocator.h"
#include "pc/media_session.h"
#include "pc/peer_connection_wrapper.h"
diff --git a/pc/peer_connection_signaling_unittest.cc b/pc/peer_connection_signaling_unittest.cc
index 7764be9..64d393a 100644
--- a/pc/peer_connection_signaling_unittest.cc
+++ b/pc/peer_connection_signaling_unittest.cc
@@ -25,6 +25,7 @@
#include "absl/types/optional.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/create_peerconnection_factory.h"
@@ -51,7 +52,6 @@
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "media/base/codec.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/port_allocator.h"
#include "pc/peer_connection.h"
#include "pc/peer_connection_proxy.h"
diff --git a/pc/peer_connection_simulcast_unittest.cc b/pc/peer_connection_simulcast_unittest.cc
index 06f3884..b4b998a 100644
--- a/pc/peer_connection_simulcast_unittest.cc
+++ b/pc/peer_connection_simulcast_unittest.cc
@@ -21,6 +21,7 @@
#include "absl/strings/match.h"
#include "absl/strings/string_view.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/audio_codecs/opus_audio_decoder_factory.h"
@@ -51,7 +52,6 @@
#include "media/base/rid_description.h"
#include "media/base/stream_params.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "pc/channel_interface.h"
#include "pc/peer_connection_wrapper.h"
#include "pc/sdp_utils.h"
diff --git a/pc/rtc_stats_collector.cc b/pc/rtc_stats_collector.cc
index 1f94b0e..1342fff 100644
--- a/pc/rtc_stats_collector.cc
+++ b/pc/rtc_stats_collector.cc
@@ -25,6 +25,7 @@
#include "absl/functional/bind_front.h"
#include "absl/strings/string_view.h"
#include "api/array_view.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/candidate.h"
#include "api/dtls_transport_interface.h"
#include "api/media_stream_interface.h"
@@ -40,7 +41,6 @@
#include "media/base/media_channel.h"
#include "media/base/media_channel_impl.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "modules/rtp_rtcp/include/report_block_data.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "p2p/base/connection_info.h"
diff --git a/pc/rtc_stats_collector_unittest.cc b/pc/rtc_stats_collector_unittest.cc
index 6c4cd69..7b3160e 100644
--- a/pc/rtc_stats_collector_unittest.cc
+++ b/pc/rtc_stats_collector_unittest.cc
@@ -24,6 +24,7 @@
#include "absl/strings/str_replace.h"
#include "absl/types/optional.h"
+#include "api/audio/audio_processing_statistics.h"
#include "api/candidate.h"
#include "api/dtls_transport_interface.h"
#include "api/media_stream_interface.h"
@@ -46,7 +47,6 @@
#include "common_video/include/quality_limitation_reason.h"
#include "media/base/media_channel.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing_statistics.h"
#include "modules/rtp_rtcp/include/report_block_data.h"
#include "modules/rtp_rtcp/include/rtp_rtcp_defines.h"
#include "p2p/base/connection_info.h"
diff --git a/pc/sdp_offer_answer_unittest.cc b/pc/sdp_offer_answer_unittest.cc
index 2e77f88..2043ae8 100644
--- a/pc/sdp_offer_answer_unittest.cc
+++ b/pc/sdp_offer_answer_unittest.cc
@@ -14,6 +14,7 @@
#include "absl/strings/str_replace.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/create_peerconnection_factory.h"
@@ -32,7 +33,6 @@
#include "api/video_codecs/video_encoder_factory_template_libvpx_vp9_adapter.h"
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/port_allocator.h"
#include "pc/peer_connection_wrapper.h"
#include "pc/session_description.h"
diff --git a/pc/test/integration_test_helpers.h b/pc/test/integration_test_helpers.h
index e1de1b3..b539a87 100644
--- a/pc/test/integration_test_helpers.h
+++ b/pc/test/integration_test_helpers.h
@@ -30,6 +30,7 @@
#include "absl/memory/memory.h"
#include "absl/strings/string_view.h"
#include "absl/types/optional.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_options.h"
#include "api/candidate.h"
#include "api/crypto/crypto_options.h"
@@ -69,7 +70,6 @@
#include "media/base/stream_params.h"
#include "media/engine/fake_webrtc_video_engine.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/test/audio_processing_builder_for_testing.h"
#include "p2p/base/fake_ice_transport.h"
#include "p2p/base/ice_transport_internal.h"
diff --git a/pc/test/peer_connection_test_wrapper.cc b/pc/test/peer_connection_test_wrapper.cc
index 63e9912..068768b 100644
--- a/pc/test/peer_connection_test_wrapper.cc
+++ b/pc/test/peer_connection_test_wrapper.cc
@@ -20,6 +20,7 @@
#include "absl/strings/match.h"
#include "absl/types/optional.h"
#include "api/audio/audio_mixer.h"
+#include "api/audio/audio_processing.h"
#include "api/create_peerconnection_factory.h"
#include "api/environment/environment.h"
#include "api/media_types.h"
@@ -38,7 +39,6 @@
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "media/engine/simulcast_encoder_adapter.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "p2p/base/fake_port_allocator.h"
#include "p2p/base/port_allocator.h"
#include "pc/test/fake_periodic_video_source.h"
diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn
index f14877d..fa0ab39 100644
--- a/rtc_tools/BUILD.gn
+++ b/rtc_tools/BUILD.gn
@@ -639,8 +639,8 @@
sources = [ "audioproc_f/audioproc_float_main.cc" ]
deps = [
"../api:audioproc_f_api",
+ "../api/audio:audio_processing",
"../modules/audio_processing",
- "../modules/audio_processing:api",
]
}
diff --git a/rtc_tools/audioproc_f/audioproc_float_main.cc b/rtc_tools/audioproc_f/audioproc_float_main.cc
index 3cc6d43..3acf8fa 100644
--- a/rtc_tools/audioproc_f/audioproc_float_main.cc
+++ b/rtc_tools/audioproc_f/audioproc_float_main.cc
@@ -10,8 +10,8 @@
#include <memory>
+#include "api/audio/audio_processing.h"
#include "api/test/audioproc_float.h"
-#include "modules/audio_processing/include/audio_processing.h"
int main(int argc, char* argv[]) {
return webrtc::test::AudioprocFloat(
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index d31673e..8dba298 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -1066,6 +1066,7 @@
"../api:rtp_parameters",
"../api:rtp_sender_interface",
"../api:scoped_refptr",
+ "../api/audio:audio_processing",
"../api/audio_codecs:audio_codecs_api",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
@@ -1082,7 +1083,6 @@
"../media:rtc_media_base",
"../modules/audio_device:audio_device_api",
"../modules/audio_processing",
- "../modules/audio_processing:api",
"../modules/video_coding:video_codec_interface",
"../pc:peer_connection_factory",
"../pc:webrtc_sdp",
@@ -1169,6 +1169,7 @@
":videosource_objc",
":videotoolbox_objc",
"../api:scoped_refptr",
+ "../api/audio:audio_processing",
"../api/audio_codecs:builtin_audio_decoder_factory",
"../api/audio_codecs:builtin_audio_encoder_factory",
"../api/environment:environment_factory",
@@ -1180,7 +1181,6 @@
"../media:rtc_media_base",
"../media:rtc_media_tests_utils",
"../modules/audio_device:audio_device_api",
- "../modules/audio_processing:api",
"../modules/video_coding:video_codec_interface",
"../rtc_base:gunit_helpers",
"../rtc_base:macromagic",
diff --git a/sdk/android/BUILD.gn b/sdk/android/BUILD.gn
index 8858d21..ea640ab 100644
--- a/sdk/android/BUILD.gn
+++ b/sdk/android/BUILD.gn
@@ -573,8 +573,8 @@
"../../api:field_trials_view",
"../../api:scoped_refptr",
"../../api:sequence_checker",
+ "../../api/audio:audio_processing",
"../../api/task_queue:pending_task_safety_flag",
- "../../modules/audio_processing:api",
"../../rtc_base:checks",
"../../rtc_base:ip_address",
"../../rtc_base:logging",
@@ -598,8 +598,8 @@
deps = [
":base_jni",
+ "../../api/audio:audio_processing",
"../../modules/audio_processing",
- "../../modules/audio_processing:api",
]
}
@@ -782,6 +782,7 @@
"../../api:rtp_parameters",
"../../api:rtp_sender_interface",
"../../api:turn_customizer",
+ "../../api/audio:audio_processing",
"../../api/crypto:options",
"../../api/rtc_event_log:rtc_event_log_factory",
"../../api/task_queue:default_task_queue_factory",
@@ -789,7 +790,6 @@
"../../call:call_interfaces",
"../../media:rtc_media_base",
"../../modules/audio_device",
- "../../modules/audio_processing:api",
"../../modules/utility",
"../../pc:media_stream_observer",
"../../pc:peer_connection_factory",
@@ -1659,7 +1659,6 @@
"../../media:rtc_internal_video_codecs",
"../../modules/audio_device",
"../../modules/audio_device:mock_audio_device",
- "../../modules/audio_processing:api",
"../../modules/utility",
"../../pc:libjingle_peerconnection",
"../../rtc_base:checks",
diff --git a/sdk/android/src/jni/pc/audio.cc b/sdk/android/src/jni/pc/audio.cc
index 74c8b55..bf99203 100644
--- a/sdk/android/src/jni/pc/audio.cc
+++ b/sdk/android/src/jni/pc/audio.cc
@@ -10,7 +10,7 @@
#include "sdk/android/src/jni/pc/audio.h"
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
namespace webrtc {
namespace jni {
diff --git a/sdk/android/src/jni/pc/audio.h b/sdk/android/src/jni/pc/audio.h
index 09fcaf1..41aaa08 100644
--- a/sdk/android/src/jni/pc/audio.h
+++ b/sdk/android/src/jni/pc/audio.h
@@ -11,8 +11,8 @@
#ifndef SDK_ANDROID_SRC_JNI_PC_AUDIO_H_
#define SDK_ANDROID_SRC_JNI_PC_AUDIO_H_
+#include "api/audio/audio_processing.h"
#include "api/scoped_refptr.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
namespace jni {
diff --git a/sdk/android/src/jni/pc/peer_connection_factory.cc b/sdk/android/src/jni/pc/peer_connection_factory.cc
index 9a21e10..ace3a56 100644
--- a/sdk/android/src/jni/pc/peer_connection_factory.cc
+++ b/sdk/android/src/jni/pc/peer_connection_factory.cc
@@ -14,13 +14,13 @@
#include <utility>
#include "absl/memory/memory.h"
+#include "api/audio/audio_processing.h"
#include "api/enable_media.h"
#include "api/rtc_event_log/rtc_event_log_factory.h"
#include "api/task_queue/default_task_queue_factory.h"
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder_factory.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/utility/include/jvm_android.h"
#include "rtc_base/event_tracer.h"
#include "rtc_base/physical_socket_server.h"
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
index 64be41a..6a393b0 100644
--- a/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
+++ b/sdk/objc/api/peerconnection/RTCPeerConnectionFactory.mm
@@ -31,6 +31,7 @@
#include "sdk/objc/native/api/ssl_certificate_verifier.h"
#include "system_wrappers/include/field_trial.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/enable_media.h"
@@ -41,7 +42,6 @@
#import "components/video_codec/RTCVideoEncoderFactoryH264.h"
#include "media/base/media_constants.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "sdk/objc/native/api/objc_audio_device_module.h"
#include "sdk/objc/native/api/video_decoder_factory.h"
diff --git a/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm b/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm
index 627909a..caec4a6 100644
--- a/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm
+++ b/sdk/objc/api/peerconnection/RTCPeerConnectionFactoryBuilder.mm
@@ -11,12 +11,12 @@
#import "RTCPeerConnectionFactoryBuilder.h"
#import "RTCPeerConnectionFactory+Native.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory.h"
#include "api/audio_codecs/audio_encoder_factory.h"
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder_factory.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
@implementation RTCPeerConnectionFactoryBuilder {
std::unique_ptr<webrtc::VideoEncoderFactory> _videoEncoderFactory;
diff --git a/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm b/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm
index 5ba5a52..83dc38e 100644
--- a/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm
+++ b/sdk/objc/unittests/RTCPeerConnectionFactoryBuilderTest.mm
@@ -21,12 +21,12 @@
#import "api/peerconnection/RTCPeerConnectionFactoryBuilder+DefaultComponents.h"
#import "api/peerconnection/RTCPeerConnectionFactoryBuilder.h"
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/builtin_audio_decoder_factory.h"
#include "api/audio_codecs/builtin_audio_encoder_factory.h"
#include "api/video_codecs/video_decoder_factory.h"
#include "api/video_codecs/video_encoder_factory.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/gunit.h"
#include "rtc_base/system/unused.h"
diff --git a/test/fuzzers/BUILD.gn b/test/fuzzers/BUILD.gn
index 3f5074e..623347e 100644
--- a/test/fuzzers/BUILD.gn
+++ b/test/fuzzers/BUILD.gn
@@ -490,8 +490,8 @@
deps = [
":fuzz_data_helper",
"../../api/audio:audio_frame_api",
+ "../../api/audio:audio_processing",
"../../modules/audio_processing",
- "../../modules/audio_processing:api",
"../../modules/audio_processing:audio_frame_proxies",
"../../rtc_base:checks",
]
@@ -504,11 +504,11 @@
":audio_processing_fuzzer_helper",
"../../api:scoped_refptr",
"../../api/audio:aec3_factory",
+ "../../api/audio:audio_processing",
"../../api/audio:echo_detector_creator",
"../../api/task_queue",
"../../api/task_queue:default_task_queue_factory",
"../../modules/audio_processing",
- "../../modules/audio_processing:api",
"../../modules/audio_processing:audio_buffer",
"../../modules/audio_processing:audioproc_test_utils",
"../../modules/audio_processing/aec3",
@@ -530,8 +530,8 @@
deps = [
"../../api:scoped_refptr",
"../../api/audio:audio_frame_api",
+ "../../api/audio:audio_processing",
"../../modules/audio_processing",
- "../../modules/audio_processing:api",
"../../modules/audio_processing:audio_frame_proxies",
"../../modules/audio_processing:audioproc_test_utils",
"../../rtc_base:checks",
@@ -544,8 +544,8 @@
sources = [ "agc_fuzzer.cc" ]
deps = [
":fuzz_data_helper",
+ "../../api/audio:audio_processing",
"../../modules/audio_processing",
- "../../modules/audio_processing:api",
"../../modules/audio_processing:audio_buffer",
"../../rtc_base:macromagic",
"../../rtc_base:safe_minmax",
@@ -575,7 +575,7 @@
sources = [ "aec3_fuzzer.cc" ]
deps = [
":fuzz_data_helper",
- "../../modules/audio_processing:api",
+ "../../api/audio:audio_processing",
"../../modules/audio_processing:audio_buffer",
"../../modules/audio_processing/aec3",
]
diff --git a/test/fuzzers/aec3_fuzzer.cc b/test/fuzzers/aec3_fuzzer.cc
index a12ca30..2e6d12e 100644
--- a/test/fuzzers/aec3_fuzzer.cc
+++ b/test/fuzzers/aec3_fuzzer.cc
@@ -9,9 +9,9 @@
*/
#include "absl/types/optional.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/aec3/echo_canceller3.h"
#include "modules/audio_processing/audio_buffer.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "test/fuzzers/fuzz_data_helper.h"
namespace webrtc {
diff --git a/test/fuzzers/agc_fuzzer.cc b/test/fuzzers/agc_fuzzer.cc
index 0586708..de64c8e 100644
--- a/test/fuzzers/agc_fuzzer.cc
+++ b/test/fuzzers/agc_fuzzer.cc
@@ -10,9 +10,9 @@
#include <memory>
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/audio_buffer.h"
#include "modules/audio_processing/gain_control_impl.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/numerics/safe_minmax.h"
#include "rtc_base/thread_annotations.h"
#include "test/fuzzers/fuzz_data_helper.h"
diff --git a/test/fuzzers/audio_processing_configs_fuzzer.cc b/test/fuzzers/audio_processing_configs_fuzzer.cc
index 93bce2f..89c0b5b 100644
--- a/test/fuzzers/audio_processing_configs_fuzzer.cc
+++ b/test/fuzzers/audio_processing_configs_fuzzer.cc
@@ -13,12 +13,12 @@
#include "absl/base/nullability.h"
#include "absl/memory/memory.h"
+#include "api/audio/audio_processing.h"
#include "api/audio/echo_canceller3_factory.h"
#include "api/audio/echo_detector_creator.h"
#include "api/task_queue/default_task_queue_factory.h"
#include "api/task_queue/task_queue_base.h"
#include "modules/audio_processing/aec_dump/aec_dump_factory.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/test/audio_processing_builder_for_testing.h"
#include "rtc_base/arraysize.h"
#include "rtc_base/numerics/safe_minmax.h"
diff --git a/test/fuzzers/audio_processing_fuzzer_helper.cc b/test/fuzzers/audio_processing_fuzzer_helper.cc
index 5252918..b852900 100644
--- a/test/fuzzers/audio_processing_fuzzer_helper.cc
+++ b/test/fuzzers/audio_processing_fuzzer_helper.cc
@@ -16,8 +16,8 @@
#include <limits>
#include "api/audio/audio_frame.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/include/audio_frame_proxies.h"
-#include "modules/audio_processing/include/audio_processing.h"
#include "rtc_base/checks.h"
namespace webrtc {
diff --git a/test/fuzzers/audio_processing_fuzzer_helper.h b/test/fuzzers/audio_processing_fuzzer_helper.h
index a604db8..e746c33 100644
--- a/test/fuzzers/audio_processing_fuzzer_helper.h
+++ b/test/fuzzers/audio_processing_fuzzer_helper.h
@@ -13,7 +13,7 @@
#include <memory>
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
#include "test/fuzzers/fuzz_data_helper.h"
namespace webrtc {
diff --git a/test/fuzzers/audio_processing_sample_rate_fuzzer.cc b/test/fuzzers/audio_processing_sample_rate_fuzzer.cc
index ca39469..96e99f5 100644
--- a/test/fuzzers/audio_processing_sample_rate_fuzzer.cc
+++ b/test/fuzzers/audio_processing_sample_rate_fuzzer.cc
@@ -13,7 +13,7 @@
#include <cmath>
#include <limits>
-#include "modules/audio_processing/include/audio_processing.h"
+#include "api/audio/audio_processing.h"
#include "modules/audio_processing/test/audio_processing_builder_for_testing.h"
#include "rtc_base/checks.h"
#include "test/fuzzers/fuzz_data_helper.h"
diff --git a/test/pc/e2e/BUILD.gn b/test/pc/e2e/BUILD.gn
index 3b486ab..c4cc0e1 100644
--- a/test/pc/e2e/BUILD.gn
+++ b/test/pc/e2e/BUILD.gn
@@ -67,11 +67,11 @@
"../../../api:libjingle_peerconnection_api",
"../../../api:scoped_refptr",
"../../../api:sequence_checker",
+ "../../../api/audio:audio_processing",
"../../../api/task_queue:pending_task_safety_flag",
"../../../api/test/pclf:media_configuration",
"../../../api/test/pclf:media_quality_test_params",
"../../../api/test/pclf:peer_configurer",
- "../../../modules/audio_processing:api",
"../../../pc:peerconnection_wrapper",
"../../../rtc_base:logging",
"../../../rtc_base:refcount",
diff --git a/test/pc/e2e/test_peer.cc b/test/pc/e2e/test_peer.cc
index b3a9e1c..d1f4534 100644
--- a/test/pc/e2e/test_peer.cc
+++ b/test/pc/e2e/test_peer.cc
@@ -14,10 +14,10 @@
#include "absl/memory/memory.h"
#include "absl/strings/string_view.h"
+#include "api/audio/audio_processing.h"
#include "api/scoped_refptr.h"
#include "api/test/pclf/media_configuration.h"
#include "api/test/pclf/peer_configurer.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {
namespace webrtc_pc_e2e {
diff --git a/webrtc_lib_link_test.cc b/webrtc_lib_link_test.cc
index e129ad5..0148a54 100644
--- a/webrtc_lib_link_test.cc
+++ b/webrtc_lib_link_test.cc
@@ -8,6 +8,7 @@
* be found in the AUTHORS file in the root of the source tree.
*/
+#include "api/audio/audio_processing.h"
#include "api/audio_codecs/audio_decoder_factory_template.h"
#include "api/audio_codecs/audio_encoder_factory_template.h"
#include "api/audio_codecs/opus/audio_decoder_opus.h"
@@ -29,7 +30,6 @@
#include "api/video_codecs/video_encoder_factory_template_libvpx_vp9_adapter.h"
#include "api/video_codecs/video_encoder_factory_template_open_h264_adapter.h"
#include "modules/audio_device/include/audio_device.h"
-#include "modules/audio_processing/include/audio_processing.h"
namespace webrtc {