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

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

Issue 1422013002: Preparational work for an upcoming addition of a threadchecking scheme for APM (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@bundling_of_state_CL
Patch Set: Fixed the conditional thread-checking scheme" Created 5 years 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 25 matching lines...) Expand all
36 36
37 // Maximum length that a frame of samples can have. 37 // Maximum length that a frame of samples can have.
38 static const size_t kMaxAllowedValuesOfSamplesPerFrame = 160; 38 static const size_t kMaxAllowedValuesOfSamplesPerFrame = 160;
39 // Maximum number of frames to buffer in the render queue. 39 // Maximum number of frames to buffer in the render queue.
40 // TODO(peah): Decrease this once we properly handle hugely unbalanced 40 // TODO(peah): Decrease this once we properly handle hugely unbalanced
41 // reverse and forward call numbers. 41 // reverse and forward call numbers.
42 static const size_t kMaxNumFramesToBuffer = 100; 42 static const size_t kMaxNumFramesToBuffer = 100;
43 43
44 } // namespace 44 } // namespace
45 45
46 GainControlImpl::GainControlImpl(const AudioProcessing* apm, 46 GainControlImpl::GainControlImpl(
47 CriticalSectionWrapper* crit) 47 const AudioProcessing* apm,
48 CriticalSectionWrapper* crit,
49 const rtc::ThreadChecker* render_thread_checker,
50 const rtc::ThreadChecker* capture_thread_checker)
48 : ProcessingComponent(), 51 : ProcessingComponent(),
49 apm_(apm), 52 apm_(apm),
50 crit_(crit), 53 crit_(crit),
54 render_thread_checker_(render_thread_checker),
55 capture_thread_checker_(capture_thread_checker),
51 mode_(kAdaptiveAnalog), 56 mode_(kAdaptiveAnalog),
52 minimum_capture_level_(0), 57 minimum_capture_level_(0),
53 maximum_capture_level_(255), 58 maximum_capture_level_(255),
54 limiter_enabled_(true), 59 limiter_enabled_(true),
55 target_level_dbfs_(3), 60 target_level_dbfs_(3),
56 compression_gain_db_(9), 61 compression_gain_db_(9),
57 analog_capture_level_(0), 62 analog_capture_level_(0),
58 was_analog_level_set_(false), 63 was_analog_level_set_(false),
59 stream_is_saturated_(false), 64 stream_is_saturated_(false),
60 render_queue_element_max_size_(0) {} 65 render_queue_element_max_size_(0) {}
61 66
62 GainControlImpl::~GainControlImpl() {} 67 GainControlImpl::~GainControlImpl() {}
63 68
64 int GainControlImpl::ProcessRenderAudio(AudioBuffer* audio) { 69 int GainControlImpl::ProcessRenderAudio(AudioBuffer* audio) {
70 RTC_DCHECK(render_thread_checker_->CalledOnValidThread());
65 if (!is_component_enabled()) { 71 if (!is_component_enabled()) {
66 return apm_->kNoError; 72 return apm_->kNoError;
67 } 73 }
68 74
69 assert(audio->num_frames_per_band() <= 160); 75 assert(audio->num_frames_per_band() <= 160);
70 76
71 render_queue_buffer_.resize(0); 77 render_queue_buffer_.resize(0);
72 for (int i = 0; i < num_handles(); i++) { 78 for (int i = 0; i < num_handles(); i++) {
73 Handle* my_handle = static_cast<Handle*>(handle(i)); 79 Handle* my_handle = static_cast<Handle*>(handle(i));
74 int err = 80 int err =
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 219
214 analog_capture_level_ /= num_handles(); 220 analog_capture_level_ /= num_handles();
215 } 221 }
216 222
217 was_analog_level_set_ = false; 223 was_analog_level_set_ = false;
218 return apm_->kNoError; 224 return apm_->kNoError;
219 } 225 }
220 226
221 // TODO(ajm): ensure this is called under kAdaptiveAnalog. 227 // TODO(ajm): ensure this is called under kAdaptiveAnalog.
222 int GainControlImpl::set_stream_analog_level(int level) { 228 int GainControlImpl::set_stream_analog_level(int level) {
229 RTC_DCHECK(capture_thread_checker_->CalledOnValidThread());
223 CriticalSectionScoped crit_scoped(crit_); 230 CriticalSectionScoped crit_scoped(crit_);
224 was_analog_level_set_ = true; 231 was_analog_level_set_ = true;
225 if (level < minimum_capture_level_ || level > maximum_capture_level_) { 232 if (level < minimum_capture_level_ || level > maximum_capture_level_) {
226 return apm_->kBadParameterError; 233 return apm_->kBadParameterError;
227 } 234 }
228 analog_capture_level_ = level; 235 analog_capture_level_ = level;
229 236
230 return apm_->kNoError; 237 return apm_->kNoError;
231 } 238 }
232 239
233 int GainControlImpl::stream_analog_level() { 240 int GainControlImpl::stream_analog_level() {
241 RTC_DCHECK(capture_thread_checker_->CalledOnValidThread());
234 // TODO(ajm): enable this assertion? 242 // TODO(ajm): enable this assertion?
235 //assert(mode_ == kAdaptiveAnalog); 243 //assert(mode_ == kAdaptiveAnalog);
236 244
237 return analog_capture_level_; 245 return analog_capture_level_;
238 } 246 }
239 247
240 int GainControlImpl::Enable(bool enable) { 248 int GainControlImpl::Enable(bool enable) {
241 CriticalSectionScoped crit_scoped(crit_); 249 CriticalSectionScoped crit_scoped(crit_);
242 return EnableComponent(enable); 250 return EnableComponent(enable);
243 } 251 }
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 return apm_->num_output_channels(); 408 return apm_->num_output_channels();
401 } 409 }
402 410
403 int GainControlImpl::GetHandleError(void* handle) const { 411 int GainControlImpl::GetHandleError(void* handle) const {
404 // The AGC has no get_error() function. 412 // The AGC has no get_error() function.
405 // (Despite listing errors in its interface...) 413 // (Despite listing errors in its interface...)
406 assert(handle != NULL); 414 assert(handle != NULL);
407 return apm_->kUnspecifiedError; 415 return apm_->kUnspecifiedError;
408 } 416 }
409 } // namespace webrtc 417 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698