Index: media/base/audio_converter.cc |
diff --git a/media/base/audio_converter.cc b/media/base/audio_converter.cc |
index cdc6642b5f18f28a205f43def5321365f669b77b..81f9dc6396131ed747cfabc2f1020a5a63eda892 100644 |
--- a/media/base/audio_converter.cc |
+++ b/media/base/audio_converter.cc |
@@ -28,7 +28,9 @@ AudioConverter::AudioConverter(const AudioParameters& input_params, |
: chunk_size_(output_params.frames_per_buffer()), |
downmix_early_(false), |
resampler_frame_delay_(0), |
- input_channel_count_(input_params.channels()) { |
+ input_channel_count_(input_params.channels()), |
+ io_sample_rate_ratio_(input_params.sample_rate() / |
+ static_cast<double>(output_params.sample_rate())) { |
CHECK(input_params.IsValid()); |
CHECK(output_params.IsValid()); |
@@ -48,14 +50,12 @@ AudioConverter::AudioConverter(const AudioParameters& input_params, |
if (input_params.sample_rate() != output_params.sample_rate()) { |
DVLOG(1) << "Resampling from " << input_params.sample_rate() << " to " |
<< output_params.sample_rate(); |
- const double io_sample_rate_ratio = input_params.sample_rate() / |
- static_cast<double>(output_params.sample_rate()); |
const int request_size = disable_fifo ? SincResampler::kDefaultRequestSize : |
input_params.frames_per_buffer(); |
resampler_.reset(new MultiChannelResampler( |
downmix_early_ ? output_params.channels() : |
input_params.channels(), |
- io_sample_rate_ratio, request_size, base::Bind( |
+ io_sample_rate_ratio_, request_size, base::Bind( |
&AudioConverter::ProvideInput, base::Unretained(this)))); |
} |
@@ -115,6 +115,13 @@ int AudioConverter::ChunkSize() const { |
return resampler_->ChunkSize(); |
} |
+int AudioConverter::RequestSize() const { |
+ if (resampler_) |
+ return audio_fifo_ ? chunk_size_ |
+ : SincResampler::kDefaultRequestSize; |
+ return chunk_size_; |
+} |
+ |
void AudioConverter::ConvertWithDelay(const base::TimeDelta& initial_delay, |
AudioBus* dest) { |
initial_delay_ = initial_delay; |