xref: /aosp_15_r20/frameworks/wilhelm/include/SLES/OpenSLES_Android.h (revision bebae9c0e76121f8312ccb50385c080b3a0b023c)
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