Index: webrtc/modules/audio_processing/echo_control_mobile_impl.h |
diff --git a/webrtc/modules/audio_processing/echo_control_mobile_impl.h b/webrtc/modules/audio_processing/echo_control_mobile_impl.h |
index 23c1abbd472b0e8d077e4509f1dc580fabb61390..6f2c28dec097ae2a4df797a968de79f4bb3c3ded 100644 |
--- a/webrtc/modules/audio_processing/echo_control_mobile_impl.h |
+++ b/webrtc/modules/audio_processing/echo_control_mobile_impl.h |
@@ -13,6 +13,7 @@ |
#include <memory> |
+#include "webrtc/base/constructormagic.h" |
#include "webrtc/base/criticalsection.h" |
#include "webrtc/common_audio/swap_queue.h" |
#include "webrtc/modules/audio_processing/include/audio_processing.h" |
@@ -22,8 +23,7 @@ namespace webrtc { |
class AudioBuffer; |
-class EchoControlMobileImpl : public EchoControlMobile, |
- public ProcessingComponent { |
+class EchoControlMobileImpl : public EchoControlMobile { |
public: |
EchoControlMobileImpl(const AudioProcessing* apm, |
rtc::CriticalSection* crit_render, |
@@ -39,13 +39,14 @@ class EchoControlMobileImpl : public EchoControlMobile, |
RoutingMode routing_mode() const override; |
bool is_comfort_noise_enabled() const override; |
- // ProcessingComponent implementation. |
- int Initialize() override; |
+ void Initialize(); |
// Reads render side data that has been queued on the render call. |
void ReadQueuedRenderData(); |
private: |
+ class Canceller; |
+ |
// EchoControlMobile implementation. |
int Enable(bool enable) override; |
int set_routing_mode(RoutingMode mode) override; |
@@ -53,16 +54,10 @@ class EchoControlMobileImpl : public EchoControlMobile, |
int SetEchoPath(const void* echo_path, size_t size_bytes) override; |
int GetEchoPath(void* echo_path, size_t size_bytes) const override; |
- // ProcessingComponent implementation. |
- // Called holding both the render and capture locks. |
- void* CreateHandle() const override; |
- int InitializeHandle(void* handle) const override; |
- int ConfigureHandle(void* handle) const override; |
- void DestroyHandle(void* handle) const override; |
- size_t num_handles_required() const override; |
- int GetHandleError(void* handle) const override; |
+ size_t num_handles_required() const; |
void AllocateRenderQueue(); |
+ int Configure(); |
// Not guarded as its public API is thread safe. |
const AudioProcessing* apm_; |
@@ -70,6 +65,8 @@ class EchoControlMobileImpl : public EchoControlMobile, |
rtc::CriticalSection* const crit_render_ ACQUIRED_BEFORE(crit_capture_); |
rtc::CriticalSection* const crit_capture_; |
+ bool enabled_ = false; |
+ |
RoutingMode routing_mode_ GUARDED_BY(crit_capture_); |
bool comfort_noise_enabled_ GUARDED_BY(crit_capture_); |
unsigned char* external_echo_path_ GUARDED_BY(crit_render_) |
@@ -85,6 +82,9 @@ class EchoControlMobileImpl : public EchoControlMobile, |
std::unique_ptr< |
SwapQueue<std::vector<int16_t>, RenderQueueItemVerifier<int16_t>>> |
render_signal_queue_; |
+ |
+ std::vector<std::unique_ptr<Canceller>> cancellers_; |
+ RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(EchoControlMobileImpl); |
}; |
} // namespace webrtc |