| 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 scoped_refptr<AudioRendererMixer>& mixer) | 13 const scoped_refptr<AudioRendererMixer>& mixer) |
| 14 : playing_(false), | 14 : playing_(false), |
| 15 initialized_(false), | 15 initialized_(false), |
| 16 volume_(1.0f), | 16 volume_(1.0f), |
| 17 mixer_(mixer), | 17 mixer_(mixer), |
| 18 callback_(NULL) { | 18 callback_(NULL) { |
| 19 } | 19 } |
| 20 | 20 |
| 21 AudioRendererMixerInput::~AudioRendererMixerInput() { | 21 AudioRendererMixerInput::~AudioRendererMixerInput() {} |
| 22 if (!initialized_) | |
| 23 return; | |
| 24 | |
| 25 // Clean up |audio_data_|. | |
| 26 for (size_t i = 0; i < audio_data_.size(); ++i) | |
| 27 delete [] audio_data_[i]; | |
| 28 audio_data_.clear(); | |
| 29 } | |
| 30 | 22 |
| 31 void AudioRendererMixerInput::Initialize( | 23 void AudioRendererMixerInput::Initialize( |
| 32 const AudioParameters& params, | 24 const AudioParameters& params, |
| 33 AudioRendererSink::RenderCallback* callback) { | 25 AudioRendererSink::RenderCallback* callback) { |
| 34 DCHECK(!initialized_); | 26 DCHECK(!initialized_); |
| 35 | |
| 36 // TODO(dalecurtis): If we switch to AVX/SSE optimization, we'll need to | |
| 37 // allocate these on 32-byte boundaries and ensure they're sized % 32 bytes. | |
| 38 audio_data_.reserve(params.channels()); | |
| 39 for (int i = 0; i < params.channels(); ++i) | |
| 40 audio_data_.push_back(new float[params.frames_per_buffer()]); | |
| 41 | |
| 42 callback_ = callback; | 27 callback_ = callback; |
| 43 initialized_ = true; | 28 initialized_ = true; |
| 44 } | 29 } |
| 45 | 30 |
| 46 void AudioRendererMixerInput::Start() { | 31 void AudioRendererMixerInput::Start() { |
| 47 DCHECK(initialized_); | 32 DCHECK(initialized_); |
| 48 mixer_->AddMixerInput(this); | 33 mixer_->AddMixerInput(this); |
| 49 } | 34 } |
| 50 | 35 |
| 51 void AudioRendererMixerInput::Stop() { | 36 void AudioRendererMixerInput::Stop() { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 67 bool AudioRendererMixerInput::SetVolume(double volume) { | 52 bool AudioRendererMixerInput::SetVolume(double volume) { |
| 68 volume_ = volume; | 53 volume_ = volume; |
| 69 return true; | 54 return true; |
| 70 } | 55 } |
| 71 | 56 |
| 72 void AudioRendererMixerInput::GetVolume(double* volume) { | 57 void AudioRendererMixerInput::GetVolume(double* volume) { |
| 73 *volume = volume_; | 58 *volume = volume_; |
| 74 } | 59 } |
| 75 | 60 |
| 76 } // namespace media | 61 } // namespace media |
| OLD | NEW |