Chromium Code Reviews| Index: media/base/audio_block_fifo.cc |
| diff --git a/media/base/audio_block_fifo.cc b/media/base/audio_block_fifo.cc |
| index 5e8c9b37949babea29b10a464b2a6e3fd9189610..407150b1dec15b0a603edeb3b3fa330e8c831f75 100644 |
| --- a/media/base/audio_block_fifo.cc |
| +++ b/media/base/audio_block_fifo.cc |
| @@ -9,17 +9,13 @@ |
| namespace media { |
| AudioBlockFifo::AudioBlockFifo(int channels, int frames, int blocks) |
| - : block_frames_(frames), |
| + : channels_(channels), |
| + block_frames_(frames), |
| write_block_(0), |
| read_block_(0), |
| available_blocks_(0), |
| write_pos_(0) { |
| - // Create |blocks| of audio buses and push them to the containers. |
| - audio_blocks_.reserve(blocks); |
| - for (int i = 0; i < blocks; ++i) { |
| - scoped_ptr<AudioBus> audio_bus = AudioBus::Create(channels, frames); |
| - audio_blocks_.push_back(audio_bus.release()); |
| - } |
| + Append(blocks); |
| } |
| AudioBlockFifo::~AudioBlockFifo() {} |
| @@ -31,6 +27,7 @@ void AudioBlockFifo::Push(const void* source, |
| DCHECK_GT(frames, 0); |
| DCHECK_GT(bytes_per_sample, 0); |
| DCHECK_LT(available_blocks_, static_cast<int>(audio_blocks_.size())); |
| + CHECK_LT(frames, GetUnfilledFrames()); |
| const uint8* source_ptr = static_cast<const uint8*>(source); |
| int frames_to_push = frames; |
| @@ -54,7 +51,7 @@ void AudioBlockFifo::Push(const void* source, |
| ++available_blocks_; |
| } |
| - source_ptr += push_frames * bytes_per_sample * current_block->channels(); |
| + source_ptr += push_frames * bytes_per_sample * channels_; |
| frames_to_push -= push_frames; |
| DCHECK_GE(frames_to_push, 0); |
| } |
| @@ -86,4 +83,13 @@ int AudioBlockFifo::GetUnfilledFrames() const { |
| return unfilled_frames; |
| } |
| +void AudioBlockFifo::Append(int blocks) { |
|
DaleCurtis
2014/09/12 17:14:00
Append feels like it may be giving too much of the
|
| + // Create |blocks| of audio buses and add them to the containers. |
| + audio_blocks_.reserve(audio_blocks_.size() + blocks); |
| + for (int i = 0; i < blocks; ++i) { |
| + scoped_ptr<AudioBus> audio_bus = AudioBus::Create(channels_, block_frames_); |
| + audio_blocks_.push_back(audio_bus.release()); |
| + } |
| +} |
| + |
| } // namespace media |