| Index: media/audio/audio_output_controller.cc
|
| diff --git a/media/audio/audio_output_controller.cc b/media/audio/audio_output_controller.cc
|
| index 45d308db3effd64f12394570200c1f90b515ea4f..fb01254568adebb5b56baa9cb421dcc0940716ca 100644
|
| --- a/media/audio/audio_output_controller.cc
|
| +++ b/media/audio/audio_output_controller.cc
|
| @@ -17,6 +17,12 @@ using base::TimeDelta;
|
|
|
| namespace media {
|
|
|
| +#if defined(AUDIO_POWER_MONITORING)
|
| +// Time constant for AudioPowerMonitor. See AudioPowerMonitor ctor comments for
|
| +// semantics. This value was arbitrarily chosen, but seems to work well.
|
| +static const int kPowerMeasurementTimeConstantMillis = 10;
|
| +#endif
|
| +
|
| AudioOutputController::AudioOutputController(
|
| AudioManager* audio_manager,
|
| EventHandler* handler,
|
| @@ -33,9 +39,11 @@ AudioOutputController::AudioOutputController(
|
| state_(kEmpty),
|
| sync_reader_(sync_reader),
|
| message_loop_(audio_manager->GetTaskRunner()),
|
| +#if defined(AUDIO_POWER_MONITORING)
|
| power_monitor_(
|
| params.sample_rate(),
|
| TimeDelta::FromMilliseconds(kPowerMeasurementTimeConstantMillis)),
|
| +#endif
|
| on_more_io_data_called_(0) {
|
| DCHECK(audio_manager);
|
| DCHECK(handler_);
|
| @@ -192,9 +200,11 @@ void AudioOutputController::StopStream() {
|
| wedge_timer_.reset();
|
| stream_->Stop();
|
|
|
| +#if defined(AUDIO_POWER_MONITORING)
|
| // A stopped stream is silent, and power_montior_.Scan() is no longer being
|
| // called; so we must reset the power monitor.
|
| power_monitor_.Reset();
|
| +#endif
|
|
|
| state_ = kPaused;
|
| }
|
| @@ -296,8 +306,9 @@ int AudioOutputController::OnMoreData(AudioBus* dest,
|
| sync_reader_->UpdatePendingBytes(
|
| buffers_state.total_bytes() + frames * params_.GetBytesPerFrame());
|
|
|
| - if (will_monitor_audio_levels())
|
| - power_monitor_.Scan(*dest, frames);
|
| +#if defined(AUDIO_POWER_MONITORING)
|
| + power_monitor_.Scan(*dest, frames);
|
| +#endif
|
|
|
| return frames;
|
| }
|
| @@ -401,8 +412,12 @@ void AudioOutputController::DoStopDiverting() {
|
| }
|
|
|
| std::pair<float, bool> AudioOutputController::ReadCurrentPowerAndClip() {
|
| - DCHECK(will_monitor_audio_levels());
|
| +#if defined(AUDIO_POWER_MONITORING)
|
| return power_monitor_.ReadCurrentPowerAndClip();
|
| +#else
|
| + NOTREACHED();
|
| + return std::make_pair(AudioPowerMonitor::zero_power(), false);
|
| +#endif
|
| }
|
|
|
| void AudioOutputController::WedgeCheck() {
|
|
|