// Copyright 2022 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef SERVICES_AUDIO_AUDIO_PROCESSOR_HANDLER_H_ #define SERVICES_AUDIO_AUDIO_PROCESSOR_HANDLER_H_ #include <atomic> #include <string_view> #include "base/memory/raw_ptr.h" #include "base/sequence_checker.h" #include "media/audio/aecdump_recording_manager.h" #include "media/base/audio_glitch_info.h" #include "media/base/audio_processing.h" #include "media/mojo/mojom/audio_processing.mojom.h" #include "media/webrtc/audio_processor.h" #include "mojo/public/cpp/bindings/receiver.h" #include "services/audio/reference_output.h" namespace media { class AudioBus; class AudioParameters; } // namespace media namespace audio { // Encapsulates audio processing effects in the audio process, using a // media::AudioProcessor. Forwards capture audio, playout audio, and // control calls to the processor. // // The class can be operated on by three different sequences: // - An owning sequence, which performs construction, destruction, getting // stats, and similar control flow. // - A capture thread, which calls ProcessCapturedAudio(). // - A playout thread, which calls OnPlayoutData(). // // All functions should be called on the owning thread, unless otherwise // specified. It is the responsibility of the owner to ensure that the playout // thread and capture thread stop calling into the AudioProcessorHandler before // destruction. class AudioProcessorHandler final : public ReferenceOutput::Listener, public media::mojom::AudioProcessorControls, public media::AecdumpRecordingSource { … }; } // namespace audio #endif // SERVICES_AUDIO_AUDIO_PROCESSOR_HANDLER_H_