Index: media/audio/audio_input_controller.cc |
diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc |
index 4cf948b1ad318d7b0b65c2e61c5fbb2ea07e2d2f..3bdec149bfc3c3605bdb7234edf522199fedb783 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()) { |