IAudioPolicyService.h revision 254af180475346b6186b49c297f340c9c4817511
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copyright (C) 2009 The Android Open Source Project 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Licensed under the Apache License, Version 2.0 (the "License"); 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * you may not use this file except in compliance with the License. 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * You may obtain a copy of the License at 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch * http://www.apache.org/licenses/LICENSE-2.0 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Unless required by applicable law or agreed to in writing, software 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * distributed under the License is distributed on an "AS IS" BASIS, 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * See the License for the specific language governing permissions and 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * limitations under the License. 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef ANDROID_IAUDIOPOLICYSERVICE_H 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define ANDROID_IAUDIOPOLICYSERVICE_H 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <stdint.h> 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <sys/types.h> 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <unistd.h> 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <utils/RefBase.h> 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <utils/Errors.h> 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <binder/IInterface.h> 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <media/AudioSystem.h> 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <system/audio_policy.h> 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace android { 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ---------------------------------------------------------------------------- 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class IAudioPolicyService : public IInterface 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)public: 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DECLARE_META_INTERFACE(AudioPolicyService); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // IAudioPolicyService interface (see AudioPolicyInterface for method descriptions) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 436d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles) virtual status_t setDeviceConnectionState(audio_devices_t device, 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) audio_policy_dev_state_t state, 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *device_address) = 0; 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual audio_policy_dev_state_t getDeviceConnectionState(audio_devices_t device, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const char *device_address) = 0; 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual status_t setPhoneState(audio_mode_t state) = 0; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual status_t setForceUse(audio_policy_force_use_t usage, audio_policy_forced_cfg_t config) = 0; 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual audio_policy_forced_cfg_t getForceUse(audio_policy_force_use_t usage) = 0; 51b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) virtual audio_io_handle_t getOutput(audio_stream_type_t stream, 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32_t samplingRate = 0, 53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) audio_format_t format = AUDIO_FORMAT_DEFAULT, 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) audio_channel_mask_t channelMask = 0, 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) audio_output_flags_t flags = AUDIO_OUTPUT_FLAG_NONE) = 0; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual status_t startOutput(audio_io_handle_t output, 575d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) audio_stream_type_t stream, 58eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int session = 0) = 0; 59eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual status_t stopOutput(audio_io_handle_t output, 60eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch audio_stream_type_t stream, 61eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int session = 0) = 0; 62eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual void releaseOutput(audio_io_handle_t output) = 0; 63eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual audio_io_handle_t getInput(audio_source_t inputSource, 64eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t samplingRate = 0, 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) audio_format_t format = AUDIO_FORMAT_DEFAULT, 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) audio_channel_mask_t channelMask = 0, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int audioSession = 0) = 0; 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual status_t startInput(audio_io_handle_t input) = 0; 69a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) virtual status_t stopInput(audio_io_handle_t input) = 0; 705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual void releaseInput(audio_io_handle_t input) = 0; 71a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) virtual status_t initStreamVolume(audio_stream_type_t stream, 72a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) int indexMin, 736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int indexMax) = 0; 746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual status_t setStreamVolumeIndex(audio_stream_type_t stream, 756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) int index, 766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) audio_devices_t device) = 0; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual status_t getStreamVolumeIndex(audio_stream_type_t stream, 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int *index, 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) audio_devices_t device) = 0; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual uint32_t getStrategyForStream(audio_stream_type_t stream) = 0; 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual audio_devices_t getDevicesForStream(audio_stream_type_t stream) = 0; 82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual audio_io_handle_t getOutputForEffect(effect_descriptor_t *desc) = 0; 83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual status_t registerEffect(effect_descriptor_t *desc, 84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch audio_io_handle_t io, 85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t strategy, 86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int session, 87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch int id) = 0; 88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual status_t unregisterEffect(int id) = 0; 89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual status_t setEffectEnabled(int id, bool enabled) = 0; 90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual bool isStreamActive(audio_stream_type_t stream, uint32_t inPastMs = 0) const = 0; 91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual status_t queryDefaultPreProcessing(int audioSession, 92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch effect_descriptor_t *descriptors, 93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t *count) = 0; 94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 95eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// ---------------------------------------------------------------------------- 98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass BnAudioPolicyService : public BnInterface<IAudioPolicyService> 100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch{ 101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochpublic: 102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual status_t onTransact( uint32_t code, 103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const Parcel& data, 104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch Parcel* reply, 105eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch uint32_t flags = 0); 106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// ---------------------------------------------------------------------------- 109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; // namespace android 111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif // ANDROID_IAUDIOPOLICYSERVICE_H 113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch