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
20cd3da3cf0b505da414569700d9c0c292a72a582cGlenn Kasten#include "OpenSLES.h"
2168c8a1b6deea46eeca57848768a92e96d583aaddJean-Michel Trivi#include "OpenSLES_AndroidConfiguration.h"
2268c8a1b6deea46eeca57848768a92e96d583aaddJean-Michel Trivi#include "OpenSLES_AndroidMetadata.h"
23e2a4e0e1e87efb61bb62d08e7744a6d57ec4a38ePaul McLean#include <jni.h>
2468c8a1b6deea46eeca57848768a92e96d583aaddJean-Michel Trivi
2505ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#ifdef __cplusplus
2605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Triviextern "C" {
27a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#endif
2805ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
2905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi/*---------------------------------------------------------------------------*/
30989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android common types                                                      */
31989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
32989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
33e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef sl_int64_t             SLAint64;          /* 64 bit signed integer   */
34989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
35e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef sl_uint64_t            SLAuint64;         /* 64 bit unsigned integer */
36989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
37989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
38bb74f23cd3dc877c7eaf4db2132f724d11aeeb8fPaul McLean/* Android PCM Data Format                                                   */
39bb74f23cd3dc877c7eaf4db2132f724d11aeeb8fPaul McLean/*---------------------------------------------------------------------------*/
40e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung
41e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung/* The following pcm representations and data formats map to those in OpenSLES 1.1 */
42e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung#define SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT       ((SLuint32) 0x00000001)
43e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung#define SL_ANDROID_PCM_REPRESENTATION_UNSIGNED_INT     ((SLuint32) 0x00000002)
44e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung#define SL_ANDROID_PCM_REPRESENTATION_FLOAT            ((SLuint32) 0x00000003)
45e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung
46e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung#define SL_ANDROID_DATAFORMAT_PCM_EX    ((SLuint32) 0x00000004)
47e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung
48e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hungtypedef struct SLAndroidDataFormat_PCM_EX_ {
49e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         formatType;
50e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         numChannels;
51e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         sampleRate;
52e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         bitsPerSample;
53e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         containerSize;
54e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         channelMask;
55e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         endianness;
56e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung    SLuint32         representation;
57e57c13397185f9ad0f162855e9a8ebeb0c94bfc4Andy Hung} SLAndroidDataFormat_PCM_EX;
58bb74f23cd3dc877c7eaf4db2132f724d11aeeb8fPaul McLean
594e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean#define SL_ANDROID_SPEAKER_NON_POSITIONAL       ((SLuint32) 0x80000000)
604e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean
614e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// Make an indexed channel mask from a bitfield.
624e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean//
634e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// Each bit in the bitfield corresponds to a channel index,
644e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// from least-significant bit (channel 0) up to the bit
654e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// corresponding to the maximum channel count (currently FCC_8).
664e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// A '1' in the bitfield indicates that the channel should be
674e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// included in the stream, while a '0' indicates that it
684e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// should be excluded. For instance, a bitfield of 0x0A (binary 00001010)
694e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// would define a stream that contains channels 1 and 3. (The corresponding
704e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// indexed mask, after setting the SL_ANDROID_NON_POSITIONAL bit,
714e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean// would be 0x8000000A.)
724e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean#define SL_ANDROID_MAKE_INDEXED_CHANNEL_MASK(bitfield) \
734e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean        ((bitfield) | SL_ANDROID_SPEAKER_NON_POSITIONAL)
744e8fe8a60c3aa8085918f15f281e0979682aefdcPaul McLean
759b006ad650c15ef2a8e0106e7a372fc2643c5210ilewis// Specifying SL_ANDROID_SPEAKER_USE_DEFAULT as a channel mask in
769b006ad650c15ef2a8e0106e7a372fc2643c5210ilewis// SLAndroidDataFormat_PCM_EX causes OpenSL ES to assign a default
779b006ad650c15ef2a8e0106e7a372fc2643c5210ilewis// channel mask based on the number of channels requested. This
789b006ad650c15ef2a8e0106e7a372fc2643c5210ilewis// value cannot be combined with SL_ANDROID_SPEAKER_NON_POSITIONAL.
799b006ad650c15ef2a8e0106e7a372fc2643c5210ilewis#define SL_ANDROID_SPEAKER_USE_DEFAULT ((SLuint32)0)
809b006ad650c15ef2a8e0106e7a372fc2643c5210ilewis
81bb74f23cd3dc877c7eaf4db2132f724d11aeeb8fPaul McLean/*---------------------------------------------------------------------------*/
8267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/* Android Effect interface                                                  */
8367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/*---------------------------------------------------------------------------*/
8467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
85ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT;
8667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
8767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/** Android Effect interface methods */
8867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
895b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_;
905b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
9167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
925b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_ {
9367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
945b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*CreateEffect) (SLAndroidEffectItf self,
95fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
9667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
975b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
98fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId);
9967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1005b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SetEnabled) (SLAndroidEffectItf self,
101fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
1025b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean enabled);
10367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1045b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*IsEnabled) (SLAndroidEffectItf self,
105fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
1065b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLboolean *pEnabled);
10767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1085b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*SendCommand) (SLAndroidEffectItf self,
109fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi            SLInterfaceID effectImplementationId,
1105b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 command,
1115b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 commandSize,
1125b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pCommandData,
1135b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *replySize,
1145b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            void *pReplyData);
1155b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi};
1165b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1175b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1185b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
119884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/* Android Effect Send interface                                             */
120884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
121884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
122ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND;
123884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
124884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/** Android Effect Send interface methods */
125884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
126884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_;
127884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivitypedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf;
128884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
129884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_ {
130884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*EnableEffectSend) (
131fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
132fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
133884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean enable,
134884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel initialLevel
135884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
136884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*IsEnabled) (
137fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
138fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
139884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLboolean *pEnable
140884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
141884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetDirectLevel) (
142fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
143884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel directLevel
144884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
145884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetDirectLevel) (
146fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
147884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pDirectLevel
148884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
149884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*SetSendLevel) (
150fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
151fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
152884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel sendLevel
153884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
154884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    SLresult (*GetSendLevel)(
155fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLAndroidEffectSendItf self,
156fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi        SLInterfaceID effectImplementationId,
157884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi        SLmillibel *pSendLevel
158884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi    );
159884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi};
160884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
161884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi
162884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1635b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/* Android Effect Capabilities interface                                     */
1645b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/
1655b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
166ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
1675b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1685b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/** Android Effect Capabilities interface methods */
1695b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1705b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_;
1715b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
1725b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1735b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_ {
1745b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi
1755b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
1765b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 *pNumSupportedEffects);
17767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
17867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
1795b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
1805b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint32 index,
1815b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectType,
1825b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLInterfaceID *pEffectImplementation,
1837fc9e14cb8d840df7242d37b55acff0b58d269c7Jean-Michel Trivi            SLchar *pName,
1845b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi            SLuint16 *pNameSize);
18567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi};
18667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
18767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi
188989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
18942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* Android Configuration interface                                           */
19042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
191ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION;
19242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
19342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/** Android Configuration interface methods */
19442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
19542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_;
19642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivitypedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf;
19742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
198053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean/*
199053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean * Java Proxy Type IDs
200053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean */
201053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean#define SL_ANDROID_JAVA_PROXY_ROUTING   0x0001
202053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean
20342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_ {
20442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
20542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*SetConfiguration) (SLAndroidConfigurationItf self,
20642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const SLchar *configKey,
20742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            const void *pConfigValue,
20842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi            SLuint32 valueSize);
20942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
21042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi    SLresult (*GetConfiguration) (SLAndroidConfigurationItf self,
21142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           const SLchar *configKey,
21242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           SLuint32 *pValueSize,
21342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi           void *pConfigValue
21442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi       );
215e2a4e0e1e87efb61bb62d08e7744a6d57ec4a38ePaul McLean
216053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean    SLresult (*AcquireJavaProxy) (SLAndroidConfigurationItf self,
217053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean            SLuint32 proxyType,
218053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean            jobject *pProxyObj);
219053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean
220053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean    SLresult (*ReleaseJavaProxy) (SLAndroidConfigurationItf self,
221053b3c2696e5e1b28dd5e02c54b0e3aedc21168dPaul McLean            SLuint32 proxyType);
22242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi};
22342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi
22401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
22501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
22601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Simple Buffer Queue Interface                                     */
22701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
22801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
229ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE;
23001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
23101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_;
23201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf;
23301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
234ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)(
23501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLAndroidSimpleBufferQueueItf caller,
23601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	void *pContext
23701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten);
23801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
23901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Android simple buffer queue state **/
24001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
24101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLAndroidSimpleBufferQueueState_ {
24201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	count;
24301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	index;
24401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLAndroidSimpleBufferQueueState;
24501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
24601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
24701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_ {
24801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Enqueue) (
24901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
25001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		const void *pBuffer,
25101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLuint32 size
25201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
25301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*Clear) (
25401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self
25501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
25601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*GetState) (
25701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
25801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueState *pState
25901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
26001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLresult (*RegisterCallback) (
26101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		SLAndroidSimpleBufferQueueItf self,
26201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		slAndroidSimpleBufferQueueCallback callback,
26301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten		void* pContext
26401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	);
26501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten};
26601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
26701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
26842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/
269d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface                                            */
27028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
27128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
27260ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUESOURCE;
27328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
274fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_;
275fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf;
27628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
2771c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_NONE             ((SLuint32) 0x00000000)
2781c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_EOS              ((SLuint32) 0x00000001)
2791c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_DISCONTINUITY    ((SLuint32) 0x00000002)
2801c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((SLuint32) 0x00000003)
2816f0f5640d190b0187c356eb53bd96d9f9e49da60Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_FORMAT_CHANGE    ((SLuint32) 0x00000004)
2821c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
2831c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_NONE        ((SLuint32) 0x00000000)
2841c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((SLuint32) 0x00000001)
285c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#if 0   // reserved for future use
2861c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((SLuint32) 0x00000002)
2871c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((SLuint32) 0x00000004)
2881c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((SLuint32) 0x00000008)
2891c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_ERROR       ((SLuint32) 0x00000010)
2901c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define SL_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((SLuint32) 0x00000020)
291c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#endif
292d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
293d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferItem_ {
294d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemKey;  // identifies the item
295d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemSize;
296d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint8  itemData[0];
297d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferItem;
298ad887a253969ac2017a1dbe062d0b76d505594c0Jean-Michel Trivi
299ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)(
300fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLAndroidBufferQueueItf caller,/* input */
30137dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pCallbackContext,        /* input */
30237dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferContext,          /* input */
30337dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferData,             /* input */
304d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataSize,             /* input */
305d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 dataUsed,             /* input */
306d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const SLAndroidBufferItem *pItems,/* input */
307d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32 itemsLength           /* input */
30828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi);
30928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
310d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferQueueState_ {
311d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    count;
312d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    index;
313d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferQueueState;
314d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
315fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_ {
31628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    SLresult (*RegisterCallback) (
317fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
318fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        slAndroidBufferQueueCallback callback,
31937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void* pCallbackContext
32028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi    );
321fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
322fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Clear) (
323fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self
324fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
325fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
326fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLresult (*Enqueue) (
327fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
32837dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pBufferContext,
32937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pData,
330d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 dataLength,
331d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const SLAndroidBufferItem *pItems,
332d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        SLuint32 itemsLength
333fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
334fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
335e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    SLresult (*GetState) (
336fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi        SLAndroidBufferQueueItf self,
337e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        SLAndroidBufferQueueState *pState
338fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    );
339e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi
3401c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    SLresult (*SetCallbackEventsMask) (
3411c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLAndroidBufferQueueItf self,
3421c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLuint32 eventFlags
3431c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
3441c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
3451c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    SLresult (*GetCallbackEventsMask) (
3461c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLAndroidBufferQueueItf self,
3471c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            SLuint32 *pEventFlags
3481c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
34928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi};
35028bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
35128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi
35228bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/
353989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android File Descriptor Data Locator                                      */
354989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/
35501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
356989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/** Addendum to Data locator macros  */
35701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDFD                ((SLuint32) 0x800007BC)
358989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
3596c7bd2eda0843708a8f36773b13716ba479dd6fbJean-Michel Trivi#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
360989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
361a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */
362989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef struct SLDataLocator_AndroidFD_ {
363989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLuint32        locatorType;
364989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLint32         fd;
365989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        offset;
366989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi    SLAint64        length;
367989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi} SLDataLocator_AndroidFD;
368989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
369989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi
37001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
37101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Android Simple Buffer Queue Data Locator                          */
37201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/
37301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
37401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Addendum to Data locator macros  */
37501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD)
37601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
377046ff4d5970911dc55b265d8441b49d05b10d0b6Glenn Kasten/** BufferQueue-based data locator definition where locatorType must
378046ff4d5970911dc55b265d8441b49d05b10d0b6Glenn Kasten *  be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE
379046ff4d5970911dc55b265d8441b49d05b10d0b6Glenn Kasten */
38001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLDataLocator_AndroidSimpleBufferQueue {
38101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	locatorType;
38201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten	SLuint32	numBuffers;
38301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLDataLocator_AndroidSimpleBufferQueue;
38401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
38501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten
386fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
387fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
388fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/
389fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
390fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/** Addendum to Data locator macros  */
391fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE       ((SLuint32) 0x800007BE)
392fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi
393fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
394fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi *  locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */
395fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef struct SLDataLocator_AndroidBufferQueue_ {
396fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi    SLuint32    locatorType;
397d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    SLuint32    numBuffers;
398fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi} SLDataLocator_AndroidBufferQueue;
399fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi
400c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten/**
401c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten * MIME types required for data in Android Buffer Queues
402c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten */
403c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#define SL_ANDROID_MIME_AACADTS            ((SLchar *) "audio/vnd.android.aac-adts")
404c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten
405f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/*---------------------------------------------------------------------------*/
406f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* Acoustic Echo Cancellation (AEC) Interface                                */
407f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* --------------------------------------------------------------------------*/
408f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanextern SL_API const SLInterfaceID SL_IID_ANDROIDACOUSTICECHOCANCELLATION;
409f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
410f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidAcousticEchoCancellationItf_;
411f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeantypedef const struct SLAndroidAcousticEchoCancellationItf_ * const *
412f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAcousticEchoCancellationItf;
413f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
414f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidAcousticEchoCancellationItf_ {
415f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*SetEnabled)(
416f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAcousticEchoCancellationItf self,
417f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean enabled
418f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
419f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsEnabled)(
420f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAcousticEchoCancellationItf self,
421f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
422f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
423f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean};
424f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
425f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/*---------------------------------------------------------------------------*/
426f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* Automatic Gain Control (ACC) Interface                                    */
427f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* --------------------------------------------------------------------------*/
428f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanextern SL_API const SLInterfaceID SL_IID_ANDROIDAUTOMATICGAINCONTROL;
429f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
430f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidAutomaticGainControlItf_;
431f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeantypedef const struct SLAndroidAutomaticGainControlItf_ * const * SLAndroidAutomaticGainControlItf;
432f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
433f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidAutomaticGainControlItf_ {
434f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*SetEnabled)(
435f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAutomaticGainControlItf self,
436f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean enabled
437f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
438f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsEnabled)(
439f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidAutomaticGainControlItf self,
440f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
441f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
442f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean};
443f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
444f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/*---------------------------------------------------------------------------*/
445f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* Noise Suppression Interface                                               */
446f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean/* --------------------------------------------------------------------------*/
447f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanextern SL_API const SLInterfaceID SL_IID_ANDROIDNOISESUPPRESSION;
448f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
449f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidNoiseSuppressionItf_;
450f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeantypedef const struct SLAndroidNoiseSuppressionItf_ * const * SLAndroidNoiseSuppressionItf;
451f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
452f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLeanstruct SLAndroidNoiseSuppressionItf_ {
453f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*SetEnabled)(
454f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidNoiseSuppressionItf self,
455f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean enabled
456f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
457f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    SLresult (*IsEnabled)(
458f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLAndroidNoiseSuppressionItf self,
459f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean        SLboolean *pEnabled
460f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean    );
461f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean};
462f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean
463a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#ifdef __cplusplus
46405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi}
46505ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* __cplusplus */
46605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi
46705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* OPENSL_ES_ANDROID_H_ */
468