dom/system/gonk/android_audio/IAudioFlinger.h

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/dom/system/gonk/android_audio/IAudioFlinger.h	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,184 @@
     1.4 +/*
     1.5 + * Copyright (C) 2007 The Android Open Source Project
     1.6 + *
     1.7 + * Licensed under the Apache License, Version 2.0 (the "License");
     1.8 + * you may not use this file except in compliance with the License.
     1.9 + * You may obtain a copy of the License at
    1.10 + *
    1.11 + *      http://www.apache.org/licenses/LICENSE-2.0
    1.12 + *
    1.13 + * Unless required by applicable law or agreed to in writing, software
    1.14 + * distributed under the License is distributed on an "AS IS" BASIS,
    1.15 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    1.16 + * See the License for the specific language governing permissions and
    1.17 + * limitations under the License.
    1.18 + */
    1.19 +
    1.20 +#ifndef ANDROID_IAUDIOFLINGER_H
    1.21 +#define ANDROID_IAUDIOFLINGER_H
    1.22 +
    1.23 +#include <stdint.h>
    1.24 +#include <sys/types.h>
    1.25 +#include <unistd.h>
    1.26 +
    1.27 +#include <utils/RefBase.h>
    1.28 +#include <utils/Errors.h>
    1.29 +#include <binder/IInterface.h>
    1.30 +#include "IAudioTrack.h"
    1.31 +#include "IAudioRecord.h"
    1.32 +#include "IAudioFlingerClient.h"
    1.33 +#include "EffectApi.h"
    1.34 +#include "IEffect.h"
    1.35 +#include "IEffectClient.h"
    1.36 +#include <utils/String8.h>
    1.37 +
    1.38 +namespace android {
    1.39 +
    1.40 +// ----------------------------------------------------------------------------
    1.41 +
    1.42 +class IAudioFlinger : public IInterface
    1.43 +{
    1.44 +public:
    1.45 +    DECLARE_META_INTERFACE(AudioFlinger);
    1.46 +
    1.47 +    /* create an audio track and registers it with AudioFlinger.
    1.48 +     * return null if the track cannot be created.
    1.49 +     */
    1.50 +    virtual sp<IAudioTrack> createTrack(
    1.51 +                                pid_t pid,
    1.52 +                                int streamType,
    1.53 +                                uint32_t sampleRate,
    1.54 +                                int format,
    1.55 +                                int channelCount,
    1.56 +                                int frameCount,
    1.57 +                                uint32_t flags,
    1.58 +                                const sp<IMemory>& sharedBuffer,
    1.59 +                                int output,
    1.60 +                                int *sessionId,
    1.61 +                                status_t *status) = 0;
    1.62 +
    1.63 +    virtual sp<IAudioRecord> openRecord(
    1.64 +                                pid_t pid,
    1.65 +                                int input,
    1.66 +                                uint32_t sampleRate,
    1.67 +                                int format,
    1.68 +                                int channelCount,
    1.69 +                                int frameCount,
    1.70 +                                uint32_t flags,
    1.71 +                                int *sessionId,
    1.72 +                                status_t *status) = 0;
    1.73 +
    1.74 +    /* query the audio hardware state. This state never changes,
    1.75 +     * and therefore can be cached.
    1.76 +     */
    1.77 +    virtual     uint32_t    sampleRate(int output) const = 0;
    1.78 +    virtual     int         channelCount(int output) const = 0;
    1.79 +    virtual     int         format(int output) const = 0;
    1.80 +    virtual     size_t      frameCount(int output) const = 0;
    1.81 +    virtual     uint32_t    latency(int output) const = 0;
    1.82 +
    1.83 +    /* set/get the audio hardware state. This will probably be used by
    1.84 +     * the preference panel, mostly.
    1.85 +     */
    1.86 +    virtual     status_t    setMasterVolume(float value) = 0;
    1.87 +    virtual     status_t    setMasterMute(bool muted) = 0;
    1.88 +
    1.89 +    virtual     float       masterVolume() const = 0;
    1.90 +    virtual     bool        masterMute() const = 0;
    1.91 +
    1.92 +    /* set/get stream type state. This will probably be used by
    1.93 +     * the preference panel, mostly.
    1.94 +     */
    1.95 +    virtual     status_t    setStreamVolume(int stream, float value, int output) = 0;
    1.96 +    virtual     status_t    setStreamMute(int stream, bool muted) = 0;
    1.97 +
    1.98 +    virtual     float       streamVolume(int stream, int output) const = 0;
    1.99 +    virtual     bool        streamMute(int stream) const = 0;
   1.100 +
   1.101 +    // set audio mode
   1.102 +    virtual     status_t    setMode(int mode) = 0;
   1.103 +
   1.104 +    // mic mute/state
   1.105 +    virtual     status_t    setMicMute(bool state) = 0;
   1.106 +    virtual     bool        getMicMute() const = 0;
   1.107 +
   1.108 +    // is any track active on this stream?
   1.109 +    virtual     bool        isStreamActive(int stream) const = 0;
   1.110 +
   1.111 +    virtual     status_t    setParameters(int ioHandle, const String8& keyValuePairs) = 0;
   1.112 +    virtual     String8     getParameters(int ioHandle, const String8& keys) = 0;
   1.113 +
   1.114 +    // register a current process for audio output change notifications
   1.115 +    virtual void registerClient(const sp<IAudioFlingerClient>& client) = 0;
   1.116 +
   1.117 +    // retrieve the audio recording buffer size
   1.118 +    virtual size_t getInputBufferSize(uint32_t sampleRate, int format, int channelCount) = 0;
   1.119 +
   1.120 +    virtual int openOutput(uint32_t *pDevices,
   1.121 +                                    uint32_t *pSamplingRate,
   1.122 +                                    uint32_t *pFormat,
   1.123 +                                    uint32_t *pChannels,
   1.124 +                                    uint32_t *pLatencyMs,
   1.125 +                                    uint32_t flags) = 0;
   1.126 +    virtual int openDuplicateOutput(int output1, int output2) = 0;
   1.127 +    virtual status_t closeOutput(int output) = 0;
   1.128 +    virtual status_t suspendOutput(int output) = 0;
   1.129 +    virtual status_t restoreOutput(int output) = 0;
   1.130 +
   1.131 +    virtual int openInput(uint32_t *pDevices,
   1.132 +                                    uint32_t *pSamplingRate,
   1.133 +                                    uint32_t *pFormat,
   1.134 +                                    uint32_t *pChannels,
   1.135 +                                    uint32_t acoustics) = 0;
   1.136 +    virtual status_t closeInput(int input) = 0;
   1.137 +
   1.138 +    virtual status_t setStreamOutput(uint32_t stream, int output) = 0;
   1.139 +
   1.140 +    virtual status_t setVoiceVolume(float volume) = 0;
   1.141 +
   1.142 +    virtual status_t getRenderPosition(uint32_t *halFrames, uint32_t *dspFrames, int output) = 0;
   1.143 +
   1.144 +    virtual unsigned int  getInputFramesLost(int ioHandle) = 0;
   1.145 +
   1.146 +    virtual int newAudioSessionId() = 0;
   1.147 +
   1.148 +    virtual status_t loadEffectLibrary(const char *libPath, int *handle) = 0;
   1.149 +
   1.150 +    virtual status_t unloadEffectLibrary(int handle) = 0;
   1.151 +
   1.152 +    virtual status_t queryNumberEffects(uint32_t *numEffects) = 0;
   1.153 +
   1.154 +    virtual status_t queryEffect(uint32_t index, effect_descriptor_t *pDescriptor) = 0;
   1.155 +
   1.156 +    virtual status_t getEffectDescriptor(effect_uuid_t *pEffectUUID, effect_descriptor_t *pDescriptor) = 0;
   1.157 +
   1.158 +    virtual sp<IEffect> createEffect(pid_t pid,
   1.159 +                                    effect_descriptor_t *pDesc,
   1.160 +                                    const sp<IEffectClient>& client,
   1.161 +                                    int32_t priority,
   1.162 +                                    int output,
   1.163 +                                    int sessionId,
   1.164 +                                    status_t *status,
   1.165 +                                    int *id,
   1.166 +                                    int *enabled) = 0;
   1.167 +
   1.168 +    virtual status_t moveEffects(int session, int srcOutput, int dstOutput) = 0;
   1.169 +};
   1.170 +
   1.171 +
   1.172 +// ----------------------------------------------------------------------------
   1.173 +
   1.174 +class BnAudioFlinger : public BnInterface<IAudioFlinger>
   1.175 +{
   1.176 +public:
   1.177 +    virtual status_t    onTransact( uint32_t code,
   1.178 +                                    const Parcel& data,
   1.179 +                                    Parcel* reply,
   1.180 +                                    uint32_t flags = 0);
   1.181 +};
   1.182 +
   1.183 +// ----------------------------------------------------------------------------
   1.184 +
   1.185 +}; // namespace android
   1.186 +
   1.187 +#endif // ANDROID_IAUDIOFLINGER_H

mercurial