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

Unified Diff: media/audio/audio_input_controller.cc

Issue 663123002: Reduce power logging and UMA stats when AGC is disabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 6 years, 2 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') | media/audio/test_audio_input_controller_factory.cc » ('j') | 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 3bd14f19d1541f9ec780efe9830b565446214ed1..44ecb29d56ece7657e51c95ed4b051c20bfce6ee 100644
--- a/media/audio/audio_input_controller.cc
+++ b/media/audio/audio_input_controller.cc
@@ -117,7 +117,8 @@ AudioInputController::Factory* AudioInputController::factory_ = NULL;
AudioInputController::AudioInputController(EventHandler* handler,
SyncWriter* sync_writer,
- UserInputMonitor* user_input_monitor)
+ UserInputMonitor* user_input_monitor,
+ const bool agc_is_enabled)
: creator_task_runner_(base::MessageLoopProxy::current()),
handler_(handler),
stream_(NULL),
@@ -126,6 +127,7 @@ AudioInputController::AudioInputController(EventHandler* handler,
sync_writer_(sync_writer),
max_volume_(0.0),
user_input_monitor_(user_input_monitor),
+ agc_is_enabled_(agc_is_enabled),
#if defined(AUDIO_POWER_MONITORING)
power_measurement_is_enabled_(false),
log_silence_state_(false),
@@ -156,7 +158,7 @@ scoped_refptr<AudioInputController> AudioInputController::Create(
audio_manager, event_handler, params, user_input_monitor);
}
scoped_refptr<AudioInputController> controller(
- new AudioInputController(event_handler, NULL, user_input_monitor));
+ new AudioInputController(event_handler, NULL, user_input_monitor, false));
controller->task_runner_ = audio_manager->GetTaskRunner();
@@ -182,7 +184,8 @@ scoped_refptr<AudioInputController> AudioInputController::CreateLowLatency(
const AudioParameters& params,
const std::string& device_id,
SyncWriter* sync_writer,
- UserInputMonitor* user_input_monitor) {
+ UserInputMonitor* user_input_monitor,
+ const bool agc_is_enabled) {
DCHECK(audio_manager);
DCHECK(sync_writer);
@@ -191,8 +194,8 @@ scoped_refptr<AudioInputController> AudioInputController::CreateLowLatency(
// Create the AudioInputController object and ensure that it runs on
// the audio-manager thread.
- scoped_refptr<AudioInputController> controller(
- new AudioInputController(event_handler, sync_writer, user_input_monitor));
+ scoped_refptr<AudioInputController> controller(new AudioInputController(
+ event_handler, sync_writer, user_input_monitor, agc_is_enabled));
controller->task_runner_ = audio_manager->GetTaskRunner();
// Create and open a new audio input stream from the existing
@@ -222,8 +225,8 @@ scoped_refptr<AudioInputController> AudioInputController::CreateForStream(
// Create the AudioInputController object and ensure that it runs on
// the audio-manager thread.
- scoped_refptr<AudioInputController> controller(
- new AudioInputController(event_handler, sync_writer, user_input_monitor));
+ scoped_refptr<AudioInputController> controller(new AudioInputController(
+ event_handler, sync_writer, user_input_monitor, false));
controller->task_runner_ = task_runner;
// TODO(miu): See TODO at top of file. Until that's resolved, we need to
@@ -260,11 +263,6 @@ void AudioInputController::SetVolume(double volume) {
&AudioInputController::DoSetVolume, this, volume));
}
-void AudioInputController::SetAutomaticGainControl(bool enabled) {
- task_runner_->PostTask(FROM_HERE, base::Bind(
- &AudioInputController::DoSetAutomaticGainControl, this, enabled));
-}
-
void AudioInputController::DoCreate(AudioManager* audio_manager,
const AudioParameters& params,
const std::string& device_id) {
@@ -274,7 +272,9 @@ void AudioInputController::DoCreate(AudioManager* audio_manager,
handler_->OnLog(this, "AIC::DoCreate");
#if defined(AUDIO_POWER_MONITORING)
- power_measurement_is_enabled_ = true;
+ // Disable power monitoring for streams that run without AGC enabled to
+ // avoid adding logs and UMA for non-WebRTC clients.
+ power_measurement_is_enabled_ = agc_is_enabled_;
last_audio_level_log_time_ = base::TimeTicks::Now();
silence_state_ = SILENCE_STATE_NO_MEASUREMENT;
#endif
@@ -327,6 +327,10 @@ void AudioInputController::DoCreateForStream(
DCHECK(!no_data_timer_.get());
+ // Set AGC state using mode in |agc_is_enabled_| which can only be enabled in
+ // CreateLowLatency().
+ stream_->SetAutomaticGainControl(agc_is_enabled_);
+
// Create the data timer which will call FirstCheckForNoData(). The timer
// is started in DoRecord() and restarted in each DoCheckForNoData()
// callback.
@@ -449,17 +453,6 @@ void AudioInputController::DoSetVolume(double volume) {
stream_->SetVolume(max_volume_ * volume);
}
-void AudioInputController::DoSetAutomaticGainControl(bool enabled) {
- DCHECK(task_runner_->BelongsToCurrentThread());
- DCHECK_NE(state_, RECORDING);
-
- // Ensure that the AGC state only can be modified before streaming starts.
- if (state_ != CREATED)
- return;
-
- stream_->SetAutomaticGainControl(enabled);
-}
-
void AudioInputController::FirstCheckForNoData() {
DCHECK(task_runner_->BelongsToCurrentThread());
LogCaptureStartupResult(GetDataIsActive() ?
« no previous file with comments | « media/audio/audio_input_controller.h ('k') | media/audio/test_audio_input_controller_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698