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

Unified Diff: media/audio/audio_input_controller.cc

Issue 486633003: Only log audio input silence state UMA stats for low latency mode and if not fake device. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup. Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: media/audio/audio_input_controller.cc
diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc
index bcd9c7281e61d1ff3b3b66b73cf59f717c33296a..d662d6fb968b364e76af51d45d5da8a6dcf1e018 100644
--- a/media/audio/audio_input_controller.cc
+++ b/media/audio/audio_input_controller.cc
@@ -8,6 +8,7 @@
#include "base/strings/stringprintf.h"
#include "base/threading/thread_restrictions.h"
#include "base/time/time.h"
+#include "media/audio/audio_parameters.h"
#include "media/base/limits.h"
#include "media/base/scoped_histogram_timer.h"
#include "media/base/user_input_monitor.h"
@@ -85,6 +86,7 @@ AudioInputController::AudioInputController(EventHandler* handler,
max_volume_(0.0),
user_input_monitor_(user_input_monitor),
#if defined(AUDIO_POWER_MONITORING)
+ log_silence_state_(false),
silence_state_(SILENCE_STATE_NO_MEASUREMENT),
#endif
prev_key_down_count_(0) {
@@ -238,6 +240,21 @@ void AudioInputController::DoCreate(AudioManager* audio_manager,
DoCreateForStream(audio_manager->MakeAudioInputStream(params, device_id));
}
+void AudioInputController::DoCreateForLowLatency(AudioManager* audio_manager,
+ const AudioParameters& params,
+ const std::string& device_id) {
+ DCHECK(task_runner_->BelongsToCurrentThread());
+
+#if defined(AUDIO_POWER_MONITORING)
+ // We only log silence state UMA stats for low latency mode and if we use a
+ // real device.
+ if (params.format() != AudioParameters::AUDIO_FAKE)
+ log_silence_state_ = true;
+#endif
+
+ DoCreate(audio_manager, params, device_id);
+}
+
void AudioInputController::DoCreateForStream(
AudioInputStream* stream_to_control) {
DCHECK(task_runner_->BelongsToCurrentThread());
@@ -329,10 +346,10 @@ void AudioInputController::DoClose() {
user_input_monitor_->DisableKeyPressMonitoring();
#if defined(AUDIO_POWER_MONITORING)
- // Send UMA stats if we have enabled power monitoring.
- if (audio_level_) {
+ // Send UMA stats if enabled.
+ if (log_silence_state_)
LogSilenceState(silence_state_);
- }
+ log_silence_state_ = false;
#endif
state_ = CLOSED;
@@ -503,26 +520,11 @@ void AudioInputController::DoLogAudioLevel(float level_dbfs) {
std::string log_string = base::StringPrintf(
"AIC::OnData: average audio level=%.2f dBFS", level_dbfs);
static const float kSilenceThresholdDBFS = -72.24719896f;
- if (level_dbfs < kSilenceThresholdDBFS) {
+ if (level_dbfs < kSilenceThresholdDBFS)
log_string += " <=> no audio input!";
- if (silence_state_ == SILENCE_STATE_NO_MEASUREMENT)
- silence_state_ = SILENCE_STATE_ONLY_SILENCE;
- else if (silence_state_ == SILENCE_STATE_ONLY_AUDIO)
- silence_state_ = SILENCE_STATE_AUDIO_AND_SILENCE;
- else
- DCHECK(silence_state_ == SILENCE_STATE_ONLY_SILENCE ||
- silence_state_ == SILENCE_STATE_AUDIO_AND_SILENCE);
- } else {
- if (silence_state_ == SILENCE_STATE_NO_MEASUREMENT)
- silence_state_ = SILENCE_STATE_ONLY_AUDIO;
- else if (silence_state_ == SILENCE_STATE_ONLY_SILENCE)
- silence_state_ = SILENCE_STATE_AUDIO_AND_SILENCE;
- else
- DCHECK(silence_state_ == SILENCE_STATE_ONLY_AUDIO ||
- silence_state_ == SILENCE_STATE_AUDIO_AND_SILENCE);
- }
-
handler_->OnLog(this, log_string);
+
+ UpdateSilenceState(level_dbfs < kSilenceThresholdDBFS);
#endif
}
@@ -555,6 +557,26 @@ bool AudioInputController::GetDataIsActive() {
}
#if defined(AUDIO_POWER_MONITORING)
+void AudioInputController::UpdateSilenceState(bool silence) {
+ if (silence) {
+ if (silence_state_ == SILENCE_STATE_NO_MEASUREMENT)
+ silence_state_ = SILENCE_STATE_ONLY_SILENCE;
+ else if (silence_state_ == SILENCE_STATE_ONLY_AUDIO)
+ silence_state_ = SILENCE_STATE_AUDIO_AND_SILENCE;
+ else
+ DCHECK(silence_state_ == SILENCE_STATE_ONLY_SILENCE ||
+ silence_state_ == SILENCE_STATE_AUDIO_AND_SILENCE);
+ } else {
+ if (silence_state_ == SILENCE_STATE_NO_MEASUREMENT)
+ silence_state_ = SILENCE_STATE_ONLY_AUDIO;
+ else if (silence_state_ == SILENCE_STATE_ONLY_SILENCE)
+ silence_state_ = SILENCE_STATE_AUDIO_AND_SILENCE;
+ else
+ DCHECK(silence_state_ == SILENCE_STATE_ONLY_AUDIO ||
+ silence_state_ == SILENCE_STATE_AUDIO_AND_SILENCE);
+ }
+}
+
void AudioInputController::LogSilenceState(SilenceState value) {
UMA_HISTOGRAM_ENUMERATION("Media.AudioInputControllerSessionSilenceReport",
value,
« media/audio/audio_input_controller.h ('K') | « media/audio/audio_input_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698