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/*---------------------------------------------------------------------------*/
36bb74f23cd3dc877c7eaf4db2132f724d11aeeb8fPaul McLean/* Android PCM Data Format                                                   */
37bb74f23cd3dc877c7eaf4db2132f724d11aeeb8fPaul McLean/*---------------------------------------------------------------------------*/
38e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung
39e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung/* The following pcm representations and data formats map to those in OpenSLES 1.1 */
40e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung#define SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT       ((SLuint32) 0x00000001)
41e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung#define SL_ANDROID_PCM_REPRESENTATION_UNSIGNED_INT     ((SLuint32) 0x00000002)
42e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung#define SL_ANDROID_PCM_REPRESENTATION_FLOAT            ((SLuint32) 0x00000003)
43e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung
44e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung#define SL_ANDROID_DATAFORMAT_PCM_EX    ((SLuint32) 0x00000004)
45e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung
46e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hungtypedef struct SLAndroidDataFormat_PCM_EX_ {
47e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         formatType;
48e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         numChannels;
49e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         sampleRate;
50e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         bitsPerSample;
51e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         containerSize;
52e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         channelMask;
53e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         endianness;
54e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         representation;
55e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung} SLAndroidDataFormat_PCM_EX;
56bb74f23cd3dc877c7eaf4db2132f724d11aeeb8fPaul McLean
57bb74f23cd3dc877c7eaf4db2132f724d11aeeb8fPaul McLean/*---------------------------------------------------------------------------*/
5867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/* Android Effect interface                                                  */
5967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/*---------------------------------------------------------------------------*/
6067bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
61ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT;
6267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
6367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/** Android Effect interface methods */
6467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
655b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_;
665b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
6767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
685b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_ {
6967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
705b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*CreateEffect) (SLAndroidEffectItf self,
71fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
7267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
735b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
74fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
7567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
765b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SetEnabled) (SLAndroidEffectItf self,
77fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
785b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean enabled);
7967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
805b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*IsEnabled) (SLAndroidEffectItf self,
81fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
825b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean *pEnabled);
8367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
845b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SendCommand) (SLAndroidEffectItf self,
85fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
865b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 command,
875b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 commandSize,
885b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pCommandData,
895b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *replySize,
905b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pReplyData);
915b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi};
925b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
935b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
945b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
95884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/* Android Effect Send interface                                             */
96884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
97884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
98ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND;
99884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
100884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/** Android Effect Send interface methods */
101884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
102884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_;
103884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivitypedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf;
104884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
105884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_ {
106884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*EnableEffectSend) (
107fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
108fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
109884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean enable,
110884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel initialLevel
111884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
112884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*IsEnabled) (
113fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
114fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
115884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean *pEnable
116884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
117884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetDirectLevel) (
118fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
119884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel directLevel
120884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
121884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetDirectLevel) (
122fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
123884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pDirectLevel
124884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
125884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetSendLevel) (
126fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
127fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
128884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel sendLevel
129884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
130884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetSendLevel)(
131fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
132fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
133884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pSendLevel
134884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
135884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi};
136884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
137884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
138884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1395b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/* Android Effect Capabilities interface                                     */
1405b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1415b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
142ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
1435b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1445b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/** Android Effect Capabilities interface methods */
1455b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1465b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_;
1475b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
1485b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1495b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_ {
1505b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1515b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
1525b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *pNumSupportedEffects);
15367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
15467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1555b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
1565b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 index,
1575b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectType,
1585b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectImplementation,
1597fc9e14cb8d840df7242d37b55acff0b58d269c7Jean-Michel Trivi            SLchar *pName,
1605b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint16 *pNameSize);
16167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi};
16267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
16367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
164989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
16542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* Android Configuration interface                                           */
16642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
167ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION;
16842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
16942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/** Android Configuration interface methods */
17042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
17142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_;
17242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivitypedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf;
17342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
17442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_ {
17542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
17642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*SetConfiguration) (SLAndroidConfigurationItf self,
17742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const SLchar *configKey,
17842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const void *pConfigValue,
17942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            SLuint32 valueSize);
18042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
18142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*GetConfiguration) (SLAndroidConfigurationItf self,
18242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           const SLchar *configKey,
18342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           SLuint32 *pValueSize,
18442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           void *pConfigValue
18542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi       );
18642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi};
18742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
18801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
18901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
19001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Simple Buffer Queue Interface                                     */
19101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
19201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
193ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
19401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
19501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_;
19601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
19701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
198ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)(
19901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLAndroidSimpleBufferQueueItf caller,
20001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	void *pContext
20101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten);
20201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Android simple buffer queue state **/
20401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
20501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLAndroidSimpleBufferQueueState_ {
20601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	count;
20701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	index;
20801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLAndroidSimpleBufferQueueState;
20901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
21001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
21101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_ {
21201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Enqueue) (
21301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
21401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		const void *pBuffer,
21501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLuint32 size
21601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
21701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Clear) (
21801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self
21901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
22001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*GetState) (
22101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
22201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueState *pState
22301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
22401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*RegisterCallback) (
22501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
22601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		slAndroidSimpleBufferQueueCallback callback,
22701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		void* pContext
22801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
22901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten};
23001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
23101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
23242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
233d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface                                            */
23428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
23528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
23660ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUESOURCE;
23728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
238fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_;
239fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf;
24028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
2411c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_NONE             ((SLuint32) 0x00000000)
2421c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_EOS              ((SLuint32) 0x00000001)
2431c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_DISCONTINUITY    ((SLuint32) 0x00000002)
2441c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((SLuint32) 0x00000003)
2456f0f5640d190b0187c356eb53bd96d9f9e49da60Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_FORMAT_CHANGE    ((SLuint32) 0x00000004)
2461c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
2471c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_NONE        ((SLuint32) 0x00000000)
2481c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((SLuint32) 0x00000001)
249c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#if 0   // reserved for future use
2501c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((SLuint32) 0x00000002)
2511c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((SLuint32) 0x00000004)
2521c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((SLuint32) 0x00000008)
2531c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_ERROR       ((SLuint32) 0x00000010)
2541c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((SLuint32) 0x00000020)
255c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#endif
256d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
257d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferItem_ {
258d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemKey;  // identifies the item
259d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemSize;
260d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint8  itemData[0];
261d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferItem;
262ad887a253969ac2017a1dbe062d0b76d505594c0Jean-Michel Trivi
263ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)(
264fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLAndroidBufferQueueItf caller,/* input */
26537dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pCallbackContext,        /* input */
26637dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferContext,          /* input */
26737dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferData,             /* input */
268d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataSize,             /* input */
269d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataUsed,             /* input */
270d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const SLAndroidBufferItem *pItems,/* input */
271d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemsLength           /* input */
27228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi);
27328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
274d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferQueueState_ {
275d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    count;
276d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    index;
277d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferQueueState;
278d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
279fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_ {
28028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLresult (*RegisterCallback) (
281fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
282fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        slAndroidBufferQueueCallback callback,
28337dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void* pCallbackContext
28428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    );
285fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
286fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Clear) (
287fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self
288fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
289fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
290fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Enqueue) (
291fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
29237dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pBufferContext,
29337dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pData,
294d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 dataLength,
295d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const SLAndroidBufferItem *pItems,
296d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 itemsLength
297fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
298fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
299e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    SLresult (*GetState) (
300fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
301e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        SLAndroidBufferQueueState *pState
302fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
303e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi
3041c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    SLresult (*SetCallbackEventsMask) (
3051c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLAndroidBufferQueueItf self,
3061c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLuint32 eventFlags
3071c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
3081c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
3091c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    SLresult (*GetCallbackEventsMask) (
3101c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLAndroidBufferQueueItf self,
3111c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLuint32 *pEventFlags
3121c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
31328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi};
31428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
31528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
31628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
317989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android File Descriptor Data Locator                                      */
318989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
31901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
320989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/** Addendum to Data locator macros  */
32101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
322989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
3236c7bd2eda0843708a8f36773b13716ba479dd6fbJean-Michel Trivi#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
324989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
325a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
326989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef struct SLDataLocator_AndroidFD_ {
327989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLuint32        locatorType;
328989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLint32         fd;
329989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        offset;
330989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        length;
331989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi} SLDataLocator_AndroidFD;
332989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
333989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
33401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
33501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Android Simple Buffer Queue Data Locator                          */
33601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
33701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
33801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Addendum to Data locator macros  */
33901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
34001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
34101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/
34201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLDataLocator_AndroidSimpleBufferQueue {
34301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	locatorType;
34401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	numBuffers;
34501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLDataLocator_AndroidSimpleBufferQueue;
34601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
34701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
348fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
349fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
350fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
351fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
352fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/** Addendum to Data locator macros  */
353fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE       ((SLuint32) 0x800007BE)
354fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
355fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
356fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi *  locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */
357fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef struct SLDataLocator_AndroidBufferQueue_ {
358fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLuint32    locatorType;
359d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    numBuffers;
360fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi} SLDataLocator_AndroidBufferQueue;
361fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
362c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten/**
363c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten * MIME types required for data in Android Buffer Queues
364c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten */
365c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#define SL_ANDROID_MIME_AACADTS            ((SLchar *) "audio/vnd.android.aac-adts")
366c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten
367f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/*---------------------------------------------------------------------------*/
368f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* Acoustic Echo Cancellation (AEC) Interface                                */
369f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* --------------------------------------------------------------------------*/
370f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanextern SL_API const SLInterfaceID SL_IID_ANDROIDACOUSTICECHOCANCELLATION;
371f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
372f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidAcousticEchoCancellationItf_;
373f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeantypedef const struct SLAndroidAcousticEchoCancellationItf_ * const *
374f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAcousticEchoCancellationItf;
375f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
376f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidAcousticEchoCancellationItf_ {
377f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*SetEnabled)(
378f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAcousticEchoCancellationItf self,
379f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean enabled
380f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
381f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsEnabled)(
382f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAcousticEchoCancellationItf self,
383f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
384f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
385f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsAvailable)(
386f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAcousticEchoCancellationItf self,
387f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
388f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
389f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean};
390f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
391f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/*---------------------------------------------------------------------------*/
392f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* Automatic Gain Control (ACC) Interface                                    */
393f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* --------------------------------------------------------------------------*/
394f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanextern SL_API const SLInterfaceID SL_IID_ANDROIDAUTOMATICGAINCONTROL;
395f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
396f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidAutomaticGainControlItf_;
397f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeantypedef const struct SLAndroidAutomaticGainControlItf_ * const * SLAndroidAutomaticGainControlItf;
398f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
399f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidAutomaticGainControlItf_ {
400f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*SetEnabled)(
401f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAutomaticGainControlItf self,
402f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean enabled
403f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
404f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsEnabled)(
405f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAutomaticGainControlItf self,
406f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
407f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
408f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsAvailable)(
409f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAutomaticGainControlItf self,
410f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
411f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
412f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean};
413f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
414f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/*---------------------------------------------------------------------------*/
415f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* Noise Suppression Interface                                               */
416f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* --------------------------------------------------------------------------*/
417f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanextern SL_API const SLInterfaceID SL_IID_ANDROIDNOISESUPPRESSION;
418f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
419f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidNoiseSuppressionItf_;
420f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeantypedef const struct SLAndroidNoiseSuppressionItf_ * const * SLAndroidNoiseSuppressionItf;
421f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
422f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidNoiseSuppressionItf_ {
423f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*SetEnabled)(
424f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidNoiseSuppressionItf self,
425f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean enabled
426f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
427f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsEnabled)(
428f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidNoiseSuppressionItf self,
429f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
430f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
431f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsAvailable)(
432f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidNoiseSuppressionItf self,
433f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
434f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
435f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean};
436f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
437a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#ifdef __cplusplus
43805ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi}
43905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* __cplusplus */
44005ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
44105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* OPENSL_ES_ANDROID_H_ */
442