OpenSLES_Android.h revision ebc8fd365b402e498d499fa8737a7591c290347c
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
30fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef SLuint32               SLAbufferQueueEvent;
31ad887a253969ac2017a1dbe062d0b76d505594c0Jean-Michel Trivi
32989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
33989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
3467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/* Android Effect interface                                                  */
3567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/*---------------------------------------------------------------------------*/
3667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
37ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT;
3867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
3967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/** Android Effect interface methods */
4067bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
415b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_;
425b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
4367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
445b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_ {
4567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
465b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*CreateEffect) (SLAndroidEffectItf self,
47fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
4867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
495b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
50fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
5167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
525b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SetEnabled) (SLAndroidEffectItf self,
53fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
545b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean enabled);
5567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
565b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*IsEnabled) (SLAndroidEffectItf self,
57fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
585b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean *pEnabled);
5967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
605b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SendCommand) (SLAndroidEffectItf self,
61fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
625b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 command,
635b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 commandSize,
645b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pCommandData,
655b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *replySize,
665b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pReplyData);
675b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi};
685b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
695b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
705b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
71884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/* Android Effect Send interface                                             */
72884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
73884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
74ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND;
75884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
76884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/** Android Effect Send interface methods */
77884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
78884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_;
79884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivitypedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf;
80884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
81884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_ {
82884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*EnableEffectSend) (
83fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
84fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
85884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean enable,
86884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel initialLevel
87884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
88884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*IsEnabled) (
89fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
90fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
91884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean *pEnable
92884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
93884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetDirectLevel) (
94fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
95884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel directLevel
96884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
97884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetDirectLevel) (
98fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
99884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pDirectLevel
100884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
101884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetSendLevel) (
102fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
103fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
104884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel sendLevel
105884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
106884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetSendLevel)(
107fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
108fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
109884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pSendLevel
110884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
111884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi};
112884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
113884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
114884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1155b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/* Android Effect Capabilities interface                                     */
1165b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1175b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
118ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
1195b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1205b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/** Android Effect Capabilities interface methods */
1215b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1225b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_;
1235b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
1245b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1255b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_ {
1265b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1275b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
1285b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *pNumSupportedEffects);
12967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
13067bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1315b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
1325b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 index,
1335b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectType,
1345b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectImplementation,
1357fc9e14cb8d840df7242d37b55acff0b58d269c7Jean-Michel Trivi            SLchar *pName,
1365b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint16 *pNameSize);
13767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi};
13867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
13967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
140989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
14142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* Android Configuration interface                                           */
14242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
143ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION;
14442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/** Android Configuration interface methods */
14642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_;
14842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivitypedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf;
14942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_ {
15142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*SetConfiguration) (SLAndroidConfigurationItf self,
15342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const SLchar *configKey,
15442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const void *pConfigValue,
15542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            SLuint32 valueSize);
15642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*GetConfiguration) (SLAndroidConfigurationItf self,
15842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           const SLchar *configKey,
15942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           SLuint32 *pValueSize,
16042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           void *pConfigValue
16142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi       );
16242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi};
16342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
16401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
16501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
16601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Simple Buffer Queue Interface                                     */
16701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
16801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
169ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
17001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
17101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_;
17201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
17301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
174ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)(
17501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLAndroidSimpleBufferQueueItf caller,
17601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	void *pContext
17701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten);
17801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
17901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Android simple buffer queue state **/
18001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLAndroidSimpleBufferQueueState_ {
18201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	count;
18301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	index;
18401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLAndroidSimpleBufferQueueState;
18501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_ {
18801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Enqueue) (
18901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
19001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		const void *pBuffer,
19101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLuint32 size
19201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Clear) (
19401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self
19501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*GetState) (
19701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
19801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueState *pState
19901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
20001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*RegisterCallback) (
20101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
20201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		slAndroidSimpleBufferQueueCallback callback,
20301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		void* pContext
20401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
20501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten};
20601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
209fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/* Android Buffer Qeueue Interface                                           */
21028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
21128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
212ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUE;
21328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
214fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_;
215fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf;
21628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
217fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_ANDROIDBUFFERQUEUE_EVENT_NONE              ((SLuint32) 0x00000000)
218e945a85a903cfb83a8965a3246c9e1718023a897Andreas Huber#define SL_ANDROIDBUFFERQUEUE_EVENT_EOS               ((SLuint32) 0x00000001)
219fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_ANDROIDBUFFERQUEUE_EVENT_DISCONTINUITY     ((SLuint32) 0x00000002)
220ad887a253969ac2017a1dbe062d0b76d505594c0Jean-Michel Trivi
221ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)(
222fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLAndroidBufferQueueItf caller,/* input */
223fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    void *pContext,                /* input */
224fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLuint32 bufferId,             /* input */
225eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    SLuint32 bufferLength,         /* input */
226fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    void *pBufferDataLocation      /* input */
22728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi);
22828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
229fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_ {
23028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLresult (*RegisterCallback) (
231fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
232fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        slAndroidBufferQueueCallback callback,
23328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi        void* pContext
23428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    );
235fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
236fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Clear) (
237fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self
238fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
239fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
240fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Enqueue) (
241fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
242fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLuint32 bufferId,
243fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLuint32 length,
244fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAbufferQueueEvent event,
2450e47a0657162bbff48886ea2f5c68d9edb607768Jean-Michel Trivi        void *pData    // FIXME ignored for now, subject to change
246fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
247fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
248fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    // FIXME TBD if needed
249fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    /*
250fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLResult (*SetCallbackEventMask) (
251fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
252fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLuint32 eventMask
253fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
254fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLResult (*GetCallbackEventMask) (
255fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
256fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLuint32 *pEventMask
257fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
258fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    */
25928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi};
26028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
26128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
26228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
263989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android File Descriptor Data Locator                                      */
264989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
26501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
266989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/** Addendum to Data locator macros  */
26701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
268989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
2696c7bd2eda0843708a8f36773b13716ba479dd6fbJean-Michel Trivi#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
270989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
271a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
272989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef struct SLDataLocator_AndroidFD_ {
273989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLuint32        locatorType;
274989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLint32         fd;
275989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        offset;
276989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        length;
277989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi} SLDataLocator_AndroidFD;
278989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
279989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
28001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
28101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Android Simple Buffer Queue Data Locator                          */
28201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
28301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
28401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Addendum to Data locator macros  */
28501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
28601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
28701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/
28801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLDataLocator_AndroidSimpleBufferQueue {
28901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	locatorType;
29001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	numBuffers;
29101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLDataLocator_AndroidSimpleBufferQueue;
29201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
29301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
294fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
295fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
296fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
297fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
298fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/** Addendum to Data locator macros  */
299fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE       ((SLuint32) 0x800007BE)
300fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
301fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
302fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi *  locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */
303fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef struct SLDataLocator_AndroidBufferQueue_ {
304fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLuint32    locatorType;
3050e47a0657162bbff48886ea2f5c68d9edb607768Jean-Michel Trivi    SLuint32    numBuffers;   // FIXME ignored for now, subject to change
3060e47a0657162bbff48886ea2f5c68d9edb607768Jean-Michel Trivi    SLuint32    queueSize;    // FIXME ignored for now, subject to change
307fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi} SLDataLocator_AndroidBufferQueue;
308fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
309a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#ifdef __cplusplus
31005ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi}
31105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* __cplusplus */
31205ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
31305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* OPENSL_ES_ANDROID_H_ */
314