IAudioFlinger.h revision 7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8
1/* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifndef ANDROID_IAUDIOFLINGER_H 18#define ANDROID_IAUDIOFLINGER_H 19 20#include <stdint.h> 21#include <sys/types.h> 22#include <unistd.h> 23 24#include <utils/RefBase.h> 25#include <utils/Errors.h> 26#include <utils/IInterface.h> 27#include <media/IAudioTrack.h> 28#include <media/IAudioRecord.h> 29 30 31namespace android { 32 33// ---------------------------------------------------------------------------- 34 35class IAudioFlinger : public IInterface 36{ 37public: 38 DECLARE_META_INTERFACE(AudioFlinger); 39 40 /* create an audio track and registers it with AudioFlinger. 41 * return null if the track cannot be created. 42 */ 43 virtual sp<IAudioTrack> createTrack( 44 pid_t pid, 45 int streamType, 46 uint32_t sampleRate, 47 int format, 48 int channelCount, 49 int frameCount, 50 uint32_t flags, 51 const sp<IMemory>& sharedBuffer, 52 status_t *status) = 0; 53 54 virtual sp<IAudioRecord> openRecord( 55 pid_t pid, 56 int streamType, 57 uint32_t sampleRate, 58 int format, 59 int channelCount, 60 int frameCount, 61 uint32_t flags, 62 status_t *status) = 0; 63 64 /* query the audio hardware state. This state never changes, 65 * and therefore can be cached. 66 */ 67 virtual uint32_t sampleRate() const = 0; 68 virtual int channelCount() const = 0; 69 virtual int format() const = 0; 70 virtual size_t frameCount() const = 0; 71 virtual uint32_t latency() const = 0; 72 73 /* set/get the audio hardware state. This will probably be used by 74 * the preference panel, mostly. 75 */ 76 virtual status_t setMasterVolume(float value) = 0; 77 virtual status_t setMasterMute(bool muted) = 0; 78 79 virtual float masterVolume() const = 0; 80 virtual bool masterMute() const = 0; 81 82 /* set/get stream type state. This will probably be used by 83 * the preference panel, mostly. 84 */ 85 virtual status_t setStreamVolume(int stream, float value) = 0; 86 virtual status_t setStreamMute(int stream, bool muted) = 0; 87 88 virtual float streamVolume(int stream) const = 0; 89 virtual bool streamMute(int stream) const = 0; 90 91 // set/get audio routing 92 virtual status_t setRouting(int mode, uint32_t routes, uint32_t mask) = 0; 93 virtual uint32_t getRouting(int mode) const = 0; 94 95 // set/get audio mode 96 virtual status_t setMode(int mode) = 0; 97 virtual int getMode() const = 0; 98 99 // mic mute/state 100 virtual status_t setMicMute(bool state) = 0; 101 virtual bool getMicMute() const = 0; 102 103 // is a music stream active? 104 virtual bool isMusicActive() const = 0; 105 106 // pass a generic configuration parameter to libaudio 107 // Temporary interface, do not use 108 // TODO: Replace with a more generic key:value get/set mechanism 109 virtual status_t setParameter(const char* key, const char* value) = 0; 110}; 111 112 113// ---------------------------------------------------------------------------- 114 115class BnAudioFlinger : public BnInterface<IAudioFlinger> 116{ 117public: 118 virtual status_t onTransact( uint32_t code, 119 const Parcel& data, 120 Parcel* reply, 121 uint32_t flags = 0); 122}; 123 124// ---------------------------------------------------------------------------- 125 126}; // namespace android 127 128#endif // ANDROID_IAUDIOFLINGER_H 129