Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: webrtc/modules/audio_processing/echo_control_mobile_impl.cc

Issue 1316523002: Convert channel counts to size_t. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Fix compile Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 return AudioProcessing::kNoError; 97 return AudioProcessing::kNoError;
98 } 98 }
99 99
100 assert(audio->num_frames_per_band() <= 160); 100 assert(audio->num_frames_per_band() <= 160);
101 assert(audio->num_channels() == apm_->num_reverse_channels()); 101 assert(audio->num_channels() == apm_->num_reverse_channels());
102 102
103 int err = AudioProcessing::kNoError; 103 int err = AudioProcessing::kNoError;
104 // The ordering convention must be followed to pass to the correct AECM. 104 // The ordering convention must be followed to pass to the correct AECM.
105 size_t handle_index = 0; 105 size_t handle_index = 0;
106 render_queue_buffer_.clear(); 106 render_queue_buffer_.clear();
107 for (int i = 0; i < apm_->num_output_channels(); i++) { 107 for (size_t i = 0; i < apm_->num_output_channels(); i++) {
108 for (int j = 0; j < audio->num_channels(); j++) { 108 for (size_t j = 0; j < audio->num_channels(); j++) {
109 Handle* my_handle = static_cast<Handle*>(handle(handle_index)); 109 Handle* my_handle = static_cast<Handle*>(handle(handle_index));
110 err = WebRtcAecm_GetBufferFarendError( 110 err = WebRtcAecm_GetBufferFarendError(
111 my_handle, audio->split_bands_const(j)[kBand0To8kHz], 111 my_handle, audio->split_bands_const(j)[kBand0To8kHz],
112 audio->num_frames_per_band()); 112 audio->num_frames_per_band());
113 113
114 if (err != AudioProcessing::kNoError) 114 if (err != AudioProcessing::kNoError)
115 return MapError(err); // TODO(ajm): warning possible?); 115 return MapError(err); // TODO(ajm): warning possible?);
116 116
117 // Buffer the samples in the render queue. 117 // Buffer the samples in the render queue.
118 render_queue_buffer_.insert(render_queue_buffer_.end(), 118 render_queue_buffer_.insert(render_queue_buffer_.end(),
(...skipping 25 matching lines...) Expand all
144 if (!is_component_enabled()) { 144 if (!is_component_enabled()) {
145 return; 145 return;
146 } 146 }
147 147
148 while (render_signal_queue_->Remove(&capture_queue_buffer_)) { 148 while (render_signal_queue_->Remove(&capture_queue_buffer_)) {
149 size_t handle_index = 0; 149 size_t handle_index = 0;
150 size_t buffer_index = 0; 150 size_t buffer_index = 0;
151 const size_t num_frames_per_band = 151 const size_t num_frames_per_band =
152 capture_queue_buffer_.size() / 152 capture_queue_buffer_.size() /
153 (apm_->num_output_channels() * apm_->num_reverse_channels()); 153 (apm_->num_output_channels() * apm_->num_reverse_channels());
154 for (int i = 0; i < apm_->num_output_channels(); i++) { 154 for (size_t i = 0; i < apm_->num_output_channels(); i++) {
155 for (int j = 0; j < apm_->num_reverse_channels(); j++) { 155 for (size_t j = 0; j < apm_->num_reverse_channels(); j++) {
156 Handle* my_handle = static_cast<Handle*>(handle(handle_index)); 156 Handle* my_handle = static_cast<Handle*>(handle(handle_index));
157 WebRtcAecm_BufferFarend(my_handle, &capture_queue_buffer_[buffer_index], 157 WebRtcAecm_BufferFarend(my_handle, &capture_queue_buffer_[buffer_index],
158 num_frames_per_band); 158 num_frames_per_band);
159 159
160 buffer_index += num_frames_per_band; 160 buffer_index += num_frames_per_band;
161 handle_index++; 161 handle_index++;
162 } 162 }
163 } 163 }
164 } 164 }
165 } 165 }
166 166
167 int EchoControlMobileImpl::ProcessCaptureAudio(AudioBuffer* audio) { 167 int EchoControlMobileImpl::ProcessCaptureAudio(AudioBuffer* audio) {
168 rtc::CritScope cs_capture(crit_capture_); 168 rtc::CritScope cs_capture(crit_capture_);
169 169
170 if (!is_component_enabled()) { 170 if (!is_component_enabled()) {
171 return AudioProcessing::kNoError; 171 return AudioProcessing::kNoError;
172 } 172 }
173 173
174 if (!apm_->was_stream_delay_set()) { 174 if (!apm_->was_stream_delay_set()) {
175 return AudioProcessing::kStreamParameterNotSetError; 175 return AudioProcessing::kStreamParameterNotSetError;
176 } 176 }
177 177
178 assert(audio->num_frames_per_band() <= 160); 178 assert(audio->num_frames_per_band() <= 160);
179 assert(audio->num_channels() == apm_->num_output_channels()); 179 assert(audio->num_channels() == apm_->num_output_channels());
180 180
181 int err = AudioProcessing::kNoError; 181 int err = AudioProcessing::kNoError;
182 182
183 // The ordering convention must be followed to pass to the correct AECM. 183 // The ordering convention must be followed to pass to the correct AECM.
184 size_t handle_index = 0; 184 size_t handle_index = 0;
185 for (int i = 0; i < audio->num_channels(); i++) { 185 for (size_t i = 0; i < audio->num_channels(); i++) {
186 // TODO(ajm): improve how this works, possibly inside AECM. 186 // TODO(ajm): improve how this works, possibly inside AECM.
187 // This is kind of hacked up. 187 // This is kind of hacked up.
188 const int16_t* noisy = audio->low_pass_reference(i); 188 const int16_t* noisy = audio->low_pass_reference(i);
189 const int16_t* clean = audio->split_bands_const(i)[kBand0To8kHz]; 189 const int16_t* clean = audio->split_bands_const(i)[kBand0To8kHz];
190 if (noisy == NULL) { 190 if (noisy == NULL) {
191 noisy = clean; 191 noisy = clean;
192 clean = NULL; 192 clean = NULL;
193 } 193 }
194 for (int j = 0; j < apm_->num_reverse_channels(); j++) { 194 for (size_t j = 0; j < apm_->num_reverse_channels(); j++) {
195 Handle* my_handle = static_cast<Handle*>(handle(handle_index)); 195 Handle* my_handle = static_cast<Handle*>(handle(handle_index));
196 err = WebRtcAecm_Process( 196 err = WebRtcAecm_Process(
197 my_handle, 197 my_handle,
198 noisy, 198 noisy,
199 clean, 199 clean,
200 audio->split_bands(i)[kBand0To8kHz], 200 audio->split_bands(i)[kBand0To8kHz],
201 audio->num_frames_per_band(), 201 audio->num_frames_per_band(),
202 apm_->stream_delay_ms()); 202 apm_->stream_delay_ms());
203 203
204 if (err != AudioProcessing::kNoError) 204 if (err != AudioProcessing::kNoError)
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 int EchoControlMobileImpl::ConfigureHandle(void* handle) const { 387 int EchoControlMobileImpl::ConfigureHandle(void* handle) const {
388 rtc::CritScope cs_render(crit_render_); 388 rtc::CritScope cs_render(crit_render_);
389 rtc::CritScope cs_capture(crit_capture_); 389 rtc::CritScope cs_capture(crit_capture_);
390 AecmConfig config; 390 AecmConfig config;
391 config.cngMode = comfort_noise_enabled_; 391 config.cngMode = comfort_noise_enabled_;
392 config.echoMode = MapSetting(routing_mode_); 392 config.echoMode = MapSetting(routing_mode_);
393 393
394 return WebRtcAecm_set_config(static_cast<Handle*>(handle), config); 394 return WebRtcAecm_set_config(static_cast<Handle*>(handle), config);
395 } 395 }
396 396
397 int EchoControlMobileImpl::num_handles_required() const { 397 size_t EchoControlMobileImpl::num_handles_required() const {
398 // Not locked as it only relies on APM public API which is threadsafe. 398 // Not locked as it only relies on APM public API which is threadsafe.
399 return apm_->num_output_channels() * apm_->num_reverse_channels(); 399 return apm_->num_output_channels() * apm_->num_reverse_channels();
400 } 400 }
401 401
402 int EchoControlMobileImpl::GetHandleError(void* handle) const { 402 int EchoControlMobileImpl::GetHandleError(void* handle) const {
403 // Not locked as it does not rely on anything in the state. 403 // Not locked as it does not rely on anything in the state.
404 assert(handle != NULL); 404 assert(handle != NULL);
405 return AudioProcessing::kUnspecifiedError; 405 return AudioProcessing::kUnspecifiedError;
406 } 406 }
407 } // namespace webrtc 407 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_processing/echo_control_mobile_impl.h ('k') | webrtc/modules/audio_processing/gain_control_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698