Index: media/base/multi_channel_resampler.h |
diff --git a/media/base/multi_channel_resampler.h b/media/base/multi_channel_resampler.h |
index db95bc52776273168fb158020507885c47877556..6d65075241df18d052a59158c850f843c6bbcbf8 100644 |
--- a/media/base/multi_channel_resampler.h |
+++ b/media/base/multi_channel_resampler.h |
@@ -13,16 +13,16 @@ |
#include "media/base/sinc_resampler.h" |
namespace media { |
+class AudioBus; |
// MultiChannelResampler is a multi channel wrapper for SincResampler; allowing |
// high quality sample rate conversion of multiple channels at once. |
class MEDIA_EXPORT MultiChannelResampler { |
public: |
- // Callback type for providing more data into the resampler. Expects |frames| |
- // of data for all channels to be rendered into |destination|; zero padded if |
- // not enough frames are available to satisfy the request. |
- typedef base::Callback<void(const std::vector<float*>& destination, |
- int frames)> ReadCB; |
+ // Callback type for providing more data into the resampler. Expects AudioBus |
+ // to be completely filled with data upon return; zero padded if not enough |
+ // frames are available to satisfy the request. |
+ typedef base::Callback<void(AudioBus* audio_bus)> ReadCB; |
// Constructs a MultiChannelResampler with the specified |read_cb|, which is |
// used to acquire audio data for resampling. |io_sample_rate_ratio| is the |
@@ -31,8 +31,8 @@ class MEDIA_EXPORT MultiChannelResampler { |
const ReadCB& read_cb); |
virtual ~MultiChannelResampler(); |
- // Resample |frames| of data from |read_cb_| into |destination|. |
- void Resample(const std::vector<float*>& destination, int frames); |
+ // Resamples |frames| of data from |read_cb_| into AudioBus. |
+ void Resample(AudioBus* audio_bus, int frames); |
private: |
// SincResampler::ReadCB implementation. ProvideInput() will be called for |
@@ -43,17 +43,15 @@ class MEDIA_EXPORT MultiChannelResampler { |
// frames for every channel. |
int last_frame_count_; |
- // Sanity check to ensure |resampler_audio_data_| is properly allocated. |
- int first_frame_count_; |
- |
// Source of data for resampling. |
ReadCB read_cb_; |
// Each channel has its own high quality resampler. |
ScopedVector<SincResampler> resamplers_; |
- // Buffer for audio data going into SincResampler from ReadCB. Owned by this |
- // class and only temporarily passed out to ReadCB when data is required. |
+ // Buffers for audio data going into SincResampler from ReadCB. |
+ scoped_ptr<AudioBus> resampler_audio_bus_; |
+ scoped_ptr<AudioBus> wrapped_resampler_audio_bus_; |
std::vector<float*> resampler_audio_data_; |
}; |