1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "media/audio/fake_audio_manager.h" 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace media { 8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 9a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)namespace { 10a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 11a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)const int kDefaultInputBufferSize = 1024; 12a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)const int kDefaultSampleRate = 48000; 13a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 14a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} // namespace 15a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 16a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)FakeAudioManager::FakeAudioManager(AudioLogFactory* audio_log_factory) 17a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) : AudioManagerBase(audio_log_factory) {} 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)FakeAudioManager::~FakeAudioManager() { 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) Shutdown(); 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Implementation of AudioManager. 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool FakeAudioManager::HasAudioOutputDevices() { return false; } 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool FakeAudioManager::HasAudioInputDevices() { return false; } 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Implementation of AudioManagerBase. 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)AudioOutputStream* FakeAudioManager::MakeLinearOutputStream( 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const AudioParameters& params) { 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return FakeAudioOutputStream::MakeFakeStream(this, params); 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)AudioOutputStream* FakeAudioManager::MakeLowLatencyOutputStream( 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const AudioParameters& params, 365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const std::string& device_id) { 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return FakeAudioOutputStream::MakeFakeStream(this, params); 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)AudioInputStream* FakeAudioManager::MakeLinearInputStream( 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const AudioParameters& params, 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::string& device_id) { 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return FakeAudioInputStream::MakeFakeStream(this, params); 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)AudioInputStream* FakeAudioManager::MakeLowLatencyInputStream( 47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const AudioParameters& params, 48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::string& device_id) { 49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return FakeAudioInputStream::MakeFakeStream(this, params); 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)AudioParameters FakeAudioManager::GetPreferredOutputStreamParameters( 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const std::string& output_device_id, 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const AudioParameters& input_params) { 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static const int kDefaultOutputBufferSize = 2048; 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static const int kDefaultSampleRate = 48000; 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO; 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int sample_rate = kDefaultSampleRate; 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int buffer_size = kDefaultOutputBufferSize; 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) int bits_per_sample = 16; 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (input_params.IsValid()) { 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) sample_rate = input_params.sample_rate(); 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bits_per_sample = input_params.bits_per_sample(); 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) channel_layout = input_params.channel_layout(); 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) buffer_size = std::min(input_params.frames_per_buffer(), buffer_size); 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return AudioParameters( 691320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout, 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) sample_rate, bits_per_sample, buffer_size, AudioParameters::NO_EFFECTS); 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} 72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 73a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)AudioParameters FakeAudioManager::GetInputStreamParameters( 74a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const std::string& device_id) { 75a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) return AudioParameters( 76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO, 77a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) kDefaultSampleRate, 16, kDefaultInputBufferSize); 78a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)} 79a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace media 81