summaryrefslogtreecommitdiffstats
path: root/media/base/fake_audio_render_callback.cc
diff options
context:
space:
mode:
authordalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-14 03:42:01 +0000
committerdalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-14 03:42:01 +0000
commitf9244d58b4a60747dc471ec396be1337eb4a7451 (patch)
treeb3d6242048dd2476431a18509ea8b47f496667a0 /media/base/fake_audio_render_callback.cc
parent155e1b4e6a5510f05e157ca102fb676d79f29c9e (diff)
downloadchromium_src-f9244d58b4a60747dc471ec396be1337eb4a7451.zip
chromium_src-f9244d58b4a60747dc471ec396be1337eb4a7451.tar.gz
chromium_src-f9244d58b4a60747dc471ec396be1337eb4a7451.tar.bz2
Switch to pcm_low_latency and enable resampling.
Plumbs all the relevant bits around. Updates the unit tests to do a basic resampling sanity check. Still requires http://codereview.chromium.org/10636036/ before anything will work on ToT. I'll land that behind a flag later. BUG=133637 TEST=These unit tests + CL above for manual testing. Review URL: https://chromiumcodereview.appspot.com/10698066 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@146717 0039d316-1c4b-4281-b951-d872f2087c98
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