Index: webrtc/modules/audio_processing/aec3/echo_canceller3.cc |
diff --git a/webrtc/modules/audio_processing/aec3/echo_canceller3.cc b/webrtc/modules/audio_processing/aec3/echo_canceller3.cc |
index b409e60350e2c2b6c45b2395d8a42d6285f92410..ec7b55a215b3d7d50ceec1a4c260ceb4feda476d 100644 |
--- a/webrtc/modules/audio_processing/aec3/echo_canceller3.cc |
+++ b/webrtc/modules/audio_processing/aec3/echo_canceller3.cc |
@@ -53,7 +53,7 @@ void FillSubFrameView(std::vector<std::vector<float>>* frame, |
void ProcessCaptureFrameContent( |
AudioBuffer* capture, |
- bool known_echo_path_change, |
+ bool level_change, |
bool saturated_microphone_signal, |
size_t sub_frame_index, |
FrameBlocker* capture_blocker, |
@@ -63,13 +63,13 @@ void ProcessCaptureFrameContent( |
std::vector<rtc::ArrayView<float>>* sub_frame_view) { |
FillSubFrameView(capture, sub_frame_index, sub_frame_view); |
capture_blocker->InsertSubFrameAndExtractBlock(*sub_frame_view, block); |
- block_processor->ProcessCapture(known_echo_path_change, |
- saturated_microphone_signal, block); |
+ block_processor->ProcessCapture(level_change, saturated_microphone_signal, |
+ block); |
output_framer->InsertBlockAndExtractSubFrame(*block, sub_frame_view); |
} |
void ProcessRemainingCaptureFrameContent( |
- bool known_echo_path_change, |
+ bool level_change, |
bool saturated_microphone_signal, |
FrameBlocker* capture_blocker, |
BlockFramer* output_framer, |
@@ -80,8 +80,8 @@ void ProcessRemainingCaptureFrameContent( |
} |
capture_blocker->ExtractBlock(block); |
- block_processor->ProcessCapture(known_echo_path_change, |
- saturated_microphone_signal, block); |
+ block_processor->ProcessCapture(level_change, saturated_microphone_signal, |
+ block); |
output_framer->InsertBlock(*block); |
} |
@@ -101,7 +101,7 @@ bool BufferRemainingRenderFrameContent(FrameBlocker* render_blocker, |
BlockProcessor* block_processor, |
std::vector<std::vector<float>>* block) { |
if (!render_blocker->IsBlockAvailable()) { |
- return false; |
+ return true; |
} |
render_blocker->ExtractBlock(block); |
return block_processor->BufferRender(block); |
@@ -275,8 +275,7 @@ void EchoCanceller3::AnalyzeCapture(AudioBuffer* capture) { |
} |
} |
-void EchoCanceller3::ProcessCapture(AudioBuffer* capture, |
- bool known_echo_path_change) { |
+void EchoCanceller3::ProcessCapture(AudioBuffer* capture, bool level_change) { |
RTC_DCHECK_RUNS_SERIALIZED(&capture_race_checker_); |
RTC_DCHECK(capture); |
RTC_DCHECK_EQ(1u, capture->num_channels()); |
@@ -289,27 +288,26 @@ void EchoCanceller3::ProcessCapture(AudioBuffer* capture, |
data_dumper_->DumpWav("aec3_capture_input", capture_lower_band, |
LowestBandRate(sample_rate_hz_), 1); |
- const bool render_buffer_overrun = EmptyRenderQueue(); |
- RTC_DCHECK(!render_buffer_overrun); |
+ const bool successful_buffering = EmptyRenderQueue(); |
+ RTC_DCHECK(successful_buffering); |
if (capture_highpass_filter_) { |
capture_highpass_filter_->Process(capture_lower_band); |
} |
- ProcessCaptureFrameContent(capture, known_echo_path_change, |
- saturated_microphone_signal_, 0, &capture_blocker_, |
- &output_framer_, block_processor_.get(), &block_, |
- &sub_frame_view_); |
+ ProcessCaptureFrameContent( |
+ capture, level_change, saturated_microphone_signal_, 0, &capture_blocker_, |
+ &output_framer_, block_processor_.get(), &block_, &sub_frame_view_); |
if (sample_rate_hz_ != 8000) { |
ProcessCaptureFrameContent( |
- capture, known_echo_path_change, saturated_microphone_signal_, 1, |
+ capture, level_change, saturated_microphone_signal_, 1, |
&capture_blocker_, &output_framer_, block_processor_.get(), &block_, |
&sub_frame_view_); |
} |
ProcessRemainingCaptureFrameContent( |
- known_echo_path_change, saturated_microphone_signal_, &capture_blocker_, |
+ level_change, saturated_microphone_signal_, &capture_blocker_, |
&output_framer_, block_processor_.get(), &block_); |
data_dumper_->DumpWav("aec3_capture_output", frame_length_, |
@@ -332,27 +330,33 @@ bool EchoCanceller3::Validate( |
bool EchoCanceller3::EmptyRenderQueue() { |
RTC_DCHECK_RUNS_SERIALIZED(&capture_race_checker_); |
- bool render_buffer_overrun = false; |
+ bool successful_buffering = true; |
bool frame_to_buffer = |
render_transfer_queue_.Remove(&render_queue_output_frame_); |
while (frame_to_buffer) { |
- render_buffer_overrun |= BufferRenderFrameContent( |
- &render_queue_output_frame_, 0, &render_blocker_, |
- block_processor_.get(), &block_, &sub_frame_view_); |
+ successful_buffering = |
+ BufferRenderFrameContent(&render_queue_output_frame_, 0, |
+ &render_blocker_, block_processor_.get(), |
+ &block_, &sub_frame_view_) && |
+ successful_buffering; |
if (sample_rate_hz_ != 8000) { |
- render_buffer_overrun |= BufferRenderFrameContent( |
- &render_queue_output_frame_, 1, &render_blocker_, |
- block_processor_.get(), &block_, &sub_frame_view_); |
+ successful_buffering = |
+ BufferRenderFrameContent(&render_queue_output_frame_, 1, |
+ &render_blocker_, block_processor_.get(), |
+ &block_, &sub_frame_view_) && |
+ successful_buffering; |
} |
- render_buffer_overrun |= BufferRemainingRenderFrameContent( |
- &render_blocker_, block_processor_.get(), &block_); |
+ successful_buffering = |
+ BufferRemainingRenderFrameContent(&render_blocker_, |
+ block_processor_.get(), &block_) && |
+ successful_buffering; |
frame_to_buffer = |
render_transfer_queue_.Remove(&render_queue_output_frame_); |
} |
- return render_buffer_overrun; |
+ return successful_buffering; |
} |
} // namespace webrtc |