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
2068c8a1b6deea46eeca57848768a92e96d583aaddJean-Michel Trivi#include "OpenSLES_AndroidConfiguration.h"
2168c8a1b6deea46eeca57848768a92e96d583aaddJean-Michel Trivi#include "OpenSLES_AndroidMetadata.h"
2268c8a1b6deea46eeca57848768a92e96d583aaddJean-Michel Trivi
2305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#ifdef __cplusplus
2405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Triviextern "C" {
25a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#endif
2605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
2705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi/*---------------------------------------------------------------------------*/
28989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android common types                                                      */
29989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
30989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
31e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef sl_int64_t             SLAint64;          /* 64 bit signed integer   */
32989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
33e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef sl_uint64_t            SLAuint64;         /* 64 bit unsigned integer */
34989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
35989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
3667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/* Android Effect interface                                                  */
3767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/*---------------------------------------------------------------------------*/
3867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
39ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT;
4067bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
4167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/** Android Effect interface methods */
4267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
435b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_;
445b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
4567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
465b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_ {
4767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
485b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*CreateEffect) (SLAndroidEffectItf self,
49fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
5067bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
515b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
52fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
5367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
545b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SetEnabled) (SLAndroidEffectItf self,
55fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
565b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean enabled);
5767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
585b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*IsEnabled) (SLAndroidEffectItf self,
59fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
605b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean *pEnabled);
6167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
625b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SendCommand) (SLAndroidEffectItf self,
63fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
645b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 command,
655b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 commandSize,
665b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pCommandData,
675b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *replySize,
685b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pReplyData);
695b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi};
705b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
715b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
725b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
73884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/* Android Effect Send interface                                             */
74884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
75884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
76ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND;
77884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
78884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/** Android Effect Send interface methods */
79884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
80884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_;
81884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivitypedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf;
82884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
83884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_ {
84884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*EnableEffectSend) (
85fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
86fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
87884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean enable,
88884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel initialLevel
89884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
90884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*IsEnabled) (
91fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
92fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
93884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean *pEnable
94884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
95884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetDirectLevel) (
96fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
97884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel directLevel
98884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
99884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetDirectLevel) (
100fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
101884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pDirectLevel
102884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
103884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetSendLevel) (
104fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
105fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
106884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel sendLevel
107884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
108884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetSendLevel)(
109fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
110fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
111884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pSendLevel
112884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
113884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi};
114884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
115884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
116884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1175b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/* Android Effect Capabilities interface                                     */
1185b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1195b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
120ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
1215b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1225b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/** Android Effect Capabilities interface methods */
1235b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1245b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_;
1255b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
1265b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1275b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_ {
1285b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1295b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
1305b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *pNumSupportedEffects);
13167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
13267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1335b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
1345b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 index,
1355b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectType,
1365b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectImplementation,
1377fc9e14cb8d840df7242d37b55acff0b58d269c7Jean-Michel Trivi            SLchar *pName,
1385b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint16 *pNameSize);
13967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi};
14067bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
14167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
142989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
14342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* Android Configuration interface                                           */
14442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
145ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION;
14642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/** Android Configuration interface methods */
14842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
14942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_;
15042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivitypedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf;
15142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_ {
15342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*SetConfiguration) (SLAndroidConfigurationItf self,
15542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const SLchar *configKey,
15642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const void *pConfigValue,
15742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            SLuint32 valueSize);
15842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
15942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*GetConfiguration) (SLAndroidConfigurationItf self,
16042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           const SLchar *configKey,
16142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           SLuint32 *pValueSize,
16242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           void *pConfigValue
16342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi       );
16442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi};
16542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
16601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
16701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
16801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Simple Buffer Queue Interface                                     */
16901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
17001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
171ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
17201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
17301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_;
17401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
17501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
176ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)(
17701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLAndroidSimpleBufferQueueItf caller,
17801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	void *pContext
17901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten);
18001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Android simple buffer queue state **/
18201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLAndroidSimpleBufferQueueState_ {
18401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	count;
18501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	index;
18601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLAndroidSimpleBufferQueueState;
18701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_ {
19001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Enqueue) (
19101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
19201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		const void *pBuffer,
19301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLuint32 size
19401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Clear) (
19601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self
19701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
19801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*GetState) (
19901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
20001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueState *pState
20101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
20201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*RegisterCallback) (
20301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
20401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		slAndroidSimpleBufferQueueCallback callback,
20501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		void* pContext
20601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
20701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten};
20801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
21042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
211d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface                                            */
21228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
21328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
21460ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUESOURCE;
21528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
216fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_;
217fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf;
21828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
2191c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_NONE             ((SLuint32) 0x00000000)
2201c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_EOS              ((SLuint32) 0x00000001)
2211c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_DISCONTINUITY    ((SLuint32) 0x00000002)
2221c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((SLuint32) 0x00000003)
2236f0f5640d190b0187c356eb53bd96d9f9e49da60Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_FORMAT_CHANGE    ((SLuint32) 0x00000004)
2241c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
2251c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_NONE        ((SLuint32) 0x00000000)
2261c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((SLuint32) 0x00000001)
227c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#if 0   // reserved for future use
2281c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((SLuint32) 0x00000002)
2291c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((SLuint32) 0x00000004)
2301c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((SLuint32) 0x00000008)
2311c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_ERROR       ((SLuint32) 0x00000010)
2321c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((SLuint32) 0x00000020)
233c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#endif
234d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
235d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferItem_ {
236d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemKey;  // identifies the item
237d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemSize;
238d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint8  itemData[0];
239d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferItem;
240ad887a253969ac2017a1dbe062d0b76d505594c0Jean-Michel Trivi
241ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)(
242fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLAndroidBufferQueueItf caller,/* input */
24337dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pCallbackContext,        /* input */
24437dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferContext,          /* input */
24537dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferData,             /* input */
246d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataSize,             /* input */
247d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataUsed,             /* input */
248d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const SLAndroidBufferItem *pItems,/* input */
249d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemsLength           /* input */
25028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi);
25128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
252d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferQueueState_ {
253d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    count;
254d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    index;
255d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferQueueState;
256d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
257fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_ {
25828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLresult (*RegisterCallback) (
259fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
260fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        slAndroidBufferQueueCallback callback,
26137dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void* pCallbackContext
26228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    );
263fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
264fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Clear) (
265fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self
266fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
267fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
268fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Enqueue) (
269fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
27037dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pBufferContext,
27137dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pData,
272d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 dataLength,
273d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const SLAndroidBufferItem *pItems,
274d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 itemsLength
275fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
276fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
277e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    SLresult (*GetState) (
278fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
279e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        SLAndroidBufferQueueState *pState
280fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
281e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi
2821c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    SLresult (*SetCallbackEventsMask) (
2831c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLAndroidBufferQueueItf self,
2841c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLuint32 eventFlags
2851c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
2861c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
2871c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    SLresult (*GetCallbackEventsMask) (
2881c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLAndroidBufferQueueItf self,
2891c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLuint32 *pEventFlags
2901c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
29128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi};
29228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
29328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
29428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
295989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android File Descriptor Data Locator                                      */
296989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
29701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
298989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/** Addendum to Data locator macros  */
29901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
300989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
3016c7bd2eda0843708a8f36773b13716ba479dd6fbJean-Michel Trivi#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
302989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
303a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
304989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef struct SLDataLocator_AndroidFD_ {
305989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLuint32        locatorType;
306989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLint32         fd;
307989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        offset;
308989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        length;
309989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi} SLDataLocator_AndroidFD;
310989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
311989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
31201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
31301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Android Simple Buffer Queue Data Locator                          */
31401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
31501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
31601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Addendum to Data locator macros  */
31701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
31801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
31901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/
32001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLDataLocator_AndroidSimpleBufferQueue {
32101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	locatorType;
32201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	numBuffers;
32301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLDataLocator_AndroidSimpleBufferQueue;
32401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
32501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
326fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
327fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
328fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
329fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
330fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/** Addendum to Data locator macros  */
331fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE       ((SLuint32) 0x800007BE)
332fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
333fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
334fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi *  locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */
335fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef struct SLDataLocator_AndroidBufferQueue_ {
336fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLuint32    locatorType;
337d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    numBuffers;
338fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi} SLDataLocator_AndroidBufferQueue;
339fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
340c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten/**
341c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten * MIME types required for data in Android Buffer Queues
342c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten */
343c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#define SL_ANDROID_MIME_AACADTS            ((SLchar *) "audio/vnd.android.aac-adts")
344c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten
345a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#ifdef __cplusplus
34605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi}
34705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* __cplusplus */
34805ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
34905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* OPENSL_ES_ANDROID_H_ */
350