165e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland/*
265e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * Copyright (C) 2009 The Android Open Source Project
365e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland *
465e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * Licensed under the Apache License, Version 2.0 (the "License");
565e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * you may not use this file except in compliance with the License.
665e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * You may obtain a copy of the License at
765e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland *
865e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland *      http://www.apache.org/licenses/LICENSE-2.0
965e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland *
1065e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * Unless required by applicable law or agreed to in writing, software
1165e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * distributed under the License is distributed on an "AS IS" BASIS,
1265e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1365e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * See the License for the specific language governing permissions and
1465e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland * limitations under the License.
1565e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland */
1665e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
1765e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
1865e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland#include <stdint.h>
1965e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland#include <sys/types.h>
2065e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland#include <utils/Timers.h>
2165e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland#include <utils/Errors.h>
2265e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland#include <utils/KeyedVector.h>
2365e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland#include <hardware_legacy/AudioPolicyManagerBase.h>
2465e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
2565e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
2665e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetlandnamespace android {
2765e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
2865e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland// ----------------------------------------------------------------------------
2965e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
3065e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetlandclass AudioPolicyManager: public AudioPolicyManagerBase
3165e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland{
3265e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
3365e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetlandpublic:
3465e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland                AudioPolicyManager(AudioPolicyClientInterface *clientInterface)
3565e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland                : AudioPolicyManagerBase(clientInterface) {}
3665e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
3765e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        virtual ~AudioPolicyManager() {}
3865e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
3965e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetlandprotected:
4065e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
4165e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        // true is current platform implements a back microphone
4265e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        virtual bool hasBackMicrophone() const { return true; }
4365e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
4465e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland#ifdef WITH_A2DP
4565e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        // true is current platform supports suplication of notifications and ringtones over A2DP output
4665e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        virtual bool a2dpUsedForSonification() const { return true; }
4765e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland#endif
4865e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
4965e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        // return appropriate device for streams handled by the specified strategy according to current
5065e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        // phone state, connected devices...
5165e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        virtual uint32_t getDeviceForStrategy(routing_strategy strategy, bool fromCache = true);
5265e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland        virtual float computeVolume(int stream, int index, audio_io_handle_t output, uint32_t device);
5365e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland};
5465e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland
5565e6c49fb6a8872a5e36fa479c4ed9f9fceba43cBrian Swetland};
56