Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "media/base/audio_renderer_mixer_input.h" | 5 #include "media/base/audio_renderer_mixer_input.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "media/base/audio_renderer_mixer.h" | 8 #include "media/base/audio_renderer_mixer.h" |
| 9 | 9 |
| 10 namespace media { | 10 namespace media { |
| 11 | 11 |
| 12 AudioRendererMixerInput::AudioRendererMixerInput( | 12 AudioRendererMixerInput::AudioRendererMixerInput( |
| 13 const GetMixerCB& get_mixer_cb, const RemoveMixerCB& remove_mixer_cb) | 13 const GetMixerCB& get_mixer_cb, const RemoveMixerCB& remove_mixer_cb) |
| 14 : playing_(false), | 14 : playing_(false), |
| 15 initialized_(false), | 15 initialized_(false), |
| 16 started_(false), | 16 started_(false), |
| 17 volume_(1.0f), | 17 volume_(1.0f), |
| 18 get_mixer_cb_(get_mixer_cb), | 18 get_mixer_cb_(get_mixer_cb), |
| 19 remove_mixer_cb_(remove_mixer_cb), | 19 remove_mixer_cb_(remove_mixer_cb), |
| 20 mixer_(NULL), | 20 mixer_(NULL), |
| 21 callback_(NULL) { | 21 callback_(NULL), |
| 22 current_audio_delay_milliseconds_(0) { | |
|
miu
2012/11/12 20:51:59
This new member is never updated anywhere. Do you
DaleCurtis
2012/11/12 21:23:53
Set in header file via hacker_style() setter.
| |
| 22 } | 23 } |
| 23 | 24 |
| 24 AudioRendererMixerInput::~AudioRendererMixerInput() { | 25 AudioRendererMixerInput::~AudioRendererMixerInput() { |
| 25 // Mixer is no longer safe to use after |remove_mixer_cb_| has been called. | 26 // Mixer is no longer safe to use after |remove_mixer_cb_| has been called. |
| 26 if (initialized_) | 27 if (initialized_) |
| 27 remove_mixer_cb_.Run(params_); | 28 remove_mixer_cb_.Run(params_); |
| 28 } | 29 } |
| 29 | 30 |
| 30 void AudioRendererMixerInput::Initialize( | 31 void AudioRendererMixerInput::Initialize( |
| 31 const AudioParameters& params, | 32 const AudioParameters& params, |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 65 // We don't care about flush since Pause() simply indicates we should send | 66 // We don't care about flush since Pause() simply indicates we should send |
| 66 // silence to AudioRendererMixer. | 67 // silence to AudioRendererMixer. |
| 67 playing_ = false; | 68 playing_ = false; |
| 68 } | 69 } |
| 69 | 70 |
| 70 bool AudioRendererMixerInput::SetVolume(double volume) { | 71 bool AudioRendererMixerInput::SetVolume(double volume) { |
| 71 volume_ = volume; | 72 volume_ = volume; |
| 72 return true; | 73 return true; |
| 73 } | 74 } |
| 74 | 75 |
| 75 void AudioRendererMixerInput::GetVolume(double* volume) { | 76 float AudioRendererMixerInput::ProvideAudioTransformInput( |
| 76 *volume = volume_; | 77 AudioBus* audio_bus, base::TimeDelta buffer_delay) { |
| 78 int frames_filled = 0; | |
| 79 | |
| 80 if (playing_) { | |
| 81 frames_filled = callback_->Render( | |
| 82 audio_bus, | |
| 83 current_audio_delay_milliseconds_ + buffer_delay.InMilliseconds()); | |
|
scherkus (not reviewing)
2012/11/14 22:43:50
this mixing 'n matching between TimeDelta and inte
DaleCurtis
2012/11/16 23:51:05
Yeah, the end goal is everyone using TimeDelta eve
| |
| 84 | |
| 85 // AudioTransform expects unfilled frames to be zeroed. | |
| 86 if (frames_filled < audio_bus->frames()) { | |
| 87 audio_bus->ZeroFramesPartial( | |
| 88 frames_filled, audio_bus->frames() - frames_filled); | |
| 89 } | |
| 90 } | |
| 91 | |
| 92 return frames_filled > 0 ? volume_ : 0; | |
| 93 } | |
| 94 | |
| 95 void AudioRendererMixerInput::OnRenderError() { | |
| 96 callback_->OnRenderError(); | |
| 77 } | 97 } |
| 78 | 98 |
| 79 } // namespace media | 99 } // namespace media |
| OLD | NEW |