summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authorxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-10 18:15:02 +0000
committerxians@chromium.org <xians@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-10 18:15:02 +0000
commitffa21d142b1ba2d9e7e0844154560dcc0c2d740a (patch)
treeb45f8d44d11a53eedb4f54b5850a0c6c85571eb4 /media
parente677dfa5a55c7ceb9b8a291be3a692d9ff2cada7 (diff)
downloadchromium_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.cc21
-rw-r--r--media/audio/audio_input_controller.h4
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();