Home | History | Annotate | Download | only in SLES
      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