| OLD | NEW |
| 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 |
| 11 #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_ | 11 #ifndef WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_ |
| 12 #define WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_ | 12 #define WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_ |
| 13 | 13 |
| 14 #include <list> | 14 #include <list> |
| 15 #include <memory> | 15 #include <memory> |
| 16 #include <string> | 16 #include <string> |
| 17 #include <vector> | 17 #include <vector> |
| 18 | 18 |
| 19 #include "webrtc/base/criticalsection.h" | 19 #include "webrtc/base/criticalsection.h" |
| 20 #include "webrtc/base/gtest_prod_util.h" | 20 #include "webrtc/base/gtest_prod_util.h" |
| 21 #include "webrtc/base/ignore_wundef.h" | 21 #include "webrtc/base/ignore_wundef.h" |
| 22 #include "webrtc/base/swap_queue.h" |
| 22 #include "webrtc/base/thread_annotations.h" | 23 #include "webrtc/base/thread_annotations.h" |
| 23 #include "webrtc/modules/audio_processing/audio_buffer.h" | 24 #include "webrtc/modules/audio_processing/audio_buffer.h" |
| 24 #include "webrtc/modules/audio_processing/include/audio_processing.h" | 25 #include "webrtc/modules/audio_processing/include/audio_processing.h" |
| 26 #include "webrtc/modules/audio_processing/render_queue_item_verifier.h" |
| 25 #include "webrtc/system_wrappers/include/file_wrapper.h" | 27 #include "webrtc/system_wrappers/include/file_wrapper.h" |
| 26 | 28 |
| 27 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 29 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
| 28 // Files generated at build-time by the protobuf compiler. | 30 // Files generated at build-time by the protobuf compiler. |
| 29 RTC_PUSH_IGNORING_WUNDEF() | 31 RTC_PUSH_IGNORING_WUNDEF() |
| 30 #ifdef WEBRTC_ANDROID_PLATFORM_BUILD | 32 #ifdef WEBRTC_ANDROID_PLATFORM_BUILD |
| 31 #include "external/webrtc/webrtc/modules/audio_processing/debug.pb.h" | 33 #include "external/webrtc/webrtc/modules/audio_processing/debug.pb.h" |
| 32 #else | 34 #else |
| 33 #include "webrtc/modules/audio_processing/debug.pb.h" | 35 #include "webrtc/modules/audio_processing/debug.pb.h" |
| 34 #endif | 36 #endif |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 void InitializeTransient() | 228 void InitializeTransient() |
| 227 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); | 229 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); |
| 228 void InitializeBeamformer() | 230 void InitializeBeamformer() |
| 229 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); | 231 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); |
| 230 void InitializeIntelligibility() | 232 void InitializeIntelligibility() |
| 231 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); | 233 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); |
| 232 int InitializeLocked(const ProcessingConfig& config) | 234 int InitializeLocked(const ProcessingConfig& config) |
| 233 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); | 235 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); |
| 234 void InitializeLevelController() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_); | 236 void InitializeLevelController() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_); |
| 235 | 237 |
| 238 void EmptyQueuedRenderAudio(); |
| 239 void AllocateRenderQueue() |
| 240 EXCLUSIVE_LOCKS_REQUIRED(crit_render_, crit_capture_); |
| 241 void QueueRenderAudio(const AudioBuffer* audio) |
| 242 EXCLUSIVE_LOCKS_REQUIRED(crit_render_); |
| 243 |
| 236 // Capture-side exclusive methods possibly running APM in a multi-threaded | 244 // Capture-side exclusive methods possibly running APM in a multi-threaded |
| 237 // manner that are called with the render lock already acquired. | 245 // manner that are called with the render lock already acquired. |
| 238 int ProcessCaptureStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_); | 246 int ProcessCaptureStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_); |
| 239 void MaybeUpdateHistograms() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_); | 247 void MaybeUpdateHistograms() EXCLUSIVE_LOCKS_REQUIRED(crit_capture_); |
| 240 | 248 |
| 241 // Render-side exclusive methods possibly running APM in a multi-threaded | 249 // Render-side exclusive methods possibly running APM in a multi-threaded |
| 242 // manner that are called with the render lock already acquired. | 250 // manner that are called with the render lock already acquired. |
| 243 // TODO(ekm): Remove once all clients updated to new interface. | 251 // TODO(ekm): Remove once all clients updated to new interface. |
| 244 int AnalyzeReverseStreamLocked(const float* const* src, | 252 int AnalyzeReverseStreamLocked(const float* const* src, |
| 245 const StreamConfig& input_config, | 253 const StreamConfig& input_config, |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 bool intelligibility_enabled; | 363 bool intelligibility_enabled; |
| 356 bool level_controller_enabled = false; | 364 bool level_controller_enabled = false; |
| 357 } capture_nonlocked_; | 365 } capture_nonlocked_; |
| 358 | 366 |
| 359 struct ApmRenderState { | 367 struct ApmRenderState { |
| 360 ApmRenderState(); | 368 ApmRenderState(); |
| 361 ~ApmRenderState(); | 369 ~ApmRenderState(); |
| 362 std::unique_ptr<AudioConverter> render_converter; | 370 std::unique_ptr<AudioConverter> render_converter; |
| 363 std::unique_ptr<AudioBuffer> render_audio; | 371 std::unique_ptr<AudioBuffer> render_audio; |
| 364 } render_ GUARDED_BY(crit_render_); | 372 } render_ GUARDED_BY(crit_render_); |
| 373 |
| 374 size_t render_queue_element_max_size_ GUARDED_BY(crit_render_) |
| 375 GUARDED_BY(crit_capture_) = 0; |
| 376 std::vector<float> render_queue_buffer_ GUARDED_BY(crit_render_); |
| 377 std::vector<float> capture_queue_buffer_ GUARDED_BY(crit_capture_); |
| 378 |
| 379 // Lock protection not needed. |
| 380 std::unique_ptr<SwapQueue<std::vector<float>, RenderQueueItemVerifier<float>>> |
| 381 render_signal_queue_; |
| 365 }; | 382 }; |
| 366 | 383 |
| 367 } // namespace webrtc | 384 } // namespace webrtc |
| 368 | 385 |
| 369 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_ | 386 #endif // WEBRTC_MODULES_AUDIO_PROCESSING_AUDIO_PROCESSING_IMPL_H_ |
| OLD | NEW |