• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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