OpenSLES_Android.h revision e7bfcdc183454ec959ff51342f0973cabba219b2
105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi/*
205ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * Copyright (C) 2010 The Android Open Source Project
305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi *
405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License");
505ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * you may not use this file except in compliance with the License.
605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * You may obtain a copy of the License at
705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi *
805ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi *      http://www.apache.org/licenses/LICENSE-2.0
905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi *
1005ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * Unless required by applicable law or agreed to in writing, software
1105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS,
1205ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * See the License for the specific language governing permissions and
1405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * limitations under the License.
1505ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi */
1605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
1705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#ifndef OPENSL_ES_ANDROID_H_
1805ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#define OPENSL_ES_ANDROID_H_
1905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
2005ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#ifdef __cplusplus
2105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Triviextern "C" {
22a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#endif
2305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
2405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi/*---------------------------------------------------------------------------*/
25989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android common types                                                      */
26989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
27989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
28989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef sl_int64_t             SLAint64;           /* 64 bit signed integer */
29989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
30989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
31989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
3267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/* Android Effect interface                                                  */
3367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/*---------------------------------------------------------------------------*/
3467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
35ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT;
3667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
3767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/** Android Effect interface methods */
3867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
395b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_;
405b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
4167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
425b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_ {
4367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
445b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*CreateEffect) (SLAndroidEffectItf self,
45fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
4667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
475b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
48fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
4967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
505b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SetEnabled) (SLAndroidEffectItf self,
51fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
525b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean enabled);
5367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
545b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*IsEnabled) (SLAndroidEffectItf self,
55fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
565b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean *pEnabled);
5767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
585b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SendCommand) (SLAndroidEffectItf self,
59fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
605b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 command,
615b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 commandSize,
625b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pCommandData,
635b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *replySize,
645b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pReplyData);
655b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi};
665b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
675b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
685b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
69884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/* Android Effect Send interface                                             */
70884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
71884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
72ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND;
73884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
74884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/** Android Effect Send interface methods */
75884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
76884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_;
77884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivitypedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf;
78884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
79884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_ {
80884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*EnableEffectSend) (
81fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
82fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
83884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean enable,
84884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel initialLevel
85884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
86884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*IsEnabled) (
87fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
88fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
89884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean *pEnable
90884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
91884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetDirectLevel) (
92fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
93884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel directLevel
94884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
95884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetDirectLevel) (
96fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
97884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pDirectLevel
98884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
99884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetSendLevel) (
100fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
101fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
102884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel sendLevel
103884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
104884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetSendLevel)(
105fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
106fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
107884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pSendLevel
108884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
109884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi};
110884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
111884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
112884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1135b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/* Android Effect Capabilities interface                                     */
1145b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1155b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
116ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
1175b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1185b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/** Android Effect Capabilities interface methods */
1195b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1205b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_;
1215b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
1225b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1235b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_ {
1245b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1255b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
1265b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *pNumSupportedEffects);
12767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
12867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1295b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
1305b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 index,
1315b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectType,
1325b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectImplementation,
1337fc9e14cb8d840df7242d37b55acff0b58d269c7Jean-Michel Trivi            SLchar *pName,
1345b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint16 *pNameSize);
13567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi};
13667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
13767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
138989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
13942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* Android Configuration interface                                           */
14042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
141ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION;
14242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/** Android Configuration interface methods */
14442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_;
14642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivitypedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf;
14742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_ {
14942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*SetConfiguration) (SLAndroidConfigurationItf self,
15142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const SLchar *configKey,
15242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const void *pConfigValue,
15342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            SLuint32 valueSize);
15442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*GetConfiguration) (SLAndroidConfigurationItf self,
15642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           const SLchar *configKey,
15742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           SLuint32 *pValueSize,
15842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           void *pConfigValue
15942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi       );
16042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi};
16142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
16201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
16301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
16401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Simple Buffer Queue Interface                                     */
16501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
16601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
167ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
16801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
16901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_;
17001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
17101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
172ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)(
17301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLAndroidSimpleBufferQueueItf caller,
17401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	void *pContext
17501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten);
17601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
17701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Android simple buffer queue state **/
17801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
17901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLAndroidSimpleBufferQueueState_ {
18001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	count;
18101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	index;
18201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLAndroidSimpleBufferQueueState;
18301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_ {
18601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Enqueue) (
18701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
18801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		const void *pBuffer,
18901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLuint32 size
19001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Clear) (
19201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self
19301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*GetState) (
19501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
19601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueState *pState
19701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*RegisterCallback) (
19901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
20001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		slAndroidSimpleBufferQueueCallback callback,
20101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		void* pContext
20201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
20301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten};
20401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
207d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface                                            */
20828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
20928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
210ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUE;
21128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
212fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_;
213fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf;
21428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
215d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_NONE          ((SLuint32) 0x00000000)
216d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_EOS           ((SLuint32) 0x00000001)
217d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_DISCONTINUITY ((SLuint32) 0x00000002)
218d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
219d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferItem_ {
220d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemKey;  // identifies the item
221d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemSize;
222d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint8  itemData[0];
223d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferItem;
224ad887a253969ac2017a1dbe062d0b76d505594c0Jean-Michel Trivi
225ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)(
226fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLAndroidBufferQueueItf caller,/* input */
227fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    void *pContext,                /* input */
228d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const void *pBufferData,       /* input */
229d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataSize,             /* input */
230d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataUsed,             /* input */
231d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const SLAndroidBufferItem *pItems,/* input */
232d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemsLength           /* input */
23328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi);
23428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
235d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferQueueState_ {
236d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    count;
237d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    index;
238d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferQueueState;
239d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
240fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_ {
24128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLresult (*RegisterCallback) (
242fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
243fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        slAndroidBufferQueueCallback callback,
24428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi        void* pContext
24528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    );
246fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
247fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Clear) (
248fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self
249fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
250fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
251fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Enqueue) (
252fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
253d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const void *pData,
254d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 dataLength,
255d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const SLAndroidBufferItem *pItems,
256d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 itemsLength
257fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
258fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
259e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    SLresult (*GetState) (
260fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
261e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        SLAndroidBufferQueueState *pState
262fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
263e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi
26428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi};
26528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
26628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
26728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
268989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android File Descriptor Data Locator                                      */
269989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
27001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
271989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/** Addendum to Data locator macros  */
27201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
273989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
2746c7bd2eda0843708a8f36773b13716ba479dd6fbJean-Michel Trivi#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
275989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
276a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
277989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef struct SLDataLocator_AndroidFD_ {
278989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLuint32        locatorType;
279989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLint32         fd;
280989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        offset;
281989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        length;
282989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi} SLDataLocator_AndroidFD;
283989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
284989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
28501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
28601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Android Simple Buffer Queue Data Locator                          */
28701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
28801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
28901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Addendum to Data locator macros  */
29001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
29101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
29201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/
29301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLDataLocator_AndroidSimpleBufferQueue {
29401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	locatorType;
29501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	numBuffers;
29601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLDataLocator_AndroidSimpleBufferQueue;
29701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
29801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
299fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
300fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
301fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
302fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
303fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/** Addendum to Data locator macros  */
304fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE       ((SLuint32) 0x800007BE)
305fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
306fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
307fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi *  locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */
308fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef struct SLDataLocator_AndroidBufferQueue_ {
309fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLuint32    locatorType;
310d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    numBuffers;
311fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi} SLDataLocator_AndroidBufferQueue;
312fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
313a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#ifdef __cplusplus
31405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi}
31505ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* __cplusplus */
31605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
31705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* OPENSL_ES_ANDROID_H_ */
318