| Index: media/audio/simple_sources.cc
|
| diff --git a/media/audio/simple_sources.cc b/media/audio/simple_sources.cc
|
| index fde0509d979f0dc24aa45a062620d7583425738b..44fee723cad7dfcc5936e17ba2c8eceb25ae4cb4 100644
|
| --- a/media/audio/simple_sources.cc
|
| +++ b/media/audio/simple_sources.cc
|
| @@ -14,6 +14,7 @@
|
| #include "base/files/file.h"
|
| #include "base/lazy_instance.h"
|
| #include "base/logging.h"
|
| +#include "base/time/time.h"
|
| #include "media/audio/sounds/wav_audio_handler.h"
|
| #include "media/base/audio_bus.h"
|
|
|
| @@ -115,9 +116,10 @@ SineWaveAudioSource::~SineWaveAudioSource() {
|
|
|
| // The implementation could be more efficient if a lookup table is constructed
|
| // but it is efficient enough for our simple needs.
|
| -int SineWaveAudioSource::OnMoreData(AudioBus* audio_bus,
|
| - uint32_t total_bytes_delay,
|
| - uint32_t frames_skipped) {
|
| +int SineWaveAudioSource::OnMoreData(base::TimeDelta /* delay */,
|
| + base::TimeTicks /* delay_timestamp */,
|
| + int /* prior_frames_skipped */,
|
| + AudioBus* dest) {
|
| base::AutoLock auto_lock(time_lock_);
|
| callbacks_++;
|
|
|
| @@ -125,13 +127,13 @@ int SineWaveAudioSource::OnMoreData(AudioBus* audio_bus,
|
| // where Theta = 2*PI*fs.
|
| // We store the discrete time value |t| in a member to ensure that the
|
| // next pass starts at a correct state.
|
| - int max_frames = cap_ > 0 ?
|
| - std::min(audio_bus->frames(), cap_ - time_state_) : audio_bus->frames();
|
| + int max_frames =
|
| + cap_ > 0 ? std::min(dest->frames(), cap_ - time_state_) : dest->frames();
|
| for (int i = 0; i < max_frames; ++i)
|
| - audio_bus->channel(0)[i] = sin(2.0 * M_PI * f_ * time_state_++);
|
| - for (int i = 1; i < audio_bus->channels(); ++i) {
|
| - memcpy(audio_bus->channel(i), audio_bus->channel(0),
|
| - max_frames * sizeof(*audio_bus->channel(i)));
|
| + dest->channel(0)[i] = sin(2.0 * M_PI * f_ * time_state_++);
|
| + for (int i = 1; i < dest->channels(); ++i) {
|
| + memcpy(dest->channel(i), dest->channel(0),
|
| + max_frames * sizeof(*dest->channel(i)));
|
| }
|
| return max_frames;
|
| }
|
| @@ -201,9 +203,10 @@ void FileSource::LoadWavFile(const base::FilePath& path_to_wav_file) {
|
| file_audio_converter_->AddInput(this);
|
| }
|
|
|
| -int FileSource::OnMoreData(AudioBus* audio_bus,
|
| - uint32_t total_bytes_delay,
|
| - uint32_t frames_skipped) {
|
| +int FileSource::OnMoreData(base::TimeDelta /* delay */,
|
| + base::TimeTicks /* delay_timestamp */,
|
| + int /* prior_frames_skipped */,
|
| + AudioBus* dest) {
|
| // Load the file if we haven't already. This load needs to happen on the
|
| // audio thread, otherwise we'll run on the UI thread on Mac for instance.
|
| // This will massively delay the first OnMoreData, but we'll catch up.
|
| @@ -222,8 +225,8 @@ int FileSource::OnMoreData(AudioBus* audio_bus,
|
| }
|
|
|
| // This pulls data from ProvideInput.
|
| - file_audio_converter_->Convert(audio_bus);
|
| - return audio_bus->frames();
|
| + file_audio_converter_->Convert(dest);
|
| + return dest->frames();
|
| }
|
|
|
| void FileSource::Rewind() {
|
| @@ -258,9 +261,10 @@ BeepingSource::BeepingSource(const AudioParameters& params)
|
| BeepingSource::~BeepingSource() {
|
| }
|
|
|
| -int BeepingSource::OnMoreData(AudioBus* audio_bus,
|
| - uint32_t total_bytes_delay,
|
| - uint32_t frames_skipped) {
|
| +int BeepingSource::OnMoreData(base::TimeDelta /* delay */,
|
| + base::TimeTicks /* delay_timestamp */,
|
| + int /* prior_frames_skipped */,
|
| + AudioBus* dest) {
|
| // Accumulate the time from the last beep.
|
| interval_from_last_beep_ += base::TimeTicks::Now() - last_callback_time_;
|
|
|
| @@ -304,9 +308,9 @@ int BeepingSource::OnMoreData(AudioBus* audio_bus,
|
| }
|
|
|
| last_callback_time_ = base::TimeTicks::Now();
|
| - audio_bus->FromInterleaved(
|
| - buffer_.get(), audio_bus->frames(), params_.bits_per_sample() / 8);
|
| - return audio_bus->frames();
|
| + dest->FromInterleaved(buffer_.get(), dest->frames(),
|
| + params_.bits_per_sample() / 8);
|
| + return dest->frames();
|
| }
|
|
|
| void BeepingSource::OnError(AudioOutputStream* stream) {
|
|
|