summaryrefslogtreecommitdiffstats
path: root/media/base/fake_audio_render_callback.cc
diff options
context:
space:
mode:
Diffstat (limited to 'media/base/fake_audio_render_callback.cc')
-rw-r--r--media/base/fake_audio_render_callback.cc29
1 files changed, 13 insertions, 16 deletions
diff --git a/media/base/fake_audio_render_callback.cc b/media/base/fake_audio_render_callback.cc
index 3fc711b4..15986fd 100644
--- a/media/base/fake_audio_render_callback.cc
+++ b/media/base/fake_audio_render_callback.cc
@@ -11,13 +11,10 @@
namespace media {
-// Arbitrarily chosen prime value for the fake random number generator.
-static const int kFakeRandomSeed = 9440671;
-
-FakeAudioRenderCallback::FakeAudioRenderCallback(const AudioParameters& params)
+FakeAudioRenderCallback::FakeAudioRenderCallback(double step)
: half_fill_(false),
- fill_value_(1.0f),
- audio_parameters_(params) {
+ step_(step) {
+ reset();
}
FakeAudioRenderCallback::~FakeAudioRenderCallback() {}
@@ -27,18 +24,18 @@ int FakeAudioRenderCallback::Render(const std::vector<float*>& audio_data,
int audio_delay_milliseconds) {
if (half_fill_)
number_of_frames /= 2;
- for (size_t i = 0; i < audio_data.size(); ++i)
- std::fill(audio_data[i], audio_data[i] + number_of_frames, fill_value_);
- return number_of_frames;
-}
+ // Fill first channel with a sine wave.
+ for (int i = 0; i < number_of_frames; ++i)
+ audio_data[0][i] = sin(2 * M_PI * (x_ + step_ * i));
+ x_ += number_of_frames * step_;
-void FakeAudioRenderCallback::NextFillValue() {
- // Use irrationality of PI to fake random numbers; square fill_value_ to keep
- // numbers between [0, 1) so range extension to [-1, 1) by 2 * x - 1 works.
- fill_value_ = 2.0f * (static_cast<int>(
- M_PI * fill_value_ * fill_value_ * kFakeRandomSeed) % kFakeRandomSeed) /
- static_cast<float>(kFakeRandomSeed) - 1.0f;
+ // Copy first channel into the rest of the channels.
+ for (size_t i = 1; i < audio_data.size(); ++i)
+ memcpy(audio_data[i], audio_data[0],
+ number_of_frames * sizeof(*audio_data[0]));
+
+ return number_of_frames;
}
} // namespace media