1# OpenSL ES Interfaces Supported by Native APIs 2 3## Introduction 4 5Open Sound Library for Embedded Systems (OpenSL ES) is a set of audio acceleration standards for embedded systems. It provides objects and APIs for developers to implement high-performance, low-latency audio features. OpenHarmony implements some native APIs based on [OpenSL ES](https://www.khronos.org/opensles/) 1.0.1 API specifications. The following table lists the related APIs. 6 7## Supported APIs 8 9|Object |External Interface |Interface Invocation |Supported |Description | 10| ------------------ | -------------------- | -------------------------------------------------------------------------------------|----------| -------------------- | 11|SLEngineItf |CreateAudioPlayer |CreateAudioPlayer(SLEngineItf self, SLObjectItf *pPlayer, SLDataSource *pAudioSrc, SLDataSink *pAudioSnk, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired) |Yes |Creates an audio player. | 12|SLEngineItf |CreateAudioRecorder |reateAudioRecorder(SLEngineItf self, SLObjectItf *pRecorder, SLDataSource *pAudioSrc, SLDataSink *pAudioSnk, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired)|Yes |Creates an audio recorder. | 13|SLEngineItf |CreateAudioOutputMix |CreateOutputMix(SLEngineItf self, SLObjectItf *pMix, SLuint32 numInterfaces, const SLInterfaceID *pInterfaceIds, const SLboolean *pInterfaceRequired)|Yes |Creates an audio output mixer. | 14|SLObjectItf |Realize |Realize(SLObjectItf self, SLboolean async) |Yes |Realizes an audio player. | 15|SLObjectItf |getState |GetState(SLObjectItf self, SLuint32 *state) |Yes |Obtains the state. | 16|SLObjectItf |getInterface |GetInterface(SLObjectItf self, const SLInterfaceID iid, void *interface) |Yes |Obtains the interface. | 17|SLObjectItf |Destroy |Destroy(SLObjectItf self) |Yes |Destroys an object. | 18|SLOHBufferQueueItf |Enqueue |Enqueue(SLOHBufferQueueItf self, const void *buffer, SLuint32 size) |Yes |Adds a buffer to the queue.| 19|SLOHBufferQueueItf |clear |Clear(SLOHBufferQueueItf self) |Yes |Releases the buffer queue. | 20|SLOHBufferQueueItf |getState |GetState(SLOHBufferQueueItf self, SLOHBufferQueueState *state) |Yes |Obtains the BufferQueue status. | 21|SLOHBufferQueueItf |getBuffer |GetBuffer(SLOHBufferQueueItf self, SLuint8 **buffer, SLuint32 *size) |Yes |Obtains a buffer. | 22|SLOHBufferQueueItf |RegisterCallback |RegisterCallback(SLOHBufferQueueItf self, SlOHBufferQueueCallback callback, void *pContext) |Yes |Registers a callback. | 23|SLPlayItf |SetPlayState |SetPlayState(SLPlayItf self, SLuint32 state) |Yes |Sets the playback state. | 24|SLPlayItf |GetPlayState |GetPlayState(SLPlayItf self, SLuint32 *state) |Yes |Obtains the playback state. | 25|SLRecordItf |SetRecordState |SetRecordState(SLRecordItf self, SLuint32 state) |Yes |Sets the recording state. | 26|SLRecordItf |GetRecordState |GetRecordState(SLRecordItf self, SLuint32 *pState) |Yes |Obtains the recording state. | 27|SLVolumeItf |SetVolumeLevel |SetVolumeLevel(SLVolumeItf self, SLmillibel *level) |Yes |Sets the volume. | 28|SLVolumeItf |GetVolumeLevel |GetVolumeLevel(SLVolumeItf self, SLmillibel level) |Yes |Obtains the volume. | 29|SLVolumeItf |GetMaxVolumeLevel |GetMaxVolumeLevel(SLVolumeItf self, SLmillibel *maxLevel) |Yes |Obtains the maximum volume. | 30