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

Unified Diff: media/audio/mac/audio_low_latency_input_mac.cc

Issue 2888383002: Stop source and fire MediaStreamTrack ended event if missing audio input callbacks are detected. (Closed)
Patch Set: Code review (ossu@ and tommi@). Created 3 years, 7 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
Index: media/audio/mac/audio_low_latency_input_mac.cc
diff --git a/media/audio/mac/audio_low_latency_input_mac.cc b/media/audio/mac/audio_low_latency_input_mac.cc
index 15640a57ca94816cdef601122bef988982cf6150..e7e4f78e0e16911e703e6355d7ce6ced6e3424fe 100644
--- a/media/audio/mac/audio_low_latency_input_mac.cc
+++ b/media/audio/mac/audio_low_latency_input_mac.cc
@@ -36,9 +36,9 @@ const int kMaxErrorTimeoutInSeconds = 1;
// stream back to life.
const int kCheckInputIsAliveTimeInSeconds = 5;
-// Number of restart indications required to actually trigger a restart
-// attempt.
-const int kNumberOfIndicationsToTriggerRestart = 1;
+// Number of restart indications required to trigger a restart after a
+// successful start.
+const int kIndicationsToTriggerRestartAfterSuccessfulStart = 2;
// Max number of times we try to restart a stream when it has been categorized
// as dead. Note that we can do many restarts during an audio session and this
@@ -1272,18 +1272,21 @@ void AUAudioInputStream::CheckIfInputStreamIsAlive() {
}
// Restart the audio stream if two conditions are met. First, the number of
- // restart indicators must be larger than a threshold, and secondly, only a
+ // restart indicators must reach a threshold, and secondly, only a
// fixed number of restart attempts is allowed.
// Note that, the threshold is different depending on if the stream is seen
// as dead directly at the first call to Start() (i.e. it has never started)
// or if the stream has started OK at least once but then stopped for some
// reason (e.g by placing the device in sleep mode). One restart indication
// is sufficient for the first case (threshold is zero), while a larger value
- // (threshold > 0) is required for the second case to avoid false alarms when
+ // (threshold > 1) is required for the second case to avoid false alarms when
// e.g. resuming from a suspended state.
- const size_t restart_threshold =
- GetInputCallbackIsActive() ? kNumberOfIndicationsToTriggerRestart : 0;
- if (number_of_restart_indications_ > restart_threshold &&
+ const size_t indications_to_trigger_restart =
+ GetInputCallbackIsActive()
+ ? kIndicationsToTriggerRestartAfterSuccessfulStart
+ : 1;
+ DCHECK_LE(number_of_restart_indications_, indications_to_trigger_restart);
+ if (number_of_restart_indications_ == indications_to_trigger_restart &&
ossu-chromium 2017/05/22 11:27:35 So, this is functionally equivalent but rephrased
Henrik Grunell 2017/05/22 15:04:54 Yes, exactly. I hope you agree it is. :o
number_of_restart_attempts_ < kMaxNumberOfRestartAttempts) {
SetInputCallbackIsActive(false);
++total_number_of_restart_attempts_;

Powered by Google App Engine
This is Rietveld 408576698