diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-21 01:05:18 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-21 01:05:18 +0000 |
commit | 39c1854f3bd2a959b34115a3fccdb001e9ca186e (patch) | |
tree | 4e4b62d1ccef53f29cd44f67600d92d12a920d7a /media/audio/fake_audio_output_stream.cc | |
parent | 14cb4c944051458397099ecb7325c414d5d707c9 (diff) | |
download | chromium_src-39c1854f3bd2a959b34115a3fccdb001e9ca186e.zip chromium_src-39c1854f3bd2a959b34115a3fccdb001e9ca186e.tar.gz chromium_src-39c1854f3bd2a959b34115a3fccdb001e9ca186e.tar.bz2 |
Refactoring to share MockAudioOutputStream implementations across 3 platforms
Review URL: http://codereview.chromium.org/155471
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21137 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/audio/fake_audio_output_stream.cc')
-rw-r--r-- | media/audio/fake_audio_output_stream.cc | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/media/audio/fake_audio_output_stream.cc b/media/audio/fake_audio_output_stream.cc new file mode 100644 index 0000000..6eb5417 --- /dev/null +++ b/media/audio/fake_audio_output_stream.cc @@ -0,0 +1,72 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/at_exit.h" +#include "media/audio/fake_audio_output_stream.h" + +bool FakeAudioOutputStream::has_created_fake_stream_ = false; +FakeAudioOutputStream* FakeAudioOutputStream::last_fake_stream_ = NULL; + +// static +AudioOutputStream* FakeAudioOutputStream::MakeFakeStream() { + if (!has_created_fake_stream_) + base::AtExitManager::RegisterCallback(&DestroyLastFakeStream, NULL); + has_created_fake_stream_ = true; + + return new FakeAudioOutputStream(); +} + +// static +FakeAudioOutputStream* FakeAudioOutputStream::GetLastFakeStream() { + return last_fake_stream_; +} + +bool FakeAudioOutputStream::Open(size_t packet_size) { + if (packet_size < sizeof(int16)) + return false; + packet_size_ = packet_size; + buffer_.reset(new char[packet_size_]); + return true; +} + +void FakeAudioOutputStream::Start(AudioSourceCallback* callback) { + callback_ = callback; + memset(buffer_.get(), 0, packet_size_); + callback_->OnMoreData(this, buffer_.get(), packet_size_); +} + +void FakeAudioOutputStream::Stop() { +} + +void FakeAudioOutputStream::SetVolume(double left_level, double right_level) { + left_volume_ = left_level; + right_volume_ = right_level; +} + +void FakeAudioOutputStream::GetVolume(double* left_level, double* right_level) { + *left_level = left_volume_; + *right_level = right_volume_; +} + +void FakeAudioOutputStream::Close() { + callback_->OnClose(this); + callback_ = NULL; + + if (last_fake_stream_) + delete last_fake_stream_; + last_fake_stream_ = this; +} + +FakeAudioOutputStream::FakeAudioOutputStream() + : left_volume_(0), + right_volume_(0), + callback_(NULL), + packet_size_(0) { +} + +// static +void FakeAudioOutputStream::DestroyLastFakeStream(void* param) { + if (last_fake_stream_) + delete last_fake_stream_; +} |