1 /* 2 * Copyright (C) 2010 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 OPENSL_ES_ANDROID_H_ 18 #define OPENSL_ES_ANDROID_H_ 19 20 #ifdef __cplusplus 21 extern "C" { 22 #endif 23 24 /*---------------------------------------------------------------------------*/ 25 /* Android common types */ 26 /*---------------------------------------------------------------------------*/ 27 28 typedef sl_int64_t SLAint64; /* 64 bit signed integer */ 29 30 31 /*---------------------------------------------------------------------------*/ 32 /* Android Effect interface */ 33 /*---------------------------------------------------------------------------*/ 34 35 extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDEFFECT; 36 37 /** Android Effect interface methods */ 38 39 struct SLAndroidEffectItf_; 40 typedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf; 41 42 struct SLAndroidEffectItf_ { 43 44 SLresult (*CreateEffect) (SLAndroidEffectItf self, 45 SLInterfaceID effectImplementationId); 46 47 SLresult (*ReleaseEffect) (SLAndroidEffectItf self, 48 SLInterfaceID effectImplementationId); 49 50 SLresult (*SetEnabled) (SLAndroidEffectItf self, 51 SLInterfaceID effectImplementationId, 52 SLboolean enabled); 53 54 SLresult (*IsEnabled) (SLAndroidEffectItf self, 55 SLInterfaceID effectImplementationId, 56 SLboolean *pEnabled); 57 58 SLresult (*SendCommand) (SLAndroidEffectItf self, 59 SLInterfaceID effectImplementationId, 60 SLuint32 command, 61 SLuint32 commandSize, 62 void *pCommandData, 63 SLuint32 *replySize, 64 void *pReplyData); 65 }; 66 67 68 /*---------------------------------------------------------------------------*/ 69 /* Android Effect Send interface */ 70 /*---------------------------------------------------------------------------*/ 71 72 extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDEFFECTSEND; 73 74 /** Android Effect Send interface methods */ 75 76 struct SLAndroidEffectSendItf_; 77 typedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf; 78 79 struct SLAndroidEffectSendItf_ { 80 SLresult (*EnableEffectSend) ( 81 SLAndroidEffectSendItf self, 82 SLInterfaceID effectImplementationId, 83 SLboolean enable, 84 SLmillibel initialLevel 85 ); 86 SLresult (*IsEnabled) ( 87 SLAndroidEffectSendItf self, 88 SLInterfaceID effectImplementationId, 89 SLboolean *pEnable 90 ); 91 SLresult (*SetDirectLevel) ( 92 SLAndroidEffectSendItf self, 93 SLmillibel directLevel 94 ); 95 SLresult (*GetDirectLevel) ( 96 SLAndroidEffectSendItf self, 97 SLmillibel *pDirectLevel 98 ); 99 SLresult (*SetSendLevel) ( 100 SLAndroidEffectSendItf self, 101 SLInterfaceID effectImplementationId, 102 SLmillibel sendLevel 103 ); 104 SLresult (*GetSendLevel)( 105 SLAndroidEffectSendItf self, 106 SLInterfaceID effectImplementationId, 107 SLmillibel *pSendLevel 108 ); 109 }; 110 111 112 /*---------------------------------------------------------------------------*/ 113 /* Android Effect Capabilities interface */ 114 /*---------------------------------------------------------------------------*/ 115 116 extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES; 117 118 /** Android Effect Capabilities interface methods */ 119 120 struct SLAndroidEffectCapabilitiesItf_; 121 typedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf; 122 123 struct SLAndroidEffectCapabilitiesItf_ { 124 125 SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self, 126 SLuint32 *pNumSupportedEffects); 127 128 129 SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self, 130 SLuint32 index, 131 SLInterfaceID *pEffectType, 132 SLInterfaceID *pEffectImplementation, 133 SLchar *pName, 134 SLuint16 *pNameSize); 135 }; 136 137 138 /*---------------------------------------------------------------------------*/ 139 /* Android Configuration interface */ 140 /*---------------------------------------------------------------------------*/ 141 extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDCONFIGURATION; 142 143 /** Android Configuration interface methods */ 144 145 struct SLAndroidConfigurationItf_; 146 typedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf; 147 148 struct SLAndroidConfigurationItf_ { 149 150 SLresult (*SetConfiguration) (SLAndroidConfigurationItf self, 151 const SLchar *configKey, 152 const void *pConfigValue, 153 SLuint32 valueSize); 154 155 SLresult (*GetConfiguration) (SLAndroidConfigurationItf self, 156 const SLchar *configKey, 157 SLuint32 *pValueSize, 158 void *pConfigValue 159 ); 160 }; 161 162 163 /*---------------------------------------------------------------------------*/ 164 /* Android Simple Buffer Queue Interface */ 165 /*---------------------------------------------------------------------------*/ 166 167 extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE; 168 169 struct SLAndroidSimpleBufferQueueItf_; 170 typedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf; 171 172 typedef void (/*SLAPIENTRY*/ *slAndroidSimpleBufferQueueCallback)( 173 SLAndroidSimpleBufferQueueItf caller, 174 void *pContext 175 ); 176 177 /** Android simple buffer queue state **/ 178 179 typedef struct SLAndroidSimpleBufferQueueState_ { 180 SLuint32 count; 181 SLuint32 index; 182 } SLAndroidSimpleBufferQueueState; 183 184 185 struct SLAndroidSimpleBufferQueueItf_ { 186 SLresult (*Enqueue) ( 187 SLAndroidSimpleBufferQueueItf self, 188 const void *pBuffer, 189 SLuint32 size 190 ); 191 SLresult (*Clear) ( 192 SLAndroidSimpleBufferQueueItf self 193 ); 194 SLresult (*GetState) ( 195 SLAndroidSimpleBufferQueueItf self, 196 SLAndroidSimpleBufferQueueState *pState 197 ); 198 SLresult (*RegisterCallback) ( 199 SLAndroidSimpleBufferQueueItf self, 200 slAndroidSimpleBufferQueueCallback callback, 201 void* pContext 202 ); 203 }; 204 205 206 /*---------------------------------------------------------------------------*/ 207 /* Android File Descriptor Data Locator */ 208 /*---------------------------------------------------------------------------*/ 209 210 /** Addendum to Data locator macros */ 211 #define SL_DATALOCATOR_ANDROIDFD ((SLuint32) 0x800007BC) 212 213 #define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll) 214 215 /** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */ 216 typedef struct SLDataLocator_AndroidFD_ { 217 SLuint32 locatorType; 218 SLint32 fd; 219 SLAint64 offset; 220 SLAint64 length; 221 } SLDataLocator_AndroidFD; 222 223 224 /*---------------------------------------------------------------------------*/ 225 /* Android Android Simple Buffer Queue Data Locator */ 226 /*---------------------------------------------------------------------------*/ 227 228 /** Addendum to Data locator macros */ 229 #define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD) 230 231 /** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/ 232 typedef struct SLDataLocator_AndroidSimpleBufferQueue { 233 SLuint32 locatorType; 234 SLuint32 numBuffers; 235 } SLDataLocator_AndroidSimpleBufferQueue; 236 237 238 #ifdef __cplusplus 239 } 240 #endif /* __cplusplus */ 241 242 #endif /* OPENSL_ES_ANDROID_H_ */ 243