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

Side by Side Diff: webrtc/modules/audio_device/audio_device_buffer.h

Issue 2433393002: Avoids invalid copy of audio buffer to task queue (Closed)
Patch Set: nit Created 4 years, 2 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
« no previous file with comments | « no previous file | webrtc/modules/audio_device/audio_device_buffer.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 // Called periodically on the internal thread created by the TaskQueue. 79 // Called periodically on the internal thread created by the TaskQueue.
80 void LogStats(); 80 void LogStats();
81 81
82 // Clears all members tracking stats for recording and playout. 82 // Clears all members tracking stats for recording and playout.
83 void ResetRecStats(); 83 void ResetRecStats();
84 void ResetPlayStats(); 84 void ResetPlayStats();
85 85
86 // Updates counters in each play/record callback but does it on the task 86 // Updates counters in each play/record callback but does it on the task
87 // queue to ensure that they can be read by LogStats() without any locks since 87 // queue to ensure that they can be read by LogStats() without any locks since
88 // each task is serialized by the task queue. 88 // each task is serialized by the task queue.
89 void UpdateRecStats(const void* audio_buffer, size_t num_samples); 89 void UpdateRecStats(int16_t max_abs, size_t num_samples);
90 void UpdatePlayStats(const void* audio_buffer, size_t num_samples); 90 void UpdatePlayStats(int16_t max_abs, size_t num_samples);
91 91
92 // Ensures that methods are called on the same thread as the thread that 92 // Ensures that methods are called on the same thread as the thread that
93 // creates this object. 93 // creates this object.
94 rtc::ThreadChecker thread_checker_; 94 rtc::ThreadChecker thread_checker_;
95 95
96 // Raw pointer to AudioTransport instance. Supplied to RegisterAudioCallback() 96 // Raw pointer to AudioTransport instance. Supplied to RegisterAudioCallback()
97 // and it must outlive this object. 97 // and it must outlive this object.
98 AudioTransport* audio_transport_cb_; 98 AudioTransport* audio_transport_cb_;
99 99
100 // TODO(henrika): given usage of thread checker, it should be possible to 100 // TODO(henrika): given usage of thread checker, it should be possible to
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 // Contains max level of recorded audio packets over the last 10 seconds 195 // Contains max level of recorded audio packets over the last 10 seconds
196 // where a new measurement is done twice per second. 196 // where a new measurement is done twice per second.
197 int16_t max_play_level_; 197 int16_t max_play_level_;
198 198
199 // Counts number of times we detect "no audio" corresponding to a case where 199 // Counts number of times we detect "no audio" corresponding to a case where
200 // all level measurements since the last log has been exactly zero. 200 // all level measurements since the last log has been exactly zero.
201 // In other words: this counter is incremented only if 20 measurements 201 // In other words: this counter is incremented only if 20 measurements
202 // (two per second) in a row equals zero. The member is only incremented on 202 // (two per second) in a row equals zero. The member is only incremented on
203 // the task queue and max once every 10th second. 203 // the task queue and max once every 10th second.
204 size_t num_rec_level_is_zero_; 204 size_t num_rec_level_is_zero_;
205
206 // Counts number of audio callbacks modulo 50 to create a signal when
207 // a new storage of audio stats shall be done.
208 // Only updated on the OS-specific audio thread that drives audio.
209 int16_t rec_stat_count_;
210 int16_t play_stat_count_;
205 }; 211 };
206 212
207 } // namespace webrtc 213 } // namespace webrtc
208 214
209 #endif // WEBRTC_MODULES_AUDIO_DEVICE_AUDIO_DEVICE_BUFFER_H_ 215 #endif // WEBRTC_MODULES_AUDIO_DEVICE_AUDIO_DEVICE_BUFFER_H_
OLDNEW
« no previous file with comments | « no previous file | webrtc/modules/audio_device/audio_device_buffer.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698