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