Index: webrtc/modules/audio_processing/audio_processing_impl.h |
diff --git a/webrtc/modules/audio_processing/audio_processing_impl.h b/webrtc/modules/audio_processing/audio_processing_impl.h |
index a44b5a8f41320d10ac6587a30937dd43cb430531..7e89ec281b33eaff19163408ed913548efb54285 100644 |
--- a/webrtc/modules/audio_processing/audio_processing_impl.h |
+++ b/webrtc/modules/audio_processing/audio_processing_impl.h |
@@ -23,6 +23,7 @@ namespace webrtc { |
class AgcManagerDirect; |
class AudioBuffer; |
+class AudioConverter; |
template<typename T> |
class Beamformer; |
@@ -39,6 +40,7 @@ class NoiseSuppressionImpl; |
class ProcessingComponent; |
class TransientSuppressor; |
class VoiceDetectionImpl; |
+class IntelligibilityEnhancer; |
#ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
namespace audioproc { |
@@ -89,12 +91,15 @@ class AudioProcessingImpl : public AudioProcessing { |
const StreamConfig& output_config, |
float* const* dest) override; |
int AnalyzeReverseStream(AudioFrame* frame) override; |
+ int ProcessReverseStream(AudioFrame* frame) override; |
int AnalyzeReverseStream(const float* const* data, |
int samples_per_channel, |
int sample_rate_hz, |
ChannelLayout layout) override; |
- int AnalyzeReverseStream(const float* const* data, |
- const StreamConfig& reverse_config) override; |
+ int ProcessReverseStream(const float* const* src, |
+ const StreamConfig& reverse_input_config, |
+ const StreamConfig& reverse_output_config, |
+ float* const* dest) override; |
int set_stream_delay_ms(int delay) override; |
int stream_delay_ms() const override; |
bool was_stream_delay_set() const override; |
@@ -124,16 +129,24 @@ class AudioProcessingImpl : public AudioProcessing { |
EXCLUSIVE_LOCKS_REQUIRED(crit_); |
int MaybeInitializeLocked(const ProcessingConfig& config) |
EXCLUSIVE_LOCKS_REQUIRED(crit_); |
+ // TODO(ekm): Remove once all clients updated to new interface. |
+ int AnalyzeReverseStream(const float* const* src, |
+ const StreamConfig& input_config, |
+ const StreamConfig& output_config, |
+ const float* const* dest); |
int ProcessStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
- int AnalyzeReverseStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
+ int ProcessReverseStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
bool is_data_processed() const; |
bool output_copy_needed(bool is_data_processed) const; |
bool synthesis_needed(bool is_data_processed) const; |
bool analysis_needed(bool is_data_processed) const; |
+ bool is_rev_processed() const; |
+ bool rev_conversion_needed() const; |
void InitializeExperimentalAgc() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
void InitializeTransient() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
void InitializeBeamformer() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
+ void InitializeIntelligibility() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
void MaybeUpdateHistograms() EXCLUSIVE_LOCKS_REQUIRED(crit_); |
EchoCancellationImpl* echo_cancellation_; |
@@ -149,6 +162,7 @@ class AudioProcessingImpl : public AudioProcessing { |
CriticalSectionWrapper* crit_; |
rtc::scoped_ptr<AudioBuffer> render_audio_; |
rtc::scoped_ptr<AudioBuffer> capture_audio_; |
+ rtc::scoped_ptr<AudioConverter> render_converter_; |
#ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
// TODO(andrew): make this more graceful. Ideally we would split this stuff |
// out into a separate class with an "enabled" and "disabled" implementation. |
@@ -191,6 +205,9 @@ class AudioProcessingImpl : public AudioProcessing { |
const bool beamformer_enabled_; |
rtc::scoped_ptr<Beamformer<float>> beamformer_; |
const std::vector<Point> array_geometry_; |
+ |
+ bool intelligibility_enabled_; |
+ rtc::scoped_ptr<IntelligibilityEnhancer> intelligibility_enhancer_; |
}; |
} // namespace webrtc |