| Index: media/base/audio_bus.cc
|
| diff --git a/media/base/audio_bus.cc b/media/base/audio_bus.cc
|
| index d261e87f8dc9f26ae29338b874343eebf728f275..e46b27ea83c3537c8f27522e52a68a02a5e12e07 100644
|
| --- a/media/base/audio_bus.cc
|
| +++ b/media/base/audio_bus.cc
|
| @@ -62,7 +62,9 @@ void AudioBus::CheckOverflow(int start_frame, int frames, int total_frames) {
|
| }
|
|
|
| AudioBus::AudioBus(int channels, int frames)
|
| - : frames_(frames),
|
| + : data_size_(0),
|
| + is_raw_format_(false),
|
| + frames_(frames),
|
| can_set_channel_data_(false) {
|
| ValidateConfig(channels, frames_);
|
|
|
| @@ -76,7 +78,9 @@ AudioBus::AudioBus(int channels, int frames)
|
| }
|
|
|
| AudioBus::AudioBus(int channels, int frames, float* data)
|
| - : frames_(frames),
|
| + : data_size_(0),
|
| + is_raw_format_(false),
|
| + frames_(frames),
|
| can_set_channel_data_(false) {
|
| // Since |data| may have come from an external source, ensure it's valid.
|
| CHECK(data);
|
| @@ -89,7 +93,9 @@ AudioBus::AudioBus(int channels, int frames, float* data)
|
| }
|
|
|
| AudioBus::AudioBus(int frames, const std::vector<float*>& channel_data)
|
| - : channel_data_(channel_data),
|
| + : data_size_(0),
|
| + is_raw_format_(false),
|
| + channel_data_(channel_data),
|
| frames_(frames),
|
| can_set_channel_data_(false) {
|
| ValidateConfig(
|
| @@ -101,7 +107,9 @@ AudioBus::AudioBus(int frames, const std::vector<float*>& channel_data)
|
| }
|
|
|
| AudioBus::AudioBus(int channels)
|
| - : channel_data_(channels),
|
| + : data_size_(0),
|
| + is_raw_format_(false),
|
| + channel_data_(channels),
|
| frames_(0),
|
| can_set_channel_data_(true) {
|
| CHECK_GT(channels, 0);
|
| @@ -157,9 +165,19 @@ void AudioBus::SetChannelData(int channel, float* data) {
|
| channel_data_[channel] = data;
|
| }
|
|
|
| +void AudioBus::set_data_size(int data_size) {
|
| + data_size_ = data_size;
|
| +}
|
| +
|
| +void AudioBus::set_is_raw_format(bool is_raw_format) {
|
| + is_raw_format_ = is_raw_format;
|
| +}
|
| +
|
| void AudioBus::set_frames(int frames) {
|
| - CHECK(can_set_channel_data_);
|
| - ValidateConfig(static_cast<int>(channel_data_.size()), frames);
|
| + if (!is_raw_format()) {
|
| + CHECK(can_set_channel_data_);
|
| + ValidateConfig(static_cast<int>(channel_data_.size()), frames);
|
| + }
|
| frames_ = frames;
|
| }
|
|
|
| @@ -308,6 +326,14 @@ void AudioBus::ToInterleavedPartial(int start_frame,
|
| }
|
|
|
| void AudioBus::CopyTo(AudioBus* dest) const {
|
| + dest->set_is_raw_format(is_raw_format());
|
| + if (is_raw_format()) {
|
| + dest->set_data_size(data_size());
|
| + dest->set_frames(frames());
|
| + memcpy(dest->channel(0), channel(0), data_size());
|
| + return;
|
| + }
|
| +
|
| CopyPartialFramesTo(0, frames(), 0, dest);
|
| }
|
|
|
|
|