AudioPolicyConfig.h revision a8ecc2c72ca26389bd6b0162181d60aaeaca8149
1a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville/* 2a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Copyright (C) 2009 The Android Open Source Project 3a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * 4a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 5a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * you may not use this file except in compliance with the License. 6a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * You may obtain a copy of the License at 7a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * 8a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * http://www.apache.org/licenses/LICENSE-2.0 9a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * 10a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Unless required by applicable law or agreed to in writing, software 11a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * distributed under the License is distributed on an "AS IS" BASIS, 12a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * See the License for the specific language governing permissions and 14a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * limitations under the License. 15a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville */ 16a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 17a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#pragma once 18a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 19a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <AudioGain.h> 20a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <AudioPort.h> 21a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <AudioPatch.h> 22df0280231c51a24a0b66c24034827d7f73d6e1acSantos Cordon#include <DeviceDescriptor.h> 23a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <IOProfile.h> 24a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <HwModule.h> 25a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <AudioInputDescriptor.h> 26a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <AudioOutputDescriptor.h> 27a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <AudioPolicyMix.h> 28a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <EffectDescriptor.h> 29a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <SoundTriggerSession.h> 30a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <StreamDescriptor.h> 31a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville#include <SessionRoute.h> 32a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 33a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savillenamespace android { 34a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 35a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleclass AudioPolicyConfig 36a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville{ 37a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savillepublic: 385d0d72d9b7dc34c93303f6732541bbb74fed53daEtan Cohen AudioPolicyConfig(HwModuleCollection &hwModules, 395d0d72d9b7dc34c93303f6732541bbb74fed53daEtan Cohen DeviceVector &availableOutputDevices, 405d0d72d9b7dc34c93303f6732541bbb74fed53daEtan Cohen DeviceVector &availableInputDevices, 41a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sp<DeviceDescriptor> &defaultOutputDevices, 42a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville bool &isSpeakerDrcEnabled) 43a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville : mHwModules(hwModules), 44a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mAvailableOutputDevices(availableOutputDevices), 455d0d72d9b7dc34c93303f6732541bbb74fed53daEtan Cohen mAvailableInputDevices(availableInputDevices), 46a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mDefaultOutputDevices(defaultOutputDevices), 47a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mIsSpeakerDrcEnabled(isSpeakerDrcEnabled) 48a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville {} 49a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 50a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void setHwModules(const HwModuleCollection &hwModules) 51a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville { 52a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mHwModules = hwModules; 53a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 54a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 55a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void addAvailableInputDevices(const DeviceVector &availableInputDevices) 56a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville { 57a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mAvailableInputDevices.add(availableInputDevices); 58a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 59a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 60a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void addAvailableOutputDevices(const DeviceVector &availableOutputDevices) 61a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville { 626d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak mAvailableOutputDevices.add(availableOutputDevices); 63a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 64a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 65a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void setSpeakerDrcEnabled(bool isSpeakerDrcEnabled) 66a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville { 67a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mIsSpeakerDrcEnabled = isSpeakerDrcEnabled; 68a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 69a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 70e64a413b850aae224e2f56e7dfc6e0bcd667643eUma Maheswari Ramalingam const HwModuleCollection getHwModules() const { return mHwModules; } 71e64a413b850aae224e2f56e7dfc6e0bcd667643eUma Maheswari Ramalingam 72e64a413b850aae224e2f56e7dfc6e0bcd667643eUma Maheswari Ramalingam const DeviceVector &getAvailableInputDevices() const 73a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville { 74a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return mAvailableInputDevices; 75a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 76a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 77a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville const DeviceVector &getAvailableOutputDevices() const 78a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville { 79a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville return mAvailableOutputDevices; 80a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 81a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 82a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void setDefaultOutputDevice(const sp<DeviceDescriptor> &defaultDevice) 83a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville { 84a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mDefaultOutputDevices = defaultDevice; 85a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 86a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 87a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville const sp<DeviceDescriptor> &getDefaultOutputDevice() const { return mDefaultOutputDevices; } 88a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 89a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void setDefault(void) 90a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville { 91a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mDefaultOutputDevices = new DeviceDescriptor(AUDIO_DEVICE_OUT_SPEAKER); 92a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sp<HwModule> module; 93a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sp<DeviceDescriptor> defaultInputDevice = 94a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville new DeviceDescriptor(AUDIO_DEVICE_IN_BUILTIN_MIC); 95a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mAvailableOutputDevices.add(mDefaultOutputDevices); 96a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mAvailableInputDevices.add(defaultInputDevice); 97a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 98a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville module = new HwModule("primary"); 99a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 100a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sp<OutputProfile> outProfile; 101a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville outProfile = new OutputProfile(String8("primary")); 102a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville outProfile->attach(module); 103a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville outProfile->mSamplingRates.add(44100); 104a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville outProfile->mFormats.add(AUDIO_FORMAT_PCM_16_BIT); 105a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville outProfile->mChannelMasks.add(AUDIO_CHANNEL_OUT_STEREO); 106a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville outProfile->addSupportedDevice(mDefaultOutputDevices); 107a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville outProfile->setFlags(AUDIO_OUTPUT_FLAG_PRIMARY); 108a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville module->mOutputProfiles.add(outProfile); 109a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 110a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sp<InputProfile> inProfile; 111a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville inProfile = new InputProfile(String8("primary")); 112a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville inProfile->attach(module); 113a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville inProfile->mSamplingRates.add(8000); 114a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville inProfile->mFormats.add(AUDIO_FORMAT_PCM_16_BIT); 115a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville inProfile->mChannelMasks.add(AUDIO_CHANNEL_IN_MONO); 1166d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak inProfile->addSupportedDevice(defaultInputDevice); 1176d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak module->mInputProfiles.add(inProfile); 1186d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak 1196d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak mHwModules.add(module); 1206d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak } 1216d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak 1226d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiakprivate: 1236d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak HwModuleCollection &mHwModules; /**< Collection of Module, with Profiles, i.e. Mix Ports. */ 1246d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak DeviceVector &mAvailableOutputDevices; 1256d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak DeviceVector &mAvailableInputDevices; 1266d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak sp<DeviceDescriptor> &mDefaultOutputDevices; 1276d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak bool &mIsSpeakerDrcEnabled; 1286d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak}; 1296d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak 1306d91e295add44a5b7e611cb51401a20b3caa6571Pavel Zhamaitsiak}; // namespace android 131a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville