Index: media/base/audio_bus.cc |
=================================================================== |
--- media/base/audio_bus.cc (revision 157152) |
+++ media/base/audio_bus.cc (working copy) |
@@ -105,7 +105,8 @@ |
} |
AudioBus::AudioBus(int channels, int frames) |
- : frames_(frames) { |
+ : frames_(frames), |
+ can_set_channel_data_(false) { |
ValidateConfig(channels, frames_); |
int aligned_frames = 0; |
@@ -118,7 +119,8 @@ |
} |
AudioBus::AudioBus(int channels, int frames, float* data) |
- : frames_(frames) { |
+ : frames_(frames), |
+ can_set_channel_data_(false) { |
ValidateConfig(channels, frames_); |
int aligned_frames = 0; |
@@ -129,7 +131,8 @@ |
AudioBus::AudioBus(int frames, const std::vector<float*>& channel_data) |
: channel_data_(channel_data), |
- frames_(frames) { |
+ frames_(frames), |
+ can_set_channel_data_(false) { |
ValidateConfig(channel_data_.size(), frames_); |
// Sanity check wrapped vector for alignment and channel count. |
@@ -137,6 +140,14 @@ |
DCHECK(IsAligned(channel_data_[i])); |
} |
+AudioBus::AudioBus(int channels) |
+ : channel_data_(channels), |
+ frames_(0), |
+ can_set_channel_data_(true) { |
+ for (size_t i = 0; i < channel_data_.size(); ++i) |
+ channel_data_[i] = NULL; |
+} |
+ |
AudioBus::~AudioBus() {} |
scoped_ptr<AudioBus> AudioBus::Create(int channels, int frames) { |
@@ -148,6 +159,10 @@ |
params.channels(), params.frames_per_buffer())); |
} |
+scoped_ptr<AudioBus> AudioBus::CreateWrapper(int channels) { |
+ return scoped_ptr<AudioBus>(new AudioBus(channels)); |
+} |
+ |
scoped_ptr<AudioBus> AudioBus::WrapVector( |
int frames, const std::vector<float*>& channel_data) { |
return scoped_ptr<AudioBus>(new AudioBus(frames, channel_data)); |
@@ -170,6 +185,19 @@ |
static_cast<float*>(data))); |
} |
+void AudioBus::SetChannelData(int channel, float* data) { |
+ CHECK(can_set_channel_data_); |
+ CHECK_GE(channel, 0); |
+ CHECK_LT(static_cast<size_t>(channel), channel_data_.size()); |
+ DCHECK(IsAligned(data)); |
+ channel_data_[channel] = data; |
+} |
+ |
+void AudioBus::set_frames(int frames) { |
+ CHECK(can_set_channel_data_); |
+ frames_ = frames; |
+} |
+ |
void AudioBus::ZeroFramesPartial(int start_frame, int frames) { |
CheckOverflow(start_frame, frames, frames_); |