summaryrefslogtreecommitdiffstats
path: root/media/base/multi_channel_resampler.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/base/multi_channel_resampler.cc')
-rw-r--r--media/base/multi_channel_resampler.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/media/base/multi_channel_resampler.cc b/media/base/multi_channel_resampler.cc
index b8df97d..a5cbf3ef 100644
--- a/media/base/multi_channel_resampler.cc
+++ b/media/base/multi_channel_resampler.cc
@@ -15,7 +15,8 @@ MultiChannelResampler::MultiChannelResampler(int channels,
double io_sample_rate_ratio,
const ReadCB& read_cb)
: last_frame_count_(0),
- read_cb_(read_cb) {
+ read_cb_(read_cb),
+ output_frames_ready_(0) {
// Allocate each channel's resampler.
resamplers_.reserve(channels);
for (int i = 0; i < channels; ++i) {
@@ -33,10 +34,10 @@ void MultiChannelResampler::Resample(AudioBus* audio_bus, int frames) {
// channel. To ensure this, we chunk the number of requested frames into
// SincResampler::ChunkSize() sized chunks. SincResampler guarantees it will
// only call ProvideInput() once when we resample this way.
- int frames_done = 0;
+ output_frames_ready_ = 0;
int chunk_size = resamplers_[0]->ChunkSize();
- while (frames_done < frames) {
- int frames_this_time = std::min(frames - frames_done, chunk_size);
+ while (output_frames_ready_ < frames) {
+ int frames_this_time = std::min(frames - output_frames_ready_, chunk_size);
// Resample each channel.
for (size_t i = 0; i < resamplers_.size(); ++i) {
@@ -49,10 +50,10 @@ void MultiChannelResampler::Resample(AudioBus* audio_bus, int frames) {
// since they all buffer in the same way and are processing the same
// number of frames.
resamplers_[i]->Resample(
- audio_bus->channel(i) + frames_done, frames_this_time);
+ audio_bus->channel(i) + output_frames_ready_, frames_this_time);
}
- frames_done += frames_this_time;
+ output_frames_ready_ += frames_this_time;
}
}
@@ -82,7 +83,7 @@ void MultiChannelResampler::ProvideInput(int channel, float* destination,
}
last_frame_count_ = frames;
- read_cb_.Run(wrapped_resampler_audio_bus_.get());
+ read_cb_.Run(output_frames_ready_, wrapped_resampler_audio_bus_.get());
} else {
// All channels must ask for the same amount. This should always be the
// case, but let's just make sure.