diff options
author | milanb@chromium.org <milanb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-06 01:07:37 +0000 |
---|---|---|
committer | milanb@chromium.org <milanb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-06 01:07:37 +0000 |
commit | 30aee8a3e31c63f1e5403d4c457ef9842c6312b5 (patch) | |
tree | c5b6bce50a26fad3300d1c5ff43fb78d5cf77cda /media/audio/audio_input_controller.cc | |
parent | c3875e25dfef551a8a957661e38b9345dd301e07 (diff) | |
download | chromium_src-30aee8a3e31c63f1e5403d4c457ef9842c6312b5.zip chromium_src-30aee8a3e31c63f1e5403d4c457ef9842c6312b5.tar.gz chromium_src-30aee8a3e31c63f1e5403d4c457ef9842c6312b5.tar.bz2 |
Make initial reset period configurable for audio input no data timer.
iOS needs extra initial delay in the reset timer to avoid getting
killed because there is a background music fading out.
BUG=b/6754065
Review URL: https://chromiumcodereview.appspot.com/10911067
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@155082 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio/audio_input_controller.cc')
-rw-r--r-- | media/audio/audio_input_controller.cc | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc index 17d1216..99bb420 100644 --- a/media/audio/audio_input_controller.cc +++ b/media/audio/audio_input_controller.cc @@ -10,7 +10,14 @@ namespace { const int kMaxInputChannels = 2; -const int kTimerResetInterval = 1; // One second. +const int kTimerResetIntervalSeconds = 1; +#if defined(OS_IOS) +// The first callback on iOS is received after the current background +// audio has faded away. +const int kTimerInitialIntervalSeconds = 4; +#else +const int kTimerInitialIntervalSeconds = 1; +#endif // defined(OS_IOS) } namespace media { @@ -139,14 +146,12 @@ void AudioInputController::DoCreate(AudioManager* audio_manager, } DCHECK(!no_data_timer_.get()); - // Create the data timer which will call DoCheckForNoData() after a delay - // of |kTimerResetInterval| seconds. The timer is started in DoRecord() - // and restarted in each DoCheckForNoData() callback. - no_data_timer_.reset(new base::DelayTimer<AudioInputController>(FROM_HERE, - base::TimeDelta::FromSeconds(kTimerResetInterval), - this, - &AudioInputController::DoCheckForNoData)); - + // Create the data timer which will call DoCheckForNoData(). 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::Unretained(this)), false)); state_ = kCreated; handler_->OnCreated(this); } @@ -162,7 +167,7 @@ void AudioInputController::DoRecord() { state_ = kRecording; } - // Start the data timer. Once |kTimerResetInterval| seconds have passed, + // Start the data timer. Once |kTimerResetIntervalSeconds| have passed, // a callback to DoCheckForNoData() is made. no_data_timer_->Reset(); @@ -243,8 +248,12 @@ void AudioInputController::DoCheckForNoData() { // flag will only be disabled during a very short period. SetDataIsActive(false); - // Restart the timer to ensure that we check the flag in one second again. - no_data_timer_->Reset(); + // Restart the timer to ensure that we check the flag again in + // |kTimerResetIntervalSeconds|. + no_data_timer_->Start( + FROM_HERE, base::TimeDelta::FromSeconds(kTimerResetIntervalSeconds), + base::Bind(&AudioInputController::DoCheckForNoData, + base::Unretained(this))); } void AudioInputController::OnData(AudioInputStream* stream, const uint8* data, |