1*bebae9c0SAndroid Build Coastguard Worker /* 2*bebae9c0SAndroid Build Coastguard Worker * Copyright (C) 2010 The Android Open Source Project 3*bebae9c0SAndroid Build Coastguard Worker * 4*bebae9c0SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*bebae9c0SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*bebae9c0SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*bebae9c0SAndroid Build Coastguard Worker * 8*bebae9c0SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*bebae9c0SAndroid Build Coastguard Worker * 10*bebae9c0SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*bebae9c0SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*bebae9c0SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*bebae9c0SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*bebae9c0SAndroid Build Coastguard Worker * limitations under the License. 15*bebae9c0SAndroid Build Coastguard Worker */ 16*bebae9c0SAndroid Build Coastguard Worker 17*bebae9c0SAndroid Build Coastguard Worker #ifndef OPENSL_ES_ANDROID_H_ 18*bebae9c0SAndroid Build Coastguard Worker #define OPENSL_ES_ANDROID_H_ 19*bebae9c0SAndroid Build Coastguard Worker 20*bebae9c0SAndroid Build Coastguard Worker #include "OpenSLES.h" 21*bebae9c0SAndroid Build Coastguard Worker #include "OpenSLES_AndroidConfiguration.h" 22*bebae9c0SAndroid Build Coastguard Worker #include "OpenSLES_AndroidMetadata.h" 23*bebae9c0SAndroid Build Coastguard Worker #include <jni.h> 24*bebae9c0SAndroid Build Coastguard Worker 25*bebae9c0SAndroid Build Coastguard Worker #ifdef __cplusplus 26*bebae9c0SAndroid Build Coastguard Worker extern "C" { 27*bebae9c0SAndroid Build Coastguard Worker #endif 28*bebae9c0SAndroid Build Coastguard Worker 29*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 30*bebae9c0SAndroid Build Coastguard Worker /* Android common types */ 31*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 32*bebae9c0SAndroid Build Coastguard Worker 33*bebae9c0SAndroid Build Coastguard Worker typedef sl_int64_t SLAint64; /* 64 bit signed integer */ 34*bebae9c0SAndroid Build Coastguard Worker 35*bebae9c0SAndroid Build Coastguard Worker typedef sl_uint64_t SLAuint64; /* 64 bit unsigned integer */ 36*bebae9c0SAndroid Build Coastguard Worker 37*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 38*bebae9c0SAndroid Build Coastguard Worker /* Android PCM Data Format */ 39*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 40*bebae9c0SAndroid Build Coastguard Worker 41*bebae9c0SAndroid Build Coastguard Worker /* The following pcm representations and data formats map to those in OpenSLES 1.1 */ 42*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT ((SLuint32) 0x00000001) 43*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_PCM_REPRESENTATION_UNSIGNED_INT ((SLuint32) 0x00000002) 44*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_PCM_REPRESENTATION_FLOAT ((SLuint32) 0x00000003) 45*bebae9c0SAndroid Build Coastguard Worker 46*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_DATAFORMAT_PCM_EX ((SLuint32) 0x00000004) 47*bebae9c0SAndroid Build Coastguard Worker 48*bebae9c0SAndroid Build Coastguard Worker typedef struct SLAndroidDataFormat_PCM_EX_ { 49*bebae9c0SAndroid Build Coastguard Worker SLuint32 formatType; 50*bebae9c0SAndroid Build Coastguard Worker SLuint32 numChannels; 51*bebae9c0SAndroid Build Coastguard Worker SLuint32 sampleRate; 52*bebae9c0SAndroid Build Coastguard Worker SLuint32 bitsPerSample; 53*bebae9c0SAndroid Build Coastguard Worker SLuint32 containerSize; 54*bebae9c0SAndroid Build Coastguard Worker SLuint32 channelMask; 55*bebae9c0SAndroid Build Coastguard Worker SLuint32 endianness; 56*bebae9c0SAndroid Build Coastguard Worker SLuint32 representation; 57*bebae9c0SAndroid Build Coastguard Worker } SLAndroidDataFormat_PCM_EX; 58*bebae9c0SAndroid Build Coastguard Worker 59*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_SPEAKER_NON_POSITIONAL ((SLuint32) 0x80000000) 60*bebae9c0SAndroid Build Coastguard Worker 61*bebae9c0SAndroid Build Coastguard Worker // Make an indexed channel mask from a bitfield. 62*bebae9c0SAndroid Build Coastguard Worker // 63*bebae9c0SAndroid Build Coastguard Worker // Each bit in the bitfield corresponds to a channel index, 64*bebae9c0SAndroid Build Coastguard Worker // from least-significant bit (channel 0) up to the bit 65*bebae9c0SAndroid Build Coastguard Worker // corresponding to the maximum channel count (currently FCC_8). 66*bebae9c0SAndroid Build Coastguard Worker // A '1' in the bitfield indicates that the channel should be 67*bebae9c0SAndroid Build Coastguard Worker // included in the stream, while a '0' indicates that it 68*bebae9c0SAndroid Build Coastguard Worker // should be excluded. For instance, a bitfield of 0x0A (binary 00001010) 69*bebae9c0SAndroid Build Coastguard Worker // would define a stream that contains channels 1 and 3. (The corresponding 70*bebae9c0SAndroid Build Coastguard Worker // indexed mask, after setting the SL_ANDROID_NON_POSITIONAL bit, 71*bebae9c0SAndroid Build Coastguard Worker // would be 0x8000000A.) 72*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_MAKE_INDEXED_CHANNEL_MASK(bitfield) \ 73*bebae9c0SAndroid Build Coastguard Worker ((bitfield) | SL_ANDROID_SPEAKER_NON_POSITIONAL) 74*bebae9c0SAndroid Build Coastguard Worker 75*bebae9c0SAndroid Build Coastguard Worker // Specifying SL_ANDROID_SPEAKER_USE_DEFAULT as a channel mask in 76*bebae9c0SAndroid Build Coastguard Worker // SLAndroidDataFormat_PCM_EX causes OpenSL ES to assign a default 77*bebae9c0SAndroid Build Coastguard Worker // channel mask based on the number of channels requested. This 78*bebae9c0SAndroid Build Coastguard Worker // value cannot be combined with SL_ANDROID_SPEAKER_NON_POSITIONAL. 79*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_SPEAKER_USE_DEFAULT ((SLuint32)0) 80*bebae9c0SAndroid Build Coastguard Worker 81*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 82*bebae9c0SAndroid Build Coastguard Worker /* Android Effect interface */ 83*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 84*bebae9c0SAndroid Build Coastguard Worker 85*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT; 86*bebae9c0SAndroid Build Coastguard Worker 87*bebae9c0SAndroid Build Coastguard Worker /** Android Effect interface methods */ 88*bebae9c0SAndroid Build Coastguard Worker 89*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidEffectItf_; 90*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf; 91*bebae9c0SAndroid Build Coastguard Worker 92*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidEffectItf_ { 93*bebae9c0SAndroid Build Coastguard Worker 94*bebae9c0SAndroid Build Coastguard Worker SLresult (*CreateEffect) (SLAndroidEffectItf self, 95*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId); 96*bebae9c0SAndroid Build Coastguard Worker 97*bebae9c0SAndroid Build Coastguard Worker SLresult (*ReleaseEffect) (SLAndroidEffectItf self, 98*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId); 99*bebae9c0SAndroid Build Coastguard Worker 100*bebae9c0SAndroid Build Coastguard Worker SLresult (*SetEnabled) (SLAndroidEffectItf self, 101*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId, 102*bebae9c0SAndroid Build Coastguard Worker SLboolean enabled); 103*bebae9c0SAndroid Build Coastguard Worker 104*bebae9c0SAndroid Build Coastguard Worker SLresult (*IsEnabled) (SLAndroidEffectItf self, 105*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId, 106*bebae9c0SAndroid Build Coastguard Worker SLboolean *pEnabled); 107*bebae9c0SAndroid Build Coastguard Worker 108*bebae9c0SAndroid Build Coastguard Worker SLresult (*SendCommand) (SLAndroidEffectItf self, 109*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId, 110*bebae9c0SAndroid Build Coastguard Worker SLuint32 command, 111*bebae9c0SAndroid Build Coastguard Worker SLuint32 commandSize, 112*bebae9c0SAndroid Build Coastguard Worker void *pCommandData, 113*bebae9c0SAndroid Build Coastguard Worker SLuint32 *replySize, 114*bebae9c0SAndroid Build Coastguard Worker void *pReplyData); 115*bebae9c0SAndroid Build Coastguard Worker }; 116*bebae9c0SAndroid Build Coastguard Worker 117*bebae9c0SAndroid Build Coastguard Worker 118*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 119*bebae9c0SAndroid Build Coastguard Worker /* Android Effect Send interface */ 120*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 121*bebae9c0SAndroid Build Coastguard Worker 122*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND; 123*bebae9c0SAndroid Build Coastguard Worker 124*bebae9c0SAndroid Build Coastguard Worker /** Android Effect Send interface methods */ 125*bebae9c0SAndroid Build Coastguard Worker 126*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidEffectSendItf_; 127*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf; 128*bebae9c0SAndroid Build Coastguard Worker 129*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidEffectSendItf_ { 130*bebae9c0SAndroid Build Coastguard Worker SLresult (*EnableEffectSend) ( 131*bebae9c0SAndroid Build Coastguard Worker SLAndroidEffectSendItf self, 132*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId, 133*bebae9c0SAndroid Build Coastguard Worker SLboolean enable, 134*bebae9c0SAndroid Build Coastguard Worker SLmillibel initialLevel 135*bebae9c0SAndroid Build Coastguard Worker ); 136*bebae9c0SAndroid Build Coastguard Worker SLresult (*IsEnabled) ( 137*bebae9c0SAndroid Build Coastguard Worker SLAndroidEffectSendItf self, 138*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId, 139*bebae9c0SAndroid Build Coastguard Worker SLboolean *pEnable 140*bebae9c0SAndroid Build Coastguard Worker ); 141*bebae9c0SAndroid Build Coastguard Worker SLresult (*SetDirectLevel) ( 142*bebae9c0SAndroid Build Coastguard Worker SLAndroidEffectSendItf self, 143*bebae9c0SAndroid Build Coastguard Worker SLmillibel directLevel 144*bebae9c0SAndroid Build Coastguard Worker ); 145*bebae9c0SAndroid Build Coastguard Worker SLresult (*GetDirectLevel) ( 146*bebae9c0SAndroid Build Coastguard Worker SLAndroidEffectSendItf self, 147*bebae9c0SAndroid Build Coastguard Worker SLmillibel *pDirectLevel 148*bebae9c0SAndroid Build Coastguard Worker ); 149*bebae9c0SAndroid Build Coastguard Worker SLresult (*SetSendLevel) ( 150*bebae9c0SAndroid Build Coastguard Worker SLAndroidEffectSendItf self, 151*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId, 152*bebae9c0SAndroid Build Coastguard Worker SLmillibel sendLevel 153*bebae9c0SAndroid Build Coastguard Worker ); 154*bebae9c0SAndroid Build Coastguard Worker SLresult (*GetSendLevel)( 155*bebae9c0SAndroid Build Coastguard Worker SLAndroidEffectSendItf self, 156*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID effectImplementationId, 157*bebae9c0SAndroid Build Coastguard Worker SLmillibel *pSendLevel 158*bebae9c0SAndroid Build Coastguard Worker ); 159*bebae9c0SAndroid Build Coastguard Worker }; 160*bebae9c0SAndroid Build Coastguard Worker 161*bebae9c0SAndroid Build Coastguard Worker 162*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 163*bebae9c0SAndroid Build Coastguard Worker /* Android Effect Capabilities interface */ 164*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 165*bebae9c0SAndroid Build Coastguard Worker 166*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES; 167*bebae9c0SAndroid Build Coastguard Worker 168*bebae9c0SAndroid Build Coastguard Worker /** Android Effect Capabilities interface methods */ 169*bebae9c0SAndroid Build Coastguard Worker 170*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidEffectCapabilitiesItf_; 171*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf; 172*bebae9c0SAndroid Build Coastguard Worker 173*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidEffectCapabilitiesItf_ { 174*bebae9c0SAndroid Build Coastguard Worker 175*bebae9c0SAndroid Build Coastguard Worker SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self, 176*bebae9c0SAndroid Build Coastguard Worker SLuint32 *pNumSupportedEffects); 177*bebae9c0SAndroid Build Coastguard Worker 178*bebae9c0SAndroid Build Coastguard Worker 179*bebae9c0SAndroid Build Coastguard Worker SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self, 180*bebae9c0SAndroid Build Coastguard Worker SLuint32 index, 181*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID *pEffectType, 182*bebae9c0SAndroid Build Coastguard Worker SLInterfaceID *pEffectImplementation, 183*bebae9c0SAndroid Build Coastguard Worker SLchar *pName, 184*bebae9c0SAndroid Build Coastguard Worker SLuint16 *pNameSize); 185*bebae9c0SAndroid Build Coastguard Worker }; 186*bebae9c0SAndroid Build Coastguard Worker 187*bebae9c0SAndroid Build Coastguard Worker 188*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 189*bebae9c0SAndroid Build Coastguard Worker /* Android Configuration interface */ 190*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 191*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION; 192*bebae9c0SAndroid Build Coastguard Worker 193*bebae9c0SAndroid Build Coastguard Worker /** Android Configuration interface methods */ 194*bebae9c0SAndroid Build Coastguard Worker 195*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidConfigurationItf_; 196*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf; 197*bebae9c0SAndroid Build Coastguard Worker 198*bebae9c0SAndroid Build Coastguard Worker /* 199*bebae9c0SAndroid Build Coastguard Worker * Java Proxy Type IDs 200*bebae9c0SAndroid Build Coastguard Worker */ 201*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_JAVA_PROXY_ROUTING 0x0001 202*bebae9c0SAndroid Build Coastguard Worker 203*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidConfigurationItf_ { 204*bebae9c0SAndroid Build Coastguard Worker 205*bebae9c0SAndroid Build Coastguard Worker SLresult (*SetConfiguration) (SLAndroidConfigurationItf self, 206*bebae9c0SAndroid Build Coastguard Worker const SLchar *configKey, 207*bebae9c0SAndroid Build Coastguard Worker const void *pConfigValue, 208*bebae9c0SAndroid Build Coastguard Worker SLuint32 valueSize); 209*bebae9c0SAndroid Build Coastguard Worker 210*bebae9c0SAndroid Build Coastguard Worker SLresult (*GetConfiguration) (SLAndroidConfigurationItf self, 211*bebae9c0SAndroid Build Coastguard Worker const SLchar *configKey, 212*bebae9c0SAndroid Build Coastguard Worker SLuint32 *pValueSize, 213*bebae9c0SAndroid Build Coastguard Worker void *pConfigValue 214*bebae9c0SAndroid Build Coastguard Worker ); 215*bebae9c0SAndroid Build Coastguard Worker 216*bebae9c0SAndroid Build Coastguard Worker SLresult (*AcquireJavaProxy) (SLAndroidConfigurationItf self, 217*bebae9c0SAndroid Build Coastguard Worker SLuint32 proxyType, 218*bebae9c0SAndroid Build Coastguard Worker jobject *pProxyObj); 219*bebae9c0SAndroid Build Coastguard Worker 220*bebae9c0SAndroid Build Coastguard Worker SLresult (*ReleaseJavaProxy) (SLAndroidConfigurationItf self, 221*bebae9c0SAndroid Build Coastguard Worker SLuint32 proxyType); 222*bebae9c0SAndroid Build Coastguard Worker }; 223*bebae9c0SAndroid Build Coastguard Worker 224*bebae9c0SAndroid Build Coastguard Worker 225*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 226*bebae9c0SAndroid Build Coastguard Worker /* Android Simple Buffer Queue Interface */ 227*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 228*bebae9c0SAndroid Build Coastguard Worker 229*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE; 230*bebae9c0SAndroid Build Coastguard Worker 231*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidSimpleBufferQueueItf_; 232*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf; 233*bebae9c0SAndroid Build Coastguard Worker 234*bebae9c0SAndroid Build Coastguard Worker typedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)( 235*bebae9c0SAndroid Build Coastguard Worker SLAndroidSimpleBufferQueueItf caller, 236*bebae9c0SAndroid Build Coastguard Worker void *pContext 237*bebae9c0SAndroid Build Coastguard Worker ); 238*bebae9c0SAndroid Build Coastguard Worker 239*bebae9c0SAndroid Build Coastguard Worker /** Android simple buffer queue state **/ 240*bebae9c0SAndroid Build Coastguard Worker 241*bebae9c0SAndroid Build Coastguard Worker typedef struct SLAndroidSimpleBufferQueueState_ { 242*bebae9c0SAndroid Build Coastguard Worker SLuint32 count; 243*bebae9c0SAndroid Build Coastguard Worker SLuint32 index; 244*bebae9c0SAndroid Build Coastguard Worker } SLAndroidSimpleBufferQueueState; 245*bebae9c0SAndroid Build Coastguard Worker 246*bebae9c0SAndroid Build Coastguard Worker 247*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidSimpleBufferQueueItf_ { 248*bebae9c0SAndroid Build Coastguard Worker SLresult (*Enqueue) ( 249*bebae9c0SAndroid Build Coastguard Worker SLAndroidSimpleBufferQueueItf self, 250*bebae9c0SAndroid Build Coastguard Worker const void *pBuffer, 251*bebae9c0SAndroid Build Coastguard Worker SLuint32 size 252*bebae9c0SAndroid Build Coastguard Worker ); 253*bebae9c0SAndroid Build Coastguard Worker SLresult (*Clear) ( 254*bebae9c0SAndroid Build Coastguard Worker SLAndroidSimpleBufferQueueItf self 255*bebae9c0SAndroid Build Coastguard Worker ); 256*bebae9c0SAndroid Build Coastguard Worker SLresult (*GetState) ( 257*bebae9c0SAndroid Build Coastguard Worker SLAndroidSimpleBufferQueueItf self, 258*bebae9c0SAndroid Build Coastguard Worker SLAndroidSimpleBufferQueueState *pState 259*bebae9c0SAndroid Build Coastguard Worker ); 260*bebae9c0SAndroid Build Coastguard Worker SLresult (*RegisterCallback) ( 261*bebae9c0SAndroid Build Coastguard Worker SLAndroidSimpleBufferQueueItf self, 262*bebae9c0SAndroid Build Coastguard Worker slAndroidSimpleBufferQueueCallback callback, 263*bebae9c0SAndroid Build Coastguard Worker void* pContext 264*bebae9c0SAndroid Build Coastguard Worker ); 265*bebae9c0SAndroid Build Coastguard Worker }; 266*bebae9c0SAndroid Build Coastguard Worker 267*bebae9c0SAndroid Build Coastguard Worker 268*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 269*bebae9c0SAndroid Build Coastguard Worker /* Android Buffer Queue Interface */ 270*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 271*bebae9c0SAndroid Build Coastguard Worker 272*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUESOURCE; 273*bebae9c0SAndroid Build Coastguard Worker 274*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidBufferQueueItf_; 275*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf; 276*bebae9c0SAndroid Build Coastguard Worker 277*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_ITEMKEY_NONE ((SLuint32) 0x00000000) 278*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_ITEMKEY_EOS ((SLuint32) 0x00000001) 279*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_ITEMKEY_DISCONTINUITY ((SLuint32) 0x00000002) 280*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((SLuint32) 0x00000003) 281*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_ITEMKEY_FORMAT_CHANGE ((SLuint32) 0x00000004) 282*bebae9c0SAndroid Build Coastguard Worker 283*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROIDBUFFERQUEUEEVENT_NONE ((SLuint32) 0x00000000) 284*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROIDBUFFERQUEUEEVENT_PROCESSED ((SLuint32) 0x00000001) 285*bebae9c0SAndroid Build Coastguard Worker #if 0 // reserved for future use 286*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROIDBUFFERQUEUEEVENT_UNREALIZED ((SLuint32) 0x00000002) 287*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROIDBUFFERQUEUEEVENT_CLEARED ((SLuint32) 0x00000004) 288*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROIDBUFFERQUEUEEVENT_STOPPED ((SLuint32) 0x00000008) 289*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROIDBUFFERQUEUEEVENT_ERROR ((SLuint32) 0x00000010) 290*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((SLuint32) 0x00000020) 291*bebae9c0SAndroid Build Coastguard Worker #endif 292*bebae9c0SAndroid Build Coastguard Worker 293*bebae9c0SAndroid Build Coastguard Worker typedef struct SLAndroidBufferItem_ { 294*bebae9c0SAndroid Build Coastguard Worker SLuint32 itemKey; // identifies the item 295*bebae9c0SAndroid Build Coastguard Worker SLuint32 itemSize; 296*bebae9c0SAndroid Build Coastguard Worker SLuint8 itemData[0]; 297*bebae9c0SAndroid Build Coastguard Worker } SLAndroidBufferItem; 298*bebae9c0SAndroid Build Coastguard Worker 299*bebae9c0SAndroid Build Coastguard Worker typedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)( 300*bebae9c0SAndroid Build Coastguard Worker SLAndroidBufferQueueItf caller,/* input */ 301*bebae9c0SAndroid Build Coastguard Worker void *pCallbackContext, /* input */ 302*bebae9c0SAndroid Build Coastguard Worker void *pBufferContext, /* input */ 303*bebae9c0SAndroid Build Coastguard Worker void *pBufferData, /* input */ 304*bebae9c0SAndroid Build Coastguard Worker SLuint32 dataSize, /* input */ 305*bebae9c0SAndroid Build Coastguard Worker SLuint32 dataUsed, /* input */ 306*bebae9c0SAndroid Build Coastguard Worker const SLAndroidBufferItem *pItems,/* input */ 307*bebae9c0SAndroid Build Coastguard Worker SLuint32 itemsLength /* input */ 308*bebae9c0SAndroid Build Coastguard Worker ); 309*bebae9c0SAndroid Build Coastguard Worker 310*bebae9c0SAndroid Build Coastguard Worker typedef struct SLAndroidBufferQueueState_ { 311*bebae9c0SAndroid Build Coastguard Worker SLuint32 count; 312*bebae9c0SAndroid Build Coastguard Worker SLuint32 index; 313*bebae9c0SAndroid Build Coastguard Worker } SLAndroidBufferQueueState; 314*bebae9c0SAndroid Build Coastguard Worker 315*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidBufferQueueItf_ { 316*bebae9c0SAndroid Build Coastguard Worker SLresult (*RegisterCallback) ( 317*bebae9c0SAndroid Build Coastguard Worker SLAndroidBufferQueueItf self, 318*bebae9c0SAndroid Build Coastguard Worker slAndroidBufferQueueCallback callback, 319*bebae9c0SAndroid Build Coastguard Worker void* pCallbackContext 320*bebae9c0SAndroid Build Coastguard Worker ); 321*bebae9c0SAndroid Build Coastguard Worker 322*bebae9c0SAndroid Build Coastguard Worker SLresult (*Clear) ( 323*bebae9c0SAndroid Build Coastguard Worker SLAndroidBufferQueueItf self 324*bebae9c0SAndroid Build Coastguard Worker ); 325*bebae9c0SAndroid Build Coastguard Worker 326*bebae9c0SAndroid Build Coastguard Worker SLresult (*Enqueue) ( 327*bebae9c0SAndroid Build Coastguard Worker SLAndroidBufferQueueItf self, 328*bebae9c0SAndroid Build Coastguard Worker void *pBufferContext, 329*bebae9c0SAndroid Build Coastguard Worker void *pData, 330*bebae9c0SAndroid Build Coastguard Worker SLuint32 dataLength, 331*bebae9c0SAndroid Build Coastguard Worker const SLAndroidBufferItem *pItems, 332*bebae9c0SAndroid Build Coastguard Worker SLuint32 itemsLength 333*bebae9c0SAndroid Build Coastguard Worker ); 334*bebae9c0SAndroid Build Coastguard Worker 335*bebae9c0SAndroid Build Coastguard Worker SLresult (*GetState) ( 336*bebae9c0SAndroid Build Coastguard Worker SLAndroidBufferQueueItf self, 337*bebae9c0SAndroid Build Coastguard Worker SLAndroidBufferQueueState *pState 338*bebae9c0SAndroid Build Coastguard Worker ); 339*bebae9c0SAndroid Build Coastguard Worker 340*bebae9c0SAndroid Build Coastguard Worker SLresult (*SetCallbackEventsMask) ( 341*bebae9c0SAndroid Build Coastguard Worker SLAndroidBufferQueueItf self, 342*bebae9c0SAndroid Build Coastguard Worker SLuint32 eventFlags 343*bebae9c0SAndroid Build Coastguard Worker ); 344*bebae9c0SAndroid Build Coastguard Worker 345*bebae9c0SAndroid Build Coastguard Worker SLresult (*GetCallbackEventsMask) ( 346*bebae9c0SAndroid Build Coastguard Worker SLAndroidBufferQueueItf self, 347*bebae9c0SAndroid Build Coastguard Worker SLuint32 *pEventFlags 348*bebae9c0SAndroid Build Coastguard Worker ); 349*bebae9c0SAndroid Build Coastguard Worker }; 350*bebae9c0SAndroid Build Coastguard Worker 351*bebae9c0SAndroid Build Coastguard Worker 352*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 353*bebae9c0SAndroid Build Coastguard Worker /* Android File Descriptor Data Locator */ 354*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 355*bebae9c0SAndroid Build Coastguard Worker 356*bebae9c0SAndroid Build Coastguard Worker /** Addendum to Data locator macros */ 357*bebae9c0SAndroid Build Coastguard Worker #define SL_DATALOCATOR_ANDROIDFD ((SLuint32) 0x800007BC) 358*bebae9c0SAndroid Build Coastguard Worker 359*bebae9c0SAndroid Build Coastguard Worker #define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll) 360*bebae9c0SAndroid Build Coastguard Worker 361*bebae9c0SAndroid Build Coastguard Worker /** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */ 362*bebae9c0SAndroid Build Coastguard Worker typedef struct SLDataLocator_AndroidFD_ { 363*bebae9c0SAndroid Build Coastguard Worker SLuint32 locatorType; 364*bebae9c0SAndroid Build Coastguard Worker SLint32 fd; 365*bebae9c0SAndroid Build Coastguard Worker SLAint64 offset; 366*bebae9c0SAndroid Build Coastguard Worker SLAint64 length; 367*bebae9c0SAndroid Build Coastguard Worker } SLDataLocator_AndroidFD; 368*bebae9c0SAndroid Build Coastguard Worker 369*bebae9c0SAndroid Build Coastguard Worker 370*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 371*bebae9c0SAndroid Build Coastguard Worker /* Android Android Simple Buffer Queue Data Locator */ 372*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 373*bebae9c0SAndroid Build Coastguard Worker 374*bebae9c0SAndroid Build Coastguard Worker /** Addendum to Data locator macros */ 375*bebae9c0SAndroid Build Coastguard Worker #define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD) 376*bebae9c0SAndroid Build Coastguard Worker 377*bebae9c0SAndroid Build Coastguard Worker /** BufferQueue-based data locator definition where locatorType must 378*bebae9c0SAndroid Build Coastguard Worker * be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE 379*bebae9c0SAndroid Build Coastguard Worker */ 380*bebae9c0SAndroid Build Coastguard Worker typedef struct SLDataLocator_AndroidSimpleBufferQueue { 381*bebae9c0SAndroid Build Coastguard Worker SLuint32 locatorType; 382*bebae9c0SAndroid Build Coastguard Worker SLuint32 numBuffers; 383*bebae9c0SAndroid Build Coastguard Worker } SLDataLocator_AndroidSimpleBufferQueue; 384*bebae9c0SAndroid Build Coastguard Worker 385*bebae9c0SAndroid Build Coastguard Worker 386*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 387*bebae9c0SAndroid Build Coastguard Worker /* Android Buffer Queue Data Locator */ 388*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 389*bebae9c0SAndroid Build Coastguard Worker 390*bebae9c0SAndroid Build Coastguard Worker /** Addendum to Data locator macros */ 391*bebae9c0SAndroid Build Coastguard Worker #define SL_DATALOCATOR_ANDROIDBUFFERQUEUE ((SLuint32) 0x800007BE) 392*bebae9c0SAndroid Build Coastguard Worker 393*bebae9c0SAndroid Build Coastguard Worker /** Android Buffer Queue-based data locator definition, 394*bebae9c0SAndroid Build Coastguard Worker * locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */ 395*bebae9c0SAndroid Build Coastguard Worker typedef struct SLDataLocator_AndroidBufferQueue_ { 396*bebae9c0SAndroid Build Coastguard Worker SLuint32 locatorType; 397*bebae9c0SAndroid Build Coastguard Worker SLuint32 numBuffers; 398*bebae9c0SAndroid Build Coastguard Worker } SLDataLocator_AndroidBufferQueue; 399*bebae9c0SAndroid Build Coastguard Worker 400*bebae9c0SAndroid Build Coastguard Worker /** 401*bebae9c0SAndroid Build Coastguard Worker * MIME types required for data in Android Buffer Queues 402*bebae9c0SAndroid Build Coastguard Worker */ 403*bebae9c0SAndroid Build Coastguard Worker #define SL_ANDROID_MIME_AACADTS ((SLchar *) "audio/vnd.android.aac-adts") 404*bebae9c0SAndroid Build Coastguard Worker 405*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 406*bebae9c0SAndroid Build Coastguard Worker /* Acoustic Echo Cancellation (AEC) Interface */ 407*bebae9c0SAndroid Build Coastguard Worker /* --------------------------------------------------------------------------*/ 408*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDACOUSTICECHOCANCELLATION; 409*bebae9c0SAndroid Build Coastguard Worker 410*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidAcousticEchoCancellationItf_; 411*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidAcousticEchoCancellationItf_ * const * 412*bebae9c0SAndroid Build Coastguard Worker SLAndroidAcousticEchoCancellationItf; 413*bebae9c0SAndroid Build Coastguard Worker 414*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidAcousticEchoCancellationItf_ { 415*bebae9c0SAndroid Build Coastguard Worker SLresult (*SetEnabled)( 416*bebae9c0SAndroid Build Coastguard Worker SLAndroidAcousticEchoCancellationItf self, 417*bebae9c0SAndroid Build Coastguard Worker SLboolean enabled 418*bebae9c0SAndroid Build Coastguard Worker ); 419*bebae9c0SAndroid Build Coastguard Worker SLresult (*IsEnabled)( 420*bebae9c0SAndroid Build Coastguard Worker SLAndroidAcousticEchoCancellationItf self, 421*bebae9c0SAndroid Build Coastguard Worker SLboolean *pEnabled 422*bebae9c0SAndroid Build Coastguard Worker ); 423*bebae9c0SAndroid Build Coastguard Worker }; 424*bebae9c0SAndroid Build Coastguard Worker 425*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 426*bebae9c0SAndroid Build Coastguard Worker /* Automatic Gain Control (ACC) Interface */ 427*bebae9c0SAndroid Build Coastguard Worker /* --------------------------------------------------------------------------*/ 428*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDAUTOMATICGAINCONTROL; 429*bebae9c0SAndroid Build Coastguard Worker 430*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidAutomaticGainControlItf_; 431*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidAutomaticGainControlItf_ * const * SLAndroidAutomaticGainControlItf; 432*bebae9c0SAndroid Build Coastguard Worker 433*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidAutomaticGainControlItf_ { 434*bebae9c0SAndroid Build Coastguard Worker SLresult (*SetEnabled)( 435*bebae9c0SAndroid Build Coastguard Worker SLAndroidAutomaticGainControlItf self, 436*bebae9c0SAndroid Build Coastguard Worker SLboolean enabled 437*bebae9c0SAndroid Build Coastguard Worker ); 438*bebae9c0SAndroid Build Coastguard Worker SLresult (*IsEnabled)( 439*bebae9c0SAndroid Build Coastguard Worker SLAndroidAutomaticGainControlItf self, 440*bebae9c0SAndroid Build Coastguard Worker SLboolean *pEnabled 441*bebae9c0SAndroid Build Coastguard Worker ); 442*bebae9c0SAndroid Build Coastguard Worker }; 443*bebae9c0SAndroid Build Coastguard Worker 444*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 445*bebae9c0SAndroid Build Coastguard Worker /* Noise Suppression Interface */ 446*bebae9c0SAndroid Build Coastguard Worker /* --------------------------------------------------------------------------*/ 447*bebae9c0SAndroid Build Coastguard Worker extern SL_API const SLInterfaceID SL_IID_ANDROIDNOISESUPPRESSION; 448*bebae9c0SAndroid Build Coastguard Worker 449*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidNoiseSuppressionItf_; 450*bebae9c0SAndroid Build Coastguard Worker typedef const struct SLAndroidNoiseSuppressionItf_ * const * SLAndroidNoiseSuppressionItf; 451*bebae9c0SAndroid Build Coastguard Worker 452*bebae9c0SAndroid Build Coastguard Worker struct SLAndroidNoiseSuppressionItf_ { 453*bebae9c0SAndroid Build Coastguard Worker SLresult (*SetEnabled)( 454*bebae9c0SAndroid Build Coastguard Worker SLAndroidNoiseSuppressionItf self, 455*bebae9c0SAndroid Build Coastguard Worker SLboolean enabled 456*bebae9c0SAndroid Build Coastguard Worker ); 457*bebae9c0SAndroid Build Coastguard Worker SLresult (*IsEnabled)( 458*bebae9c0SAndroid Build Coastguard Worker SLAndroidNoiseSuppressionItf self, 459*bebae9c0SAndroid Build Coastguard Worker SLboolean *pEnabled 460*bebae9c0SAndroid Build Coastguard Worker ); 461*bebae9c0SAndroid Build Coastguard Worker }; 462*bebae9c0SAndroid Build Coastguard Worker 463*bebae9c0SAndroid Build Coastguard Worker #ifdef __cplusplus 464*bebae9c0SAndroid Build Coastguard Worker } 465*bebae9c0SAndroid Build Coastguard Worker #endif /* __cplusplus */ 466*bebae9c0SAndroid Build Coastguard Worker 467*bebae9c0SAndroid Build Coastguard Worker #endif /* OPENSL_ES_ANDROID_H_ */ 468