OpenSLES_Android.h revision 6f0f5640d190b0187c356eb53bd96d9f9e49da60
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
28e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef sl_int64_t             SLAint64;          /* 64 bit signed integer   */
29989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
30e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef sl_uint64_t            SLAuint64;         /* 64 bit unsigned integer */
31989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
32989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
3367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/* Android Effect interface                                                  */
3467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/*---------------------------------------------------------------------------*/
3567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
36ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT;
3767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
3867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/** Android Effect interface methods */
3967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
405b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_;
415b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
4267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
435b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_ {
4467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
455b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*CreateEffect) (SLAndroidEffectItf self,
46fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
4767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
485b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
49fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
5067bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
515b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SetEnabled) (SLAndroidEffectItf self,
52fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
535b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean enabled);
5467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
555b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*IsEnabled) (SLAndroidEffectItf self,
56fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
575b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean *pEnabled);
5867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
595b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SendCommand) (SLAndroidEffectItf self,
60fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
615b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 command,
625b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 commandSize,
635b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pCommandData,
645b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *replySize,
655b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pReplyData);
665b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi};
675b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
685b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
695b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
70884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/* Android Effect Send interface                                             */
71884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
72884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
73ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND;
74884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
75884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/** Android Effect Send interface methods */
76884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
77884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_;
78884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivitypedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf;
79884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
80884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_ {
81884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*EnableEffectSend) (
82fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
83fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
84884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean enable,
85884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel initialLevel
86884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
87884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*IsEnabled) (
88fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
89fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
90884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean *pEnable
91884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
92884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetDirectLevel) (
93fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
94884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel directLevel
95884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
96884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetDirectLevel) (
97fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
98884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pDirectLevel
99884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
100884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetSendLevel) (
101fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
102fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
103884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel sendLevel
104884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
105884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetSendLevel)(
106fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
107fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
108884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pSendLevel
109884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
110884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi};
111884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
112884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
113884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1145b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/* Android Effect Capabilities interface                                     */
1155b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1165b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
117ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
1185b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1195b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/** Android Effect Capabilities interface methods */
1205b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1215b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_;
1225b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
1235b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1245b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_ {
1255b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1265b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
1275b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *pNumSupportedEffects);
12867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
12967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1305b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
1315b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 index,
1325b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectType,
1335b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectImplementation,
1347fc9e14cb8d840df7242d37b55acff0b58d269c7Jean-Michel Trivi            SLchar *pName,
1355b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint16 *pNameSize);
13667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi};
13767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
13867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
139989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
14042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* Android Configuration interface                                           */
14142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
142ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION;
14342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/** Android Configuration interface methods */
14542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_;
14742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivitypedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf;
14842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_ {
15042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*SetConfiguration) (SLAndroidConfigurationItf self,
15242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const SLchar *configKey,
15342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const void *pConfigValue,
15442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            SLuint32 valueSize);
15542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*GetConfiguration) (SLAndroidConfigurationItf self,
15742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           const SLchar *configKey,
15842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           SLuint32 *pValueSize,
15942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           void *pConfigValue
16042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi       );
16142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi};
16242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
16301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
16401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
16501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Simple Buffer Queue Interface                                     */
16601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
16701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
168ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
16901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
17001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_;
17101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
17201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
173ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)(
17401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLAndroidSimpleBufferQueueItf caller,
17501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	void *pContext
17601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten);
17701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
17801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Android simple buffer queue state **/
17901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLAndroidSimpleBufferQueueState_ {
18101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	count;
18201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	index;
18301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLAndroidSimpleBufferQueueState;
18401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_ {
18701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Enqueue) (
18801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
18901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		const void *pBuffer,
19001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLuint32 size
19101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Clear) (
19301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self
19401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*GetState) (
19601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
19701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueState *pState
19801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*RegisterCallback) (
20001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
20101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		slAndroidSimpleBufferQueueCallback callback,
20201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		void* pContext
20301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
20401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten};
20501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
208d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface                                            */
20928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
21028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
211ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUE;
21228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
213fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_;
214fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf;
21528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
2161c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_NONE             ((SLuint32) 0x00000000)
2171c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_EOS              ((SLuint32) 0x00000001)
2181c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_DISCONTINUITY    ((SLuint32) 0x00000002)
2191c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((SLuint32) 0x00000003)
2206f0f5640d190b0187c356eb53bd96d9f9e49da60Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_FORMAT_CHANGE    ((SLuint32) 0x00000004)
2211c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
2221c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_NONE        ((SLuint32) 0x00000000)
2231c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((SLuint32) 0x00000001)
2241c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((SLuint32) 0x00000002)
2251c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((SLuint32) 0x00000004)
2261c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((SLuint32) 0x00000008)
2271c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_ERROR       ((SLuint32) 0x00000010)
2281c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((SLuint32) 0x00000020)
229d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
230d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferItem_ {
231d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemKey;  // identifies the item
232d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemSize;
233d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint8  itemData[0];
234d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferItem;
235ad887a253969ac2017a1dbe062d0b76d505594c0Jean-Michel Trivi
236ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)(
237fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLAndroidBufferQueueItf caller,/* input */
23837dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pCallbackContext,        /* input */
23937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferContext,          /* input */
24037dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferData,             /* input */
241d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataSize,             /* input */
242d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataUsed,             /* input */
243d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const SLAndroidBufferItem *pItems,/* input */
244d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemsLength           /* input */
24528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi);
24628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
247d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferQueueState_ {
248d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    count;
249d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    index;
250d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferQueueState;
251d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
252fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_ {
25328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLresult (*RegisterCallback) (
254fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
255fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        slAndroidBufferQueueCallback callback,
25637dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void* pCallbackContext
25728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    );
258fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
259fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Clear) (
260fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self
261fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
262fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
263fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Enqueue) (
264fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
26537dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pBufferContext,
26637dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pData,
267d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 dataLength,
268d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const SLAndroidBufferItem *pItems,
269d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 itemsLength
270fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
271fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
272e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    SLresult (*GetState) (
273fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
274e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        SLAndroidBufferQueueState *pState
275fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
276e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi
2771c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    SLresult (*SetCallbackEventsMask) (
2781c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLAndroidBufferQueueItf self,
2791c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLuint32 eventFlags
2801c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
2811c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
2821c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    SLresult (*GetCallbackEventsMask) (
2831c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLAndroidBufferQueueItf self,
2841c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLuint32 *pEventFlags
2851c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
28628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi};
28728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
28828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
28928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
290989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android File Descriptor Data Locator                                      */
291989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
29201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
293989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/** Addendum to Data locator macros  */
29401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
295989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
2966c7bd2eda0843708a8f36773b13716ba479dd6fbJean-Michel Trivi#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
297989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
298a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
299989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef struct SLDataLocator_AndroidFD_ {
300989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLuint32        locatorType;
301989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLint32         fd;
302989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        offset;
303989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        length;
304989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi} SLDataLocator_AndroidFD;
305989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
306989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
30701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
30801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Android Simple Buffer Queue Data Locator                          */
30901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
31001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
31101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Addendum to Data locator macros  */
31201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
31301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
31401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/
31501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLDataLocator_AndroidSimpleBufferQueue {
31601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	locatorType;
31701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	numBuffers;
31801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLDataLocator_AndroidSimpleBufferQueue;
31901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
32001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
321fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
322fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
323fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
324fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
325fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/** Addendum to Data locator macros  */
326fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE       ((SLuint32) 0x800007BE)
327fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
328fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
329fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi *  locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */
330fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef struct SLDataLocator_AndroidBufferQueue_ {
331fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLuint32    locatorType;
332d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    numBuffers;
333fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi} SLDataLocator_AndroidBufferQueue;
334fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
335a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#ifdef __cplusplus
33605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi}
33705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* __cplusplus */
33805ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
33905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* OPENSL_ES_ANDROID_H_ */
340