diff options
author | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-10 18:15:02 +0000 |
---|---|---|
committer | xians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-10 18:15:02 +0000 |
commit | ffa21d142b1ba2d9e7e0844154560dcc0c2d740a (patch) | |
tree | b45f8d44d11a53eedb4f54b5850a0c6c85571eb4 /media | |
parent | e677dfa5a55c7ceb9b8a291be3a692d9ff2cada7 (diff) | |
download | chromium_src-ffa21d142b1ba2d9e7e0844154560dcc0c2d740a.zip chromium_src-ffa21d142b1ba2d9e7e0844154560dcc0c2d740a.tar.gz chromium_src-ffa21d142b1ba2d9e7e0844154560dcc0c2d740a.tar.bz2 |
Add AudioInputControllerCaptureStartupSuccess UMA.
This logs:
a boolean telling the AudioInputController is getting the recording data after an input stream was started.
This is symmetric to AudioOutputControllerPlaybackStartupSuccess on the output side.
NOTRY=true
BUG=357501
Review URL: https://codereview.chromium.org/271093002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@269589 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r-- | media/audio/audio_input_controller.cc | 21 | ||||
-rw-r--r-- | media/audio/audio_input_controller.h | 4 |
2 files changed, 18 insertions, 7 deletions
diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc index 4cf948b..3bdec14 100644 --- a/media/audio/audio_input_controller.cc +++ b/media/audio/audio_input_controller.cc @@ -212,12 +212,12 @@ void AudioInputController::DoCreateForStream( enable_nodata_timer = true; if (enable_nodata_timer) { - // Create the data timer which will call DoCheckForNoData(). The timer + // Create the data timer which will call FirstCheckForNoData(). The timer // is started in DoRecord() and restarted in each DoCheckForNoData() // callback. no_data_timer_.reset(new base::Timer( FROM_HERE, base::TimeDelta::FromSeconds(kTimerInitialIntervalSeconds), - base::Bind(&AudioInputController::DoCheckForNoData, + base::Bind(&AudioInputController::FirstCheckForNoData, base::Unretained(this)), false)); } else { DVLOG(1) << "Disabled: timer check for no data."; @@ -247,7 +247,7 @@ void AudioInputController::DoRecord() { if (no_data_timer_) { // Start the data timer. Once |kTimerResetIntervalSeconds| have passed, - // a callback to DoCheckForNoData() is made. + // a callback to FirstCheckForNoData() is made. no_data_timer_->Reset(); } @@ -318,6 +318,13 @@ void AudioInputController::DoSetAutomaticGainControl(bool enabled) { stream_->SetAutomaticGainControl(enabled); } +void AudioInputController::FirstCheckForNoData() { + DCHECK(task_runner_->BelongsToCurrentThread()); + UMA_HISTOGRAM_BOOLEAN("Media.AudioInputControllerCaptureStartupSuccess", + GetDataIsActive()); + DoCheckForNoData(); +} + void AudioInputController::DoCheckForNoData() { DCHECK(task_runner_->BelongsToCurrentThread()); @@ -347,6 +354,10 @@ void AudioInputController::OnData(AudioInputStream* stream, uint32 size, uint32 hardware_delay_bytes, double volume) { + // Mark data as active to ensure that the periodic calls to + // DoCheckForNoData() does not report an error to the event handler. + SetDataIsActive(true); + { base::AutoLock auto_lock(lock_); if (state_ != RECORDING) @@ -361,10 +372,6 @@ void AudioInputController::OnData(AudioInputStream* stream, DVLOG_IF(6, key_pressed) << "Detected keypress."; } - // Mark data as active to ensure that the periodic calls to - // DoCheckForNoData() does not report an error to the event handler. - SetDataIsActive(true); - // Use SharedMemory and SyncSocket if the client has created a SyncWriter. // Used by all low-latency clients except WebSpeech. if (SharedMemoryAndSyncSocketMode()) { diff --git a/media/audio/audio_input_controller.h b/media/audio/audio_input_controller.h index ac1a690..3facfb5 100644 --- a/media/audio/audio_input_controller.h +++ b/media/audio/audio_input_controller.h @@ -253,6 +253,10 @@ class MEDIA_EXPORT AudioInputController void DoSetAutomaticGainControl(bool enabled); void DoOnData(scoped_ptr<uint8[]> data, uint32 size); + // Method to check if we get recorded data after a stream was started, + // and log the result to UMA. + void FirstCheckForNoData(); + // Method which ensures that OnError() is triggered when data recording // times out. Called on the audio thread. void DoCheckForNoData(); |