OpenSLES_Android.h revision e7bfcdc183454ec959ff51342f0973cabba219b2
105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi/* 205ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * Copyright (C) 2010 The Android Open Source Project 305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * 405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License"); 505ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * you may not use this file except in compliance with the License. 605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * You may obtain a copy of the License at 705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * 805ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * http://www.apache.org/licenses/LICENSE-2.0 905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * 1005ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * Unless required by applicable law or agreed to in writing, software 1105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS, 1205ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * See the License for the specific language governing permissions and 1405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi * limitations under the License. 1505ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi */ 1605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi 1705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#ifndef OPENSL_ES_ANDROID_H_ 1805ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#define OPENSL_ES_ANDROID_H_ 1905ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi 2005ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#ifdef __cplusplus 2105ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Triviextern "C" { 22a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#endif 2305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi 2405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 25989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android common types */ 26989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/ 27989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi 28989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef sl_int64_t SLAint64; /* 64 bit signed integer */ 29989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi 30989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi 31989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/ 3267bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/* Android Effect interface */ 3367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 3467bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 35ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECT; 3667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 3767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi/** Android Effect interface methods */ 3867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 395b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_; 405b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf; 4167bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 425b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectItf_ { 4367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 445b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLresult (*CreateEffect) (SLAndroidEffectItf self, 45fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId); 4667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 475b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLresult (*ReleaseEffect) (SLAndroidEffectItf self, 48fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId); 4967bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 505b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLresult (*SetEnabled) (SLAndroidEffectItf self, 51fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId, 525b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLboolean enabled); 5367bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 545b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLresult (*IsEnabled) (SLAndroidEffectItf self, 55fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId, 565b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLboolean *pEnabled); 5767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 585b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLresult (*SendCommand) (SLAndroidEffectItf self, 59fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId, 605b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLuint32 command, 615b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLuint32 commandSize, 625b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi void *pCommandData, 635b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLuint32 *replySize, 645b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi void *pReplyData); 655b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi}; 665b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi 675b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi 685b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 69884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/* Android Effect Send interface */ 70884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 71884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi 72ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTSEND; 73884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi 74884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/** Android Effect Send interface methods */ 75884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi 76884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_; 77884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivitypedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf; 78884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi 79884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivistruct SLAndroidEffectSendItf_ { 80884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLresult (*EnableEffectSend) ( 81fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLAndroidEffectSendItf self, 82fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId, 83884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLboolean enable, 84884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLmillibel initialLevel 85884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi ); 86884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLresult (*IsEnabled) ( 87fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLAndroidEffectSendItf self, 88fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId, 89884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLboolean *pEnable 90884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi ); 91884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLresult (*SetDirectLevel) ( 92fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLAndroidEffectSendItf self, 93884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLmillibel directLevel 94884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi ); 95884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLresult (*GetDirectLevel) ( 96fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLAndroidEffectSendItf self, 97884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLmillibel *pDirectLevel 98884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi ); 99884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLresult (*SetSendLevel) ( 100fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLAndroidEffectSendItf self, 101fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId, 102884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLmillibel sendLevel 103884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi ); 104884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLresult (*GetSendLevel)( 105fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLAndroidEffectSendItf self, 106fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi SLInterfaceID effectImplementationId, 107884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi SLmillibel *pSendLevel 108884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi ); 109884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi}; 110884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi 111884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi 112884ed8e6ccaf395f7b57e1cf16c2779c651eb800Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 1135b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/* Android Effect Capabilities interface */ 1145b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 1155b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi 116ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES; 1175b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi 1185b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi/** Android Effect Capabilities interface methods */ 1195b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi 1205b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_; 1215b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivitypedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf; 1225b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi 1235b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivistruct SLAndroidEffectCapabilitiesItf_ { 1245b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi 1255b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self, 1265b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLuint32 *pNumSupportedEffects); 12767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 12867bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 1295b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self, 1305b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLuint32 index, 1315b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLInterfaceID *pEffectType, 1325b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLInterfaceID *pEffectImplementation, 1337fc9e14cb8d840df7242d37b55acff0b58d269c7Jean-Michel Trivi SLchar *pName, 1345b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi SLuint16 *pNameSize); 13567bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi}; 13667bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 13767bdf8a2fbd1024ab50c4513e1504325475368e0Jean-Michel Trivi 138989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/ 13942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/* Android Configuration interface */ 14042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/ 141ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDCONFIGURATION; 14242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 14342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/** Android Configuration interface methods */ 14442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 14542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_; 14642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivitypedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf; 14742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 14842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivistruct SLAndroidConfigurationItf_ { 14942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 15042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SLresult (*SetConfiguration) (SLAndroidConfigurationItf self, 15142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi const SLchar *configKey, 15242309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi const void *pConfigValue, 15342309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SLuint32 valueSize); 15442309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 15542309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SLresult (*GetConfiguration) (SLAndroidConfigurationItf self, 15642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi const SLchar *configKey, 15742309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi SLuint32 *pValueSize, 15842309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi void *pConfigValue 15942309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi ); 16042309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi}; 16142309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi 16201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 16301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/ 16401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Simple Buffer Queue Interface */ 16501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/ 16601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 167ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE; 16801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 16901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_; 17001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf; 17101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 172ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef void (SLAPIENTRY *slAndroidSimpleBufferQueueCallback)( 17301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLAndroidSimpleBufferQueueItf caller, 17401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten void *pContext 17501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten); 17601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 17701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Android simple buffer queue state **/ 17801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 17901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLAndroidSimpleBufferQueueState_ { 18001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLuint32 count; 18101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLuint32 index; 18201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLAndroidSimpleBufferQueueState; 18301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 18401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 18501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastenstruct SLAndroidSimpleBufferQueueItf_ { 18601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLresult (*Enqueue) ( 18701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLAndroidSimpleBufferQueueItf self, 18801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten const void *pBuffer, 18901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLuint32 size 19001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten ); 19101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLresult (*Clear) ( 19201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLAndroidSimpleBufferQueueItf self 19301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten ); 19401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLresult (*GetState) ( 19501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLAndroidSimpleBufferQueueItf self, 19601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLAndroidSimpleBufferQueueState *pState 19701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten ); 19801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLresult (*RegisterCallback) ( 19901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLAndroidSimpleBufferQueueItf self, 20001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten slAndroidSimpleBufferQueueCallback callback, 20101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten void* pContext 20201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten ); 20301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten}; 20401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 20501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 20642309377d1ed17b557fab30f1bf26b8ba31a96fdJean-Michel Trivi/*---------------------------------------------------------------------------*/ 207d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface */ 20828bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 20928bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi 210ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern SL_API const SLInterfaceID SL_IID_ANDROIDBUFFERQUEUE; 21128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi 212fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_; 213fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef const struct SLAndroidBufferQueueItf_ * const * SLAndroidBufferQueueItf; 21428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi 215d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_NONE ((SLuint32) 0x00000000) 216d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_EOS ((SLuint32) 0x00000001) 217d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define SL_ANDROID_ITEMKEY_DISCONTINUITY ((SLuint32) 0x00000002) 218d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi 219d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferItem_ { 220d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 itemKey; // identifies the item 221d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 itemSize; 222d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint8 itemData[0]; 223d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferItem; 224ad887a253969ac2017a1dbe062d0b76d505594c0Jean-Michel Trivi 225ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef SLresult (SLAPIENTRY *slAndroidBufferQueueCallback)( 226fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi SLAndroidBufferQueueItf caller,/* input */ 227fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi void *pContext, /* input */ 228d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi const void *pBufferData, /* input */ 229d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 dataSize, /* input */ 230d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 dataUsed, /* input */ 231d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi const SLAndroidBufferItem *pItems,/* input */ 232d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 itemsLength /* input */ 23328bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi); 23428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi 235d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct SLAndroidBufferQueueState_ { 236d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 count; 237d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 index; 238d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} SLAndroidBufferQueueState; 239d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi 240fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivistruct SLAndroidBufferQueueItf_ { 24128bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi SLresult (*RegisterCallback) ( 242fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi SLAndroidBufferQueueItf self, 243fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi slAndroidBufferQueueCallback callback, 24428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi void* pContext 24528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi ); 246fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi 247fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi SLresult (*Clear) ( 248fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi SLAndroidBufferQueueItf self 249fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi ); 250fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi 251fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi SLresult (*Enqueue) ( 252fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi SLAndroidBufferQueueItf self, 253d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi const void *pData, 254d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 dataLength, 255d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi const SLAndroidBufferItem *pItems, 256d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 itemsLength 257fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi ); 258fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi 259e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi SLresult (*GetState) ( 260fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi SLAndroidBufferQueueItf self, 261e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi SLAndroidBufferQueueState *pState 262fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi ); 263e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi 26428bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi}; 26528bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi 26628bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi 26728bc6b725c207fb8fbd618caea4aa127f35ce1e1Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 268989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/* Android File Descriptor Data Locator */ 269989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/*---------------------------------------------------------------------------*/ 27001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 271989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi/** Addendum to Data locator macros */ 27201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDFD ((SLuint32) 0x800007BC) 273989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi 2746c7bd2eda0843708a8f36773b13716ba479dd6fbJean-Michel Trivi#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll) 275989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi 276a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten/** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */ 277989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivitypedef struct SLDataLocator_AndroidFD_ { 278989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi SLuint32 locatorType; 279989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi SLint32 fd; 280989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi SLAint64 offset; 281989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi SLAint64 length; 282989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi} SLDataLocator_AndroidFD; 283989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi 284989ab369777ef514ac3ba6cdb893de9ae0c976bcJean-Michel Trivi 28501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/ 28601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/* Android Android Simple Buffer Queue Data Locator */ 28701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/*---------------------------------------------------------------------------*/ 28801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 28901e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** Addendum to Data locator macros */ 29001e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten#define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD) 29101e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 29201e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten/** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/ 29301e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kastentypedef struct SLDataLocator_AndroidSimpleBufferQueue { 29401e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLuint32 locatorType; 29501e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten SLuint32 numBuffers; 29601e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten} SLDataLocator_AndroidSimpleBufferQueue; 29701e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 29801e9f5fa4698856f92bcfd88188ee4c8397b22dbGlenn Kasten 299fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 300fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/* Android Buffer Queue Data Locator */ 301fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 302fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi 303fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi/** Addendum to Data locator macros */ 304fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi#define SL_DATALOCATOR_ANDROIDBUFFERQUEUE ((SLuint32) 0x800007BE) 305fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi 306fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi/** Android Buffer Queue-based data locator definition, 307fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi * locatorType must be SL_DATALOCATOR_ANDROIDBUFFERQUEUE */ 308fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivitypedef struct SLDataLocator_AndroidBufferQueue_ { 309fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi SLuint32 locatorType; 310d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi SLuint32 numBuffers; 311fa62f9f2c20b446178c05e3e92407fe5dfdbf8a1Jean-Michel Trivi} SLDataLocator_AndroidBufferQueue; 312fe6f6b9ed3683119721618e1aeaa8c7d6baee188Jean-Michel Trivi 313a7b79e766ec6d95e9236168c27461c2ebaef4659Glenn Kasten#ifdef __cplusplus 31405ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi} 31505ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* __cplusplus */ 31605ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi 31705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif /* OPENSL_ES_ANDROID_H_ */ 318