Chromium Code Reviews| 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 da7022545f245171a3353a59f55fc991273d57f6..90313a72237642a85906c78688bfd0cdac46050e 100644 | 
| --- a/webrtc/modules/audio_processing/echo_control_mobile_impl.h | 
| +++ b/webrtc/modules/audio_processing/echo_control_mobile_impl.h | 
| @@ -11,11 +11,34 @@ | 
| #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_ECHO_CONTROL_MOBILE_IMPL_H_ | 
| #define WEBRTC_MODULES_AUDIO_PROCESSING_ECHO_CONTROL_MOBILE_IMPL_H_ | 
| +#include "webrtc/base/scoped_ptr.h" | 
| +#include "webrtc/common_audio/swap_queue.h" | 
| #include "webrtc/modules/audio_processing/include/audio_processing.h" | 
| #include "webrtc/modules/audio_processing/processing_component.h" | 
| namespace webrtc { | 
| +namespace { | 
| +// Functor to use when supplying a verifier function for the queue item | 
| +// verifcation. | 
| +class AecmRenderQueueItemVerifier { | 
| + public: | 
| + explicit AecmRenderQueueItemVerifier(size_t allowed_size_1, | 
| + size_t allowed_size_2) | 
| + : allowed_size_1_(allowed_size_1), allowed_size_2_(allowed_size_2) {} | 
| + | 
| + bool operator()(const std::vector<int16_t>& v) const { | 
| + return (((v.size() == allowed_size_1_) || (v.size() == allowed_size_2_)) && | 
| + (v.capacity() >= std::max(allowed_size_1_, allowed_size_2_))); | 
| + } | 
| + | 
| + private: | 
| + size_t allowed_size_1_; | 
| + size_t allowed_size_2_; | 
| +}; | 
| + | 
| +} // namespace anonymous | 
| + | 
| class AudioBuffer; | 
| class CriticalSectionWrapper; | 
| @@ -37,7 +60,16 @@ class EchoControlMobileImpl : public EchoControlMobile, | 
| // ProcessingComponent implementation. | 
| int Initialize() override; | 
| + // Reads render side data that has been queued on the render call. | 
| + void ReadQueuedRenderData(); | 
| + | 
| private: | 
| + static const size_t kAllowedValuesOfSamplesPerFrame1 = 80; | 
| + static const size_t kAllowedValuesOfSamplesPerFrame2 = 160; | 
| + // TODO(peah): Decrease this once we properly handle hugely unbalanced | 
| + // reverse and forward call numbers. | 
| + static const size_t kMaxNumFramesToBuffer = 100; | 
| + | 
| // EchoControlMobile implementation. | 
| int Enable(bool enable) override; | 
| int set_routing_mode(RoutingMode mode) override; | 
| @@ -53,11 +85,19 @@ class EchoControlMobileImpl : public EchoControlMobile, | 
| int num_handles_required() const override; | 
| int GetHandleError(void* handle) const override; | 
| + void AllocateRenderQueue(); | 
| + | 
| const AudioProcessing* apm_; | 
| CriticalSectionWrapper* crit_; | 
| RoutingMode routing_mode_; | 
| bool comfort_noise_enabled_; | 
| unsigned char* external_echo_path_; | 
| + | 
| + size_t render_queue_element_max_size_; | 
| + std::vector<int16_t> render_queue_buffer_; | 
| + std::vector<int16_t> capture_queue_buffer_; | 
| + rtc::scoped_ptr<SwapQueue<std::vector<int16_t>, AecmRenderQueueItemVerifier> > | 
| 
 
kwiberg-webrtc
2015/10/27 10:43:07
>>
 
peah-webrtc
2015/10/29 11:36:57
Done.
 
 | 
| + render_signal_queue_; | 
| }; | 
| } // namespace webrtc |