| Index: media/audio/win/audio_output_win.cc
|
| ===================================================================
|
| --- media/audio/win/audio_output_win.cc (revision 20503)
|
| +++ media/audio/win/audio_output_win.cc (working copy)
|
| @@ -9,81 +9,10 @@
|
|
|
| #include "base/at_exit.h"
|
| #include "base/basictypes.h"
|
| +#include "media/audio/fake_audio_output_stream.h"
|
| #include "media/audio/win/audio_manager_win.h"
|
| #include "media/audio/win/waveout_output_win.h"
|
|
|
| -// A do-nothing audio stream. It behaves like a regular audio stream but does
|
| -// not have any side effect, except possibly the creation and tear-down of
|
| -// of a thread. It is useful to test code that uses audio streams such as
|
| -// audio sources.
|
| -class AudioOutputStreamMockWin : public AudioOutputStream {
|
| - public:
|
| - explicit AudioOutputStreamMockWin(AudioManagerWin* manager)
|
| - : manager_(manager),
|
| - callback_(NULL),
|
| - buffer_(NULL),
|
| - packet_size_(0),
|
| - left_volume_(1.0),
|
| - right_volume_(1.0) {
|
| - }
|
| -
|
| - virtual ~AudioOutputStreamMockWin() {
|
| - delete[] buffer_;
|
| - packet_size_ = 0;
|
| - }
|
| -
|
| - virtual bool Open(size_t packet_size) {
|
| - if (packet_size < sizeof(int16))
|
| - return false;
|
| - packet_size_ = packet_size;
|
| - buffer_ = new char[packet_size_];
|
| - return true;
|
| - }
|
| -
|
| - virtual void Start(AudioSourceCallback* callback) {
|
| - callback_ = callback;
|
| - memset(buffer_, 0, packet_size_);
|
| - callback_->OnMoreData(this, buffer_, packet_size_);
|
| - }
|
| -
|
| - // TODO(cpu): flesh out Start and Stop methods. We need a thread to
|
| - // perform periodic callbacks.
|
| - virtual void Stop() {
|
| - }
|
| -
|
| - virtual void SetVolume(double left_level, double right_level) {
|
| - left_volume_ = left_level;
|
| - right_volume_ = right_level;
|
| - }
|
| -
|
| - virtual void GetVolume(double* left_level, double* right_level) {
|
| - *left_level = left_volume_;
|
| - *right_level = right_volume_;
|
| - }
|
| -
|
| - virtual size_t GetNumBuffers() {
|
| - return 1;
|
| - }
|
| -
|
| - virtual void Close() {
|
| - callback_->OnClose(this);
|
| - callback_ = NULL;
|
| - manager_->ReleaseStream(this);
|
| - }
|
| -
|
| - char* buffer() {
|
| - return buffer_;
|
| - }
|
| -
|
| - private:
|
| - AudioManagerWin* manager_;
|
| - AudioSourceCallback* callback_;
|
| - char* buffer_;
|
| - size_t packet_size_;
|
| - double left_volume_;
|
| - double right_volume_;
|
| -};
|
| -
|
| namespace {
|
|
|
| // The next 3 constants are some sensible limits to prevent integer overflow
|
| @@ -93,18 +22,10 @@
|
| const int kMaxSampleRate = 192000;
|
| const int kMaxBitsPerSample = 64;
|
|
|
| -AudioOutputStreamMockWin* g_last_mock_stream = NULL;
|
| AudioManagerWin* g_audio_manager = NULL;
|
|
|
| -void ReplaceLastMockStream(AudioOutputStreamMockWin* newer) {
|
| - if (g_last_mock_stream)
|
| - delete g_last_mock_stream;
|
| - g_last_mock_stream = newer;
|
| -}
|
| -
|
| } // namespace.
|
|
|
| -
|
| bool AudioManagerWin::HasAudioDevices() {
|
| return (::waveOutGetNumDevs() != 0);
|
| }
|
| @@ -113,7 +34,6 @@
|
| // should suffice most windows user's needs.
|
| // - PCMWaveOutAudioOutputStream: Based on the waveOutWrite API (in progress)
|
| // - PCMDXSoundAudioOutputStream: Based on DirectSound or XAudio (future work).
|
| -
|
| AudioOutputStream* AudioManagerWin::MakeAudioStream(Format format, int channels,
|
| int sample_rate,
|
| char bits_per_sample) {
|
| @@ -123,7 +43,7 @@
|
| return NULL;
|
|
|
| if (format == AUDIO_MOCK) {
|
| - return new AudioOutputStreamMockWin(this);
|
| + return FakeAudioOutputStream::MakeFakeStream();
|
| } else if (format == AUDIO_PCM_LINEAR) {
|
| return new PCMWaveOutAudioOutputStream(this, channels, sample_rate,
|
| bits_per_sample, WAVE_MAPPER);
|
| @@ -136,15 +56,6 @@
|
| delete stream;
|
| }
|
|
|
| -void AudioManagerWin::ReleaseStream(AudioOutputStreamMockWin *stream) {
|
| - // Note that we keep the last mock stream so GetLastMockBuffer() works.
|
| - ReplaceLastMockStream(stream);
|
| -}
|
| -
|
| -const void* AudioManagerWin::GetLastMockBuffer() {
|
| - return (g_last_mock_stream) ? g_last_mock_stream->buffer() : NULL;
|
| -}
|
| -
|
| void AudioManagerWin::MuteAll() {
|
| }
|
|
|
| @@ -152,7 +63,6 @@
|
| }
|
|
|
| AudioManagerWin::~AudioManagerWin() {
|
| - ReplaceLastMockStream(NULL);
|
| }
|
|
|
| void DestroyAudioManagerWin(void* param) {
|
|
|