Move media/audio files into media namespace
[chromium-blink-merge.git] / media / audio / fake_audio_output_stream.cc
blob686ccdef1a82462ebbcf3b2d913325e6d33c0f66
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"
11 namespace media {
13 FakeAudioOutputStream* FakeAudioOutputStream::current_fake_stream_ = NULL;
15 // static
16 AudioOutputStream* FakeAudioOutputStream::MakeFakeStream(
17 AudioManagerBase* manager,
18 const AudioParameters& params) {
19 FakeAudioOutputStream* new_stream = new FakeAudioOutputStream(manager,
20 params);
21 DCHECK(current_fake_stream_ == NULL);
22 current_fake_stream_ = new_stream;
23 return new_stream;
26 bool FakeAudioOutputStream::Open() {
27 if (bytes_per_buffer_ < sizeof(int16))
28 return false;
29 buffer_.reset(new uint8[bytes_per_buffer_]);
30 return true;
33 // static
34 FakeAudioOutputStream* FakeAudioOutputStream::GetCurrentFakeStream() {
35 return current_fake_stream_;
38 void FakeAudioOutputStream::Start(AudioSourceCallback* callback) {
39 callback_ = 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() {
46 callback_ = NULL;
49 void FakeAudioOutputStream::SetVolume(double volume) {
50 volume_ = volume;
53 void FakeAudioOutputStream::GetVolume(double* volume) {
54 *volume = volume_;
57 void FakeAudioOutputStream::Close() {
58 closed_ = true;
59 audio_manager_->ReleaseOutputStream(this);
62 FakeAudioOutputStream::FakeAudioOutputStream(AudioManagerBase* manager,
63 const AudioParameters& params)
64 : audio_manager_(manager),
65 volume_(0),
66 callback_(NULL),
67 bytes_per_buffer_(params.GetBytesPerBuffer()),
68 closed_(false) {
71 FakeAudioOutputStream::~FakeAudioOutputStream() {
72 if (current_fake_stream_ == this)
73 current_fake_stream_ = NULL;
76 } // namespace media