diff options
author | dalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-14 03:42:01 +0000 |
---|---|---|
committer | dalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-14 03:42:01 +0000 |
commit | f9244d58b4a60747dc471ec396be1337eb4a7451 (patch) | |
tree | b3d6242048dd2476431a18509ea8b47f496667a0 /media/base/fake_audio_render_callback.cc | |
parent | 155e1b4e6a5510f05e157ca102fb676d79f29c9e (diff) | |
download | chromium_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.cc | 29 |
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 |