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

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

Issue 2496543002: Ensures that AudioDeviceBuffer::StopPeriodicLogging works as intended (Closed)
Patch Set: Feedback from kwiberg@ Created 4 years, 1 month 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 | « webrtc/modules/audio_device/audio_device_buffer.h ('k') | no next file » | 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 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 last_rec_samples_(0), 61 last_rec_samples_(0),
62 play_samples_(0), 62 play_samples_(0),
63 last_play_samples_(0), 63 last_play_samples_(0),
64 max_rec_level_(0), 64 max_rec_level_(0),
65 max_play_level_(0), 65 max_play_level_(0),
66 last_timer_task_time_(0), 66 last_timer_task_time_(0),
67 rec_stat_count_(0), 67 rec_stat_count_(0),
68 play_stat_count_(0), 68 play_stat_count_(0),
69 play_start_time_(0), 69 play_start_time_(0),
70 rec_start_time_(0), 70 rec_start_time_(0),
71 only_silence_recorded_(true) { 71 only_silence_recorded_(true),
72 log_stats_(false) {
72 LOG(INFO) << "AudioDeviceBuffer::ctor"; 73 LOG(INFO) << "AudioDeviceBuffer::ctor";
73 playout_thread_checker_.DetachFromThread(); 74 playout_thread_checker_.DetachFromThread();
74 recording_thread_checker_.DetachFromThread(); 75 recording_thread_checker_.DetachFromThread();
75 } 76 }
76 77
77 AudioDeviceBuffer::~AudioDeviceBuffer() { 78 AudioDeviceBuffer::~AudioDeviceBuffer() {
78 RTC_DCHECK_RUN_ON(&main_thread_checker_); 79 RTC_DCHECK_RUN_ON(&main_thread_checker_);
79 RTC_DCHECK(!playing_); 80 RTC_DCHECK(!playing_);
80 RTC_DCHECK(!recording_); 81 RTC_DCHECK(!recording_);
81 LOG(INFO) << "AudioDeviceBuffer::~dtor"; 82 LOG(INFO) << "AudioDeviceBuffer::~dtor";
(...skipping 340 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 } 423 }
423 424
424 void AudioDeviceBuffer::StopPeriodicLogging() { 425 void AudioDeviceBuffer::StopPeriodicLogging() {
425 task_queue_.PostTask(rtc::Bind(&AudioDeviceBuffer::LogStats, this, 426 task_queue_.PostTask(rtc::Bind(&AudioDeviceBuffer::LogStats, this,
426 AudioDeviceBuffer::LOG_STOP)); 427 AudioDeviceBuffer::LOG_STOP));
427 } 428 }
428 429
429 void AudioDeviceBuffer::LogStats(LogState state) { 430 void AudioDeviceBuffer::LogStats(LogState state) {
430 RTC_DCHECK_RUN_ON(&task_queue_); 431 RTC_DCHECK_RUN_ON(&task_queue_);
431 int64_t now_time = rtc::TimeMillis(); 432 int64_t now_time = rtc::TimeMillis();
433
432 if (state == AudioDeviceBuffer::LOG_START) { 434 if (state == AudioDeviceBuffer::LOG_START) {
433 // Reset counters at start. We will not add any logging in this state but 435 // Reset counters at start. We will not add any logging in this state but
434 // the timer will started by posting a new (delayed) task. 436 // the timer will started by posting a new (delayed) task.
435 num_stat_reports_ = 0; 437 num_stat_reports_ = 0;
436 last_timer_task_time_ = now_time; 438 last_timer_task_time_ = now_time;
439 log_stats_ = true;
437 } else if (state == AudioDeviceBuffer::LOG_STOP) { 440 } else if (state == AudioDeviceBuffer::LOG_STOP) {
438 // Stop logging and posting new tasks. 441 // Stop logging and posting new tasks.
442 log_stats_ = false;
443 } else if (state == AudioDeviceBuffer::LOG_ACTIVE) {
444 // Keep logging unless logging was disabled while task was posted.
445 }
446
447 // Avoid adding more logs since we are in STOP mode.
448 if (!log_stats_) {
439 return; 449 return;
440 } else if (state == AudioDeviceBuffer::LOG_ACTIVE) {
441 // Default state. Just keep on logging.
442 } 450 }
443 451
444 int64_t next_callback_time = now_time + kTimerIntervalInMilliseconds; 452 int64_t next_callback_time = now_time + kTimerIntervalInMilliseconds;
445 int64_t time_since_last = rtc::TimeDiff(now_time, last_timer_task_time_); 453 int64_t time_since_last = rtc::TimeDiff(now_time, last_timer_task_time_);
446 last_timer_task_time_ = now_time; 454 last_timer_task_time_ = now_time;
447 455
448 // Log the latest statistics but skip the first round just after state was 456 // Log the latest statistics but skip the first round just after state was
449 // set to LOG_START. Hence, first printed log will be after ~10 seconds. 457 // set to LOG_START. Hence, first printed log will be after ~10 seconds.
450 if (++num_stat_reports_ > 1 && time_since_last > 0) { 458 if (++num_stat_reports_ > 1 && time_since_last > 0) {
451 uint32_t diff_samples = rec_samples_ - last_rec_samples_; 459 uint32_t diff_samples = rec_samples_ - last_rec_samples_;
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
517 size_t samples_per_channel) { 525 size_t samples_per_channel) {
518 RTC_DCHECK_RUN_ON(&task_queue_); 526 RTC_DCHECK_RUN_ON(&task_queue_);
519 ++play_callbacks_; 527 ++play_callbacks_;
520 play_samples_ += samples_per_channel; 528 play_samples_ += samples_per_channel;
521 if (max_abs > max_play_level_) { 529 if (max_abs > max_play_level_) {
522 max_play_level_ = max_abs; 530 max_play_level_ = max_abs;
523 } 531 }
524 } 532 }
525 533
526 } // namespace webrtc 534 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_device/audio_device_buffer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698