1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "media/audio/fake_audio_output_stream.h"
7 #include "base/at_exit.h"
8 #include "base/logging.h"
9 #include "media/audio/audio_manager_base.h"
13 FakeAudioOutputStream
* FakeAudioOutputStream::current_fake_stream_
= NULL
;
16 AudioOutputStream
* FakeAudioOutputStream::MakeFakeStream(
17 AudioManagerBase
* manager
,
18 const AudioParameters
& params
) {
19 FakeAudioOutputStream
* new_stream
= new FakeAudioOutputStream(manager
,
21 DCHECK(current_fake_stream_
== NULL
);
22 current_fake_stream_
= new_stream
;
26 bool FakeAudioOutputStream::Open() {
27 if (bytes_per_buffer_
< sizeof(int16
))
29 buffer_
.reset(new uint8
[bytes_per_buffer_
]);
34 FakeAudioOutputStream
* FakeAudioOutputStream::GetCurrentFakeStream() {
35 return current_fake_stream_
;
38 void FakeAudioOutputStream::Start(AudioSourceCallback
* callback
) {
40 memset(buffer_
.get(), 0, bytes_per_buffer_
);
41 callback_
->OnMoreData(this, buffer_
.get(), bytes_per_buffer_
,
42 AudioBuffersState(0, 0));
45 void FakeAudioOutputStream::Stop() {
49 void FakeAudioOutputStream::SetVolume(double volume
) {
53 void FakeAudioOutputStream::GetVolume(double* volume
) {
57 void FakeAudioOutputStream::Close() {
59 audio_manager_
->ReleaseOutputStream(this);
62 FakeAudioOutputStream::FakeAudioOutputStream(AudioManagerBase
* manager
,
63 const AudioParameters
& params
)
64 : audio_manager_(manager
),
67 bytes_per_buffer_(params
.GetBytesPerBuffer()),
71 FakeAudioOutputStream::~FakeAudioOutputStream() {
72 if (current_fake_stream_
== this)
73 current_fake_stream_
= NULL
;