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