/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef OPENSL_ES_ANDROID_H_ #define OPENSL_ES_ANDROID_H_ #ifdef __cplusplus extern "C" { #endif #include "OpenSLES.h" /*---------------------------------------------------------------------------*/ /* Android common types */ /*---------------------------------------------------------------------------*/ typedef sl_int64_t SLAint64; /* 64 bit signed integer */ /*---------------------------------------------------------------------------*/ /* Android Effect interface */ /*---------------------------------------------------------------------------*/ extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDEFFECT; /** Android Effect interface methods */ struct SLAndroidEffectItf_; typedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf; struct SLAndroidEffectItf_ { SLresult (*CreateEffect) (SLAndroidEffectItf self, SLInterfaceID effectImplementationId); SLresult (*ReleaseEffect) (SLAndroidEffectItf self, SLInterfaceID effectImplementationId); SLresult (*SetEnabled) (SLAndroidEffectItf self, SLInterfaceID effectImplementationId, SLboolean enabled); SLresult (*IsEnabled) (SLAndroidEffectItf self, SLInterfaceID effectImplementationId, SLboolean *pEnabled); SLresult (*SendCommand) (SLAndroidEffectItf self, SLInterfaceID effectImplementationId, SLuint32 command, SLuint32 commandSize, void *pCommandData, SLuint32 *replySize, void *pReplyData); }; /*---------------------------------------------------------------------------*/ /* Android Effect Send interface */ /*---------------------------------------------------------------------------*/ extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDEFFECTSEND; /** Android Effect Send interface methods */ struct SLAndroidEffectSendItf_; typedef const struct SLAndroidEffectSendItf_ * const * SLAndroidEffectSendItf; struct SLAndroidEffectSendItf_ { SLresult (*EnableEffectSend) ( SLAndroidEffectSendItf self, SLInterfaceID effectImplementationId, SLboolean enable, SLmillibel initialLevel ); SLresult (*IsEnabled) ( SLAndroidEffectSendItf self, SLInterfaceID effectImplementationId, SLboolean *pEnable ); SLresult (*SetDirectLevel) ( SLAndroidEffectSendItf self, SLmillibel directLevel ); SLresult (*GetDirectLevel) ( SLAndroidEffectSendItf self, SLmillibel *pDirectLevel ); SLresult (*SetSendLevel) ( SLAndroidEffectSendItf self, SLInterfaceID effectImplementationId, SLmillibel sendLevel ); SLresult (*GetSendLevel)( SLAndroidEffectSendItf self, SLInterfaceID effectImplementationId, SLmillibel *pSendLevel ); }; /*---------------------------------------------------------------------------*/ /* Android Effect Capabilities interface */ /*---------------------------------------------------------------------------*/ extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES; /** Android Effect Capabilities interface methods */ struct SLAndroidEffectCapabilitiesItf_; typedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf; struct SLAndroidEffectCapabilitiesItf_ { SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self, SLuint32 *pNumSupportedEffects); SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self, SLuint32 index, SLInterfaceID *pEffectType, SLInterfaceID *pEffectImplementation, SLchar *pName, SLuint16 *pNameSize); }; /*---------------------------------------------------------------------------*/ /* Android Configuration interface */ /*---------------------------------------------------------------------------*/ extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDCONFIGURATION; /** Android Configuration interface methods */ struct SLAndroidConfigurationItf_; typedef const struct SLAndroidConfigurationItf_ * const * SLAndroidConfigurationItf; struct SLAndroidConfigurationItf_ { SLresult (*SetConfiguration) (SLAndroidConfigurationItf self, const SLchar *configKey, const void *pConfigValue, SLuint32 valueSize); SLresult (*GetConfiguration) (SLAndroidConfigurationItf self, const SLchar *configKey, SLuint32 *pValueSize, void *pConfigValue ); }; /*---------------------------------------------------------------------------*/ /* Android Simple Buffer Queue Interface */ /*---------------------------------------------------------------------------*/ extern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDSIMPLEBUFFERQUEUE; struct SLAndroidSimpleBufferQueueItf_; typedef const struct SLAndroidSimpleBufferQueueItf_ * const * SLAndroidSimpleBufferQueueItf; typedef void (/*SLAPIENTRY*/ *slAndroidSimpleBufferQueueCallback)( SLAndroidSimpleBufferQueueItf caller, void *pContext ); /** Android simple buffer queue state **/ typedef struct SLAndroidSimpleBufferQueueState_ { SLuint32 count; SLuint32 index; } SLAndroidSimpleBufferQueueState; struct SLAndroidSimpleBufferQueueItf_ { SLresult (*Enqueue) ( SLAndroidSimpleBufferQueueItf self, const void *pBuffer, SLuint32 size ); SLresult (*Clear) ( SLAndroidSimpleBufferQueueItf self ); SLresult (*GetState) ( SLAndroidSimpleBufferQueueItf self, SLAndroidSimpleBufferQueueState *pState ); SLresult (*RegisterCallback) ( SLAndroidSimpleBufferQueueItf self, slAndroidSimpleBufferQueueCallback callback, void* pContext ); }; /*---------------------------------------------------------------------------*/ /* Android File Descriptor Data Locator */ /*---------------------------------------------------------------------------*/ /** Addendum to Data locator macros */ #define SL_DATALOCATOR_ANDROIDFD ((SLuint32) 0x800007BC) #define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll) /** File Descriptor-based data locator definition, locatorType must be SL_DATALOCATOR_ANDROIDFD */ typedef struct SLDataLocator_AndroidFD_ { SLuint32 locatorType; SLint32 fd; SLAint64 offset; SLAint64 length; } SLDataLocator_AndroidFD; /*---------------------------------------------------------------------------*/ /* Android Android Simple Buffer Queue Data Locator */ /*---------------------------------------------------------------------------*/ /** Addendum to Data locator macros */ #define SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE ((SLuint32) 0x800007BD) /** BufferQueue-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE*/ typedef struct SLDataLocator_AndroidSimpleBufferQueue { SLuint32 locatorType; SLuint32 numBuffers; } SLDataLocator_AndroidSimpleBufferQueue; #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* OPENSL_ES_ANDROID_H_ */