Moved the AGC render sample queue into the audio processing module
Several subcomponents inside APM copy render audio from
the render side to the capture side using the same
pattern. Currently this is done independently for the
submodules.
This CL moves the the AGC functionality for this into
APM.
BUG=webrtc:5298, webrtc:6540
Review-Url: https://codereview.webrtc.org/2444283002
Cr-Commit-Position: refs/heads/master@{#14770}
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h
index 817b6b2..aec4ed7 100644
--- a/webrtc/modules/audio_processing/audio_processing_impl.h
+++ b/webrtc/modules/audio_processing/audio_processing_impl.h
@@ -238,7 +238,7 @@
void EmptyQueuedRenderAudio();
void AllocateRenderQueue()
EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_);
- void QueueRenderAudio(const AudioBuffer* audio)
+ void QueueRenderAudio(AudioBuffer* audio)
EXCLUSIVE_LOCKS_REQUIRED(crit_render_);
// Capture-side exclusive methods possibly running APM in a multi-threaded
@@ -371,22 +371,30 @@
std::unique_ptr<AudioBuffer> render_audio;
} render_ GUARDED_BY(crit_render_);
- size_t float_render_queue_element_max_size_ GUARDED_BY(crit_render_)
+ size_t aec_render_queue_element_max_size_ GUARDED_BY(crit_render_)
GUARDED_BY(crit_capture_) = 0;
- std::vector<float> float_render_queue_buffer_ GUARDED_BY(crit_render_);
- std::vector<float> float_capture_queue_buffer_ GUARDED_BY(crit_capture_);
+ std::vector<float> aec_render_queue_buffer_ GUARDED_BY(crit_render_);
+ std::vector<float> aec_capture_queue_buffer_ GUARDED_BY(crit_capture_);
- size_t int16_render_queue_element_max_size_ GUARDED_BY(crit_render_)
+ size_t aecm_render_queue_element_max_size_ GUARDED_BY(crit_render_)
GUARDED_BY(crit_capture_) = 0;
- std::vector<int16_t> int16_render_queue_buffer_ GUARDED_BY(crit_render_);
- std::vector<int16_t> int16_capture_queue_buffer_ GUARDED_BY(crit_capture_);
+ std::vector<int16_t> aecm_render_queue_buffer_ GUARDED_BY(crit_render_);
+ std::vector<int16_t> aecm_capture_queue_buffer_ GUARDED_BY(crit_capture_);
+
+ size_t agc_render_queue_element_max_size_ GUARDED_BY(crit_render_)
+ GUARDED_BY(crit_capture_) = 0;
+ std::vector<int16_t> agc_render_queue_buffer_ GUARDED_BY(crit_render_);
+ std::vector<int16_t> agc_capture_queue_buffer_ GUARDED_BY(crit_capture_);
// Lock protection not needed.
std::unique_ptr<SwapQueue<std::vector<float>, RenderQueueItemVerifier<float>>>
- float_render_signal_queue_;
+ aec_render_signal_queue_;
std::unique_ptr<
SwapQueue<std::vector<int16_t>, RenderQueueItemVerifier<int16_t>>>
- int16_render_signal_queue_;
+ aecm_render_signal_queue_;
+ std::unique_ptr<
+ SwapQueue<std::vector<int16_t>, RenderQueueItemVerifier<int16_t>>>
+ agc_render_signal_queue_;
};
} // namespace webrtc