1// Copyright 2013 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.
4
5#include "media/audio/fake_audio_manager.h"
6
7namespace media {
8
9namespace {
10
11const int kDefaultInputBufferSize = 1024;
12const int kDefaultSampleRate = 48000;
13
14}  // namespace
15
16FakeAudioManager::FakeAudioManager(AudioLogFactory* audio_log_factory)
17    : AudioManagerBase(audio_log_factory) {}
18
19FakeAudioManager::~FakeAudioManager() {
20  Shutdown();
21}
22
23// Implementation of AudioManager.
24bool FakeAudioManager::HasAudioOutputDevices() { return false; }
25
26bool FakeAudioManager::HasAudioInputDevices() { return false; }
27
28// Implementation of AudioManagerBase.
29AudioOutputStream* FakeAudioManager::MakeLinearOutputStream(
30    const AudioParameters& params) {
31  return FakeAudioOutputStream::MakeFakeStream(this, params);
32}
33
34AudioOutputStream* FakeAudioManager::MakeLowLatencyOutputStream(
35    const AudioParameters& params,
36    const std::string& device_id) {
37  return FakeAudioOutputStream::MakeFakeStream(this, params);
38}
39
40AudioInputStream* FakeAudioManager::MakeLinearInputStream(
41    const AudioParameters& params,
42    const std::string& device_id) {
43  return FakeAudioInputStream::MakeFakeStream(this, params);
44}
45
46AudioInputStream* FakeAudioManager::MakeLowLatencyInputStream(
47    const AudioParameters& params,
48    const std::string& device_id) {
49  return FakeAudioInputStream::MakeFakeStream(this, params);
50}
51
52AudioParameters FakeAudioManager::GetPreferredOutputStreamParameters(
53    const std::string& output_device_id,
54    const AudioParameters& input_params) {
55  static const int kDefaultOutputBufferSize = 2048;
56  static const int kDefaultSampleRate = 48000;
57  ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO;
58  int sample_rate = kDefaultSampleRate;
59  int buffer_size = kDefaultOutputBufferSize;
60  int bits_per_sample = 16;
61  if (input_params.IsValid()) {
62    sample_rate = input_params.sample_rate();
63    bits_per_sample = input_params.bits_per_sample();
64    channel_layout = input_params.channel_layout();
65    buffer_size = std::min(input_params.frames_per_buffer(), buffer_size);
66  }
67
68  return AudioParameters(
69      AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout,
70      sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS);
71}
72
73AudioParameters FakeAudioManager::GetInputStreamParameters(
74    const std::string& device_id) {
75  return AudioParameters(
76      AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
77      kDefaultSampleRate, 16, kDefaultInputBufferSize);
78}
79
80}  // namespace media
81