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

Unified Diff: media/audio/audio_input_controller.cc

Issue 10911067: Make initial reset period configurable for audio input no data timer. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Change formatting. Created 8 years, 3 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
« no previous file with comments | « media/audio/audio_input_controller.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/audio/audio_input_controller.cc
diff --git a/media/audio/audio_input_controller.cc b/media/audio/audio_input_controller.cc
index 17d121642d3e6218782ec29ae949bed4b61a074d..99bb420e89553a84e6292a2fa74d404b5eed91eb 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,
« no previous file with comments | « media/audio/audio_input_controller.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698