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