Send runtime settings to the Audio Processing Module (APM)
This CL includes the following changes: - APM runtime setting (ID + float payload) and unit tests - Swap queue of APM runtime settings used in AudioProcessingImpl - runtime settings handler that forwards the settings to APM sub-modules when a message is retrieved from the queue - Unit test placeholder to check that the pre-gain update message is correctly delivered Bug: webrtc:9138 Change-Id: Id22704af15fde2b87a4431f5ce64ad1aeafc5280 Reviewed-on: https://webrtc-review.googlesource.com/69320 Reviewed-by: Per Åhgren <peah@webrtc.org> Reviewed-by: Alex Loiko <aleloi@webrtc.org> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org> Cr-Commit-Position: refs/heads/master@{#22873}
This commit is contained in:

committed by
Commit Bot

parent
5b07c24056
commit
c054e78f4e
@ -66,6 +66,8 @@ class AudioProcessingImpl : public AudioProcessing {
|
||||
std::unique_ptr<AudioGenerator> audio_generator) override;
|
||||
void DetachPlayoutAudioGenerator() override;
|
||||
|
||||
void SetRuntimeSetting(RuntimeSetting setting) override;
|
||||
|
||||
// Capture-side exclusive methods possibly running APM in a
|
||||
// multi-threaded manner. Acquire the capture lock.
|
||||
int ProcessStream(AudioFrame* frame) override;
|
||||
@ -149,6 +151,21 @@ class AudioProcessingImpl : public AudioProcessing {
|
||||
std::unique_ptr<ApmDataDumper> data_dumper_;
|
||||
static int instance_count_;
|
||||
|
||||
std::unique_ptr<SwapQueue<RuntimeSetting>> runtime_settings_;
|
||||
|
||||
// Class providing thread-safe message pipe functionality for
|
||||
// |runtime_settings_|.
|
||||
class RuntimeSettingEnqueuer {
|
||||
public:
|
||||
explicit RuntimeSettingEnqueuer(
|
||||
SwapQueue<RuntimeSetting>* runtime_settings);
|
||||
~RuntimeSettingEnqueuer();
|
||||
void Enqueue(RuntimeSetting setting);
|
||||
|
||||
private:
|
||||
SwapQueue<RuntimeSetting>* runtime_settings_;
|
||||
} runtime_settings_enqueuer_;
|
||||
|
||||
// Submodule interface implementations.
|
||||
std::unique_ptr<HighPassFilter> high_pass_filter_impl_;
|
||||
|
||||
@ -239,6 +256,9 @@ class AudioProcessingImpl : public AudioProcessing {
|
||||
void InitializePostProcessor() RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
|
||||
void InitializePreProcessor() RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_render_);
|
||||
|
||||
// Handle all the runtime settings in the queue.
|
||||
void HandleRuntimeSettings() RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_capture_);
|
||||
|
||||
void EmptyQueuedRenderAudio();
|
||||
void AllocateRenderQueue()
|
||||
RTC_EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_);
|
||||
|
Reference in New Issue
Block a user