OpenSLES_Android.h revision 28bc6b725c207fb8fbd618caea4aa127f35ce1e1
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
355b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Triviextern SLAPIENTRY 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
72884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Triviextern SLAPIENTRY 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
1165b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Triviextern SLAPIENTRY 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/*---------------------------------------------------------------------------*/
14142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Triviextern SLAPIENTRY 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
16701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenextern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
16801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
16901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_;
17001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
17101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
17201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn 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/*---------------------------------------------------------------------------*/
20728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/* Android Stream Source Interface                                           */
20828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
20928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
21028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Triviextern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDSTREAMSOURCE;
21128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
21228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivistruct SLAndroidStreamSourceItf_;
21328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivitypedef const struct SLAndroidStreamSourceItf_ * const * SLAndroidStreamSourceItf;
21428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
21528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivitypedef SLresult (/*SLAPIENTRY*/ *slAndroidStreamSourceCallback)(
21628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLAndroidStreamSourceItf caller,
21728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    void *pContext,   /* input */
21828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLAint64 offset,  /* input */
21928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLAint64* pLength,/* input, output */
22028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    void *pData       /* output */
22128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi);
22228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
22328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivistruct SLAndroidStreamSourceItf_ {
22428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLresult (*RegisterCallback) (
22528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi        SLAndroidStreamSourceItf self,
22628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi        slAndroidStreamSourceCallback callback,
22728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi        void* pContext
22828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    );
22928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi};
23028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
23128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
23228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
233989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android File Descriptor Data Locator                                      */
234989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
23501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
236989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/** Addendum to Data locator macros  */
23701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
238989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
2396c7bd2eda0843708a8f36773b13716ba479dd6fbJean-Michel Trivi#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
240989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
241a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
242989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef struct SLDataLocator_AndroidFD_ {
243989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLuint32        locatorType;
244989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLint32         fd;
245989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        offset;
246989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        length;
247989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi} SLDataLocator_AndroidFD;
248989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
249989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
25001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
25128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/* Android Streamer Data Locator                                             */
25228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
25328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
25428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/** Addendum to Data locator macros  */
25528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi#define SL_DATALOCATOR_ANDROIDSTREAMER          ((SLuint32) 0x800007BD)
25628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
25728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/** Streamer-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDSTREAMER */
25828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivitypedef struct SLDataLocator_AndroidStreamer_ {
25928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLuint32        locatorType;
26028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    void*           pStreamer;
26128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi} SLDataLocator_AndroidStreamer;
26228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
26328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
26428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
26501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Android Simple Buffer Queue Data Locator                          */
26601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
26701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
26801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Addendum to Data locator macros  */
26901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
27001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
27101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/
27201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLDataLocator_AndroidSimpleBufferQueue {
27301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	locatorType;
27401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	numBuffers;
27501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLDataLocator_AndroidSimpleBufferQueue;
27601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
27701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
278a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#ifdef __cplusplus
27905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi}
28005ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* __cplusplus */
28105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
28205ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* OPENSL_ES_ANDROID_H_ */
283