Async audio processing API
API to injecting a heavy audio processing operation into WebRTC audio capture pipeline
Bug: webrtc:12003
Change-Id: I9f6f58f468bd84efd0a9d53d703db6229a03959e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/165788
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Olga Sharonova <olka@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#32291}
diff --git a/audio/audio_transport_impl.h b/audio/audio_transport_impl.h
index 5b885bd..f3ca2fa 100644
--- a/audio/audio_transport_impl.h
+++ b/audio/audio_transport_impl.h
@@ -11,11 +11,13 @@
#ifndef AUDIO_AUDIO_TRANSPORT_IMPL_H_
#define AUDIO_AUDIO_TRANSPORT_IMPL_H_
+#include <memory>
#include <vector>
#include "api/audio/audio_mixer.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 "modules/audio_processing/typing_detection.h"
@@ -28,7 +30,10 @@
class AudioTransportImpl : public AudioTransport {
public:
- AudioTransportImpl(AudioMixer* mixer, AudioProcessing* audio_processing);
+ AudioTransportImpl(
+ AudioMixer* mixer,
+ AudioProcessing* audio_processing,
+ AsyncAudioProcessing::Factory* async_audio_processing_factory);
AudioTransportImpl() = delete;
AudioTransportImpl(const AudioTransportImpl&) = delete;
@@ -71,10 +76,16 @@
bool typing_noise_detected() const;
private:
+ void SendProcessedData(std::unique_ptr<AudioFrame> audio_frame);
+
// Shared.
AudioProcessing* audio_processing_ = nullptr;
// Capture side.
+
+ // Thread-safe.
+ const std::unique_ptr<AsyncAudioProcessing> async_audio_processing_;
+
mutable Mutex capture_lock_;
std::vector<AudioSender*> audio_senders_ RTC_GUARDED_BY(capture_lock_);
int send_sample_rate_hz_ RTC_GUARDED_BY(capture_lock_) = 8000;
@@ -85,6 +96,7 @@
TypingDetection typing_detection_;
// Render side.
+
rtc::scoped_refptr<AudioMixer> mixer_;
AudioFrame mixed_frame_;
// Converts mixed audio to the audio device output rate.